From f69885d358113a211e0b98bcefca41c0c43cfe74 Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Fri, 15 Sep 2023 14:03:23 +0700 Subject: [PATCH] sync hotspot to mikrotik --- system/controllers/services.php | 78 +++++++++++++++-- ui/ui/hotspot.tpl | 143 +++++++++++++++++--------------- 2 files changed, 147 insertions(+), 74 deletions(-) diff --git a/system/controllers/services.php b/system/controllers/services.php index 85f1c42..cce9e4d 100644 --- a/system/controllers/services.php +++ b/system/controllers/services.php @@ -21,6 +21,68 @@ use PEAR2\Net\RouterOS; require_once 'system/autoload/PEAR2/Autoload.php'; switch ($action) { + case 'sync': + set_time_limit(-1); + if ($routes['2'] == 'hotspot') { + $plans = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type', 'Hotspot')->where('tbl_plans.enabled', '1')->find_many(); + $log = ''; + $router = ''; + foreach ($plans as $plan) { + if ($router != $plan['routers']) { + $mikrotik = Mikrotik::info($plan['routers']); + $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); + $router = $plan['routers']; + } + if ($plan['rate_down_unit'] == 'Kbps') { + $unitdown = 'K'; + } else { + $unitdown = 'M'; + } + if ($plan['rate_up_unit'] == 'Kbps') { + $unitup = 'K'; + } else { + $unitup = 'M'; + } + $rate = $plan['rate_up'] . $unitup . "/" . $plan['rate_down'] . $unitdown; + Mikrotik::addHotspotPlan($client, $plan['name_plan'], $plan['shared_users'], $rate); + $log .= "DONE : $plan[name_plan], $plan[shared_users], $rate
"; + if (!empty($plan['pool_expired'])) { + Mikrotik::setHotspotExpiredPlan($client, 'EXPIRED NUXBILL ' . $plan['pool_expired'], $plan['pool_expired']); + $log .= "DONE Expired : EXPIRED NUXBILL $plan[pool_expired]
"; + } + } + r2(U . 'services/hotspot', 's', $log); + }else if ($routes['2'] == 'pppoe') { + $plans = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type', 'PPPOE')->where('tbl_plans.enabled', '1')->find_many(); + $log = ''; + $router = ''; + foreach ($plans as $plan) { + if ($router != $plan['routers']) { + $mikrotik = Mikrotik::info($plan['routers']); + $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); + $router = $plan['routers']; + } + if ($plan['rate_down_unit'] == 'Kbps') { + $unitdown = 'K'; + } else { + $unitdown = 'M'; + } + if ($plan['rate_up_unit'] == 'Kbps') { + $unitup = 'K'; + } else { + $unitup = 'M'; + } + $rate = $plan['rate_up'] . $unitup . "/" . $plan['rate_down'] . $unitdown; + Mikrotik::addPpoePlan($client, $plan['name_plan'], $plan['pool'], $rate); + $log .= "DONE : $plan[name_plan], $plan[pool], $rate
"; + if (!empty($plan['pool_expired'])) { + Mikrotik::setPpoePlan($client, 'EXPIRED NUXBILL ' . $plan['pool_expired'], $plan['pool_expired'], '512K/512K'); + $log .= "DONE Expired : EXPIRED NUXBILL $plan[pool_expired]
"; + } + } + r2(U . 'services/pppoe', 's', $log); + } + r2(U . 'services/hotspot', 'w', 'Unknown command'); case 'hotspot': $ui->assign('xfooter', ''); @@ -135,8 +197,8 @@ switch ($action) { $mikrotik = Mikrotik::info($routers); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); Mikrotik::addHotspotPlan($client, $name, $sharedusers, $rate); - if(!empty($pool_expired)){ - Mikrotik::setHotspotExpiredPlan($client, 'EXPIRED NUXBILL '.$pool_expired, $pool_expired); + if (!empty($pool_expired)) { + Mikrotik::setHotspotExpiredPlan($client, 'EXPIRED NUXBILL ' . $pool_expired, $pool_expired); } } @@ -220,8 +282,8 @@ switch ($action) { $mikrotik = Mikrotik::info($routers); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); Mikrotik::setHotspotPlan($client, $name, $sharedusers, $rate); - if(!empty($pool_expired)){ - Mikrotik::setHotspotExpiredPlan($client, 'EXPIRED NUXBILL '.$pool_expired, $pool_expired); + if (!empty($pool_expired)) { + Mikrotik::setHotspotExpiredPlan($client, 'EXPIRED NUXBILL ' . $pool_expired, $pool_expired); } } @@ -358,8 +420,8 @@ switch ($action) { $mikrotik = Mikrotik::info($routers); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); Mikrotik::addPpoePlan($client, $name, $pool, $rate); - if(!empty($pool_expired)){ - Mikrotik::setPpoePlan($client, 'EXPIRED NUXBILL '.$pool_expired, $pool_expired, '512K/512K'); + if (!empty($pool_expired)) { + Mikrotik::setPpoePlan($client, 'EXPIRED NUXBILL ' . $pool_expired, $pool_expired, '512K/512K'); } } @@ -429,8 +491,8 @@ switch ($action) { $mikrotik = Mikrotik::info($routers); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); Mikrotik::setPpoePlan($client, $name, $pool, $rate); - if(!empty($pool_expired)){ - Mikrotik::setPpoePlan($client, 'EXPIRED NUXBILL '.$pool_expired, $pool_expired, '512K/512K'); + if (!empty($pool_expired)) { + Mikrotik::setPpoePlan($client, 'EXPIRED NUXBILL ' . $pool_expired, $pool_expired, '512K/512K'); } } diff --git a/ui/ui/hotspot.tpl b/ui/ui/hotspot.tpl index a7d3acf..fdd7ab3 100644 --- a/ui/ui/hotspot.tpl +++ b/ui/ui/hotspot.tpl @@ -1,70 +1,81 @@ {include file="sections/header.tpl"} -
-
-
-
{$_L['Hotspot_Plans']}
-
-
-
- -
-   -
-
- - - - - - - - - - - - - - - - - {foreach $d as $ds} - - - - - - - - - - - - - {/foreach} - -
{$_L['Plan_Name']}{$_L['Plan_Type']}{$_L['Bandwidth_Plans']}{$_L['Plan_Price']}{$_L['Time_Limit']}{$_L['Data_Limit']}{$_L['Plan_Validity']}{$_L['Routers']}{Lang::T('Expired IP Pool')}{$_L['Manage']}
{$ds['name_plan']}{$ds['typebp']}{$ds['name_bw']}{Lang::moneyFormat($ds['price'])}{$ds['time_limit']} {$ds['time_unit']}{$ds['data_limit']} {$ds['data_unit']}{$ds['validity']} {$ds['validity_unit']}{$ds['routers']}{$ds['pool_expired']} - {$_L['Edit']} - {$_L['Delete']} -
-
- {$paginator['contents']} +
+
+
+
+
+ sync +
{$_L['Hotspot_Plans']} +
+
+
+
+ +
+   +
+
+ + + + + + + + + + + + + + + + + {foreach $d as $ds} + + + + + + + + + + + + + {/foreach} + +
{$_L['Plan_Name']}{$_L['Plan_Type']}{$_L['Bandwidth_Plans']}{$_L['Plan_Price']}{$_L['Time_Limit']}{$_L['Data_Limit']}{$_L['Plan_Validity']}{$_L['Routers']}{Lang::T('Expired IP Pool')}{$_L['Manage']}
{$ds['name_plan']}{$ds['typebp']}{$ds['name_bw']}{Lang::moneyFormat($ds['price'])}{$ds['time_limit']} {$ds['time_unit']}{$ds['data_limit']} {$ds['data_unit']}{$ds['validity']} {$ds['validity_unit']}{$ds['routers']}{$ds['pool_expired']} + {$_L['Edit']} + {$_L['Delete']} +
+
+ {$paginator['contents']} -
-
-
-
+
+
+
+
-{include file="sections/footer.tpl"} +{include file="sections/footer.tpl"} \ No newline at end of file