From 3b8763098625246d3de5920eb53125e5c66bf650 Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Mon, 2 Oct 2023 17:11:02 +0700 Subject: [PATCH] delete nas --- install/radius.sql | 1 - system/controllers/radius.php | 102 ++++++++++++++++++++--- system/controllers/routers.php | 143 +++++++++++++++++---------------- system/updates.json | 7 ++ ui/ui/hotspot.tpl | 10 ++- ui/ui/radius-nas-edit.tpl | 74 +++++++++++++++++ ui/ui/radius-nas.tpl | 7 +- ui/ui/sections/header.tpl | 4 - 8 files changed, 256 insertions(+), 92 deletions(-) create mode 100644 ui/ui/radius-nas-edit.tpl diff --git a/install/radius.sql b/install/radius.sql index 5645ffd7..98338d4b 100644 --- a/install/radius.sql +++ b/install/radius.sql @@ -1,4 +1,3 @@ -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; CREATE TABLE `nas` ( `id` int(10) NOT NULL, diff --git a/system/controllers/radius.php b/system/controllers/radius.php index e9016062..158745aa 100644 --- a/system/controllers/radius.php +++ b/system/controllers/radius.php @@ -19,13 +19,6 @@ if ($admin['user_type'] != 'Admin') { switch ($action) { - case 'nas-list': - $ui->assign('_system_menu', 'network'); - $ui->assign('_title', "Network Access Server"); - $nas = ORM::for_table('nas', 'radius')->find_many(); - $ui->assign('nas', $nas); - $ui->display('radius-nas.tpl'); - break; case 'nas-add': $ui->assign('_system_menu', 'network'); $ui->assign('_title', "Network Access Server"); @@ -73,15 +66,100 @@ switch ($action) { $b->description = $description; $b->save(); $id = $b->id(); - if($id>0){ - r2(U . 'radius/nas-edit/'.$id, 's', "NAS Added"); - }else{ + if ($id > 0) { + r2(U . 'radius/nas-edit/' . $id, 's', "NAS Added"); + } else { r2(U . 'radius/nas-add/', 'e', "NAS Added Failed"); } - }else{ + } else { r2(U . 'radius/nas-add', 'e', $msg); } break; + case 'nas-edit': + $ui->assign('_system_menu', 'network'); + $ui->assign('_title', "Network Access Server"); + + $id = $routes['2']; + $d = ORM::for_table('nas', 'radius')->find_one($id); + if (!$d) { + $d = ORM::for_table('nas', 'radius')->where_equal('shortname', _get('name'))->find_one(); + } + if ($d) { + $ui->assign('d', $d); + $ui->display('radius-nas-edit.tpl'); + } else { + r2(U . 'radius/list', 'e', $_L['Account_Not_Found']); + } + + break; + case 'nas-edit-post': + $id = $routes['2']; + $shortname = _post('shortname'); + $nasname = _post('nasname'); + $secret = _post('secret'); + $ports = _post('ports', null); + $type = _post('type', 'other'); + $server = _post('server', null); + $community = _post('community', null); + $description = _post('description'); + $msg = ''; + + if (Validator::Length($shortname, 30, 2) == false) { + $msg .= 'Name should be between 3 to 30 characters' . '
'; + } + if (empty($ports)) { + $ports = null; + } + if (empty($server)) { + $server = null; + } + if (empty($community)) { + $community = null; + } + if (empty($type)) { + $type = null; + } + $d = ORM::for_table('nas', 'radius')->find_one($id); + if (!$d) { + $msg .= 'NAS NOT Exists
'; + } + if ($msg == '') { + $d->nasname = $nasname; + $d->shortname = $shortname; + $d->secret = $secret; + $d->ports = $ports; + $d->type = $type; + $d->server = $server; + $d->community = $community; + $d->description = $description; + $d->save(); + r2(U . 'radius/nas-edit/' . $id, 's', "NAS Saved"); + } else { + r2(U . 'radius/nas-add', 'e', $msg); + } + break; + case 'nas-delete': + $id = $routes['2']; + $d = ORM::for_table('nas', 'radius')->find_one($id); + if ($d) { + $d->delete(); + } else { + r2(U . 'radius/nas-list', 'e', 'NAS Not found'); + } default: - $ui->display('a404.tpl'); + $ui->assign('_system_menu', 'network'); + $ui->assign('_title', "Network Access Server"); + $name = _post('name'); + if (empty($name)) { + $nas = ORM::for_table('nas', 'radius')->find_many(); + } else { + $nas = ORM::for_table('nas', 'radius') + ->where_like('nasname', $name) + ->where_like('shortname', $name) + ->where_like('description', $name) + ->find_many(); + } + $ui->assign('name', $name); + $ui->assign('nas', $nas); + $ui->display('radius-nas.tpl'); } diff --git a/system/controllers/routers.php b/system/controllers/routers.php index 8f4ed11f..6bd5188c 100644 --- a/system/controllers/routers.php +++ b/system/controllers/routers.php @@ -1,7 +1,8 @@ assign('_title', $_L['Network']); $ui->assign('_system_menu', 'network'); @@ -14,25 +15,25 @@ use PEAR2\Net\RouterOS; require_once 'system/autoload/PEAR2/Autoload.php'; -if($admin['user_type'] != 'Admin'){ - r2(U."dashboard",'e',$_L['Do_Not_Access']); +if ($admin['user_type'] != 'Admin') { + r2(U . "dashboard", 'e', $_L['Do_Not_Access']); } switch ($action) { case 'list': - $ui->assign('xfooter', ''); + $ui->assign('xfooter', ''); - $name = _post('name'); - if ($name != ''){ - $paginator = Paginator::bootstrap('tbl_routers','name','%'.$name.'%'); - $d = ORM::for_table('tbl_routers')->where_like('name','%'.$name.'%')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many(); - }else{ - $paginator = Paginator::bootstrap('tbl_routers'); - $d = ORM::for_table('tbl_routers')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many(); - } + $name = _post('name'); + if ($name != '') { + $paginator = Paginator::bootstrap('tbl_routers', 'name', '%' . $name . '%'); + $d = ORM::for_table('tbl_routers')->where_like('name', '%' . $name . '%')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many(); + } else { + $paginator = Paginator::bootstrap('tbl_routers'); + $d = ORM::for_table('tbl_routers')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many(); + } - $ui->assign('d',$d); - $ui->assign('paginator',$paginator); + $ui->assign('d', $d); + $ui->assign('paginator', $paginator); run_hook('view_list_routers'); #HOOK $ui->display('routers.tpl'); break; @@ -45,11 +46,14 @@ switch ($action) { case 'edit': $id = $routes['2']; $d = ORM::for_table('tbl_routers')->find_one($id); - if($d){ - $ui->assign('d',$d); + if (!$d) { + $d = ORM::for_table('tbl_routers')->where_equal('name', _get('name'))->find_one(); + } + if ($d) { + $ui->assign('d', $d); run_hook('view_router_edit'); #HOOK $ui->display('routers-edit.tpl'); - }else{ + } else { r2(U . 'routers/list', 'e', $_L['Account_Not_Found']); } break; @@ -58,7 +62,7 @@ switch ($action) { $id = $routes['2']; run_hook('router_delete'); #HOOK $d = ORM::for_table('tbl_routers')->find_one($id); - if($d){ + if ($d) { $d->delete(); r2(U . 'routers/list', 's', $_L['Delete_Successfully']); } @@ -73,35 +77,35 @@ switch ($action) { $enabled = _post('enabled'); $msg = ''; - if(Validator::Length($name,30,4) == false){ - $msg .= 'Name should be between 5 to 30 characters'. '
'; + if (Validator::Length($name, 30, 4) == false) { + $msg .= 'Name should be between 5 to 30 characters' . '
'; } - if ($ip_address == '' OR $username == ''){ - $msg .= $_L['All_field_is_required']. '
'; - } - - $d = ORM::for_table('tbl_routers')->where('ip_address',$ip_address)->find_one(); - if($d){ - $msg .= $_L['Router_already_exist']. '
'; + if ($ip_address == '' or $username == '') { + $msg .= $_L['All_field_is_required'] . '
'; } - if(!$config['radius_mode']){ - Mikrotik::getClient($ip_address,$username,$password); + $d = ORM::for_table('tbl_routers')->where('ip_address', $ip_address)->find_one(); + if ($d) { + $msg .= $_L['Router_already_exist'] . '
'; } - if($msg == ''){ + if (!$config['radius_mode']) { + Mikrotik::getClient($ip_address, $username, $password); + } + + if ($msg == '') { run_hook('add_router'); #HOOK $d = ORM::for_table('tbl_routers')->create(); $d->name = $name; $d->ip_address = $ip_address; $d->username = $username; $d->password = $password; - $d->description = $description; - $d->enabled = $enabled; + $d->description = $description; + $d->enabled = $enabled; $d->save(); r2(U . 'routers/list', 's', $_L['Created_Successfully']); - }else{ + } else { r2(U . 'routers/add', 'e', $msg); } break; @@ -115,77 +119,76 @@ switch ($action) { $description = _post('description'); $enabled = $_POST['enabled']; $msg = ''; - if(Validator::Length($name,30,4) == false){ - $msg .= 'Name should be between 5 to 30 characters'. '
'; + if (Validator::Length($name, 30, 4) == false) { + $msg .= 'Name should be between 5 to 30 characters' . '
'; + } + if ($ip_address == '' or $username == '') { + $msg .= $_L['All_field_is_required'] . '
'; } - if ($ip_address == '' OR $username == ''){ - $msg .= $_L['All_field_is_required']. '
'; - } $id = _post('id'); $d = ORM::for_table('tbl_routers')->find_one($id); - if($d){ - - }else{ - $msg .= $_L['Data_Not_Found']. '
'; + if ($d) { + } else { + $msg .= $_L['Data_Not_Found'] . '
'; } - if($d['name'] != $name){ - $c = ORM::for_table('tbl_routers')->where('name',$name)->where_not_equal('id',$id)->find_one(); - if($c){ + if ($d['name'] != $name) { + $c = ORM::for_table('tbl_routers')->where('name', $name)->where_not_equal('id', $id)->find_one(); + if ($c) { $msg .= 'Name Already Exists
'; } } $oldname = $d['name']; - if($d['ip_address'] != $ip_address){ - $c = ORM::for_table('tbl_routers')->where('ip_address',$ip_address)->where_not_equal('id',$id)->find_one(); - if($c){ + if ($d['ip_address'] != $ip_address) { + $c = ORM::for_table('tbl_routers')->where('ip_address', $ip_address)->where_not_equal('id', $id)->find_one(); + if ($c) { $msg .= 'IP Already Exists
'; } } - if(!$config['radius_mode']){ - Mikrotik::getClient($ip_address,$username,$password); + if (!$config['radius_mode']) { + Mikrotik::getClient($ip_address, $username, $password); } - if($msg == ''){ + if ($msg == '') { run_hook('router_edit'); #HOOK $d->name = $name; $d->ip_address = $ip_address; $d->username = $username; $d->password = $password; - $d->description = $description; - $d->enabled = $enabled; + $d->description = $description; + $d->enabled = $enabled; $d->save(); - if($name!=$oldname){ - $p = ORM::for_table('tbl_plans')->where('routers',$oldname)->find_result_set(); - $p->set('routers',$name); + if ($name != $oldname) { + $p = ORM::for_table('tbl_plans')->where('routers', $oldname)->find_result_set(); + $p->set('routers', $name); $p->save(); - $p = ORM::for_table('tbl_payment_gateway')->where('routers',$oldname)->find_result_set(); - $p->set('routers',$name); + $p = ORM::for_table('tbl_payment_gateway')->where('routers', $oldname)->find_result_set(); + $p->set('routers', $name); $p->save(); - $p = ORM::for_table('tbl_pool')->where('routers',$oldname)->find_result_set(); - $p->set('routers',$name); + $p = ORM::for_table('tbl_pool')->where('routers', $oldname)->find_result_set(); + $p->set('routers', $name); $p->save(); - $p = ORM::for_table('tbl_transactions')->where('routers',$oldname)->find_result_set(); - $p->set('routers',$name); + $p = ORM::for_table('tbl_transactions')->where('routers', $oldname)->find_result_set(); + $p->set('routers', $name); $p->save(); - $p = ORM::for_table('tbl_user_recharges')->where('routers',$oldname)->find_result_set(); - $p->set('routers',$name); + $p = ORM::for_table('tbl_user_recharges')->where('routers', $oldname)->find_result_set(); + $p->set('routers', $name); $p->save(); - $p = ORM::for_table('tbl_voucher')->where('routers',$oldname)->find_result_set(); - $p->set('routers',$name); + $p = ORM::for_table('tbl_voucher')->where('routers', $oldname)->find_result_set(); + $p->set('routers', $name); $p->save(); } r2(U . 'routers/list', 's', $_L['Updated_Successfully']); - }else{ - r2(U . 'routers/edit/'.$id, 'e', $msg); + } else { + r2(U . 'routers/edit/' . $id, 'e', $msg); } break; default: r2(U . 'routers/list/', 's', ''); -} \ No newline at end of file +} diff --git a/system/updates.json b/system/updates.json index 0f728fe6..ef347220 100644 --- a/system/updates.json +++ b/system/updates.json @@ -25,5 +25,12 @@ "2023.9.27" : [ "ALTER TABLE `tbl_plans` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance','Radius') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;", "ALTER TABLE `tbl_transactions` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance','Radius') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;" + ], + "2023.9.28" : [ + "ALTER TABLE `tbl_plans` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;", + "ALTER TABLE `tbl_transactions` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;" + ], + "2023.10.1" : [ + "ALTER TABLE `tbl_plans` ADD `is_radius` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '1 is radius' AFTER `routers`; " ] } \ No newline at end of file diff --git a/ui/ui/hotspot.tpl b/ui/ui/hotspot.tpl index fdd7ab3b..c440f7af 100644 --- a/ui/ui/hotspot.tpl +++ b/ui/ui/hotspot.tpl @@ -57,7 +57,15 @@ {$ds['time_limit']} {$ds['time_unit']} {$ds['data_limit']} {$ds['data_unit']} {$ds['validity']} {$ds['validity_unit']} - {$ds['routers']} + + {if $ds['is_radius']==1} + RADIUS + {else} + {if $ds['routers']!=''} + {$ds['routers']} + {/if} + {/if} + {$ds['pool_expired']} + +
+ +
+ +{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/radius-nas.tpl b/ui/ui/radius-nas.tpl index 324cf249..a8e26913 100644 --- a/ui/ui/radius-nas.tpl +++ b/ui/ui/radius-nas.tpl @@ -14,7 +14,7 @@
-
@@ -31,7 +31,7 @@ - + @@ -42,10 +42,9 @@ - {$no = 1} {foreach $nas as $ds} - + diff --git a/ui/ui/sections/header.tpl b/ui/ui/sections/header.tpl index 6c15ee8e..51a5c45e 100644 --- a/ui/ui/sections/header.tpl +++ b/ui/ui/sections/header.tpl @@ -163,10 +163,6 @@ href="{$_url}services/hotspot">{$_L['Hotspot_Plans']}
  • {$_L['PPPOE_Plans']}
  • - {if $_c['radius_enable'] == 'yes'} -
  • {Lang::T('Radius Plans')}
  • - {/if}
  • {$_L['Bandwidth_Plans']}
  • #ID Name IP Type
    {$no++}{$ds['id']} {$ds['shortname']} {$ds['nasname']} {$ds['type']}