where('name', $name)->find_one(); } public static function getClient($ip, $user, $pass) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $iport = explode(":", $ip); return new RouterOS\Client($iport[0], $user, $pass, ($iport[1]) ? $iport[1] : null); } public static function isUserLogin($client, $username) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip hotspot active print', RouterOS\Query::where('user', $username) ); return $client->sendSync($printRequest)->getProperty('.id'); } public static function logMeIn($client, $user, $pass, $ip, $mac) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $addRequest = new RouterOS\Request('/ip/hotspot/active/login'); $client->sendSync( $addRequest ->setArgument('user', $user) ->setArgument('password', $pass) ->setArgument('ip', $ip) ->setArgument('mac-address', $mac) ); } public static function logMeOut($client, $user) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip hotspot active print', RouterOS\Query::where('user', $user) ); $id = $client->sendSync($printRequest)->getProperty('.id'); $removeRequest = new RouterOS\Request('/ip/hotspot/active/remove'); $client->sendSync( $removeRequest ->setArgument('numbers', $id) ); } public static function addHotspotPlan($client, $name, $sharedusers, $rate) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $addRequest = new RouterOS\Request('/ip/hotspot/user/profile/add'); $client->sendSync( $addRequest ->setArgument('name', $name) ->setArgument('shared-users', $sharedusers) ->setArgument('rate-limit', $rate) ); } public static function setHotspotPlan($client, $name, $sharedusers, $rate) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip hotspot user profile print .proplist=.id', RouterOS\Query::where('name', $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->sendSync( $setRequest ->setArgument('numbers', $profileID) ->setArgument('shared-users', $sharedusers) ->setArgument('rate-limit', $rate) ); } } public static function setHotspotExpiredPlan($client, $name, $pool) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip hotspot user profile print .proplist=.id', 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->sendSync( $setRequest ->setArgument('numbers', $profileID) ->setArgument('shared-users', 3) ->setArgument('address-pool', $pool) ->setArgument('rate-limit', '512K/512K') ); } } public static function removeHotspotPlan($client, $name) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip hotspot user profile print .proplist=.id', RouterOS\Query::where('name', $name) ); $profileID = $client->sendSync($printRequest)->getProperty('.id'); $removeRequest = new RouterOS\Request('/ip/hotspot/user/profile/remove'); $client->sendSync( $removeRequest ->setArgument('numbers', $profileID) ); } public static function removeHotspotUser($client, $username) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip hotspot user print .proplist=.id', RouterOS\Query::where('name', $username) ); $userID = $client->sendSync($printRequest)->getProperty('.id'); $removeRequest = new RouterOS\Request('/ip/hotspot/user/remove'); $client->sendSync( $removeRequest ->setArgument('numbers', $userID) ); } public static function addHotspotUser($client, $plan, $customer) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $addRequest = new RouterOS\Request('/ip/hotspot/user/add'); if ($plan['typebp'] == "Limited") { if ($plan['limit_type'] == "Time_Limit") { if ($plan['time_unit'] == 'Hrs') $timelimit = $plan['time_limit'] . ":00:00"; else $timelimit = "00:" . $plan['time_limit'] . ":00"; $client->sendSync( $addRequest ->setArgument('name', $customer['username']) ->setArgument('profile', $plan['name_plan']) ->setArgument('password', $customer['password']) ->setArgument('comment', $customer['fullname']) ->setArgument('email', $customer['email']) ->setArgument('limit-uptime', $timelimit) ); } else if ($plan['limit_type'] == "Data_Limit") { if ($plan['data_unit'] == 'GB') $datalimit = $plan['data_limit'] . "000000000"; else $datalimit = $plan['data_limit'] . "000000"; $client->sendSync( $addRequest ->setArgument('name', $customer['username']) ->setArgument('profile', $plan['name_plan']) ->setArgument('password', $customer['password']) ->setArgument('comment', $customer['fullname']) ->setArgument('email', $customer['email']) ->setArgument('limit-bytes-total', $datalimit) ); } else if ($plan['limit_type'] == "Both_Limit") { if ($plan['time_unit'] == 'Hrs') $timelimit = $plan['time_limit'] . ":00:00"; else $timelimit = "00:" . $plan['time_limit'] . ":00"; if ($plan['data_unit'] == 'GB') $datalimit = $plan['data_limit'] . "000000000"; else $datalimit = $plan['data_limit'] . "000000"; $client->sendSync( $addRequest ->setArgument('name', $customer['username']) ->setArgument('profile', $plan['name_plan']) ->setArgument('password', $customer['password']) ->setArgument('comment', $customer['fullname']) ->setArgument('email', $customer['email']) ->setArgument('limit-uptime', $timelimit) ->setArgument('limit-bytes-total', $datalimit) ); } } else { $client->sendSync( $addRequest ->setArgument('name', $customer['username']) ->setArgument('profile', $plan['name_plan']) ->setArgument('comment', $customer['fullname']) ->setArgument('email', $customer['email']) ->setArgument('password', $customer['password']) ); } } public static function setHotspotUser($client, $user, $pass) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request('/ip/hotspot/user/print'); $printRequest->setArgument('.proplist', '.id'); $printRequest->setQuery(RouterOS\Query::where('name', $user)); $id = $client->sendSync($printRequest)->getProperty('.id'); $setRequest = new RouterOS\Request('/ip/hotspot/user/set'); $setRequest->setArgument('numbers', $id); $setRequest->setArgument('password', $pass); $client->sendSync($setRequest); } public static function setHotspotUserPackage($client, $user, $plan) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request('/ip/hotspot/user/print'); $printRequest->setArgument('.proplist', '.id'); $printRequest->setQuery(RouterOS\Query::where('name', $user)); $id = $client->sendSync($printRequest)->getProperty('.id'); $setRequest = new RouterOS\Request('/ip/hotspot/user/set'); $setRequest->setArgument('numbers', $id); $setRequest->setArgument('profile', $plan); $client->sendSync($setRequest); } public static function removeHotspotActiveUser($client, $username) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $onlineRequest = new RouterOS\Request('/ip/hotspot/active/print'); $onlineRequest->setArgument('.proplist', '.id'); $onlineRequest->setQuery(RouterOS\Query::where('user', $username)); $id = $client->sendSync($onlineRequest)->getProperty('.id'); $removeRequest = new RouterOS\Request('/ip/hotspot/active/remove'); $removeRequest->setArgument('numbers', $id); $client->sendSync($removeRequest); } public static function removePpoeUser($client, $username) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $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'); $removeRequest->setArgument('numbers', $id); $client->sendSync($removeRequest); } public static function addPpoeUser($client, $plan, $customer) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $addRequest = new RouterOS\Request('/ppp/secret/add'); if (!empty($customer['pppoe_password'])) { $pass = $customer['pppoe_password']; } else { $pass = $customer['password']; } $client->sendSync( $addRequest ->setArgument('name', $customer['username']) ->setArgument('service', 'pppoe') ->setArgument('profile', $plan['name_plan']) ->setArgument('comment', $customer['fullname'] . ' | ' . $customer['email']) ->setArgument('password', $pass) ); } public static function setPpoeUser($client, $user, $pass) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request('/ppp/secret/print'); $printRequest->setArgument('.proplist', '.id'); $printRequest->setQuery(RouterOS\Query::where('name', $user)); $id = $client->sendSync($printRequest)->getProperty('.id'); $setRequest = new RouterOS\Request('/ppp/secret/set'); $setRequest->setArgument('numbers', $id); $setRequest->setArgument('password', $pass); $client->sendSync($setRequest); } public static function setPpoeUserPlan($client, $user, $plan) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request('/ppp/secret/print'); $printRequest->setArgument('.proplist', '.id'); $printRequest->setQuery(RouterOS\Query::where('name', $user)); $id = $client->sendSync($printRequest)->getProperty('.id'); $setRequest = new RouterOS\Request('/ppp/secret/set'); $setRequest->setArgument('numbers', $id); $setRequest->setArgument('profile', $plan); $client->sendSync($setRequest); } public static function removePpoeActive($client, $username) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $onlineRequest = new RouterOS\Request('/ppp/active/print'); $onlineRequest->setArgument('.proplist', '.id'); $onlineRequest->setQuery(RouterOS\Query::where('name', $username)); $id = $client->sendSync($onlineRequest)->getProperty('.id'); $removeRequest = new RouterOS\Request('/ppp/active/remove'); $removeRequest->setArgument('numbers', $id); $client->sendSync($removeRequest); } public static function removePool($client, $name) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip pool print .proplist=.id', RouterOS\Query::where('name', $name) ); $poolID = $client->sendSync($printRequest)->getProperty('.id'); $removeRequest = new RouterOS\Request('/ip/pool/remove'); $client->sendSync( $removeRequest ->setArgument('numbers', $poolID) ); } public static function addPool($client, $name, $ip_address) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $addRequest = new RouterOS\Request('/ip/pool/add'); $client->sendSync( $addRequest ->setArgument('name', $name) ->setArgument('ranges', $ip_address) ); } public static function setPool($client, $name, $ip_address) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip pool print .proplist=.id', RouterOS\Query::where('name', $name) ); $poolID = $client->sendSync($printRequest)->getProperty('.id'); if (empty($poolID)) { self::addPool($client, $name, $ip_address); } else { $setRequest = new RouterOS\Request('/ip/pool/set'); $client->sendSync( $setRequest ->setArgument('numbers', $poolID) ->setArgument('ranges', $ip_address) ); } } public static function addPpoePlan($client, $name, $pool, $rate) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $addRequest = new RouterOS\Request('/ppp/profile/add'); $client->sendSync( $addRequest ->setArgument('name', $name) ->setArgument('local-address', $pool) ->setArgument('remote-address', $pool) ->setArgument('rate-limit', $rate) ); } public static function setPpoePlan($client, $name, $pool, $rate) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ppp profile print .proplist=.id', RouterOS\Query::where('name', $name) ); $profileID = $client->sendSync($printRequest)->getProperty('.id'); if (empty($profileID)) { self::addPpoePlan($client, $name, $pool, $rate); } else { $setRequest = new RouterOS\Request('/ppp/profile/set'); $client->sendSync( $setRequest ->setArgument('numbers', $profileID) ->setArgument('local-address', $pool) ->setArgument('remote-address', $pool) ->setArgument('rate-limit', $rate) ); } } public static function removePpoePlan($client, $name) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ppp profile print .proplist=.id', RouterOS\Query::where('name', $name) ); $profileID = $client->sendSync($printRequest)->getProperty('.id'); $removeRequest = new RouterOS\Request('/ppp/profile/remove'); $client->sendSync( $removeRequest ->setArgument('numbers', $profileID) ); } public static function sendSMS($client, $to, $message) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $smsRequest = new RouterOS\Request('/tool sms send'); $smsRequest ->setArgument('phone-number', $to) ->setArgument('message', $message); $client->sendSync($smsRequest); } public static function getIpHotspotUser($client, $username){ global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip hotspot active print', RouterOS\Query::where('user', $username) ); return $client->sendSync($printRequest)->getProperty('address'); } public static function addIpToAddressList($client, $ip, $listName, $comment = '') { global $_app_stage; if ($_app_stage == 'demo') { return null; } $addRequest = new RouterOS\Request('/ip/firewall/address-list/add'); $client->sendSync( $addRequest ->setArgument('address', $ip) ->setArgument('comment', $comment) ->setArgument('list', $listName) ); } public static function removeIpFromAddressList($client, $ip) { global $_app_stage; if ($_app_stage == 'demo') { return null; } $printRequest = new RouterOS\Request( '/ip firewall address-list print .proplist=.id', RouterOS\Query::where('address', $ip) ); $id = $client->sendSync($printRequest)->getProperty('.id'); $removeRequest = new RouterOS\Request('/ip/firewall/address-list/remove'); $client->sendSync( $removeRequest ->setArgument('numbers', $id) ); } }