edit customer radius

This commit is contained in:
Ibnu Maksum 2023-10-04 15:41:48 +07:00
parent e87623d918
commit 0ee60eff3d
No known key found for this signature in database
GPG key ID: 7FC82848810579E5
3 changed files with 117 additions and 84 deletions

View file

@ -134,6 +134,14 @@ class Radius
}
return false;
}
public static function planDelete($plan_id){
// Delete Plan
Radius::getTablePackage()->where_equal('plan_id', "plan_".$plan_id)->delete_many();
// Delete User Plan
Radius::getTableUserPackage()->where_equal('groupname', "plan_".$plan_id)->delete_many();
}
public static function customerChangeUsername($from, $to){
$c = Radius::getTableCustomer()->where_equal('username', $from)->findMany();
if ($c) {
@ -162,6 +170,11 @@ class Radius
}
}
public static function customerDelete($username){
Radius::getTableCustomer()->where_equal('username', $username)->delete_many();
Radius::getTableUserPackage()->where_equal('username', $username)->delete_many();
}
/**
* When add a plan to Customer, use this
*/

View file

@ -49,8 +49,6 @@ switch ($action) {
$id_customer = $routes['2'];
$b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->find_one();
if ($b) {
$mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if (Package::rechargeUser($id_customer, $b['routers'], $b['plan_id'], "Recharge", $admin['fullname'])) {
r2(U . 'customers/view/' . $id_customer, 's', 'Success Recharge Customer');
} else {
@ -62,22 +60,30 @@ switch ($action) {
$id_customer = $routes['2'];
$b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->find_one();
if ($b) {
$mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if ($b['type'] == 'Hotspot') {
Mikrotik::removeHotspotUser($client, $b['username']);
Mikrotik::removeHotspotActiveUser($client, $b['username']);
} else if ($b['type'] == 'PPPOE') {
Mikrotik::removePpoeUser($client, $b['username']);
Mikrotik::removePpoeActive($client, $b['username']);
$p = ORM::for_table('tbl_plans')->where('id', $b['plan_id'])->where('enabled', '1')->find_one();
if ($p) {
if ($p['is_radius']) {
//TODO: disconnect using radius
Radius::customerDeactivate(ORM::for_table('tbl_customers')->find_one($id_customer));
} else {
$mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if ($b['type'] == 'Hotspot') {
Mikrotik::removeHotspotUser($client, $b['username']);
Mikrotik::removeHotspotActiveUser($client, $b['username']);
} else if ($b['type'] == 'PPPOE') {
Mikrotik::removePpoeUser($client, $b['username']);
Mikrotik::removePpoeActive($client, $b['username']);
}
}
$b->status = 'off';
$b->expiration = date('Y-m-d');
$b->time = date('H:i:s');
$b->save();
_log('Admin ' . $admin['username'] . ' Deactivate ' . $b['namebp'] . ' for ' . $b['username'], 'User', $b['customer_id']);
Message::sendTelegram('Admin ' . $admin['username'] . ' Deactivate ' . $b['namebp'] . ' for u' . $b['username']);
r2(U . 'customers/view/' . $id_customer, 's', 'Success deactivate customer to Mikrotik');
}
$b->status = 'off';
$b->expiration = date('Y-m-d');
$b->time = date('H:i:s');
$b->save();
_log('Admin ' . $admin['username'] . ' Deactivate '.$b['namebp'].' for '.$b['username'], 'User', $b['customer_id']);
Message::sendTelegram('Admin ' . $admin['username'] . ' Deactivate '.$b['namebp'].' for u'.$b['username']);
r2(U . 'customers/view/' . $id_customer, 's', 'Success deactivate customer to Mikrotik');
}
r2(U . 'customers/view/' . $id_customer, 'e', 'Cannot find active plan');
break;
@ -85,17 +91,22 @@ switch ($action) {
$id_customer = $routes['2'];
$b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->where('status', 'on')->find_one();
if ($b) {
$mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
$c = ORM::for_table('tbl_customers')->find_one($id_customer);
$p = ORM::for_table('tbl_plans')->where('id', $b['plan_id'])->where('enabled', '1')->find_one();
if ($p) {
if ($b['type'] == 'Hotspot') {
Mikrotik::addHotspotUser($client, $p, $c);
} else if ($b['type'] == 'PPPOE') {
Mikrotik::addPpoeUser($client, $p, $c);
if ($p['is_radius']) {
Radius::customerAddPlan($c, $p);
r2(U . 'customers/view/' . $id_customer, 's', 'Success sync customer to Radius');
} else {
$mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if ($b['type'] == 'Hotspot') {
Mikrotik::addHotspotUser($client, $p, $c);
} else if ($b['type'] == 'PPPOE') {
Mikrotik::addPpoeUser($client, $p, $c);
}
r2(U . 'customers/view/' . $id_customer, 's', 'Success sync customer to Mikrotik');
}
r2(U . 'customers/view/' . $id_customer, 's', 'Success sync customer to Mikrotik');
} else {
r2(U . 'customers/view/' . $id_customer, 'e', 'Customer plan is inactive');
}
@ -163,28 +174,29 @@ switch ($action) {
if ($d) {
$c = ORM::for_table('tbl_user_recharges')->where('username', $d['username'])->find_one();
if ($c) {
$mikrotik = Mikrotik::info($c['routers']);
if ($c['type'] == 'Hotspot') {
if (!$config['radius_enable']) {
$p = ORM::for_table('tbl_plans')->find_one($c['plan_id']);
if ($p['is_radius']) {
Radius::customerDelete($d['username']);
} else {
$mikrotik = Mikrotik::info($c['routers']);
if ($c['type'] == 'Hotspot') {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
Mikrotik::removeHotspotUser($client, $d['username']);
Mikrotik::removeHotspotActiveUser($client, $d['username']);
}
} else {
if (!$config['radius_enable']) {
} else {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
Mikrotik::removePpoeUser($client, $d['username']);
Mikrotik::removePpoeActive($client, $d['username']);
}
}
try {
$d->delete();
} catch (Exception $e) {
} catch (Throwable $e) {
}
try {
$c->delete();
} catch (Exception $e) {
try {
$d->delete();
} catch (Exception $e) {
} catch (Throwable $e) {
}
try {
$c->delete();
} catch (Exception $e) {
}
}
} else {
try {
@ -272,61 +284,67 @@ switch ($action) {
$msg .= $_L['Data_Not_Found'] . '<br>';
}
if ($d['username'] != $username) {
$oldusername = $d['username'];
$oldPppoePassword = $d['password'];
$oldPassPassword = $d['pppoe_password'];
$userDiff = false;
$pppoeDiff = false;
$passDiff = false;
if ($oldusername != $username) {
$c = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
if ($c) {
$msg .= $_L['account_already_exist'] . '<br>';
}
$userDiff = true;
}
if ($oldPppoePassword != $pppoe_password) {
$pppoeDiff = true;
}
if ($password != '' && $oldPassPassword != $password) {
$passDiff = true;
}
if ($msg == '') {
$c = ORM::for_table('tbl_user_recharges')->where('username', $username)->find_one();
if ($c) {
$mikrotik = Mikrotik::info($c['routers']);
if ($c['type'] == 'Hotspot') {
if (!$config['radius_enable']) {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
Mikrotik::setHotspotUser($client, $c['username'], $password);
Mikrotik::removeHotspotActiveUser($client, $user['username']);
}
$d->password = $password;
$d->save();
} else {
if (!$config['radius_enable']) {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if (!empty($d['pppoe_password'])) {
Mikrotik::setPpoeUser($client, $c['username'], $d['pppoe_password']);
} else {
Mikrotik::setPpoeUser($client, $c['username'], $password);
if ($userDiff) {
$d->username = $username;
}
if ($password != '') {
$d->password = $password;
}
$d->pppoe_password = $pppoe_password;
$d->fullname = $fullname;
$d->email = $email;
$d->address = $address;
$d->phonenumber = $phonenumber;
$d->save();
if ($userDiff || $pppoeDiff || $passDiff) {
$c = ORM::for_table('tbl_user_recharges')->where('username', ($userDiff) ? $oldusername : $username)->find_one();
if ($c) {
$c->username = $username;
$c->save();
$p = ORM::for_table('tbl_plans')->find_one($c['plan_id']);
if ($p['is_radius']) {
if($userDiff){
Radius::customerChangeUsername($oldusername, $username);
}
Radius::customerAddPlan($d, $p);
}else{
$mikrotik = Mikrotik::info($c['routers']);
if ($c['type'] == 'Hotspot') {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
Mikrotik::setHotspotUser($client, $c['username'], $password);
Mikrotik::removeHotspotActiveUser($client, $d['username']);
} else {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if (!empty($d['pppoe_password'])) {
Mikrotik::setPpoeUser($client, $c['username'], $d['pppoe_password']);
} else {
Mikrotik::setPpoeUser($client, $c['username'], $password);
}
Mikrotik::removePpoeActive($client, $d['username']);
}
Mikrotik::removePpoeActive($client, $user['username']);
}
$d->password = $password;
$d->save();
}
$d->username = $username;
if ($password != '') {
$d->password = $password;
}
$d->pppoe_password = $pppoe_password;
$d->fullname = $fullname;
$d->email = $email;
$d->address = $address;
$d->phonenumber = $phonenumber;
$d->save();
} else {
$d->username = $username;
if ($password != '') {
$d->password = $password;
}
$d->fullname = $fullname;
$d->pppoe_password = $pppoe_password;
$d->email = $email;
$d->address = $address;
$d->phonenumber = $phonenumber;
$d->save();
}
r2(U . 'customers/list', 's', 'User Updated Successfully');
} else {

View file

@ -101,6 +101,7 @@ foreach ($d as $ds) {
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
if ($_c['radius_enable']) {
//TODO: disconnect using radius
Radius::customerDeactivate($c);
}else{
$client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
@ -150,6 +151,7 @@ foreach ($d as $ds) {
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
if ($_c['radius_enable']) {
//TODO: disconnect using radius
Radius::customerDeactivate($c);
}else{
$client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);