Upload files to "system"

Signed-off-by: nestict <icttechnest@gmail.com>
This commit is contained in:
nestict 2025-05-24 10:40:20 +02:00
parent bafc60ba0a
commit 3d46b68bd6
5 changed files with 464 additions and 0 deletions

172
system/cron.php Normal file
View File

@ -0,0 +1,172 @@
<?php
include "../init.php";
$isCli = true;
if (php_sapi_name() !== 'cli') {
$isCli = false;
echo "<pre>";
}
echo "PHP Time\t" . date('Y-m-d H:i:s') . "\n";
$res = ORM::raw_execute('SELECT NOW() AS WAKTU;');
$statement = ORM::get_last_statement();
$rows = array();
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
echo "MYSQL Time\t" . $row['WAKTU'] . "\n";
}
$_c = $config;
$textExpired = Lang::getNotifText('expired');
// Retrieve routers that are online
$onlineRouters = ORM::for_table('tbl_routers')->where('status', 'online')->find_many();
// Convert the ORM result set to a regular array
$onlineRoutersArray = $onlineRouters->as_array();
// Extract router names using array_map
$onlineRouterNames = array_map(function($router) {
return $router['name'];
}, $onlineRoutersArray);
// If no online routers are found, skip processing user recharges
if (empty($onlineRouterNames)) {
echo "No online routers found. Skipping user recharge processing.\n";
exit; // Skip further processing
}
echo "Found " . count($onlineRouters) . " online routers.\n";
// Retrieve user recharges with status 'on' and expiration less than or equal to today
$d = ORM::for_table('tbl_user_recharges')->where('status', 'on')->where_lte('expiration', date("Y-m-d"))
->where_in('routers', $onlineRouterNames) // Filter by routers that are online
->find_many();
echo "Found " . count($d) . " user(s) on online routers.\n";
run_hook('cronjob'); #HOOK
foreach ($d as $ds) {
if ($ds['type'] == 'Hotspot') { # HOTSPOT
$date_now = strtotime(date("Y-m-d H:i:s"));
$expiration = strtotime($ds['expiration'] . ' ' . $ds['time']);
echo $ds['expiration'] . " : " . (($isCli) ? $ds['username'] : Lang::maskText($ds['username']));
if ($date_now >= $expiration) {
echo " : EXPIRED \r\n";
$u = ORM::for_table('tbl_user_recharges')->where('id', $ds['id'])->find_one();
$c = ORM::for_table('tbl_customers')->where('id', $ds['customer_id'])->find_one();
$m = Mikrotik::info($ds['routers']);
// Now no need to check the router status again because the query already filters offline routers
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
if ($p['is_radius']) {
if (empty($p['pool_expired'])) {
print_r(Radius::customerDeactivate($c['username']));
} else {
Radius::upsertCustomerAttr($c['username'], 'Framed-Pool', $p['pool_expired'], ':=');
print_r(Radius::disconnectCustomer($c['username']));
}
} else {
$client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
if (!empty($p['pool_expired'])) {
Mikrotik::setHotspotUserPackage($client, $c['username'], 'EXPIRED NUXBILL ' . $p['pool_expired']);
} else {
Mikrotik::removeHotspotUser($client, $c['username']);
}
Mikrotik::removeHotspotActiveUser($client, $c['username']);
}
echo Message::sendPackageNotification($c, $u['namebp'], $p['price'], $textExpired, $config['user_notification_expired']) . "\n";
// Update database user with status off
$u->status = 'off';
$u->save();
// Autoreneewal from deposit
if ($config['enable_balance'] == 'yes' && $c['auto_renewal']) {
list($bills, $add_cost) = User::getBills($ds['customer_id']);
if ($add_cost > 0) {
if (!empty($add_cost)) {
$p['price'] += $add_cost;
}
}
if ($p && $p['enabled'] && $c['balance'] >= $p['price']) {
if (Package::rechargeUser($ds['customer_id'], $ds['routers'], $p['id'], 'Customer', 'Balance')) {
// if success, then get the balance
Balance::min($ds['customer_id'], $p['price']);
echo "plan enabled: $p[enabled] | User balance: $c[balance] | price $p[price]\n";
echo "auto renewall Success\n";
} else {
echo "plan enabled: $p[enabled] | User balance: $c[balance] | price $p[price]\n";
echo "auto renewall Failed\n";
Message::sendTelegram("FAILED RENEWAL #cron\n\n#u$c[username] #buy #Hotspot \n" . $p['name_plan'] .
"\nRouter: " . $p['routers'] .
"\nPrice: " . $p['price']);
}
} else {
echo "no renewall | plan enabled: $p[enabled] | User balance: $c[balance] | price $p[price]\n";
}
} else {
echo "no renewall | balance $config[enable_balance] auto_renewal $c[auto_renewal]\n";
}
} else
echo " : ACTIVE \r\n";
} else { # PPPOE
$date_now = strtotime(date("Y-m-d H:i:s"));
$expiration = strtotime($ds['expiration'] . ' ' . $ds['time']);
echo $ds['expiration'] . " : " . (($isCli) ? $ds['username'] : Lang::maskText($ds['username']));
if ($date_now >= $expiration) {
echo " : EXPIRED \r\n";
$u = ORM::for_table('tbl_user_recharges')->where('id', $ds['id'])->find_one();
$c = ORM::for_table('tbl_customers')->where('id', $ds['customer_id'])->find_one();
$m = ORM::for_table('tbl_routers')->where('name', $ds['routers'])->find_one();
// No need to check router status here, as we've already filtered offline routers
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
if ($p['is_radius']) {
if (empty($p['pool_expired'])) {
print_r(Radius::customerDeactivate($c['username']));
} else {
Radius::upsertCustomerAttr($c['username'], 'Framed-Pool', $p['pool_expired'], ':=');
print_r(Radius::disconnectCustomer($c['username']));
}
} else {
$client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
if (!empty($p['pool_expired'])) {
Mikrotik::setPpoeUserPlan($client, $c['username'], 'EXPIRED NUXBILL ' . $p['pool_expired']);
} else {
Mikrotik::removePpoeUser($client, $c['username']);
}
Mikrotik::removePpoeActive($client, $c['username']);
}
echo Message::sendPackageNotification($c, $u['namebp'], $p['price'], $textExpired, $config['user_notification_expired']) . "\n";
// Update database user with status off
$u->status = 'off';
$u->save();
// Autoreneewal from deposit
if ($config['enable_balance'] == 'yes' && $c['auto_renewal']) {
list($bills, $add_cost) = User::getBills($ds['customer_id']);
if ($add_cost > 0) {
if (!empty($add_cost)) {
$p['price'] += $add_cost;
}
}
if ($p && $p['enabled'] && $c['balance'] >= $p['price']) {
if (Package::rechargeUser($ds['customer_id'], $ds['routers'], $p['id'], 'Customer', 'Balance')) {
// if success, then get the balance
Balance::min($ds['customer_id'], $p['price']);
echo "plan enabled: $p[enabled] | User balance: $c[balance] | price $p[price]\n";
echo "auto renewall Success\n";
} else {
echo "plan enabled: $p[enabled] | User balance: $c[balance] | price $p[price]\n";
echo "auto renewall Failed\n";
Message::sendTelegram("FAILED RENEWAL #cron\n\n#u$c[username] #buy #PPPOE \n" . $p['name_plan'] .
"\nRouter: " . $p['routers'] .
"\nPrice: " . $p['price']);
}
}
}
} else
echo " : ACTIVE \r\n";
}
}

60
system/cron_reminder.php Normal file
View File

@ -0,0 +1,60 @@
<?php
/**
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
* This file for reminding user about expiration
* Example to run every at 7:00 in the morning
* 0 7 * * * /usr/bin/php /var/www/system/cron_reminder.php
**/
include "../init.php";
$isCli = true;
if (php_sapi_name() !== 'cli') {
$isCli = false;
echo "<pre>";
}
$d = ORM::for_table('tbl_user_recharges')->where('status', 'on')->find_many();
run_hook('cronjob_reminder'); #HOOK
echo "PHP Time\t" . date('Y-m-d H:i:s') . "\n";
$res = ORM::raw_execute('SELECT NOW() AS WAKTU;');
$statement = ORM::get_last_statement();
$rows = array();
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
echo "MYSQL Time\t" . $row['WAKTU'] . "\n";
}
$day7 = date('Y-m-d', strtotime("+7 day"));
$day3 = date('Y-m-d', strtotime("+3 day"));
$day1 = date('Y-m-d', strtotime("+1 day"));
print_r([$day1, $day3, $day7]);
foreach ($d as $ds) {
if (in_array($ds['expiration'], [$day1, $day3, $day7])) {
$u = ORM::for_table('tbl_user_recharges')->where('id', $ds['id'])->find_one();
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
$c = ORM::for_table('tbl_customers')->where('id', $ds['customer_id'])->find_one();
if ($p['validity_unit'] == 'Period') {
// Postpaid price from field
$add_inv = User::getAttribute("Invoice", $ds['customer_id']);
if (empty ($add_inv) or $add_inv == 0) {
$price = $p['price'];
} else {
$price = $add_inv;
}
} else {
$price = $p['price'];
}
if ($ds['expiration'] == $day7) {
echo Message::sendPackageNotification($c, $p['name_plan'], $price, Lang::getNotifText('reminder_7_day'), $config['user_notification_reminder']) . "\n";
} else if ($ds['expiration'] == $day3) {
echo Message::sendPackageNotification($c, $p['name_plan'], $price, Lang::getNotifText('reminder_3_day'), $config['user_notification_reminder']) . "\n";
} else if ($ds['expiration'] == $day1) {
echo Message::sendPackageNotification($c, $p['name_plan'], $price, Lang::getNotifText('reminder_1_day'), $config['user_notification_reminder']) . "\n";
}
}
}

166
system/error_log Normal file
View File

@ -0,0 +1,166 @@
[05-Jul-2024 03:20:03 UTC] Alloworigins called
[05-Jul-2024 03:20:03 UTC] Type parameter missing
[05-Jul-2024 03:25:02 UTC] Alloworigins called
[05-Jul-2024 03:25:02 UTC] Type parameter missing
[05-Jul-2024 11:36:03 Africa/Nairobi] PHP Fatal error: Uncaught PEAR2\Net\Transmitter\SocketException: stream_socket_client(): Unable to connect to tcp://us.labkom.us:6529 (Connection timed out) in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/Stream.php(145): PEAR2\Net\Transmitter\TcpClient->createException('stream_socket_c...', 0)
#1 [internal function]: PEAR2\Net\Transmitter\Stream->handleError(2, 'stream_socket_c...', '/home/codevibe/...', 159)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(159): stream_socket_client('tcp://us.labkom...', 0, '', '60', 4, Resource id #10)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#5 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#6 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#7 {main}
Next PEAR2\Net\Transmitter\SocketException: Failed to connect with socket. in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(178): PEAR2\Net\Transmitter\TcpClient->createException('Failed to conne...', 8, Object(PEAR2\Net\Transmitter\SocketException))
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#5 {main}
Next PEAR2\Net\RouterOS\SocketException: Error connecting to RouterOS in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php:169
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#3 {main}
thrown in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php on line 169
[05-Jul-2024 11:40:04 Africa/Nairobi] PHP Fatal error: Uncaught PEAR2\Net\Transmitter\SocketException: stream_socket_client(): Unable to connect to tcp://us.labkom.us:6529 (Network is unreachable) in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/Stream.php(145): PEAR2\Net\Transmitter\TcpClient->createException('stream_socket_c...', 0)
#1 [internal function]: PEAR2\Net\Transmitter\Stream->handleError(2, 'stream_socket_c...', '/home/codevibe/...', 159)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(159): stream_socket_client('tcp://us.labkom...', 0, '', '60', 4, Resource id #10)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#5 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#6 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#7 {main}
Next PEAR2\Net\Transmitter\SocketException: Failed to connect with socket. in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(178): PEAR2\Net\Transmitter\TcpClient->createException('Failed to conne...', 8, Object(PEAR2\Net\Transmitter\SocketException))
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#5 {main}
Next PEAR2\Net\RouterOS\SocketException: Error connecting to RouterOS in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php:169
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#3 {main}
thrown in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php on line 169
[05-Jul-2024 11:46:02 Africa/Nairobi] PHP Fatal error: Uncaught PEAR2\Net\Transmitter\SocketException: stream_socket_client(): Unable to connect to tcp://us.labkom.us:6529 (Connection timed out) in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/Stream.php(145): PEAR2\Net\Transmitter\TcpClient->createException('stream_socket_c...', 0)
#1 [internal function]: PEAR2\Net\Transmitter\Stream->handleError(2, 'stream_socket_c...', '/home/codevibe/...', 159)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(159): stream_socket_client('tcp://us.labkom...', 0, '', '60', 4, Resource id #10)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#5 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#6 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#7 {main}
Next PEAR2\Net\Transmitter\SocketException: Failed to connect with socket. in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(178): PEAR2\Net\Transmitter\TcpClient->createException('Failed to conne...', 8, Object(PEAR2\Net\Transmitter\SocketException))
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#5 {main}
Next PEAR2\Net\RouterOS\SocketException: Error connecting to RouterOS in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php:169
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#3 {main}
thrown in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php on line 169
[05-Jul-2024 11:51:03 Africa/Nairobi] PHP Fatal error: Uncaught PEAR2\Net\Transmitter\SocketException: stream_socket_client(): Unable to connect to tcp://us.labkom.us:6529 (Connection timed out) in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/Stream.php(145): PEAR2\Net\Transmitter\TcpClient->createException('stream_socket_c...', 0)
#1 [internal function]: PEAR2\Net\Transmitter\Stream->handleError(2, 'stream_socket_c...', '/home/codevibe/...', 159)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(159): stream_socket_client('tcp://us.labkom...', 0, '', '60', 4, Resource id #10)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#5 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#6 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#7 {main}
Next PEAR2\Net\Transmitter\SocketException: Failed to connect with socket. in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(178): PEAR2\Net\Transmitter\TcpClient->createException('Failed to conne...', 8, Object(PEAR2\Net\Transmitter\SocketException))
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#5 {main}
Next PEAR2\Net\RouterOS\SocketException: Error connecting to RouterOS in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php:169
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#3 {main}
thrown in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php on line 169
[06-Jul-2024 23:26:04 Africa/Nairobi] PHP Fatal error: Uncaught PEAR2\Net\Transmitter\SocketException: stream_socket_client(): Unable to connect to tcp://us.labkom.us:6529 (Connection timed out) in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/Stream.php(145): PEAR2\Net\Transmitter\TcpClient->createException('stream_socket_c...', 0)
#1 [internal function]: PEAR2\Net\Transmitter\Stream->handleError(2, 'stream_socket_c...', '/home/codevibe/...', 159)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(159): stream_socket_client('tcp://us.labkom...', 0, '', '60', 4, Resource id #10)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#5 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#6 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#7 {main}
Next PEAR2\Net\Transmitter\SocketException: Failed to connect with socket. in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(178): PEAR2\Net\Transmitter\TcpClient->createException('Failed to conne...', 8, Object(PEAR2\Net\Transmitter\SocketException))
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#5 {main}
Next PEAR2\Net\RouterOS\SocketException: Error connecting to RouterOS in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php:169
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#3 {main}
thrown in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php on line 169
[06-Jul-2024 23:31:04 Africa/Nairobi] PHP Fatal error: Uncaught PEAR2\Net\Transmitter\SocketException: stream_socket_client(): Unable to connect to tcp://us.labkom.us:6529 (Connection timed out) in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/Stream.php(145): PEAR2\Net\Transmitter\TcpClient->createException('stream_socket_c...', 0)
#1 [internal function]: PEAR2\Net\Transmitter\Stream->handleError(2, 'stream_socket_c...', '/home/codevibe/...', 159)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(159): stream_socket_client('tcp://us.labkom...', 0, '', '60', 4, Resource id #10)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#5 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#6 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#7 {main}
Next PEAR2\Net\Transmitter\SocketException: Failed to connect with socket. in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php:225
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/Transmitter/TcpClient.php(178): PEAR2\Net\Transmitter\TcpClient->createException('Failed to conne...', 8, Object(PEAR2\Net\Transmitter\SocketException))
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php(160): PEAR2\Net\Transmitter\TcpClient->__construct('us.labkom.us', '6529', false, '60', 'admin/11', '', Resource id #10)
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#3 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#4 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#5 {main}
Next PEAR2\Net\RouterOS\SocketException: Error connecting to RouterOS in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php:169
Stack trace:
#0 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Client.php(162): PEAR2\Net\RouterOS\Communicator->__construct('us.labkom.us', '6529', false, NULL, 'admin/11', '', NULL)
#1 /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/Mikrotik.php(24): PEAR2\Net\RouterOS\Client->__construct('us.labkom.us', 'admin', '11', '6529')
#2 /home/codevibe/kejos.codevibeisp.co.ke/system/cron.php(45): Mikrotik::getClient('us.labkom.us:65...', 'admin', '11')
#3 {main}
thrown in /home/codevibe/kejos.codevibeisp.co.ke/system/autoload/PEAR2/Net/RouterOS/Communicator.php on line 169

58
system/get_resources.php Normal file
View File

@ -0,0 +1,58 @@
<?php
/**
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
* by https://t.me/ibnux
**/
require_once 'system/autoload/PEAR2/Autoload.php';
function mikrotik_get_resources($routerId)
{
$mikrotik = ORM::for_table('tbl_routers')->where('enabled', '1')->find_one($routerId);
if (!$mikrotik) {
// Handle case where router is not found
return null;
}
try {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
$health = $client->sendSync(new RouterOS\Request('/system health print'));
$res = $client->sendSync(new RouterOS\Request('/system resource print'));
$resourceData = $res->getAllOfType(RouterOS\Response::TYPE_DATA)[0];
$uptime = $resourceData->getProperty('uptime');
$freeMemory = $resourceData->getProperty('free-memory');
$totalMemory = $resourceData->getProperty('total-memory');
$cpuLoad = $resourceData->getProperty('cpu-load');
return [
'uptime' => $uptime,
'freeMemory' => mikrotik_formatSize($freeMemory),
'totalMemory' => mikrotik_formatSize($totalMemory),
'cpuLoad' => $cpuLoad . '%'
];
} catch (Exception $e) {
// Handle exceptions, e.g., connection errors
return null;
}
}
// Function to round the value and append the appropriate unit
function mikrotik_formatSize($size)
{
$units = ['B', 'KB', 'MB', 'GB'];
$unitIndex = 0;
while ($size >= 1024 && $unitIndex < count($units) - 1) {
$size /= 1024;
$unitIndex++;
}
return round($size, 2) . ' ' . $units[$unitIndex];
}
if (isset($_GET['router_id'])) {
$routerId = $_GET['router_id'];
$resources = mikrotik_get_resources($routerId);
echo json_encode($resources);
}

8
system/index.html Normal file
View File

@ -0,0 +1,8 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>