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 @@
# | +ID | Name | IP | Type | @@ -42,10 +42,9 @@
---|---|---|---|---|
{$no++} | +{$ds['id']} | {$ds['shortname']} | {$ds['nasname']} | {$ds['type']} | 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']}