diff --git a/system/autoload/Mikrotik.php b/system/autoload/Mikrotik.php
index a965e785..fbc32af5 100644
--- a/system/autoload/Mikrotik.php
+++ b/system/autoload/Mikrotik.php
@@ -17,7 +17,7 @@ class Mikrotik
$iport = explode(":", $ip);
return new RouterOS\Client($iport[0], $user, $pass, ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) {
- $ui->assign("error_meesage","Unable to connect to the router.
" . $e->getMessage());
+ $ui->assign("error_meesage", "Unable to connect to the router.
" . $e->getMessage());
$ui->display('router-error.tpl');
die();
}
@@ -75,15 +75,46 @@ class Mikrotik
'/ip hotspot user profile print .proplist=name',
RouterOS\Query::where('name', $name)
);
- $profileName = $client->sendSync($printRequest)->getProperty('name');
+ $profileID = $client->sendSync($printRequest)->getProperty('.id');
+ if (empty($profileID)) {
+ Mikrotik::addHotspotPlan($client, $name, $sharedusers, $rate);
+ }else{
+ $setRequest = new RouterOS\Request('/ip/hotspot/user/profile/set');
+ $client(
+ $setRequest
+ ->setArgument('numbers', $profileID)
+ ->setArgument('shared-users', $sharedusers)
+ ->setArgument('rate-limit', $rate)
+ );
+ }
+ }
- $setRequest = new RouterOS\Request('/ip/hotspot/user/profile/set');
- $client(
- $setRequest
- ->setArgument('numbers', $profileName)
- ->setArgument('shared-users', $sharedusers)
- ->setArgument('rate-limit', $rate)
+ public static function setHotspotExpiredPlan($client, $name, $pool)
+ {
+ $printRequest = new RouterOS\Request(
+ '/ip hotspot user profile print .proplist=name',
+ RouterOS\Query::where('name', $name)
);
+ $profileID = $client->sendSync($printRequest)->getProperty('.id');
+ if (empty($profileID)) {
+ $addRequest = new RouterOS\Request('/ip/hotspot/user/profile/add');
+ $client->sendSync(
+ $addRequest
+ ->setArgument('name', $name)
+ ->setArgument('shared-users', 3)
+ ->setArgument('address-pool', $pool)
+ ->setArgument('rate-limit', '512K/512K')
+ );
+ }else{
+ $setRequest = new RouterOS\Request('/ip/hotspot/user/profile/set');
+ $client(
+ $setRequest
+ ->setArgument('numbers', $profileID)
+ ->setArgument('shared-users', 3)
+ ->setArgument('address-pool', $pool)
+ ->setArgument('rate-limit', '512K/512K')
+ );
+ }
}
public static function removeHotspotPlan($client, $name)
@@ -92,12 +123,12 @@ class Mikrotik
'/ip hotspot user profile print .proplist=name',
RouterOS\Query::where('name', $name)
);
- $profileName = $client->sendSync($printRequest)->getProperty('name');
+ $profileID = $client->sendSync($printRequest)->getProperty('.id');
$removeRequest = new RouterOS\Request('/ip/hotspot/user/profile/remove');
$client(
$removeRequest
- ->setArgument('numbers', $profileName)
+ ->setArgument('numbers', $profileID)
);
}
@@ -107,11 +138,11 @@ class Mikrotik
'/ip hotspot user print .proplist=name',
RouterOS\Query::where('name', $username)
);
- $userName = $client->sendSync($printRequest)->getProperty('name');
+ $userID = $client->sendSync($printRequest)->getProperty('.id');
$removeRequest = new RouterOS\Request('/ip/hotspot/user/remove');
$client(
$removeRequest
- ->setArgument('numbers', $userName)
+ ->setArgument('numbers', $userID)
);
}
@@ -220,16 +251,16 @@ class Mikrotik
public static function removePpoeUser($client, $username)
{
- $printRequest = new RouterOS\Request('/ppp/secret/print');
- $printRequest->setArgument('.proplist', '.id');
- $printRequest->setQuery(RouterOS\Query::where('name', $username));
- $id = $client->sendSync($printRequest)->getProperty('.id');
+ $printRequest = new RouterOS\Request('/ppp/secret/print');
+ $printRequest->setArgument('.proplist', '.id');
+ $printRequest->setQuery(RouterOS\Query::where('name', $username));
+ $id = $client->sendSync($printRequest)->getProperty('.id');
- $removeRequest = new RouterOS\Request('/ppp/secret/remove');
- $client(
- $removeRequest
- ->setArgument('numbers', $id)
- );
+ $removeRequest = new RouterOS\Request('/ppp/secret/remove');
+ $client(
+ $removeRequest
+ ->setArgument('numbers', $id)
+ );
}
public static function addPpoeUser($client, $plan, $customer)
@@ -293,12 +324,12 @@ class Mikrotik
'/ip pool print .proplist=name',
RouterOS\Query::where('name', $name)
);
- $poolName = $client->sendSync($printRequest)->getProperty('name');
+ $poolID = $client->sendSync($printRequest)->getProperty('.id');
$removeRequest = new RouterOS\Request('/ip/pool/remove');
$client(
$removeRequest
- ->setArgument('numbers', $poolName)
+ ->setArgument('numbers', $poolID)
);
}
@@ -318,15 +349,15 @@ class Mikrotik
'/ip pool print .proplist=name',
RouterOS\Query::where('name', $name)
);
- $poolName = $client->sendSync($printRequest)->getProperty('name');
+ $poolID = $client->sendSync($printRequest)->getProperty('id');
- if (empty($poolName)) {
+ if (empty($poolID)) {
self::addPool($client, $name, $ip_address);
} else {
$setRequest = new RouterOS\Request('/ip/pool/set');
$client(
$setRequest
- ->setArgument('numbers', $poolName)
+ ->setArgument('numbers', $poolID)
->setArgument('ranges', $ip_address)
);
}
@@ -351,14 +382,14 @@ class Mikrotik
'/ppp profile print .proplist=name',
RouterOS\Query::where('name', $name)
);
- $profileName = $client->sendSync($printRequest)->getProperty('name');
- if (empty($profileName)) {
+ $profileID = $client->sendSync($printRequest)->getProperty('.id');
+ if (empty($profileID)) {
self::addPpoePlan($client, $name, $pool, $rate);
} else {
$setRequest = new RouterOS\Request('/ppp/profile/set');
$client(
$setRequest
- ->setArgument('numbers', $profileName)
+ ->setArgument('numbers', $profileID)
->setArgument('local-address', $pool)
->setArgument('remote-address', $pool)
->setArgument('rate-limit', $rate)
@@ -372,12 +403,12 @@ class Mikrotik
'/ppp profile print .proplist=name',
RouterOS\Query::where('name', $name)
);
- $profileName = $client->sendSync($printRequest)->getProperty('name');
+ $profileID = $client->sendSync($printRequest)->getProperty('.id');
$removeRequest = new RouterOS\Request('/ppp/profile/remove');
$client(
$removeRequest
- ->setArgument('numbers', $profileName)
+ ->setArgument('numbers', $profileID)
);
}
}
diff --git a/system/controllers/services.php b/system/controllers/services.php
index 6dc69fdf..85f1c426 100644
--- a/system/controllers/services.php
+++ b/system/controllers/services.php
@@ -135,8 +135,12 @@ 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);
+ }
}
+
$d = ORM::for_table('tbl_plans')->create();
$d->name_plan = $name;
$d->id_bw = $id_bw;
@@ -216,6 +220,9 @@ 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);
+ }
}
$d->name_plan = $name;
@@ -351,6 +358,9 @@ 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');
+ }
}
$d = ORM::for_table('tbl_plans')->create();
@@ -419,6 +429,9 @@ 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');
+ }
}
$d->name_plan = $name;