Show error, and fix IP Port custom

This commit is contained in:
Ibnu Maksum 2022-08-23 16:33:21 +07:00
parent 90a08cb731
commit 6eaede3c6e
No known key found for this signature in database
GPG Key ID: 7FC82848810579E5
11 changed files with 1020 additions and 936 deletions

View File

@ -7,8 +7,6 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
**/ **/
//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
require ('system/boot.php'); require ('system/boot.php');
App::_run(); App::_run();

View File

@ -46,9 +46,10 @@ switch ($action) {
$mikrotik = Router::_info($c['routers']); $mikrotik = Router::_info($c['routers']);
if($c['type'] == 'Hotspot'){ if($c['type'] == 'Hotspot'){
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request('/ip/hotspot/user/print'); $printRequest = new RouterOS\Request('/ip/hotspot/user/print');
$printRequest->setArgument('.proplist', '.id'); $printRequest->setArgument('.proplist', '.id');
@ -80,9 +81,10 @@ switch ($action) {
}else{ }else{
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request('/ppp/secret/print'); $printRequest = new RouterOS\Request('/ppp/secret/print');
$printRequest->setArgument('.proplist', '.id'); $printRequest->setArgument('.proplist', '.id');

View File

@ -64,9 +64,10 @@ switch ($action) {
$mikrotik = Router::_info($c['routers']); $mikrotik = Router::_info($c['routers']);
if($c['type'] == 'Hotspot'){ if($c['type'] == 'Hotspot'){
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request('/ip/hotspot/user/print'); $printRequest = new RouterOS\Request('/ip/hotspot/user/print');
$printRequest->setArgument('.proplist', '.id'); $printRequest->setArgument('.proplist', '.id');
@ -90,9 +91,10 @@ switch ($action) {
}else{ }else{
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request('/ppp/secret/print'); $printRequest = new RouterOS\Request('/ppp/secret/print');
$printRequest->setArgument('.proplist', '.id'); $printRequest->setArgument('.proplist', '.id');
@ -220,9 +222,10 @@ switch ($action) {
$mikrotik = Router::_info($c['routers']); $mikrotik = Router::_info($c['routers']);
if($c['type'] == 'Hotspot'){ if($c['type'] == 'Hotspot'){
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request('/ip/hotspot/user/print'); $printRequest = new RouterOS\Request('/ip/hotspot/user/print');
$printRequest->setArgument('.proplist', '.id'); $printRequest->setArgument('.proplist', '.id');
@ -249,9 +252,10 @@ switch ($action) {
}else{ }else{
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request('/ppp/secret/print'); $printRequest = new RouterOS\Request('/ppp/secret/print');
$printRequest->setArgument('.proplist', '.id'); $printRequest->setArgument('.proplist', '.id');

View File

@ -65,9 +65,10 @@ switch ($action) {
$mikrotik = Router::_info($d['routers']); $mikrotik = Router::_info($d['routers']);
if($d){ if($d){
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request( $printRequest = new RouterOS\Request(
'/ip pool print .proplist=name', '/ip pool print .proplist=name',
@ -106,9 +107,10 @@ switch ($action) {
$mikrotik = Router::_info($routers); $mikrotik = Router::_info($routers);
if($msg == ''){ if($msg == ''){
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$addRequest = new RouterOS\Request('/ip/pool/add'); $addRequest = new RouterOS\Request('/ip/pool/add');
$client->sendSync($addRequest $client->sendSync($addRequest
@ -153,9 +155,10 @@ switch ($action) {
$mikrotik = Router::_info($routers); $mikrotik = Router::_info($routers);
if($msg == ''){ if($msg == ''){
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":",$mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request( $printRequest = new RouterOS\Request(
'/ip pool print .proplist=name', '/ip pool print .proplist=name',

View File

@ -91,9 +91,10 @@ switch ($action) {
if ($type == 'Hotspot') { if ($type == 'Hotspot') {
if ($b) { if ($b) {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request( $printRequest = new RouterOS\Request(
@ -191,9 +192,10 @@ switch ($action) {
$t->save(); $t->save();
} else { } else {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
/* iBNuX Added: /* iBNuX Added:
@ -285,9 +287,10 @@ switch ($action) {
if ($b) { if ($b) {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request( $printRequest = new RouterOS\Request(
'/ppp secret print .proplist=name', '/ppp secret print .proplist=name',
@ -338,9 +341,10 @@ switch ($action) {
$t->save(); $t->save();
} else { } else {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$addRequest = new RouterOS\Request('/ppp/secret/add'); $addRequest = new RouterOS\Request('/ppp/secret/add');
$client->sendSync( $client->sendSync(
@ -424,9 +428,10 @@ switch ($action) {
if ($d) { if ($d) {
if ($d['type'] == 'Hotspot') { if ($d['type'] == 'Hotspot') {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request( $printRequest = new RouterOS\Request(
'/ip hotspot user print .proplist=name', '/ip hotspot user print .proplist=name',
@ -442,9 +447,10 @@ switch ($action) {
$d->delete(); $d->delete();
} else { } else {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request( $printRequest = new RouterOS\Request(
'/ppp secret print .proplist=name', '/ppp secret print .proplist=name',
@ -682,9 +688,10 @@ switch ($action) {
if ($v1['type'] == 'Hotspot') { if ($v1['type'] == 'Hotspot') {
if ($b) { if ($b) {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request( $printRequest = new RouterOS\Request(
'/ip hotspot user print .proplist=name', '/ip hotspot user print .proplist=name',
@ -781,9 +788,10 @@ switch ($action) {
$t->save(); $t->save();
} else { } else {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
/* iBNuX Added: /* iBNuX Added:
* Time limit to Mikrotik * Time limit to Mikrotik
@ -877,9 +885,10 @@ switch ($action) {
} else { } else {
if ($b) { if ($b) {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request( $printRequest = new RouterOS\Request(
'/ppp secret print .proplist=name', '/ppp secret print .proplist=name',
@ -930,9 +939,10 @@ switch ($action) {
$t->save(); $t->save();
} else { } else {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$addRequest = new RouterOS\Request('/ppp/secret/add'); $addRequest = new RouterOS\Request('/ppp/secret/add');
$client->sendSync( $client->sendSync(

View File

@ -1,249 +1,257 @@
<?php <?php
/** /**
* PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/) * PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/)
* @copyright Copyright (C) 2014-2015 PHP Mikrotik Billing * @copyright Copyright (C) 2014-2015 PHP Mikrotik Billing
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
* *
* created by iBNuX * created by iBNuX
**/ **/
if (isset($routes['1'])) { if (isset($routes['1'])) {
$do = $routes['1']; $do = $routes['1'];
} else { } else {
$do = 'register-display'; $do = 'register-display';
} }
use PEAR2\Net\RouterOS; use PEAR2\Net\RouterOS;
require_once 'system/autoload/PEAR2/Autoload.php'; require_once 'system/autoload/PEAR2/Autoload.php';
switch($do){ switch ($do) {
case 'post': case 'post':
$username = _post('username'); $username = _post('username');
$fullname = _post('fullname'); $fullname = _post('fullname');
$password = _post('password'); $password = _post('password');
$cpassword = _post('cpassword'); $cpassword = _post('cpassword');
$address = _post('address'); $address = _post('address');
$phonenumber = _post('phonenumber'); $phonenumber = _post('phonenumber');
$code = _post('kodevoucher'); $code = _post('kodevoucher');
$v1 = ORM::for_table('tbl_voucher')->where('code',$code)->where('status',0)->find_one(); $v1 = ORM::for_table('tbl_voucher')->where('code', $code)->where('status', 0)->find_one();
if ($v1){ if ($v1) {
$msg = ''; $msg = '';
if(Validator::Length($username,35,2) == false){ if (Validator::Length($username, 35, 2) == false) {
$msg .= 'Username should be between 3 to 55 characters'. '<br>'; $msg .= 'Username should be between 3 to 55 characters' . '<br>';
} }
if(Validator::Length($fullname,36,2) == false){ if (Validator::Length($fullname, 36, 2) == false) {
$msg .= 'Full Name should be between 3 to 25 characters'. '<br>'; $msg .= 'Full Name should be between 3 to 25 characters' . '<br>';
} }
if(!Validator::Length($password,35,2)){ if (!Validator::Length($password, 35, 2)) {
$msg .= 'Password should be between 3 to 35 characters'. '<br>'; $msg .= 'Password should be between 3 to 35 characters' . '<br>';
}
if ($password != $cpassword) {
$msg .= $_L['PasswordsNotMatch'] . '<br>';
}
} $d = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
if($password != $cpassword){ if ($d) {
$msg .= $_L['PasswordsNotMatch']. '<br>'; $msg .= $_L['account_already_exist'] . '<br>';
} }
if ($msg == '') {
$d = ORM::for_table('tbl_customers')->create();
$d->username = $username;
$d->password = $password;
$d->fullname = $fullname;
$d->address = $address;
$d->phonenumber = $phonenumber;
if ($d->save()) {
$user = $d->id();
//check voucher plan
$p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']);
$c = ORM::for_table('tbl_customers')->find_one($user);
$p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']);
$d = ORM::for_table('tbl_customers')->where('username',$username)->find_one(); $date_now = date("Y-m-d H:i:s");
if($d){ $date_only = date("Y-m-d");
$msg .= $_L['account_already_exist']. '<br>'; $time = date("H:i:s");
}
if($msg == ''){
$d = ORM::for_table('tbl_customers')->create();
$d->username = $username;
$d->password = $password;
$d->fullname = $fullname;
$d->address = $address;
$d->phonenumber = $phonenumber;
if($d->save()){
$user = $d->id();
//check voucher plan
$p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']);
$c = ORM::for_table('tbl_customers')->find_one($user);
$p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']);
$date_now = date("Y-m-d H:i:s"); $mikrotik = Router::_info($v1['routers']);
$date_only = date("Y-m-d"); $date_exp = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") + $p['validity'], date("Y")));
$time = date("H:i:s");
$mikrotik = Router::_info($v1['routers']); if ($v1['type'] == 'Hotspot') {
$date_exp = date("Y-m-d", mktime(0,0,0,date("m"),date("d") + $p['validity'],date("Y"))); try {
$iport = explode(":", $mikrotik['ip_address']);
if($v1['type'] == 'Hotspot'){ $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
try { } catch (Exception $e) {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); die("Unable to connect to the router.<br>".$e->getMessage());
} catch (Exception $e) { }
die('Unable to connect to the router.'); /* iBNuX Added:
}
/* iBNuX Added:
* Time limit to Mikrotik * Time limit to Mikrotik
* 'Time_Limit', 'Data_Limit', 'Both_Limit' * 'Time_Limit', 'Data_Limit', 'Both_Limit'
*/ */
$addRequest = new RouterOS\Request('/ip/hotspot/user/add'); $addRequest = new RouterOS\Request('/ip/hotspot/user/add');
if($p['typebp']=="Limited"){ if ($p['typebp'] == "Limited") {
if($p['limit_type']=="Time_Limit"){ if ($p['limit_type'] == "Time_Limit") {
if($p['time_unit']=='Hrs') if ($p['time_unit'] == 'Hrs')
$timelimit = $p['time_limit'].":00:00"; $timelimit = $p['time_limit'] . ":00:00";
else else
$timelimit = "00:".$p['time_limit'].":00"; $timelimit = "00:" . $p['time_limit'] . ":00";
$client->sendSync($addRequest $client->sendSync(
->setArgument('name', $c['username']) $addRequest
->setArgument('profile', $p['name_plan']) ->setArgument('name', $c['username'])
->setArgument('password', $c['password']) ->setArgument('profile', $p['name_plan'])
->setArgument('limit-uptime', $timelimit) ->setArgument('password', $c['password'])
); ->setArgument('limit-uptime', $timelimit)
}else if($p['limit_type']=="Data_Limit"){ );
if($p['data_unit']=='GB') } else if ($p['limit_type'] == "Data_Limit") {
$datalimit = $p['data_limit']."000000000"; if ($p['data_unit'] == 'GB')
else $datalimit = $p['data_limit'] . "000000000";
$datalimit = $p['data_limit']."000000"; else
$client->sendSync($addRequest $datalimit = $p['data_limit'] . "000000";
->setArgument('name', $c['username']) $client->sendSync(
->setArgument('profile', $p['name_plan']) $addRequest
->setArgument('password', $c['password']) ->setArgument('name', $c['username'])
->setArgument('limit-bytes-total', $datalimit) ->setArgument('profile', $p['name_plan'])
); ->setArgument('password', $c['password'])
}else if($p['limit_type']=="Both_Limit"){ ->setArgument('limit-bytes-total', $datalimit)
if($p['time_unit']=='Hrs') );
$timelimit = $p['time_limit'].":00:00"; } else if ($p['limit_type'] == "Both_Limit") {
else if ($p['time_unit'] == 'Hrs')
$timelimit = "00:".$p['time_limit'].":00"; $timelimit = $p['time_limit'] . ":00:00";
if($p['data_unit']=='GB') else
$datalimit = $p['data_limit']."000000000"; $timelimit = "00:" . $p['time_limit'] . ":00";
else if ($p['data_unit'] == 'GB')
$datalimit = $p['data_limit']."000000"; $datalimit = $p['data_limit'] . "000000000";
$client->sendSync($addRequest else
->setArgument('name', $c['username']) $datalimit = $p['data_limit'] . "000000";
->setArgument('profile', $p['name_plan']) $client->sendSync(
->setArgument('password', $c['password']) $addRequest
->setArgument('limit-uptime', $timelimit) ->setArgument('name', $c['username'])
->setArgument('limit-bytes-total', $datalimit) ->setArgument('profile', $p['name_plan'])
); ->setArgument('password', $c['password'])
} ->setArgument('limit-uptime', $timelimit)
}else{ ->setArgument('limit-bytes-total', $datalimit)
$client->sendSync($addRequest );
->setArgument('name', $c['username']) }
->setArgument('profile', $p['name_plan']) } else {
->setArgument('password', $c['password']) $client->sendSync(
); $addRequest
} ->setArgument('name', $c['username'])
->setArgument('profile', $p['name_plan'])
->setArgument('password', $c['password'])
);
}
$d = ORM::for_table('tbl_user_recharges')->create(); $d = ORM::for_table('tbl_user_recharges')->create();
$d->customer_id = $user; $d->customer_id = $user;
$d->username = $c['username']; $d->username = $c['username'];
$d->plan_id = $v1['id_plan']; $d->plan_id = $v1['id_plan'];
$d->namebp = $p['name_plan']; $d->namebp = $p['name_plan'];
$d->recharged_on = $date_only; $d->recharged_on = $date_only;
$d->expiration = $date_exp; $d->expiration = $date_exp;
$d->time = $time; $d->time = $time;
$d->status = "on"; $d->status = "on";
$d->method = "voucher"; $d->method = "voucher";
$d->routers = $v1['routers']; $d->routers = $v1['routers'];
$d->type = "Hotspot"; $d->type = "Hotspot";
$d->save(); $d->save();
// insert table transactions // insert table transactions
$t = ORM::for_table('tbl_transactions')->create(); $t = ORM::for_table('tbl_transactions')->create();
$t->invoice = "INV-"._raid(5); $t->invoice = "INV-" . _raid(5);
$t->username = $c['username']; $t->username = $c['username'];
$t->plan_name = $p['name_plan']; $t->plan_name = $p['name_plan'];
$t->price = $p['price']; $t->price = $p['price'];
$t->recharged_on = $date_only; $t->recharged_on = $date_only;
$t->expiration = $date_exp; $t->expiration = $date_exp;
$t->time = $time; $t->time = $time;
$t->method = "voucher"; $t->method = "voucher";
$t->routers = $v1['routers']; $t->routers = $v1['routers'];
$t->type = "Hotspot"; $t->type = "Hotspot";
$t->save(); $t->save();
$v1->status = "1"; $v1->status = "1";
$v1->user = $c['username']; $v1->user = $c['username'];
$v1->save(); $v1->save();
} else {
try {
$iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) {
die("Unable to connect to the router.<br>".$e->getMessage());
}
$addRequest = new RouterOS\Request('/ppp/secret/add');
$client->sendSync(
$addRequest
->setArgument('name', $c['username'])
->setArgument('service', 'pppoe')
->setArgument('profile', $p['name_plan'])
->setArgument('password', $c['password'])
);
}else{ $d = ORM::for_table('tbl_user_recharges')->create();
try { $d->customer_id = $user;
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $d->username = $c['username'];
} catch (Exception $e) { $d->plan_id = $v1['id_plan'];
die('Unable to connect to the router.'); $d->namebp = $p['name_plan'];
} $d->recharged_on = $date_only;
$addRequest = new RouterOS\Request('/ppp/secret/add'); $d->expiration = $date_exp;
$client->sendSync($addRequest $d->time = $time;
->setArgument('name', $c['username']) $d->status = "on";
->setArgument('service', 'pppoe') $d->method = "voucher";
->setArgument('profile', $p['name_plan']) $d->routers = $v1['routers'];
->setArgument('password', $c['password']) $d->type = "PPPOE";
); $d->save();
$d = ORM::for_table('tbl_user_recharges')->create(); // insert table transactions
$d->customer_id = $user; $t = ORM::for_table('tbl_transactions')->create();
$d->username = $c['username']; $t->invoice = "INV-" . _raid(5);
$d->plan_id = $v1['id_plan']; $t->username = $c['username'];
$d->namebp = $p['name_plan']; $t->plan_name = $p['name_plan'];
$d->recharged_on = $date_only; $t->price = $p['price'];
$d->expiration = $date_exp; $t->recharged_on = $date_only;
$d->time = $time; $t->expiration = $date_exp;
$d->status = "on"; $t->time = $time;
$d->method = "voucher"; $t->method = "voucher";
$d->routers = $v1['routers']; $t->routers = $v1['routers'];
$d->type = "PPPOE"; $t->type = "PPPOE";
$d->save(); $t->save();
// insert table transactions $v1->status = "1";
$t = ORM::for_table('tbl_transactions')->create(); $v1->user = $c['username'];
$t->invoice = "INV-"._raid(5); $v1->save();
$t->username = $c['username']; }
$t->plan_name = $p['name_plan']; r2(U . 'login', 's', $_L['Register_Success']);
$t->price = $p['price']; } else {
$t->recharged_on = $date_only; $ui->assign('username', $username);
$t->expiration = $date_exp; $ui->assign('fullname', $fullname);
$t->time = $time; $ui->assign('address', $address);
$t->method = "voucher"; $ui->assign('phonenumber', $phonenumber);
$t->routers = $v1['routers']; $ui->assign('notify', '<div class="alert alert-danger">
$t->type = "PPPOE";
$t->save();
$v1->status = "1";
$v1->user = $c['username'];
$v1->save();
}
r2(U . 'login', 's', $_L['Register_Success']);
}else{
$ui->assign('username', $username);
$ui->assign('fullname', $fullname);
$ui->assign('address', $address);
$ui->assign('phonenumber', $phonenumber);
$ui->assign('notify','<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">×</span> <span aria-hidden="true">×</span>
</button> </button>
<div>Failed to register</div></div>'); <div>Failed to register</div></div>');
$ui->display('register.tpl'); $ui->display('register.tpl');
} }
//r2(U . 'register', 's', $_L['account_created_successfully']); //r2(U . 'register', 's', $_L['account_created_successfully']);
}else{ } else {
$ui->assign('username', $username); $ui->assign('username', $username);
$ui->assign('fullname', $fullname); $ui->assign('fullname', $fullname);
$ui->assign('address', $address); $ui->assign('address', $address);
$ui->assign('phonenumber', $phonenumber); $ui->assign('phonenumber', $phonenumber);
$ui->assign('notify','<div class="alert alert-danger"> $ui->assign('notify', '<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">×</span> <span aria-hidden="true">×</span>
</button> </button>
<div>'.$msg.'</div></div>'); <div>' . $msg . '</div></div>');
$ui->display('register.tpl'); $ui->display('register.tpl');
} }
}else{ } else {
$ui->assign('username', $username); $ui->assign('username', $username);
$ui->assign('fullname', $fullname); $ui->assign('fullname', $fullname);
$ui->assign('address', $address); $ui->assign('address', $address);
$ui->assign('phonenumber', $phonenumber); $ui->assign('phonenumber', $phonenumber);
$ui->assign('notify','<div class="alert alert-danger"> $ui->assign('notify', '<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">×</span> <span aria-hidden="true">×</span>
</button> </button>
<div>'.$_L['Voucher_Not_Valid'].'</div></div>'); <div>' . $_L['Voucher_Not_Valid'] . '</div></div>');
$ui->display('register.tpl'); $ui->display('register.tpl');
//r2(U . 'register', 'e', $_L['Voucher_Not_Valid']); //r2(U . 'register', 'e', $_L['Voucher_Not_Valid']);
} }
/*$password = _post('password'); /*$password = _post('password');
if($username != '' AND $password != ''){ if($username != '' AND $password != ''){
$d = ORM::for_table('tbl_customers')->where('username',$username)->find_one(); $d = ORM::for_table('tbl_customers')->where('username',$username)->find_one();
if($d){ if($d){
@ -271,11 +279,10 @@ switch($do){
break; break;
default: default:
$ui->assign('username', ""); $ui->assign('username', "");
$ui->assign('fullname', ""); $ui->assign('fullname', "");
$ui->assign('address', ""); $ui->assign('address', "");
$ui->assign('phonenumber', ""); $ui->assign('phonenumber', "");
$ui->display('register.tpl'); $ui->display('register.tpl');
break; break;
} }

View File

@ -1,50 +1,52 @@
<?php <?php
/** /**
* PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/) * PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/)
* @copyright Copyright (C) 2014-2015 PHP Mikrotik Billing * @copyright Copyright (C) 2014-2015 PHP Mikrotik Billing
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
**/ **/
_admin(); _admin();
$ui->assign('_title', $_L['Hotspot_Plans'].' - '. $config['CompanyName']); $ui->assign('_title', $_L['Hotspot_Plans'] . ' - ' . $config['CompanyName']);
$ui->assign('_system_menu', 'services'); $ui->assign('_system_menu', 'services');
$action = $routes['1']; $action = $routes['1'];
$admin = Admin::_info(); $admin = Admin::_info();
$ui->assign('_admin', $admin); $ui->assign('_admin', $admin);
if($admin['user_type'] != 'Admin' AND $admin['user_type'] != 'Sales'){ if ($admin['user_type'] != 'Admin' and $admin['user_type'] != 'Sales') {
r2(U."dashboard",'e',$_L['Do_Not_Access']); r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
} }
use PEAR2\Net\RouterOS; use PEAR2\Net\RouterOS;
require_once 'system/autoload/PEAR2/Autoload.php'; require_once 'system/autoload/PEAR2/Autoload.php';
switch ($action) { switch ($action) {
case 'hotspot': case 'hotspot':
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/hotspot.js"></script>'); $ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/hotspot.js"></script>');
$name = _post('name'); $name = _post('name');
if ($name != ''){ if ($name != '') {
$paginator = Paginator::bootstrap('tbl_plans','name_plan','%'.$name.'%','type','Hotspot'); $paginator = Paginator::bootstrap('tbl_plans', 'name_plan', '%' . $name . '%', 'type', 'Hotspot');
$d = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type','Hotspot')->where_like('tbl_plans.name_plan','%'.$name.'%')->offset($paginator['startpoint'])->limit($paginator['limit'])->find_many(); $d = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type', 'Hotspot')->where_like('tbl_plans.name_plan', '%' . $name . '%')->offset($paginator['startpoint'])->limit($paginator['limit'])->find_many();
}else{ } else {
$paginator = Paginator::bootstrap('tbl_plans','type','Hotspot'); $paginator = Paginator::bootstrap('tbl_plans', 'type', 'Hotspot');
$d = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type','Hotspot')->offset($paginator['startpoint'])->limit($paginator['limit'])->find_many(); $d = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type', 'Hotspot')->offset($paginator['startpoint'])->limit($paginator['limit'])->find_many();
} }
$ui->assign('d',$d); $ui->assign('d', $d);
$ui->assign('paginator',$paginator); $ui->assign('paginator', $paginator);
$ui->display('hotspot.tpl'); $ui->display('hotspot.tpl');
break; break;
case 'add': case 'add':
$d = ORM::for_table('tbl_bandwidth')->find_many(); $d = ORM::for_table('tbl_bandwidth')->find_many();
$ui->assign('d',$d); $ui->assign('d', $d);
$r = ORM::for_table('tbl_routers')->find_many(); $r = ORM::for_table('tbl_routers')->find_many();
$ui->assign('r',$r); $ui->assign('r', $r);
$ui->display('hotspot-add.tpl'); $ui->display('hotspot-add.tpl');
break; break;
@ -52,15 +54,15 @@ switch ($action) {
case 'edit': case 'edit':
$id = $routes['2']; $id = $routes['2'];
$d = ORM::for_table('tbl_plans')->find_one($id); $d = ORM::for_table('tbl_plans')->find_one($id);
if($d){ if ($d) {
$ui->assign('d',$d); $ui->assign('d', $d);
$b = ORM::for_table('tbl_bandwidth')->find_many(); $b = ORM::for_table('tbl_bandwidth')->find_many();
$ui->assign('b',$b); $ui->assign('b', $b);
$r = ORM::for_table('tbl_routers')->find_many(); $r = ORM::for_table('tbl_routers')->find_many();
$ui->assign('r',$r); $ui->assign('r', $r);
$ui->display('hotspot-edit.tpl'); $ui->display('hotspot-edit.tpl');
}else{ } else {
r2(U . 'services/hotspot', 'e', $_L['Account_Not_Found']); r2(U . 'services/hotspot', 'e', $_L['Account_Not_Found']);
} }
break; break;
@ -69,22 +71,24 @@ switch ($action) {
$id = $routes['2']; $id = $routes['2'];
$d = ORM::for_table('tbl_plans')->find_one($id); $d = ORM::for_table('tbl_plans')->find_one($id);
if($d){ if ($d) {
$mikrotik = Router::_info($d['routers']); $mikrotik = Router::_info($d['routers']);
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
} catch (Exception $e) { $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
die('Unable to connect to the router.'); } catch (Exception $e) {
} die("Unable to connect to the router.<br>".$e->getMessage());
$printRequest = new RouterOS\Request( }
'/ip hotspot user profile print .proplist=name', $printRequest = new RouterOS\Request(
RouterOS\Query::where('name', $d['name_plan']) '/ip hotspot user profile print .proplist=name',
); RouterOS\Query::where('name', $d['name_plan'])
$profileName = $client->sendSync($printRequest)->getProperty('name'); );
$profileName = $client->sendSync($printRequest)->getProperty('name');
$removeRequest = new RouterOS\Request('/ip/hotspot/user/profile/remove'); $removeRequest = new RouterOS\Request('/ip/hotspot/user/profile/remove');
$client($removeRequest $client(
->setArgument('numbers', $profileName) $removeRequest
->setArgument('numbers', $profileName)
); );
$d->delete(); $d->delete();
@ -96,180 +100,200 @@ switch ($action) {
case 'add-post': case 'add-post':
$name = _post('name'); $name = _post('name');
$typebp = _post('typebp'); $typebp = _post('typebp');
$limit_type = _post('limit_type'); $limit_type = _post('limit_type');
$time_limit = _post('time_limit'); $time_limit = _post('time_limit');
$time_unit = _post('time_unit'); $time_unit = _post('time_unit');
$data_limit = _post('data_limit'); $data_limit = _post('data_limit');
$data_unit = _post('data_unit'); $data_unit = _post('data_unit');
$id_bw = _post('id_bw'); $id_bw = _post('id_bw');
$price = _post('pricebp'); $price = _post('pricebp');
$sharedusers = _post('sharedusers'); $sharedusers = _post('sharedusers');
$validity = _post('validity'); $validity = _post('validity');
$validity_unit = _post('validity_unit'); $validity_unit = _post('validity_unit');
$routers = _post('routers'); $routers = _post('routers');
$msg = ''; $msg = '';
if(Validator::UnsignedNumber($validity) == false){ if (Validator::UnsignedNumber($validity) == false) {
$msg .= 'The validity must be a number'. '<br>'; $msg .= 'The validity must be a number' . '<br>';
} }
if(Validator::UnsignedNumber($price) == false){ if (Validator::UnsignedNumber($price) == false) {
$msg .= 'The price must be a number'. '<br>'; $msg .= 'The price must be a number' . '<br>';
} }
if ($name == '' OR $id_bw == '' OR $price == '' OR $validity == '' OR $routers == ''){ if ($name == '' or $id_bw == '' or $price == '' or $validity == '' or $routers == '') {
$msg .= $_L['All_field_is_required']. '<br>'; $msg .= $_L['All_field_is_required'] . '<br>';
}
$d = ORM::for_table('tbl_plans')->where('name_plan',$name)->where('type','Hotspot')->find_one();
if($d){
$msg .= $_L['Plan_already_exist']. '<br>';
} }
if($msg == ''){ $d = ORM::for_table('tbl_plans')->where('name_plan', $name)->where('type', 'Hotspot')->find_one();
$b = ORM::for_table('tbl_bandwidth')->where('id',$id_bw)->find_one(); if ($d) {
if($b['rate_down_unit'] == 'Kbps'){ $unitdown = 'K'; }else{ $unitdown = 'M'; } $msg .= $_L['Plan_already_exist'] . '<br>';
if($b['rate_up_unit'] == 'Kbps'){ $unitup = 'K'; }else{ $unitup = 'M'; } }
$rate = $b['rate_up'].$unitup."/".$b['rate_down'].$unitdown;
$mikrotik = Router::_info($routers); if ($msg == '') {
try { $b = ORM::for_table('tbl_bandwidth')->where('id', $id_bw)->find_one();
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); if ($b['rate_down_unit'] == 'Kbps') {
} catch (Exception $e) { $unitdown = 'K';
die('Unable to connect to the router.'); } else {
} $unitdown = 'M';
$addRequest = new RouterOS\Request('/ip/hotspot/user/profile/add'); }
$client->sendSync($addRequest if ($b['rate_up_unit'] == 'Kbps') {
->setArgument('name', $name) $unitup = 'K';
->setArgument('shared-users', $sharedusers) } else {
->setArgument('rate-limit', $rate) $unitup = 'M';
}
$rate = $b['rate_up'] . $unitup . "/" . $b['rate_down'] . $unitdown;
$mikrotik = Router::_info($routers);
try {
$iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) {
die("Unable to connect to the router.<br>".$e->getMessage());
}
$addRequest = new RouterOS\Request('/ip/hotspot/user/profile/add');
$client->sendSync(
$addRequest
->setArgument('name', $name)
->setArgument('shared-users', $sharedusers)
->setArgument('rate-limit', $rate)
); );
$d = ORM::for_table('tbl_plans')->create(); $d = ORM::for_table('tbl_plans')->create();
$d->name_plan = $name; $d->name_plan = $name;
$d->id_bw = $id_bw; $d->id_bw = $id_bw;
$d->price = $price; $d->price = $price;
$d->type = 'Hotspot'; $d->type = 'Hotspot';
$d->typebp = $typebp; $d->typebp = $typebp;
$d->limit_type = $limit_type; $d->limit_type = $limit_type;
$d->time_limit = $time_limit; $d->time_limit = $time_limit;
$d->time_unit = $time_unit; $d->time_unit = $time_unit;
$d->data_limit = $data_limit; $d->data_limit = $data_limit;
$d->data_unit = $data_unit; $d->data_unit = $data_unit;
$d->validity = $validity; $d->validity = $validity;
$d->validity_unit = $validity_unit; $d->validity_unit = $validity_unit;
$d->shared_users = $sharedusers; $d->shared_users = $sharedusers;
$d->routers = $routers; $d->routers = $routers;
$d->save(); $d->save();
r2(U . 'services/hotspot', 's', $_L['Created_Successfully']); r2(U . 'services/hotspot', 's', $_L['Created_Successfully']);
}else{ } else {
r2(U . 'services/add', 'e', $msg); r2(U . 'services/add', 'e', $msg);
} }
break; break;
case 'edit-post': case 'edit-post':
$id = _post('id'); $id = _post('id');
$name = _post('name'); $name = _post('name');
$id_bw = _post('id_bw'); $id_bw = _post('id_bw');
$typebp = _post('typebp'); $typebp = _post('typebp');
$price = _post('price'); $price = _post('price');
$limit_type = _post('limit_type'); $limit_type = _post('limit_type');
$time_limit = _post('time_limit'); $time_limit = _post('time_limit');
$time_unit = _post('time_unit'); $time_unit = _post('time_unit');
$data_limit = _post('data_limit'); $data_limit = _post('data_limit');
$data_unit = _post('data_unit'); $data_unit = _post('data_unit');
$sharedusers = _post('sharedusers'); $sharedusers = _post('sharedusers');
$validity = _post('validity'); $validity = _post('validity');
$validity_unit = _post('validity_unit'); $validity_unit = _post('validity_unit');
$routers = _post('routers'); $routers = _post('routers');
$msg = ''; $msg = '';
if(Validator::UnsignedNumber($validity) == false){ if (Validator::UnsignedNumber($validity) == false) {
$msg .= 'The validity must be a number'. '<br>'; $msg .= 'The validity must be a number' . '<br>';
} }
if(Validator::UnsignedNumber($price) == false){ if (Validator::UnsignedNumber($price) == false) {
$msg .= 'The price must be a number'. '<br>'; $msg .= 'The price must be a number' . '<br>';
} }
if ($name == '' OR $id_bw == '' OR $price == '' OR $validity == '' OR $routers == ''){ if ($name == '' or $id_bw == '' or $price == '' or $validity == '' or $routers == '') {
$msg .= $_L['All_field_is_required']. '<br>'; $msg .= $_L['All_field_is_required'] . '<br>';
}
$d = ORM::for_table('tbl_plans')->where('id',$id)->find_one();
if($d){
}else{
$msg .= $_L['Data_Not_Found']. '<br>';
} }
if($msg == ''){ $d = ORM::for_table('tbl_plans')->where('id', $id)->find_one();
$b = ORM::for_table('tbl_bandwidth')->where('id',$id_bw)->find_one(); if ($d) {
if($b['rate_down_unit'] == 'Kbps'){ $unitdown = 'K'; }else{ $unitdown = 'M'; } } else {
if($b['rate_up_unit'] == 'Kbps'){ $unitup = 'K'; }else{ $unitup = 'M'; } $msg .= $_L['Data_Not_Found'] . '<br>';
$rate = $b['rate_up'].$unitup."/".$b['rate_down'].$unitdown; }
$mikrotik = Router::_info($routers); if ($msg == '') {
try { $b = ORM::for_table('tbl_bandwidth')->where('id', $id_bw)->find_one();
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); if ($b['rate_down_unit'] == 'Kbps') {
} catch (Exception $e) { $unitdown = 'K';
die('Unable to connect to the router.'); } else {
} $unitdown = 'M';
$printRequest = new RouterOS\Request( }
'/ip hotspot user profile print .proplist=name', if ($b['rate_up_unit'] == 'Kbps') {
RouterOS\Query::where('name', $name) $unitup = 'K';
); } else {
$profileName = $client->sendSync($printRequest)->getProperty('name'); $unitup = 'M';
}
$rate = $b['rate_up'] . $unitup . "/" . $b['rate_down'] . $unitdown;
$setRequest = new RouterOS\Request('/ip/hotspot/user/profile/set'); $mikrotik = Router::_info($routers);
$client($setRequest try {
->setArgument('numbers', $profileName) $iport = explode(":", $mikrotik['ip_address']);
->setArgument('shared-users', $sharedusers) $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
->setArgument('rate-limit', $rate) } catch (Exception $e) {
die("Unable to connect to the router.<br>".$e->getMessage());
}
$printRequest = new RouterOS\Request(
'/ip hotspot user profile print .proplist=name',
RouterOS\Query::where('name', $name)
);
$profileName = $client->sendSync($printRequest)->getProperty('name');
$setRequest = new RouterOS\Request('/ip/hotspot/user/profile/set');
$client(
$setRequest
->setArgument('numbers', $profileName)
->setArgument('shared-users', $sharedusers)
->setArgument('rate-limit', $rate)
); );
$d->name_plan = $name; $d->name_plan = $name;
$d->id_bw = $id_bw; $d->id_bw = $id_bw;
$d->price = $price; $d->price = $price;
$d->typebp = $typebp; $d->typebp = $typebp;
$d->limit_type = $limit_type; $d->limit_type = $limit_type;
$d->time_limit = $time_limit; $d->time_limit = $time_limit;
$d->time_unit = $time_unit; $d->time_unit = $time_unit;
$d->data_limit = $data_limit; $d->data_limit = $data_limit;
$d->data_unit = $data_unit; $d->data_unit = $data_unit;
$d->validity = $validity; $d->validity = $validity;
$d->validity_unit = $validity_unit; $d->validity_unit = $validity_unit;
$d->shared_users = $sharedusers; $d->shared_users = $sharedusers;
$d->routers = $routers; $d->routers = $routers;
$d->save(); $d->save();
r2(U . 'services/hotspot', 's', $_L['Updated_Successfully']); r2(U . 'services/hotspot', 's', $_L['Updated_Successfully']);
}else{ } else {
r2(U . 'services/edit/'.$id, 'e', $msg); r2(U . 'services/edit/' . $id, 'e', $msg);
} }
break; break;
case 'pppoe': case 'pppoe':
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/pppoe.js"></script>'); $ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/pppoe.js"></script>');
$name = _post('name'); $name = _post('name');
if ($name != ''){ if ($name != '') {
$paginator = Paginator::bootstrap('tbl_plans','name_plan','%'.$name.'%','type','Hotspot'); $paginator = Paginator::bootstrap('tbl_plans', 'name_plan', '%' . $name . '%', 'type', 'Hotspot');
$d = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type','PPPOE')->where_like('tbl_plans.name_plan','%'.$name.'%')->offset($paginator['startpoint'])->limit($paginator['limit'])->find_many(); $d = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type', 'PPPOE')->where_like('tbl_plans.name_plan', '%' . $name . '%')->offset($paginator['startpoint'])->limit($paginator['limit'])->find_many();
}else{ } else {
$paginator = Paginator::bootstrap('tbl_plans','type','Hotspot'); $paginator = Paginator::bootstrap('tbl_plans', 'type', 'Hotspot');
$d = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type','PPPOE')->offset($paginator['startpoint'])->limit($paginator['limit'])->find_many(); $d = ORM::for_table('tbl_bandwidth')->join('tbl_plans', array('tbl_bandwidth.id', '=', 'tbl_plans.id_bw'))->where('tbl_plans.type', 'PPPOE')->offset($paginator['startpoint'])->limit($paginator['limit'])->find_many();
} }
$ui->assign('d',$d); $ui->assign('d', $d);
$ui->assign('paginator',$paginator); $ui->assign('paginator', $paginator);
$ui->display('pppoe.tpl'); $ui->display('pppoe.tpl');
break; break;
case 'pppoe-add': case 'pppoe-add':
$d = ORM::for_table('tbl_bandwidth')->find_many(); $d = ORM::for_table('tbl_bandwidth')->find_many();
$ui->assign('d',$d); $ui->assign('d', $d);
$p = ORM::for_table('tbl_pool')->find_many(); $p = ORM::for_table('tbl_pool')->find_many();
$ui->assign('p',$p); $ui->assign('p', $p);
$r = ORM::for_table('tbl_routers')->find_many(); $r = ORM::for_table('tbl_routers')->find_many();
$ui->assign('r',$r); $ui->assign('r', $r);
$ui->display('pppoe-add.tpl'); $ui->display('pppoe-add.tpl');
break; break;
@ -277,17 +301,17 @@ switch ($action) {
case 'pppoe-edit': case 'pppoe-edit':
$id = $routes['2']; $id = $routes['2'];
$d = ORM::for_table('tbl_plans')->find_one($id); $d = ORM::for_table('tbl_plans')->find_one($id);
if($d){ if ($d) {
$ui->assign('d',$d); $ui->assign('d', $d);
$b = ORM::for_table('tbl_bandwidth')->find_many(); $b = ORM::for_table('tbl_bandwidth')->find_many();
$ui->assign('b',$b); $ui->assign('b', $b);
$p = ORM::for_table('tbl_pool')->find_many(); $p = ORM::for_table('tbl_pool')->find_many();
$ui->assign('p',$p); $ui->assign('p', $p);
$r = ORM::for_table('tbl_routers')->find_many(); $r = ORM::for_table('tbl_routers')->find_many();
$ui->assign('r',$r); $ui->assign('r', $r);
$ui->display('pppoe-edit.tpl'); $ui->display('pppoe-edit.tpl');
}else{ } else {
r2(U . 'services/pppoe', 'e', $_L['Account_Not_Found']); r2(U . 'services/pppoe', 'e', $_L['Account_Not_Found']);
} }
break; break;
@ -296,22 +320,24 @@ switch ($action) {
$id = $routes['2']; $id = $routes['2'];
$d = ORM::for_table('tbl_plans')->find_one($id); $d = ORM::for_table('tbl_plans')->find_one($id);
if($d){ if ($d) {
$mikrotik = Router::_info($d['routers']); $mikrotik = Router::_info($d['routers']);
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
} catch (Exception $e) { $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
die('Unable to connect to the router.'); } catch (Exception $e) {
} die("Unable to connect to the router.<br>".$e->getMessage());
$printRequest = new RouterOS\Request( }
'/ppp profile print .proplist=name', $printRequest = new RouterOS\Request(
RouterOS\Query::where('name', $d['name_plan']) '/ppp profile print .proplist=name',
); RouterOS\Query::where('name', $d['name_plan'])
$profileName = $client->sendSync($printRequest)->getProperty('name'); );
$profileName = $client->sendSync($printRequest)->getProperty('name');
$removeRequest = new RouterOS\Request('/ppp/profile/remove'); $removeRequest = new RouterOS\Request('/ppp/profile/remove');
$client($removeRequest $client(
->setArgument('numbers', $profileName) $removeRequest
->setArgument('numbers', $profileName)
); );
$d->delete(); $d->delete();
@ -322,131 +348,151 @@ switch ($action) {
case 'pppoe-add-post': case 'pppoe-add-post':
$name = _post('name_plan'); $name = _post('name_plan');
$id_bw = _post('id_bw'); $id_bw = _post('id_bw');
$price = _post('price'); $price = _post('price');
$validity = _post('validity'); $validity = _post('validity');
$validity_unit = _post('validity_unit'); $validity_unit = _post('validity_unit');
$routers = _post('routers'); $routers = _post('routers');
$pool = _post('pool_name'); $pool = _post('pool_name');
$msg = ''; $msg = '';
if(Validator::UnsignedNumber($validity) == false){ if (Validator::UnsignedNumber($validity) == false) {
$msg .= 'The validity must be a number'. '<br>'; $msg .= 'The validity must be a number' . '<br>';
} }
if(Validator::UnsignedNumber($price) == false){ if (Validator::UnsignedNumber($price) == false) {
$msg .= 'The price must be a number'. '<br>'; $msg .= 'The price must be a number' . '<br>';
} }
if ($name == '' OR $id_bw == '' OR $price == '' OR $validity == '' OR $routers == '' OR $pool == ''){ if ($name == '' or $id_bw == '' or $price == '' or $validity == '' or $routers == '' or $pool == '') {
$msg .= $_L['All_field_is_required']. '<br>'; $msg .= $_L['All_field_is_required'] . '<br>';
}
$d = ORM::for_table('tbl_plans')->where('name_plan',$name)->find_one();
if($d){
$msg .= $_L['Plan_already_exist']. '<br>';
} }
if($msg == ''){ $d = ORM::for_table('tbl_plans')->where('name_plan', $name)->find_one();
$b = ORM::for_table('tbl_bandwidth')->where('id',$id_bw)->find_one(); if ($d) {
if($b['rate_down_unit'] == 'Kbps'){ $unitdown = 'K'; }else{ $unitdown = 'M'; } $msg .= $_L['Plan_already_exist'] . '<br>';
if($b['rate_up_unit'] == 'Kbps'){ $unitup = 'K'; }else{ $unitup = 'M'; } }
$rate = $b['rate_up'].$unitup."/".$b['rate_down'].$unitdown;
$mikrotik = Router::_info($routers); if ($msg == '') {
try { $b = ORM::for_table('tbl_bandwidth')->where('id', $id_bw)->find_one();
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); if ($b['rate_down_unit'] == 'Kbps') {
} catch (Exception $e) { $unitdown = 'K';
die('Unable to connect to the router.'); } else {
} $unitdown = 'M';
$addRequest = new RouterOS\Request('/ppp/profile/add'); }
$client->sendSync($addRequest if ($b['rate_up_unit'] == 'Kbps') {
->setArgument('name', $name) $unitup = 'K';
->setArgument('local-address', $pool) } else {
->setArgument('remote-address', $pool) $unitup = 'M';
->setArgument('rate-limit', $rate) }
$rate = $b['rate_up'] . $unitup . "/" . $b['rate_down'] . $unitdown;
$mikrotik = Router::_info($routers);
try {
$iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) {
die("Unable to connect to the router.<br>".$e->getMessage());
}
$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)
); );
$d = ORM::for_table('tbl_plans')->create(); $d = ORM::for_table('tbl_plans')->create();
$d->type = 'PPPOE'; $d->type = 'PPPOE';
$d->name_plan = $name; $d->name_plan = $name;
$d->id_bw = $id_bw; $d->id_bw = $id_bw;
$d->price = $price; $d->price = $price;
$d->validity = $validity; $d->validity = $validity;
$d->validity_unit = $validity_unit; $d->validity_unit = $validity_unit;
$d->routers = $routers; $d->routers = $routers;
$d->pool = $pool; $d->pool = $pool;
$d->save(); $d->save();
r2(U . 'services/pppoe', 's', $_L['Created_Successfully']); r2(U . 'services/pppoe', 's', $_L['Created_Successfully']);
}else{ } else {
r2(U . 'services/pppoe-add', 'e', $msg); r2(U . 'services/pppoe-add', 'e', $msg);
} }
break; break;
case 'edit-pppoe-post': case 'edit-pppoe-post':
$id = _post('id'); $id = _post('id');
$name = _post('name_plan'); $name = _post('name_plan');
$id_bw = _post('id_bw'); $id_bw = _post('id_bw');
$price = _post('price'); $price = _post('price');
$validity = _post('validity'); $validity = _post('validity');
$validity_unit = _post('validity_unit'); $validity_unit = _post('validity_unit');
$routers = _post('routers'); $routers = _post('routers');
$pool = _post('pool_name'); $pool = _post('pool_name');
$msg = ''; $msg = '';
if(Validator::UnsignedNumber($validity) == false){ if (Validator::UnsignedNumber($validity) == false) {
$msg .= 'The validity must be a number'. '<br>'; $msg .= 'The validity must be a number' . '<br>';
} }
if(Validator::UnsignedNumber($price) == false){ if (Validator::UnsignedNumber($price) == false) {
$msg .= 'The price must be a number'. '<br>'; $msg .= 'The price must be a number' . '<br>';
} }
if ($name == '' OR $id_bw == '' OR $price == '' OR $validity == '' OR $routers == '' OR $pool == ''){ if ($name == '' or $id_bw == '' or $price == '' or $validity == '' or $routers == '' or $pool == '') {
$msg .= $_L['All_field_is_required']. '<br>'; $msg .= $_L['All_field_is_required'] . '<br>';
}
$d = ORM::for_table('tbl_plans')->where('id',$id)->find_one();
if($d){
}else{
$msg .= $_L['Data_Not_Found']. '<br>';
} }
if($msg == ''){ $d = ORM::for_table('tbl_plans')->where('id', $id)->find_one();
$b = ORM::for_table('tbl_bandwidth')->where('id',$id_bw)->find_one(); if ($d) {
if($b['rate_down_unit'] == 'Kbps'){ $unitdown = 'K'; }else{ $unitdown = 'M'; } } else {
if($b['rate_up_unit'] == 'Kbps'){ $unitup = 'K'; }else{ $unitup = 'M'; } $msg .= $_L['Data_Not_Found'] . '<br>';
$rate = $b['rate_up'].$unitup."/".$b['rate_down'].$unitdown; }
$mikrotik = Router::_info($routers); if ($msg == '') {
try { $b = ORM::for_table('tbl_bandwidth')->where('id', $id_bw)->find_one();
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); if ($b['rate_down_unit'] == 'Kbps') {
} catch (Exception $e) { $unitdown = 'K';
die('Unable to connect to the router.'); } else {
} $unitdown = 'M';
$printRequest = new RouterOS\Request( }
'/ppp profile print .proplist=name', if ($b['rate_up_unit'] == 'Kbps') {
RouterOS\Query::where('name', $name) $unitup = 'K';
); } else {
$profileName = $client->sendSync($printRequest)->getProperty('name'); $unitup = 'M';
}
$rate = $b['rate_up'] . $unitup . "/" . $b['rate_down'] . $unitdown;
$setRequest = new RouterOS\Request('/ppp/profile/set'); $mikrotik = Router::_info($routers);
$client($setRequest try {
->setArgument('numbers', $profileName) $iport = explode(":", $mikrotik['ip_address']);
->setArgument('local-address', $pool) $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
->setArgument('remote-address', $pool) } catch (Exception $e) {
->setArgument('rate-limit', $rate) die("Unable to connect to the router.<br>".$e->getMessage());
}
$printRequest = new RouterOS\Request(
'/ppp profile print .proplist=name',
RouterOS\Query::where('name', $name)
);
$profileName = $client->sendSync($printRequest)->getProperty('name');
$setRequest = new RouterOS\Request('/ppp/profile/set');
$client(
$setRequest
->setArgument('numbers', $profileName)
->setArgument('local-address', $pool)
->setArgument('remote-address', $pool)
->setArgument('rate-limit', $rate)
); );
$d->name_plan = $name; $d->name_plan = $name;
$d->id_bw = $id_bw; $d->id_bw = $id_bw;
$d->price = $price; $d->price = $price;
$d->validity = $validity; $d->validity = $validity;
$d->validity_unit = $validity_unit; $d->validity_unit = $validity_unit;
$d->routers = $routers; $d->routers = $routers;
$d->pool = $pool; $d->pool = $pool;
$d->save(); $d->save();
r2(U . 'services/pppoe', 's', $_L['Updated_Successfully']); r2(U . 'services/pppoe', 's', $_L['Updated_Successfully']);
}else{ } else {
r2(U . 'services/pppoe-edit/'.$id, 'e', $msg); r2(U . 'services/pppoe-edit/' . $id, 'e', $msg);
} }
break; break;

View File

@ -1,14 +1,15 @@
<?php <?php
/** /**
* PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/) * PHP Mikrotik Billing (https://ibnux.github.io/phpmixbill/)
* @copyright Copyright (C) 2014-2015 PHP Mikrotik Billing * @copyright Copyright (C) 2014-2015 PHP Mikrotik Billing
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
**/ **/
_auth(); _auth();
$ui->assign('_title', $_L['Voucher'].'- '. $config['CompanyName']); $ui->assign('_title', $_L['Voucher'] . '- ' . $config['CompanyName']);
$ui->assign('_system_menu', 'voucher'); $ui->assign('_system_menu', 'voucher');
$action = $routes['1']; $action = $routes['1'];
@ -16,6 +17,7 @@ $user = User::_info();
$ui->assign('_user', $user); $ui->assign('_user', $user);
use PEAR2\Net\RouterOS; use PEAR2\Net\RouterOS;
require_once 'system/autoload/PEAR2/Autoload.php'; require_once 'system/autoload/PEAR2/Autoload.php';
switch ($action) { switch ($action) {
@ -27,321 +29,331 @@ switch ($action) {
case 'activation-post': case 'activation-post':
$code = _post('code'); $code = _post('code');
$v1 = ORM::for_table('tbl_voucher')->where('code',$code)->where('status',0)->find_one(); $v1 = ORM::for_table('tbl_voucher')->where('code', $code)->where('status', 0)->find_one();
$c = ORM::for_table('tbl_customers')->find_one($user['id']); $c = ORM::for_table('tbl_customers')->find_one($user['id']);
$p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']); $p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']);
$b = ORM::for_table('tbl_user_recharges')->where('customer_id',$user['id'])->find_one(); $b = ORM::for_table('tbl_user_recharges')->where('customer_id', $user['id'])->find_one();
$date_now = date("Y-m-d H:i:s"); $date_now = date("Y-m-d H:i:s");
$date_only = date("Y-m-d"); $date_only = date("Y-m-d");
$time = date("H:i:s"); $time = date("H:i:s");
$mikrotik = Router::_info($v1['routers']); $mikrotik = Router::_info($v1['routers']);
$date_exp = date("Y-m-d", mktime(0,0,0,date("m"),date("d") + $p['validity'],date("Y"))); $date_exp = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") + $p['validity'], date("Y")));
if ($v1){ if ($v1) {
if($v1['type'] == 'Hotspot'){ if ($v1['type'] == 'Hotspot') {
if($b){ if ($b) {
try { try {
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $iport = explode(":", $mikrotik['ip_address']);
} catch (Exception $e) { $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
die('Unable to connect to the router.'); } catch (Exception $e) {
} die("Unable to connect to the router.<br>".$e->getMessage());
$printRequest = new RouterOS\Request('/ip/hotspot/user/print'); }
$printRequest->setArgument('.proplist', '.id'); $printRequest = new RouterOS\Request('/ip/hotspot/user/print');
$printRequest->setQuery(RouterOS\Query::where('name', $c['username'])); $printRequest->setArgument('.proplist', '.id');
$id = $client->sendSync($printRequest)->getProperty('.id'); $printRequest->setQuery(RouterOS\Query::where('name', $c['username']));
$id = $client->sendSync($printRequest)->getProperty('.id');
$setRequest = new RouterOS\Request('/ip/hotspot/user/remove'); $setRequest = new RouterOS\Request('/ip/hotspot/user/remove');
$setRequest->setArgument('numbers', $id); $setRequest->setArgument('numbers', $id);
$client->sendSync($setRequest); $client->sendSync($setRequest);
/* iBNuX Added: /* iBNuX Added:
* Time limit to Mikrotik * Time limit to Mikrotik
* 'Time_Limit', 'Data_Limit', 'Both_Limit' * 'Time_Limit', 'Data_Limit', 'Both_Limit'
*/ */
$addRequest = new RouterOS\Request('/ip/hotspot/user/add'); $addRequest = new RouterOS\Request('/ip/hotspot/user/add');
if($p['typebp']=="Limited"){ if ($p['typebp'] == "Limited") {
if($p['limit_type']=="Time_Limit"){ if ($p['limit_type'] == "Time_Limit") {
if($p['time_unit']=='Hrs') if ($p['time_unit'] == 'Hrs')
$timelimit = $p['time_limit'].":00:00"; $timelimit = $p['time_limit'] . ":00:00";
else else
$timelimit = "00:".$p['time_limit'].":00"; $timelimit = "00:" . $p['time_limit'] . ":00";
$client->sendSync($addRequest $client->sendSync(
->setArgument('name', $c['username']) $addRequest
->setArgument('profile', $p['name_plan']) ->setArgument('name', $c['username'])
->setArgument('password', $c['password']) ->setArgument('profile', $p['name_plan'])
->setArgument('limit-uptime', $timelimit) ->setArgument('password', $c['password'])
); ->setArgument('limit-uptime', $timelimit)
}else if($p['limit_type']=="Data_Limit"){ );
if($p['data_unit']=='GB') } else if ($p['limit_type'] == "Data_Limit") {
$datalimit = $p['data_limit']."000000000"; if ($p['data_unit'] == 'GB')
else $datalimit = $p['data_limit'] . "000000000";
$datalimit = $p['data_limit']."000000"; else
$client->sendSync($addRequest $datalimit = $p['data_limit'] . "000000";
->setArgument('name', $c['username']) $client->sendSync(
->setArgument('profile', $p['name_plan']) $addRequest
->setArgument('password', $c['password']) ->setArgument('name', $c['username'])
->setArgument('limit-bytes-total', $datalimit) ->setArgument('profile', $p['name_plan'])
); ->setArgument('password', $c['password'])
}else if($p['limit_type']=="Both_Limit"){ ->setArgument('limit-bytes-total', $datalimit)
if($p['time_unit']=='Hrs') );
$timelimit = $p['time_limit'].":00:00"; } else if ($p['limit_type'] == "Both_Limit") {
else if ($p['time_unit'] == 'Hrs')
$timelimit = "00:".$p['time_limit'].":00"; $timelimit = $p['time_limit'] . ":00:00";
if($p['data_unit']=='GB') else
$datalimit = $p['data_limit']."000000000"; $timelimit = "00:" . $p['time_limit'] . ":00";
else if ($p['data_unit'] == 'GB')
$datalimit = $p['data_limit']."000000"; $datalimit = $p['data_limit'] . "000000000";
$client->sendSync($addRequest else
->setArgument('name', $c['username']) $datalimit = $p['data_limit'] . "000000";
->setArgument('profile', $p['name_plan']) $client->sendSync(
->setArgument('password', $c['password']) $addRequest
->setArgument('limit-uptime', $timelimit) ->setArgument('name', $c['username'])
->setArgument('limit-bytes-total', $datalimit) ->setArgument('profile', $p['name_plan'])
); ->setArgument('password', $c['password'])
} ->setArgument('limit-uptime', $timelimit)
}else{ ->setArgument('limit-bytes-total', $datalimit)
$client->sendSync($addRequest );
->setArgument('name', $c['username']) }
->setArgument('profile', $p['name_plan']) } else {
->setArgument('password', $c['password']) $client->sendSync(
); $addRequest
} ->setArgument('name', $c['username'])
->setArgument('profile', $p['name_plan'])
->setArgument('password', $c['password'])
);
}
$b->customer_id = $user['id']; $b->customer_id = $user['id'];
$b->username = $c['username']; $b->username = $c['username'];
$b->plan_id = $v1['id_plan']; $b->plan_id = $v1['id_plan'];
$b->namebp = $p['name_plan']; $b->namebp = $p['name_plan'];
$b->recharged_on = $date_only; $b->recharged_on = $date_only;
$b->expiration = $date_exp; $b->expiration = $date_exp;
$b->time = $time; $b->time = $time;
$b->status = "on"; $b->status = "on";
$b->method = "voucher"; $b->method = "voucher";
$b->routers = $v1['routers']; $b->routers = $v1['routers'];
$b->type = "Hotspot"; $b->type = "Hotspot";
$b->save(); $b->save();
// insert table transactions // insert table transactions
$t = ORM::for_table('tbl_transactions')->create(); $t = ORM::for_table('tbl_transactions')->create();
$t->invoice = "INV-"._raid(5); $t->invoice = "INV-" . _raid(5);
$t->username = $c['username']; $t->username = $c['username'];
$t->plan_name = $p['name_plan']; $t->plan_name = $p['name_plan'];
$t->price = $p['price']; $t->price = $p['price'];
$t->recharged_on = $date_only; $t->recharged_on = $date_only;
$t->expiration = $date_exp; $t->expiration = $date_exp;
$t->time = $time; $t->time = $time;
$t->method = "voucher"; $t->method = "voucher";
$t->routers = $v1['routers']; $t->routers = $v1['routers'];
$t->type = "Hotspot"; $t->type = "Hotspot";
$t->save(); $t->save();
} else {
}else{ try {
try { $iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
/* iBNuX Added: /* iBNuX Added:
* Time limit to Mikrotik * Time limit to Mikrotik
* 'Time_Limit', 'Data_Limit', 'Both_Limit' * 'Time_Limit', 'Data_Limit', 'Both_Limit'
*/ */
$addRequest = new RouterOS\Request('/ip/hotspot/user/add'); $addRequest = new RouterOS\Request('/ip/hotspot/user/add');
if($p['typebp']=="Limited"){ if ($p['typebp'] == "Limited") {
if($p['limit_type']=="Time_Limit"){ if ($p['limit_type'] == "Time_Limit") {
if($p['time_unit']=='Hrs') if ($p['time_unit'] == 'Hrs')
$timelimit = $p['time_limit'].":00:00"; $timelimit = $p['time_limit'] . ":00:00";
else else
$timelimit = "00:".$p['time_limit'].":00"; $timelimit = "00:" . $p['time_limit'] . ":00";
$client->sendSync($addRequest $client->sendSync(
->setArgument('name', $c['username']) $addRequest
->setArgument('profile', $p['name_plan']) ->setArgument('name', $c['username'])
->setArgument('password', $c['password']) ->setArgument('profile', $p['name_plan'])
->setArgument('limit-uptime', $timelimit) ->setArgument('password', $c['password'])
); ->setArgument('limit-uptime', $timelimit)
}else if($p['limit_type']=="Data_Limit"){ );
if($p['data_unit']=='GB') } else if ($p['limit_type'] == "Data_Limit") {
$datalimit = $p['data_limit']."000000000"; if ($p['data_unit'] == 'GB')
else $datalimit = $p['data_limit'] . "000000000";
$datalimit = $p['data_limit']."000000"; else
$client->sendSync($addRequest $datalimit = $p['data_limit'] . "000000";
->setArgument('name', $c['username']) $client->sendSync(
->setArgument('profile', $p['name_plan']) $addRequest
->setArgument('password', $c['password']) ->setArgument('name', $c['username'])
->setArgument('limit-bytes-total', $datalimit) ->setArgument('profile', $p['name_plan'])
); ->setArgument('password', $c['password'])
}else if($p['limit_type']=="Both_Limit"){ ->setArgument('limit-bytes-total', $datalimit)
if($p['time_unit']=='Hrs') );
$timelimit = $p['time_limit'].":00:00"; } else if ($p['limit_type'] == "Both_Limit") {
else if ($p['time_unit'] == 'Hrs')
$timelimit = "00:".$p['time_limit'].":00"; $timelimit = $p['time_limit'] . ":00:00";
if($p['data_unit']=='GB') else
$datalimit = $p['data_limit']."000000000"; $timelimit = "00:" . $p['time_limit'] . ":00";
else if ($p['data_unit'] == 'GB')
$datalimit = $p['data_limit']."000000"; $datalimit = $p['data_limit'] . "000000000";
$client->sendSync($addRequest else
->setArgument('name', $c['username']) $datalimit = $p['data_limit'] . "000000";
->setArgument('profile', $p['name_plan']) $client->sendSync(
->setArgument('password', $c['password']) $addRequest
->setArgument('limit-uptime', $timelimit) ->setArgument('name', $c['username'])
->setArgument('limit-bytes-total', $datalimit) ->setArgument('profile', $p['name_plan'])
); ->setArgument('password', $c['password'])
} ->setArgument('limit-uptime', $timelimit)
}else{ ->setArgument('limit-bytes-total', $datalimit)
$client->sendSync($addRequest );
->setArgument('name', $c['username']) }
->setArgument('profile', $p['name_plan']) } else {
->setArgument('password', $c['password']) $client->sendSync(
); $addRequest
} ->setArgument('name', $c['username'])
->setArgument('profile', $p['name_plan'])
->setArgument('password', $c['password'])
);
}
$d = ORM::for_table('tbl_user_recharges')->create(); $d = ORM::for_table('tbl_user_recharges')->create();
$d->customer_id = $user['id']; $d->customer_id = $user['id'];
$d->username = $c['username']; $d->username = $c['username'];
$d->plan_id = $v1['id_plan']; $d->plan_id = $v1['id_plan'];
$d->namebp = $p['name_plan']; $d->namebp = $p['name_plan'];
$d->recharged_on = $date_only; $d->recharged_on = $date_only;
$d->expiration = $date_exp; $d->expiration = $date_exp;
$d->time = $time; $d->time = $time;
$d->status = "on"; $d->status = "on";
$d->method = "voucher"; $d->method = "voucher";
$d->routers = $v1['routers']; $d->routers = $v1['routers'];
$d->type = "Hotspot"; $d->type = "Hotspot";
$d->save(); $d->save();
// insert table transactions // insert table transactions
$t = ORM::for_table('tbl_transactions')->create(); $t = ORM::for_table('tbl_transactions')->create();
$t->invoice = "INV-"._raid(5); $t->invoice = "INV-" . _raid(5);
$t->username = $c['username']; $t->username = $c['username'];
$t->plan_name = $p['name_plan']; $t->plan_name = $p['name_plan'];
$t->price = $p['price']; $t->price = $p['price'];
$t->recharged_on = $date_only; $t->recharged_on = $date_only;
$t->expiration = $date_exp; $t->expiration = $date_exp;
$t->time = $time; $t->time = $time;
$t->method = "voucher"; $t->method = "voucher";
$t->routers = $v1['routers']; $t->routers = $v1['routers'];
$t->type = "Hotspot"; $t->type = "Hotspot";
$t->save(); $t->save();
}
} $v1->status = "1";
$v1->user = $c['username'];
$v1->save();
} else {
if ($b) {
try {
$iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) {
die("Unable to connect to the router.<br>".$e->getMessage());
}
$printRequest = new RouterOS\Request('/ppp/secret/print');
$printRequest->setArgument('.proplist', '.id');
$printRequest->setQuery(RouterOS\Query::where('name', $c['username']));
$id = $client->sendSync($printRequest)->getProperty('.id');
$v1->status = "1"; $setRequest = new RouterOS\Request('/ppp/secret/remove');
$v1->user = $c['username']; $setRequest->setArgument('numbers', $id);
$v1->save(); $client->sendSync($setRequest);
}else{ $addRequest = new RouterOS\Request('/ppp/secret/add');
if($b){ $client->sendSync(
try { $addRequest
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); ->setArgument('name', $c['username'])
} catch (Exception $e) { ->setArgument('service', 'pppoe')
die('Unable to connect to the router.'); ->setArgument('profile', $p['name_plan'])
} ->setArgument('password', $c['password'])
$printRequest = new RouterOS\Request('/ppp/secret/print'); );
$printRequest->setArgument('.proplist', '.id');
$printRequest->setQuery(RouterOS\Query::where('name', $c['username']));
$id = $client->sendSync($printRequest)->getProperty('.id');
$setRequest = new RouterOS\Request('/ppp/secret/remove'); $b->customer_id = $user['id'];
$setRequest->setArgument('numbers', $id); $b->username = $c['username'];
$client->sendSync($setRequest); $b->plan_id = $v1['id_plan'];
$b->namebp = $p['name_plan'];
$b->recharged_on = $date_only;
$b->expiration = $date_exp;
$b->time = $time;
$b->status = "on";
$b->method = "voucher";
$b->routers = $v1['routers'];
$b->type = "PPPOE";
$b->save();
$addRequest = new RouterOS\Request('/ppp/secret/add'); // insert table transactions
$client->sendSync($addRequest $t = ORM::for_table('tbl_transactions')->create();
->setArgument('name', $c['username']) $t->invoice = "INV-" . _raid(5);
->setArgument('service', 'pppoe') $t->username = $c['username'];
->setArgument('profile', $p['name_plan']) $t->plan_name = $p['name_plan'];
->setArgument('password', $c['password']) $t->price = $p['price'];
); $t->recharged_on = $date_only;
$t->expiration = $date_exp;
$t->time = $time;
$t->method = "voucher";
$t->routers = $v1['routers'];
$t->type = "PPPOE";
$t->save();
} else {
try {
$iport = explode(":", $mikrotik['ip_address']);
$client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null);
} catch (Exception $e) {
die("Unable to connect to the router.<br>".$e->getMessage());
}
$addRequest = new RouterOS\Request('/ppp/secret/add');
$client->sendSync(
$addRequest
->setArgument('name', $c['username'])
->setArgument('service', 'pppoe')
->setArgument('profile', $p['name_plan'])
->setArgument('password', $c['password'])
);
$b->customer_id = $user['id']; $d = ORM::for_table('tbl_user_recharges')->create();
$b->username = $c['username']; $d->customer_id = $user['id'];
$b->plan_id = $v1['id_plan']; $d->username = $c['username'];
$b->namebp = $p['name_plan']; $d->plan_id = $v1['id_plan'];
$b->recharged_on = $date_only; $d->namebp = $p['name_plan'];
$b->expiration = $date_exp; $d->recharged_on = $date_only;
$b->time = $time; $d->expiration = $date_exp;
$b->status = "on"; $d->time = $time;
$b->method = "voucher"; $d->status = "on";
$b->routers = $v1['routers']; $d->method = "voucher";
$b->type = "PPPOE"; $d->routers = $v1['routers'];
$b->save(); $d->type = "PPPOE";
$d->save();
// insert table transactions // insert table transactions
$t = ORM::for_table('tbl_transactions')->create(); $t = ORM::for_table('tbl_transactions')->create();
$t->invoice = "INV-"._raid(5); $t->invoice = "INV-" . _raid(5);
$t->username = $c['username']; $t->username = $c['username'];
$t->plan_name = $p['name_plan']; $t->plan_name = $p['name_plan'];
$t->price = $p['price']; $t->price = $p['price'];
$t->recharged_on = $date_only; $t->recharged_on = $date_only;
$t->expiration = $date_exp; $t->expiration = $date_exp;
$t->time = $time; $t->time = $time;
$t->method = "voucher"; $t->method = "voucher";
$t->routers = $v1['routers']; $t->routers = $v1['routers'];
$t->type = "PPPOE"; $t->type = "PPPOE";
$t->save(); $t->save();
}
}else{ $v1->status = "1";
try { $v1->user = $c['username'];
$client = new RouterOS\Client($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $v1->save();
} catch (Exception $e) { }
die('Unable to connect to the router.');
}
$addRequest = new RouterOS\Request('/ppp/secret/add');
$client->sendSync($addRequest
->setArgument('name', $c['username'])
->setArgument('service', 'pppoe')
->setArgument('profile', $p['name_plan'])
->setArgument('password', $c['password'])
);
$d = ORM::for_table('tbl_user_recharges')->create(); r2(U . "voucher/list-activated", 's', $_L['Activation_Vouchers_Successfully']);
$d->customer_id = $user['id']; } else {
$d->username = $c['username']; r2(U . 'voucher/activation', 'e', $_L['Voucher_Not_Valid']);
$d->plan_id = $v1['id_plan']; }
$d->namebp = $p['name_plan'];
$d->recharged_on = $date_only;
$d->expiration = $date_exp;
$d->time = $time;
$d->status = "on";
$d->method = "voucher";
$d->routers = $v1['routers'];
$d->type = "PPPOE";
$d->save();
// insert table transactions
$t = ORM::for_table('tbl_transactions')->create();
$t->invoice = "INV-"._raid(5);
$t->username = $c['username'];
$t->plan_name = $p['name_plan'];
$t->price = $p['price'];
$t->recharged_on = $date_only;
$t->expiration = $date_exp;
$t->time = $time;
$t->method = "voucher";
$t->routers = $v1['routers'];
$t->type = "PPPOE";
$t->save();
}
$v1->status = "1";
$v1->user = $c['username'];
$v1->save();
}
r2(U."voucher/list-activated",'s',$_L['Activation_Vouchers_Successfully']);
}else{
r2(U . 'voucher/activation', 'e', $_L['Voucher_Not_Valid']);
}
break; break;
case 'list-activated': case 'list-activated':
$paginator = Paginator::bootstrap('tbl_transactions','username',$user['username']); $paginator = Paginator::bootstrap('tbl_transactions', 'username', $user['username']);
$d = ORM::for_table('tbl_transactions')->where('username',$user['username'])->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many(); $d = ORM::for_table('tbl_transactions')->where('username', $user['username'])->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many();
$ui->assign('d',$d); $ui->assign('d', $d);
$ui->assign('paginator',$paginator); $ui->assign('paginator', $paginator);
$ui->display('user-activation-list.tpl'); $ui->display('user-activation-list.tpl');
break; break;

View File

@ -40,9 +40,10 @@ foreach ($d as $ds){
$m = ORM::for_table('tbl_routers')->where('name',$ds['routers'])->find_one(); $m = ORM::for_table('tbl_routers')->where('name',$ds['routers'])->find_one();
try { try {
$client = new RouterOS\Client($m['ip_address'], $m['username'], $m['password']); $iport = explode(":",$m['ip_address']);
$client = new RouterOS\Client($iport[0], $m['username'], $m['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request('/ip/hotspot/user/print'); $printRequest = new RouterOS\Request('/ip/hotspot/user/print');
@ -81,9 +82,10 @@ foreach ($d as $ds){
$m = ORM::for_table('tbl_routers')->where('name',$ds['routers'])->find_one(); $m = ORM::for_table('tbl_routers')->where('name',$ds['routers'])->find_one();
try { try {
$client = new RouterOS\Client($m['ip_address'], $m['username'], $m['password']); $iport = explode(":",$m['ip_address']);
$client = new RouterOS\Client($iport[0], $m['username'], $m['password'],($iport[1])?$iport[1]:null);
} catch (Exception $e) { } catch (Exception $e) {
die('Unable to connect to the router.'); die("Unable to connect to the router.<br>".$e->getMessage());
} }
$printRequest = new RouterOS\Request('/ppp/secret/print'); $printRequest = new RouterOS\Request('/ppp/secret/print');
$printRequest->setArgument('.proplist', '.id'); $printRequest->setArgument('.proplist', '.id');

View File

@ -16,7 +16,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-md-2 control-label">{$_L['IP_Address']}</label> <label class="col-md-2 control-label">{$_L['IP_Address']}</label>
<div class="col-md-6"> <div class="col-md-6">
<input type="text" class="form-control" id="ip_address" name="ip_address"> <input type="text" placeholder="192.168.88.1:8728" class="form-control" id="ip_address" name="ip_address">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">

View File

@ -17,7 +17,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-md-2 control-label">{$_L['IP_Address']}</label> <label class="col-md-2 control-label">{$_L['IP_Address']}</label>
<div class="col-md-6"> <div class="col-md-6">
<input type="text" class="form-control" id="ip_address" name="ip_address" value="{$d['ip_address']}"> <input type="text" placeholder="192.168.88.1:8728" class="form-control" id="ip_address" name="ip_address" value="{$d['ip_address']}">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">