New updated version with feature addition & bug fixes

Additional options in Profile creation.  Provision to enable 'Remove accounts' on expiry, grace period, price option etc.  Multiple user creation - More password type choices added.  Provision to correct IP/Host settings in the config.php file, if the present settings are wrong or not connecting to the host.
This commit is contained in:
Siby P Varkey 2018-07-10 16:16:17 +05:30 committed by GitHub
parent b2e961ebcf
commit 00183e3d0e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 295 additions and 98 deletions

View file

@ -4,22 +4,52 @@ use PEAR2\Net\RouterOS;
require_once 'PEAR2/Autoload.php';
require_once 'config.php';
if ( !isset($_SESSION) ) session_start();
$util = new RouterOS\Util($client = new RouterOS\Client("$host", "$user", "$pass"));
$profile_name=strtolower($_GET['profile_name']);
$session_timeout=$_GET['session_timeout'];
$shared_users=$_GET['shared_users'];
$mac_cookie_timeout=$_GET['mac_cookie_timeout'];
$keepalive_timeout=$_GET['keepalive_timeout'];
$rx_rate_limit=$_GET['rx_rate_limit'];
$tx_rate_limit=$_GET['tx_rate_limit'];
$rate_limit = $rx_rate_limit.'/'.$tx_rate_limit;
if (empty($session_timeout)) $session_timeout = '3d 00:00:00';
if (empty($mac_cookie_timeout)) $mac_cookie_timeout = '3d 00:00:00';
if (empty($keepalive_timeout)) $keepalive_timeout = '00:02:00';
if ($_SESSION['user_level'] == 1) {
$util = new RouterOS\Util($client = new RouterOS\Client("$host", "$user", "$pass"));
$profile_name=strtolower($_GET['profile_name']);
$session_timeout=$_GET['session_timeout'];
$shared_users=$_GET['shared_users'];
$mac_cookie_timeout=$_GET['mac_cookie_timeout'];
$keepalive_timeout=$_GET['keepalive_timeout'];
$rx_rate_limit=$_GET['rx_rate_limit'];
$tx_rate_limit=$_GET['tx_rate_limit'];
$validity = $_GET['validity'];
$grace_period = $_GET['grace_period'];
$on_expiry = $_GET['on_expiry'];
$price = $_GET['price'];
$lock_user = $_GET['lock_user'];
$rate_limit = $rx_rate_limit.'/'.$tx_rate_limit;
if (empty($session_timeout)) $session_timeout = '3d 00:00:00';
if (empty($mac_cookie_timeout)) $mac_cookie_timeout = '3d 00:00:00';
if (empty($keepalive_timeout)) $keepalive_timeout = '00:02:00';
if ($price == "") {$price = "0";}
if($lock_user == Enable){$mac_bind = ';[:local mac $"mac-address"; /ip hotspot user set mac-address=$mac [find where name=$user]]';} else {$mac_bind = "";}
$login_script = "";
switch ($on_expiry) {
case "rem":
$login_script = ':put (",rem,'.$price.','.$validity.','.$grace_period.',,'.$lock_user.',");{:local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$validity.');[/system scheduler add disabled=no interval=$uptime name=$user on-event="[/ip hotspot active remove [find where user=$user]];[/ip hotspot user set limit-uptime=1s [find where name=$user]];[/sys sch re [find where name=$user]];[/sys script run [find where name=$user]];[/sys script re [find where name=$user]]" start-date=$date start-time=$time];[/system script add name=$user source=":local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$grace_period.');[/system scheduler add disabled=no interval=\$uptime name=$user on-event= \"[/ip hotspot user remove [find where name=$user]];[/ip hotspot active remove [find where user=$user]];[/sys sch re [find where name=$user]]\"]"]';
break;
case "ntf":
$login_script = ':put (",ntf,'.$price.','.$validity.',,,'.$lock_user.',"); {:local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$validity.');[/system scheduler add disabled=no interval=$uptime name=$user on-event= "[/ip hotspot user set limit-uptime=1s [find where name=$user]];[/ip hotspot active remove [find where user=$user]];[/sys sch re [find where name=$user]]" start-date=$date start-time=$time]';
break;
case "remc":
$login_script = ':put (",remc,'.$price.','.$validity.','.$grace_period.',,'.$lock_user.',"); {:local price ('.$price.');:local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$validity.');[/system scheduler add disabled=no interval=$uptime name=$user on-event="[/ip hotspot active remove [find where user=$user]];[/ip hotspot user set limit-uptime=1s [find where name=$user]];[/sys sch re [find where name=$user]];[/sys script run [find where name=$user]];[/sys script re [find where name=$user]]" start-date=$date start-time=$time];[/system script add name=$user source=":local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$grace_period.');[/system scheduler add disabled=no interval=\$uptime name=$user on-event= \"[/ip hotspot user remove [find where name=$user]];[/ip hotspot active remove [find where user=$user]];[/sys sch re [find where name=$user]]\"]"];:local bln [:pick $date 0 3]; :local thn [:pick $date 7 11];[:local mac $"mac-address"; /system script add name="$date-|-$time-|-$user-|-$price-|-$address-|-$mac-|-'.$validity.'" owner="$bln$thn" source=$date comment=Zetozone]';
break;
case "ntfc":
$login_script = ':put (",ntfc,'.$price.','.$validity.',,,'.$lock_user.',"); {:local price ('.$price.');:local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$validity.');[/system scheduler add disabled=no interval=$uptime name=$user on-event= "[/ip hotspot user set limit-uptime=1s [find where name=$user]];[/ip hotspot active remove [find where user=$user]];[/sys sch re [find where name=$user]]" start-date=$date start-time=$time];:local bln [:pick $date 0 3]; :local thn [:pick $date 7 11];[:local mac $"mac-address"; /system script add name="$date-|-$time-|-$user-|-$price-|-$address-|-$mac-|-'.$validity.'" owner="$bln$thn" source=$date comment=Zetozone]';
break;
case "0":
if ($price != "" ){
$login_script = ':put (",,'.$price.',,,noexp,'.$lock_user.',")';
}
break;
}
$login_script .= $mac_bind;
if (!empty($profile_name)) {
@ -32,7 +62,10 @@ if ($_SESSION['user_level'] == 1) {
'session-timeout' => "$session_timeout",
'shared-users' => "$shared_users",
'mac-cookie-timeout' => "$mac_cookie_timeout",
'keepalive-timeout' => "$keepalive_timeout"
'keepalive-timeout' => "$keepalive_timeout",
'status-autorefresh' => "1m",
'transparent-proxy' => "yes",
'on-login' => "$login_script",
)
);
/*

View file

@ -14,9 +14,36 @@ if (isset($_GET['limit_uptime'])) $limit_uptime = $_GET['limit_uptime'];
if (isset($_GET['limit_bytes'])) $limit_bytes = $_GET['limit_bytes'];
if (isset($_GET['profile'])) $profile = $_GET['profile'];
if (isset($_GET['same_pass'])) $same_pass = $_GET['same_pass'];
if (isset($_GET['pass_type'])) $pass_type = $_GET['pass_type'];
if ( !isset($_SESSION) ) session_start();
switch ($pass_type) {
case "s":
$passAlphabet = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
break;
case "c":
$passAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ";
break;
case "n":
$passAlphabet = "123456789123456789123456789123456789123456789123456789";
break;
case "sc":
$passAlphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
break;
case "sn":
$passAlphabet = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz123456789123456789123456789";
break;
case "cn":
$passAlphabet = "123456789123456789123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789123456789123456789";
break;
case "scn":
$passAlphabet = "abcdefghijklmnopqrstuvwxyz123456789123456789123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
break;
}
$passAlphabetLimit = strlen($passAlphabet)-1;
if($_SESSION['user_level'] >= 1 and $_SESSION['user_level'] <= 3) {
include('dbconfig.php');
$stmt = $DB_con->prepare("SELECT booking_id from hotspot_vouchers ORDER BY booking_id DESC LIMIT 1");
@ -35,22 +62,28 @@ if($_SESSION['user_level'] >= 1 and $_SESSION['user_level'] <= 3) {
$k = 1;
for($i=0; $i < $no_of_users; $i++){
$passAlphabet = 'abcdefghikmnpqrstuvxyz23456789';
$passAlphabetLimit = strlen($passAlphabet)-1;
//$passAlphabet = 'abcdefghikmnpqrstuvxyz23456789';
//$passAlphabetLimit = strlen($passAlphabet)-1;
$pass = '';
$uid = '';
//Password generation
for ($j = 0; $j < $passLength; ++$j) {
$pass .= $passAlphabet[mt_rand(0, $passAlphabetLimit)];
}
$pass = str_shuffle($pass);
//Username generation
for ($j = 0; $j < $passLength; ++$j) {
$uid .= $passAlphabet[mt_rand(0, $passAlphabetLimit)];
}
//Adding prefix to username
$user_name = $user_prefix.$uid;
//username & password same or different
if ($same_pass == 2) { $pass_word = $pass; } else { $pass_word = $user_name; }
$util->setMenu('/ip hotspot user');
$iv = count($util);
if (intval($limit_bytes) != 0) {
$limit_bytes_total = (intval($limit_bytes) * 1024 * 1024 * 1024 );
$util->add(

View file

@ -1,27 +1,58 @@
<?php
header('Content-Type: application/json');
use PEAR2\Net\RouterOS;
require_once 'PEAR2/Autoload.php';
require_once 'config.php';
//$client = new RouterOS\Client("$host", "$user", "$pass");
$util = new RouterOS\Util($client = new RouterOS\Client("$host", "$user", "$pass"));
if ( !isset($_SESSION) ) session_start();
$profile_name=strtolower($_GET['profile_name']);
$rx_rate_limit=$_GET['rx_rate_limit'];
$tx_rate_limit=$_GET['tx_rate_limit'];
$session_timeout=$_GET['session_timeout'];
$shared_users=$_GET['shared_users'];
$mac_cookie_timeout=$_GET['mac_cookie_timeout'];
$keepalive_timeout=$_GET['keepalive_timeout'];
if (empty($rx_rate_limit)) $rx_rate_limit = "256k";
if (empty($tx_rate_limit)) $tx_rate_limit = "128k";
$rate_limit = $rx_rate_limit.'/'.$tx_rate_limit;
if (empty($session_timeout)) $session_timeout = "1d 00:00:00";
if (empty($shared_users)) $shared_users = 1;
if (empty($mac_cookie_timeout)) $mac_cookie_timeout = "1d 00:00:00";
if (empty($keepalive_timeout)) $keepalive_timeout = "00:02:00";
if ($_SESSION['user_level'] == 1) {
$util = new RouterOS\Util($client = new RouterOS\Client("$host", "$user", "$pass"));
$profile_name=strtolower($_GET['profile_name']);
$session_timeout=$_GET['session_timeout'];
$shared_users=$_GET['shared_users'];
$mac_cookie_timeout=$_GET['mac_cookie_timeout'];
$keepalive_timeout=$_GET['keepalive_timeout'];
$rx_rate_limit=$_GET['rx_rate_limit'];
$tx_rate_limit=$_GET['tx_rate_limit'];
$validity = $_GET['validity'];
$grace_period = $_GET['grace_period'];
$on_expiry = $_GET['on_expiry'];
$price = $_GET['price'];
$lock_user = $_GET['lock_user'];
$rate_limit = $rx_rate_limit.'/'.$tx_rate_limit;
if (empty($rx_rate_limit)) $rx_rate_limit = "256k";
if (empty($tx_rate_limit)) $tx_rate_limit = "128k";
if (empty($session_timeout)) $session_timeout = "1d 00:00:00";
if (empty($shared_users)) $shared_users = 1;
if (empty($mac_cookie_timeout)) $mac_cookie_timeout = "1d 00:00:00";
if (empty($keepalive_timeout)) $keepalive_timeout = "00:02:00";
if ($price == "") {$price = "0";}
if($lock_user == Enable){$mac_bind = ';[:local mac $"mac-address"; /ip hotspot user set mac-address=$mac [find where name=$user]]';} else {$mac_bind = "";}
$login_script = "";
switch ($on_expiry) {
case "rem":
$login_script = ':put (",rem,'.$price.','.$validity.','.$grace_period.',,'.$lock_user.',");{:local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$validity.');[/system scheduler add disabled=no interval=$uptime name=$user on-event="[/ip hotspot active remove [find where user=$user]];[/ip hotspot user set limit-uptime=1s [find where name=$user]];[/sys sch re [find where name=$user]];[/sys script run [find where name=$user]];[/sys script re [find where name=$user]]" start-date=$date start-time=$time];[/system script add name=$user source=":local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$grace_period.');[/system scheduler add disabled=no interval=\$uptime name=$user on-event= \"[/ip hotspot user remove [find where name=$user]];[/ip hotspot active remove [find where user=$user]];[/sys sch re [find where name=$user]]\"]"]';
break;
case "ntf":
$login_script = ':put (",ntf,'.$price.','.$validity.',,,'.$lock_user.',"); {:local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$validity.');[/system scheduler add disabled=no interval=$uptime name=$user on-event= "[/ip hotspot user set limit-uptime=1s [find where name=$user]];[/ip hotspot active remove [find where user=$user]];[/sys sch re [find where name=$user]]" start-date=$date start-time=$time]';
break;
case "remc":
$login_script = ':put (",remc,'.$price.','.$validity.','.$grace_period.',,'.$lock_user.',"); {:local price ('.$price.');:local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$validity.');[/system scheduler add disabled=no interval=$uptime name=$user on-event="[/ip hotspot active remove [find where user=$user]];[/ip hotspot user set limit-uptime=1s [find where name=$user]];[/sys sch re [find where name=$user]];[/sys script run [find where name=$user]];[/sys script re [find where name=$user]]" start-date=$date start-time=$time];[/system script add name=$user source=":local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$grace_period.');[/system scheduler add disabled=no interval=\$uptime name=$user on-event= \"[/ip hotspot user remove [find where name=$user]];[/ip hotspot active remove [find where user=$user]];[/sys sch re [find where name=$user]]\"]"];:local bln [:pick $date 0 3]; :local thn [:pick $date 7 11];[:local mac $"mac-address"; /system script add name="$date-|-$time-|-$user-|-$price-|-$address-|-$mac-|-'.$validity.'" owner="$bln$thn" source=$date comment=Zetozone]';
break;
case "ntfc":
$login_script = ':put (",ntfc,'.$price.','.$validity.',,,'.$lock_user.',"); {:local price ('.$price.');:local date [/system clock get date ];:local time [/system clock get time ];:local uptime ('.$validity.');[/system scheduler add disabled=no interval=$uptime name=$user on-event= "[/ip hotspot user set limit-uptime=1s [find where name=$user]];[/ip hotspot active remove [find where user=$user]];[/sys sch re [find where name=$user]]" start-date=$date start-time=$time];:local bln [:pick $date 0 3]; :local thn [:pick $date 7 11];[:local mac $"mac-address"; /system script add name="$date-|-$time-|-$user-|-$price-|-$address-|-$mac-|-'.$validity.'" owner="$bln$thn" source=$date comment=Zetozone]';
break;
case "0":
if ($price != "" ){
$login_script = ':put (",,'.$price.',,,noexp,'.$lock_user.',")';
}
break;
}
$login_script .= $mac_bind;
if (!empty($profile_name)) {
@ -44,6 +75,10 @@ if ($_SESSION['user_level'] == 1) {
$setRequest->setArgument('mac-cookie-timeout', $mac_cookie_timeout);
$setRequest->setArgument('keepalive-timeout', $keepalive_timeout);
$setRequest->setArgument('status-autorefresh', "1m");
$setRequest->setArgument('transparent-proxy', "yes");
$setRequest->setArgument('on-login', "$login_script");
$client->sendSync($setRequest);
/*
if(strtolower($session_timeout) == 'none') {

View file

@ -11,7 +11,7 @@ if ($_SESSION['user_level'] == 1) {
$profile_name=$_GET['profile_name'];
$printRequest = new RouterOS\Request('/ip hotspot user profile print');
$printRequest->setArgument('.proplist', '.id,name,address-pool,rate-limit,session-timeout,shared-users,mac-cookie-timeout,keepalive-timeout');
$printRequest->setArgument('.proplist', '.id,name,address-pool,rate-limit,session-timeout,shared-users,mac-cookie-timeout,keepalive-timeout,on-login');
$printRequest->setQuery(RouterOS\Query::where('name', $profile_name));
foreach ($client->sendSync($printRequest)->getAllOfType(RouterOS\Response::TYPE_DATA) as $item) {
@ -21,13 +21,29 @@ if ($_SESSION['user_level'] == 1) {
$tshared_users = $item->getProperty("shared-users");
$trate_limit = $item->getProperty("rate-limit");
$tsession_timeout = $item->getProperty("session-timeout");
$tshared_users = $item->getProperty("shared-users");
$ton_login = $item->getProperty("on-login");
$tmac_cookie_timeout = $item->getProperty("mac-cookie-timeout");
$tkeepalive_timeout = $item->getProperty("keepalive-timeout");
$exploded = explode(",",$ton_login);
$ton_expiry = $exploded[1];
$tprice = $exploded[2];
$tvalidity = $exploded[3];
$tgrace_period = $exploded[4];
$tlock_user = $exploded[6];
if($ton_expiry == "rem"){ $tton_expiry = "Remove"; }
elseif ($ton_expiry == "ntf"){ $tton_expiry = "Notice"; }
elseif ($ton_expiry == "remc") { $tton_expiry = "Remove & Record"; }
elseif ($ton_expiry == "ntfc") { $tton_expiry = "Notice & Record"; }
else $tton_expiry = "0";
$arr = array('name' => $tname, 'address_pool' => $taddress_pool, 'rate_limit' => $trate_limit, 'session_timeout' => $tsession_timeout,
'shared_users' => $tshared_users, 'mac_cookie_timeout' => $tmac_cookie_timeout,
'keepalive_timeout' => $tkeepalive_timeout );
'keepalive_timeout' => $tkeepalive_timeout, 'on_expiry' => $ton_expiry, 'price' => $tprice, 'validity' => $tvalidity,
'grace_period' => $tgrace_period, 'lock_user' => $tlock_user );
echo json_encode($arr);
}

View file

@ -1,5 +1,5 @@
<?php
$host = "168.1.0.200";
$host = "192.168.1.200";
$user = "admin";
$pass = "admin";
?>

View file

@ -106,6 +106,7 @@ function ajaxMultiple(){
var limit_bytes = document.getElementById('limit_bytes').value;
var profile = document.getElementById('profile').value;
var same_pass = document.getElementById('same_pass').value;
var Pass_type = document.getElementById('pass_type').value;
// btns = [{text:"No",action:"cmodalClose",style:"cmodal-cancel"}, {text:"Yes",action:"test.php",style:"cmodal-ok"}];
@ -149,7 +150,9 @@ function ajaxMultiple(){
}
var queryString = "?no_of_users=" + no_of_users ;
queryString += "&pass_length=" + pass_length + "&user_prefix=" + user_prefix + "&limit_uptime=" + limit_uptime + "&profile=" + profile + "&same_pass=" + same_pass + "&limit_bytes=" + limit_bytes;
queryString += "&pass_length=" + pass_length + "&user_prefix=" + user_prefix ;
queryString += "&limit_uptime=" + limit_uptime + "&profile=" + profile + "&same_pass=" + same_pass;
queryString += "&limit_bytes=" + limit_bytes + "&pass_type=" + Pass_type;
ajaxRequest.open("GET", "ajax_addusers.php" + queryString, true);
ajaxRequest.send(null);
}
@ -675,7 +678,7 @@ $('#getProfileModal').on('show.bs.modal', function (event) {
dataType: "json",
success: function(data)
{
//console.log (data);
//console.log(data);
var Name = data.name;
var Address_pool = data.address_pool;
var Rate_limit = data.rate_limit;
@ -689,6 +692,12 @@ $('#getProfileModal').on('show.bs.modal', function (event) {
var Mac_cookie_timeout = data.mac_cookie_timeout;
var Keepalive_timeout = data.keepalive_timeout;
var Validity = data.validity;
var Grace_period = data.grace_period;
var On_expiry = data.on_expiry;
var Price = data.price;
var Lock_user = data.lock_user;
modal.find('.modal-body #profile_name').val(Name)
modal.find('.modal-body #address_pool').val(Address_pool)
modal.find('.modal-body #rx_rate_limit').val(Rx_rate_limit)
@ -698,9 +707,13 @@ $('#getProfileModal').on('show.bs.modal', function (event) {
modal.find('.modal-body #mac_cookie_timeout').val(Mac_cookie_timeout)
modal.find('.modal-body #keepalive_timeout').val(Keepalive_timeout)
modal.find('.modal-body #validity').val(Validity)
modal.find('.modal-body #grace_period').val(Grace_period)
modal.find('.modal-body #on_expiry').val(On_expiry)
modal.find('.modal-body #price').val(Price)
modal.find('.modal-body #lock_user').val(Lock_user)
}
})
})
} )
@ -721,6 +734,12 @@ function addprofile(oForm) {
var Mac_cookie_timeout = oForm.elements["mac_cookie_timeout"].value;
var Keepalive_timeout = oForm.elements["keepalive_timeout"].value;
var Validity = oForm.elements["validity"].value;
var Grace_period = oForm.elements["grace_period"].value;
var On_expiry = oForm.elements["on_expiry"].value;
var Price = oForm.elements["price"].value;
var Lock_user = oForm.elements["lock_user"].value;
var ajaxRequest; // The variable that makes Ajax possible!
try{
@ -765,6 +784,8 @@ function addprofile(oForm) {
queryString += "&session_timeout=" + Session_timeout;
queryString += "&shared_users=" + Shared_users + "&mac_cookie_timeout=" + Mac_cookie_timeout + "&keepalive_timeout=" + Keepalive_timeout;
queryString += "&rx_rate_limit=" + Rx_rate_limit + "&tx_rate_limit=" + Tx_rate_limit;
queryString += "&validity=" + Validity + "&grace_period=" + Grace_period;
queryString += "&on_expiry=" + On_expiry + "&price=" + Price + "&lock_user=" + Lock_user;
ajaxRequest.open("GET", "ajax_add_profile.php" + queryString, true);
ajaxRequest.send(null);
@ -838,6 +859,12 @@ function editprofile(oForm) {
var Mac_cookie_timeout = oForm.elements["mac_cookie_timeout"].value;
var Keepalive_timeout = oForm.elements["keepalive_timeout"].value;
var Validity = oForm.elements["validity"].value;
var Grace_period = oForm.elements["grace_period"].value;
var On_expiry = oForm.elements["on_expiry"].value;
var Price = oForm.elements["price"].value;
var Lock_user = oForm.elements["lock_user"].value;
var ajaxRequest; // The variable that makes Ajax possible!
try{
@ -882,6 +909,8 @@ function editprofile(oForm) {
queryString += "&session_timeout=" + Session_timeout;
queryString += "&shared_users=" + Shared_users + "&mac_cookie_timeout=" + Mac_cookie_timeout + "&keepalive_timeout=" + Keepalive_timeout;
queryString += "&rx_rate_limit=" + Rx_rate_limit + "&tx_rate_limit=" + Tx_rate_limit;
queryString += "&validity=" + Validity + "&grace_period=" + Grace_period;
queryString += "&on_expiry=" + On_expiry + "&price=" + Price + "&lock_user=" + Lock_user;
ajaxRequest.open("GET", "ajax_edit_profile.php" + queryString, true);
ajaxRequest.send(null);

View file

@ -229,13 +229,13 @@
<div class="form-horizontal">
<div class="form-group form-group-sm">
<div class="col-sm-4">
<label class="col-sm-6 control-label" for="no_of_users">Users</label>
<label class="col-sm-6 control-label" for="no_of_users">How many Users</label>
<div class="col-sm-6">
<input type="number" min="2" max="150" id="no_of_users" name="no_of_users" value="2" autofocus >
</div>
</div>
<div class="col-sm-4">
<label class="col-sm-6 control-label" for="user_prefix">Name Prefix</label>
<label class="col-sm-6 control-label" for="user_prefix">User name Prefix</label>
<div class="col-sm-6">
<input type="text" id="user_prefix" name="user_prefix">
</div>
@ -297,6 +297,20 @@
</select>
</div>
</div>
<div class="col-sm-4">
<label class="col-sm-6 control-label" for="pass_type">Password Type</label>
<div class="col-sm-6">
<select class="myCombo" id="pass_type" name="pass_type" required>
<option value="s">abcd</option>
<option value="c">ABCD</option>
<option value="sc">aBcD</option>
<option value="sn">abcd1234</option>
<option value="cn">ABCD1234</option>
<option value="scn">aBcD1234</option>
<option value="n">1234</option>
</select>
</div>
</div>
<div class="col-sm-2">
<div class="pull-right">
<button name="missuing" id="missuing" onClick="ajaxMultiple()" class="btn btn-success">&nbsp; Issue</button>
@ -566,7 +580,7 @@
<?php
try
{
$printRequest = new RouterOS\Request('/ip/hotspot/user/print');
$printRequest = new RouterOS\Request('/ip hotspot user print');
$printRequest->setArgument('.proplist', '.id,server,name,profile,limit-uptime,limit-bytes-total,uptime,bytes-in,bytes-out');
$printRequest->setQuery(RouterOS\Query::where('.id', '*0', RouterOS\Query::OP_EQ) ->not());
@ -865,6 +879,7 @@
</body>
<?php
include('modal_change_pass.php');
include('modal_get_user.php');
include('modal_delete_guest.php');
include('modal_get_profiles.php');
include('modal_get_user.php');
?>

View file

@ -17,15 +17,15 @@ ini_set('display_errors', 1); ?>
<div class="panel-body">
<form class="form-horizontal" id="loginform" action="" method="POST">
<div class="form-group form-group-sm">
<label class="col-sm-2 control-label" for="inputEmail">Username</label>
<label class="col-sm-2 control-label" for="txt_user_name">Username</label>
<div class="col-sm-8">
<input type="text" id="txt_username" name="username" placeholder="Registered Username" required class="form-control" autofocus>
<input type="text" id="txt_user_name" name="username" placeholder="Registered Username" required class="form-control" autofocus>
</div>
</div>
<div class="form-group form-group-sm">
<label class="col-sm-2 control-label" for="inputPassword">Password</label>
<label class="col-sm-2 control-label" for="txt_password">Password</label>
<div class="col-sm-8">
<input type="password" id="txt_password" name="password" placeholder="Password" placeholder="Password" required class="form-control">
<input type="password" id="password" name="password" placeholder="Password" placeholder="Password" required class="form-control">
</div>
</div>
<div class="form-group form-group-sm">

View file

@ -5,39 +5,39 @@
<div class="modal-body">
<div class="alert alert-info text-center"><strong>Delete Guest User</strong></div>
<div class="form-group">
<label class="control-label col-xs-3" for="inputEmail">Username</label>
<label class="control-label col-xs-3">Username</label>
<div class="col-xs-7">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope-o fa-fw"></i></span>
<input type="text" id="username" size="40" name="username" value="<?php echo $item->getProperty('name'); ?>" readonly>
<input type="text" size="40" name="username" value="<?php echo $item->getProperty('name'); ?>" readonly>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-3" for="inputPassword">Limit Uptime</label>
<label class="control-label col-xs-3" for="uptime">Limit Uptime</label>
<div class="col-xs-7">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
<input type="text" name="uptime" value="<?php echo $item->getProperty('limit-uptime'); ?>" id="inputPassword" readonly>
<input type="text" name="uptime" value="<?php echo $item->getProperty('limit-uptime'); ?>" readonly>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-3" for="inputEmail">Address</label>
<label class="control-label col-xs-3">Address</label>
<div class="col-xs-7">
<input type="text" id="inputEmail" name="firstname" value="<?php echo $item->getProperty('address'); ?>" readonly>
<input type="text" name="firstname" value="<?php echo $item->getProperty('address'); ?>" readonly>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-3" for="inputEmail">Uptime</label>
<label class="control-label col-xs-3" for="lastname">Uptime</label>
<div class="col-xs-7">
<input type="text" id="inputEmail" name="lastname" value="<?php echo $item->getProperty('uptime'); ?>" readonly>
<input type="text" name="lastname" value="<?php echo $item->getProperty('uptime'); ?>" readonly>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-3" for="inputEmail">Session time Left</label>
<label class="control-label col-xs-3" for="session-time-left">Session time Left</label>
<div class="col-xs-7">
<input type="text" id="inputEmail" name="lastname" value="<?php echo $item->getProperty('session-time-left'); ?>" readonly>
<input type="text" name="session-time-left" value="<?php echo $item->getProperty('session-time-left'); ?>" readonly>
</div>
</div>
</div>
@ -45,7 +45,7 @@
<div class="col-sm-12">
<div class="col-sm-3 col-sm-offset-3">
<div class="pull-right">
<button name="issuing" id="issuing" onClick="removeAjax('<?php echo $item->getProperty('name'); ?>')" class="btn btn-success" data-dismiss="modal"><i class="icon-save icon-large"></i></a>&nbsp;Remove</button>
<button name="issuing" onClick="removeAjax('<?php echo $item->getProperty('name'); ?>')" class="btn btn-success" data-dismiss="modal"><i class="icon-save icon-large"></i></a>&nbsp;Remove</button>
</div>
</div>
<div class="col-sm-6">

View file

@ -5,24 +5,56 @@
<div class="modal-body">
<div class="alert alert-info text-center"><strong>HotSpot User Profiles for Guest Users</strong></div>
<div class="form-group">
<label class="control-label col-xs-3">Profile Name</label>
<div class="col-xs-7">
<label class="control-label col-xs-2">Profile Name</label>
<div class="col-xs-3">
<div class="input-group">
<input type="hidden" id="profile_id" name="id" >
<input type="text" id="profile_name" size="40" onChange="genClick();" required tabindex="1" autofocus>
<input type="text" id="profile_name" size="20" onChange="genClick();" required tabindex="1" autofocus>
</div>
</div>
<label class="control-label col-xs-2">Validity</label>
<div class="col-xs-3 pull-left">
<div class="input-group">
<input type="text" id="validity" size="20" title="Validity can be in days ( 3d), hours (4h) or weeks (1w) etc or like 3d 10:30:00" onChange="genClick();" required tabindex="2">
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-3">Session Timeout</label>
<div class="col-xs-7">
<input type="text" id="session_timeout" title="Session Timeout Value in the format 3d 00:00:00, Give 00:00:00 or none for No Limits" onChange="genClick();" tabindex="2">
<label class="control-label col-xs-2">Grace Period</label>
<div class="col-xs-3">
<input type="text" id="grace_period" title="Grace period allowed, if any" onChange="genClick();" tabindex="3">
</div>
<label class="control-label col-xs-2 pull-left">On Expiry</label>
<div class="col-xs-3 pull-left">
<select class="myCombo" id="on_expiry" title="What to do on expiry of accounts created using this profile, Remove account or Just keep disabled" onChange="genClick();" required tabindex="4">
<!-- <option></option> -->
<option value="">Select...</option>
<option value="0">None</option>
<option value="rem">Remove</option>
<option value="ntf">Notice</option>
<option value="remc">Remove & Record</option>
<option value="ntfc">Notice & Record</option>
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-3">Rate limit - Download(Rx)</label>
<label class="control-label col-xs-2">Usage Price</label>
<div class="col-xs-3">
<select class="myCombo" id="rx_rate_limit" title="Select the maximum Download speed limit allowed for the profile from the list" onChange="genClick();" name="status" required tabindex="3">
<input type="number" id="price" min="0" title="Usage price if any" onChange="genClick();" tabindex="5">
</div>
<label class="control-label col-xs-2 pull-left">Lock User</label>
<div class="col-xs-3 pull-left">
<select class="myCombo" id="lock_user" title="Lock user to any single device at a time?" onChange="genClick();" required tabindex="6">
<option></option>
<option value="Enable">Enable</option>
<option value="Disable">Disable</option>
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2">Rate limit - Download(Rx)</label>
<div class="col-xs-3">
<select class="myCombo" id="rx_rate_limit" title="Select the maximum Download speed limit allowed for the profile from the list" onChange="genClick();" required tabindex="7">
<option></option>
<option value="256k">256 Kbps</option>
<option value="512k">512 Kbps</option>
@ -36,9 +68,9 @@
<option value="8M">8 Mbps</option>
</select>
</div>
<label class="control-label col-xs-3 pull-left">Rate limit - Upload(Tx)</label>
<label class="control-label col-xs-2 pull-left">Rate limit - Upload(Tx)</label>
<div class="col-xs-3 pull-left">
<select class="myCombo" id="tx_rate_limit" title="Select the maximum Upload speed limit allowed for the profile from the list" onChange="genClick();" name="status" required tabindex="4">
<select class="myCombo" id="tx_rate_limit" title="Select the maximum Upload speed limit allowed for the profile from the list" onChange="genClick();" name="status" required tabindex="8">
<option></option>
<option value="128k">128 Kbps</option>
<option value="256k">256 Kbps</option>
@ -56,29 +88,33 @@
</div>
<div class="form-group">
<label class="control-label col-xs-3">Shared Users</label>
<div class="col-xs-7">
<input type="number" id="shared_users" title="Select No of users allowed to share a connection ( 1- 5 )" min=1 max=5 onChange="genClick();" tabindex="5">
<label class="control-label col-xs-2">Shared Users</label>
<div class="col-xs-3">
<input type="number" id="shared_users" title="Select No of users allowed to share a connection ( 1- 5 )" min=1 max=5 onChange="genClick();" tabindex="9">
</div>
<label class="control-label col-xs-2">Session Timeout</label>
<div class="col-xs-3 pull-left">
<input type="text" id="session_timeout" title="Session Timeout Value in the format 3d 00:00:00, Give 00:00:00 or none for No Limits" onChange="genClick();" tabindex="10">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-3">MAC Cookie Timeout</label>
<label class="control-label col-xs-2">MAC Cookie Timeout</label>
<div class="col-xs-3">
<input type="text" id="mac_cookie_timeout" size="12" title="MAC Cookie Timeout Value in the format 1d 00:00:00" onChange="genClick();" tabindex="6">
<input type="text" id="mac_cookie_timeout" size="12" title="MAC Cookie Timeout Value in the format 1d 00:00:00" onChange="genClick();" tabindex="11">
</div>
<label class="control-label col-xs-3 pull-left">Keep Alive Timeout</label>
<label class="control-label col-xs-2 pull-left">Keep Alive Timeout</label>
<div class="col-xs-3 pull-left">
<input type="text" id="keepalive_timeout" size="12" title="Keepalive Timeout Value in the format 00:00:00" onChange="genClick();" tabindex="7">
<input type="text" id="keepalive_timeout" size="12" title="Keepalive Timeout Value in the format 00:00:00" onChange="genClick();" tabindex="12">
</div>
</div>
</div>
<div class="modal-footer">
<div class="col-sm-10 col-sm-offset-1">
<?php
echo '<button name="add_profile" id="add_profile" onClick="addprofile(this.form);" class="btn btn-info" data-dismiss="modal" tabindex="8"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span>Add New</button>';
echo '<button name="edit_profile" id="edit_profile" onChange="genClick();" onClick="editprofile(this.form);" class="btn btn-success" data-dismiss="modal" tabindex="9"><i class="fa fa-pencil-square-o" aria-hidden="true"></i>Update</button>';
echo '<button name="delete_profile" id="delete_profile" onClick="deleteprofile(this.form);" class="btn btn-danger" data-dismiss="modal" tabindex="10"><i class="fa fa-trash" aria-hidden="true"></i>Delete Profile</button>';
echo '<button name="close_btn" id="close_btn" class="btn btn-warning" data-dismiss="modal" aria-hidden="true" tabindex="11"><i class="fa fa-times" aria-hidden="true"></i>Close</button>';
echo '<button name="add_profile" id="add_profile" onClick="addprofile(this.form);" class="btn btn-info" data-dismiss="modal" tabindex="13"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span>Add New</button>';
echo '<button name="edit_profile" id="edit_profile" onChange="genClick();" onClick="editprofile(this.form);" class="btn btn-success" data-dismiss="modal" tabindex="14"><i class="fa fa-pencil-square-o" aria-hidden="true"></i>Update</button>';
echo '<button name="delete_profile" id="delete_profile" onClick="deleteprofile(this.form);" class="btn btn-danger" data-dismiss="modal" tabindex="15"><i class="fa fa-trash" aria-hidden="true"></i>Delete Profile</button>';
echo '<button name="close_btn" id="close_btn" class="btn btn-warning" data-dismiss="modal" aria-hidden="true" tabindex="16"><i class="fa fa-times" aria-hidden="true"></i>Close</button>';
?>
</div>
</div>

View file

@ -66,7 +66,7 @@
echo '<button name="edit_user" id="edit_user" onChange="genClick();" onClick="edituser(this.form);" class="btn btn-success" data-dismiss="modal" tabindex="6"><i class="fa fa-pencil-square-o" aria-hidden="true"></i>Update</button>';
echo '<button name="delete_user" id="delete_user" onClick="deleteuser(this.form);" class="btn btn-danger" data-dismiss="modal" tabindex="7"><i class="fa fa-trash" aria-hidden="true"></i>Remove User</button>';
echo '<button name="reset_psd" id="reset_psd" onClick="resetpass(this.form);" class="btn btn-info" data-dismiss="modal" tabindex="8"><i class="fa fa-bolt" aria-hidden="true"></i>Reset Pass</button>';
echo '<button name="close_btn" id="close_btn" class="btn btn-warning" data-dismiss="modal" aria-hidden="true" tabindex="9"><i class="fa fa-times" aria-hidden="true"></i>Close</button>';
echo '<button name="close_button" id="close_button" class="btn btn-warning" data-dismiss="modal" aria-hidden="true" tabindex="9"><i class="fa fa-times" aria-hidden="true"></i>Close</button>';
?>
</div>
</div>

View file

@ -34,21 +34,21 @@
<div class="panel-body">
<form class="form-horizontal" id="loginform" action="" method="POST">
<div class="form-group form-group-sm">
<label class="col-sm-2 control-label" for="inputEmail">Host IP</label>
<label class="col-sm-2 control-label" for="txt_hostname">Host IP</label>
<div class="col-sm-8">
<input type="text" id="txt_username" name="newhost" placeholder="Registered Username" value="<?php echo $host; ?>" required class="form-control" autofocus>
<input type="text" id="txt_hostname" name="newhost" placeholder="IP address of host" value="<?php echo $host; ?>" required class="form-control" autofocus>
</div>
</div>
<div class="form-group form-group-sm">
<label class="col-sm-2 control-label" for="inputEmail">Username</label>
<label class="col-sm-2 control-label" for="txt_username">Username</label>
<div class="col-sm-8">
<input type="text" id="txt_username" name="newuser" placeholder="Registered Username" value="<?php echo $user; ?>" required class="form-control" autofocus>
</div>
</div>
<div class="form-group form-group-sm">
<label class="col-sm-2 control-label" for="inputPassword">Password</label>
<label class="col-sm-2 control-label" for="newpass">Password</label>
<div class="col-sm-8">
<input type="password" id="txt_password" name="newpass" placeholder="Password" placeholder="Password" value="<?php echo $pass; ?>" required class="form-control">
<input type="password" id="newpass" name="newpass" placeholder="Password" placeholder="Password" value="<?php echo $pass; ?>" required class="form-control">
</div>
</div>
<div class="form-group form-group-sm">