2017-03-11 02:51:06 +07:00
|
|
|
<?php
|
2022-09-01 14:52:32 +07:00
|
|
|
|
2017-03-11 02:51:06 +07:00
|
|
|
/**
|
2023-10-12 15:55:42 +07:00
|
|
|
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
|
|
|
|
* by https://t.me/ibnux
|
2022-09-01 14:52:32 +07:00
|
|
|
**/
|
2017-03-11 02:51:06 +07:00
|
|
|
|
2024-05-21 00:22:40 +01:00
|
|
|
$maintenance_mode = $config['maintenance_mode'];
|
|
|
|
if ($maintenance_mode == true){
|
|
|
|
displayMaintenanceMessage();
|
|
|
|
}
|
|
|
|
|
2024-05-17 09:20:53 +07:00
|
|
|
if (User::getID()) {
|
|
|
|
r2(U . 'home');
|
2024-02-27 10:37:41 +07:00
|
|
|
}
|
|
|
|
|
2017-03-11 02:51:06 +07:00
|
|
|
if (isset($routes['1'])) {
|
|
|
|
$do = $routes['1'];
|
|
|
|
} else {
|
|
|
|
$do = 'login-display';
|
|
|
|
}
|
|
|
|
|
2022-09-01 14:52:32 +07:00
|
|
|
switch ($do) {
|
2017-03-11 02:51:06 +07:00
|
|
|
case 'post':
|
2022-09-01 14:52:32 +07:00
|
|
|
$username = _post('username');
|
|
|
|
$password = _post('password');
|
2022-09-18 00:00:40 +07:00
|
|
|
run_hook('customer_login'); #HOOK
|
2022-09-01 14:52:32 +07:00
|
|
|
if ($username != '' and $password != '') {
|
|
|
|
$d = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
|
|
|
if ($d) {
|
|
|
|
$d_pass = $d['password'];
|
2024-05-17 19:05:16 +07:00
|
|
|
if ($d['status'] == 'Banned') {
|
2024-05-17 09:20:53 +07:00
|
|
|
_alert(Lang::T('This account status') . ' : ' . Lang::T($d['status']), 'danger', "");
|
2024-05-17 09:19:04 +07:00
|
|
|
}
|
2022-09-01 14:52:32 +07:00
|
|
|
if (Password::_uverify($password, $d_pass) == true) {
|
|
|
|
$_SESSION['uid'] = $d['id'];
|
2024-02-12 09:45:44 +07:00
|
|
|
User::setCookie($d['id']);
|
2022-09-01 14:52:32 +07:00
|
|
|
$d->last_login = date('Y-m-d H:i:s');
|
|
|
|
$d->save();
|
2024-02-13 13:54:01 +07:00
|
|
|
_log($username . ' ' . Lang::T('Login Successful'), 'User', $d['id']);
|
2024-05-17 09:20:53 +07:00
|
|
|
_alert(Lang::T('Login Successful'), 'success', "home");
|
2022-09-01 14:52:32 +07:00
|
|
|
} else {
|
2024-02-13 13:54:01 +07:00
|
|
|
_msglog('e', Lang::T('Invalid Username or Password'));
|
|
|
|
_log($username . ' ' . Lang::T('Failed Login'), 'User');
|
2022-09-01 14:52:32 +07:00
|
|
|
r2(U . 'login');
|
|
|
|
}
|
|
|
|
} else {
|
2024-02-13 13:54:01 +07:00
|
|
|
_msglog('e', Lang::T('Invalid Username or Password'));
|
2022-09-01 14:52:32 +07:00
|
|
|
r2(U . 'login');
|
|
|
|
}
|
|
|
|
} else {
|
2024-02-13 13:54:01 +07:00
|
|
|
_msglog('e', Lang::T('Invalid Username or Password'));
|
2022-09-01 14:52:32 +07:00
|
|
|
r2(U . 'login');
|
|
|
|
}
|
2017-03-11 02:51:06 +07:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
2023-12-19 11:35:49 +07:00
|
|
|
case 'activation':
|
|
|
|
$voucher = _post('voucher');
|
|
|
|
$username = _post('username');
|
|
|
|
$v1 = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one();
|
|
|
|
if ($v1) {
|
2024-01-08 16:12:21 +07:00
|
|
|
// voucher exists, check customer exists or not
|
2023-12-19 11:35:49 +07:00
|
|
|
$user = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
|
|
|
if (!$user) {
|
|
|
|
$d = ORM::for_table('tbl_customers')->create();
|
|
|
|
$d->username = alphanumeric($username, "+_.");
|
|
|
|
$d->password = $voucher;
|
|
|
|
$d->fullname = '';
|
|
|
|
$d->address = '';
|
|
|
|
$d->email = '';
|
|
|
|
$d->phonenumber = (strlen($username) < 21) ? $username : '';
|
|
|
|
if ($d->save()) {
|
|
|
|
$user = ORM::for_table('tbl_customers')->where('username', $username)->find_one($d->id());
|
|
|
|
if (!$user) {
|
|
|
|
r2(U . 'login', 'e', Lang::T('Voucher activation failed'));
|
|
|
|
}
|
|
|
|
} else {
|
2024-05-17 09:20:53 +07:00
|
|
|
_alert(Lang::T('Login Successful'), 'success', "dashboard");
|
2024-01-08 16:12:21 +07:00
|
|
|
r2(U . 'login', 'e', Lang::T('Voucher activation failed') . '.');
|
2023-12-19 11:35:49 +07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if ($v1['status'] == 0) {
|
|
|
|
$oldPass = $user['password'];
|
|
|
|
// change customer password to voucher code
|
|
|
|
$user->password = $voucher;
|
|
|
|
$user->save();
|
|
|
|
// voucher activation
|
2024-01-08 16:12:21 +07:00
|
|
|
if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Voucher", $voucher)) {
|
2023-12-19 11:35:49 +07:00
|
|
|
$v1->status = "1";
|
|
|
|
$v1->user = $user['username'];
|
|
|
|
$v1->save();
|
2024-01-08 16:12:21 +07:00
|
|
|
$user->last_login = date('Y-m-d H:i:s');
|
|
|
|
$user->save();
|
2023-12-19 11:35:49 +07:00
|
|
|
// add customer to mikrotik
|
|
|
|
if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
|
2024-01-08 16:12:21 +07:00
|
|
|
try {
|
2023-12-19 16:00:14 +07:00
|
|
|
$m = Mikrotik::info($v1['routers']);
|
|
|
|
$c = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
|
|
|
|
Mikrotik::logMeIn($c, $user['username'], $user['password'], $_SESSION['nux-ip'], $_SESSION['nux-mac']);
|
2024-01-08 16:12:21 +07:00
|
|
|
if (!empty($config['voucher_redirect'])) {
|
2023-12-19 16:00:14 +07:00
|
|
|
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
|
2024-01-08 16:12:21 +07:00
|
|
|
} else {
|
2023-12-19 16:00:14 +07:00
|
|
|
r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet"));
|
|
|
|
}
|
|
|
|
} catch (Exception $e) {
|
2024-01-08 16:12:21 +07:00
|
|
|
if (!empty($config['voucher_redirect'])) {
|
2023-12-19 16:00:14 +07:00
|
|
|
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
|
2024-01-08 16:12:21 +07:00
|
|
|
} else {
|
2023-12-19 16:00:14 +07:00
|
|
|
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
|
|
|
}
|
2023-12-19 11:35:49 +07:00
|
|
|
}
|
|
|
|
}
|
2024-01-08 16:12:21 +07:00
|
|
|
if (!empty($config['voucher_redirect'])) {
|
2023-12-19 11:35:49 +07:00
|
|
|
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
|
2024-01-08 16:12:21 +07:00
|
|
|
} else {
|
2023-12-19 11:35:49 +07:00
|
|
|
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// if failed to recharge, restore old password
|
|
|
|
$user->password = $oldPass;
|
|
|
|
$user->save();
|
|
|
|
r2(U . 'login', 'e', Lang::T("Failed to activate voucher"));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// used voucher
|
|
|
|
// check if voucher used by this username
|
|
|
|
if ($v1['user'] == $user['username']) {
|
2024-01-08 16:12:21 +07:00
|
|
|
$user->last_login = date('Y-m-d H:i:s');
|
|
|
|
$user->save();
|
2023-12-19 11:35:49 +07:00
|
|
|
if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
|
2024-01-08 16:12:21 +07:00
|
|
|
try {
|
2023-12-19 16:00:14 +07:00
|
|
|
$m = Mikrotik::info($v1['routers']);
|
|
|
|
$c = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
|
|
|
|
Mikrotik::logMeIn($c, $user['username'], $user['password'], $_SESSION['nux-ip'], $_SESSION['nux-mac']);
|
2024-01-08 16:12:21 +07:00
|
|
|
if (!empty($config['voucher_redirect'])) {
|
2023-12-19 16:00:14 +07:00
|
|
|
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
|
2024-01-08 16:12:21 +07:00
|
|
|
} else {
|
2023-12-19 16:00:14 +07:00
|
|
|
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
|
|
|
}
|
|
|
|
} catch (Exception $e) {
|
2024-01-08 16:12:21 +07:00
|
|
|
if (!empty($config['voucher_redirect'])) {
|
2023-12-19 16:00:14 +07:00
|
|
|
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
|
2024-01-08 16:12:21 +07:00
|
|
|
} else {
|
2023-12-19 16:00:14 +07:00
|
|
|
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
|
|
|
}
|
2023-12-19 11:35:49 +07:00
|
|
|
}
|
2024-01-08 16:12:21 +07:00
|
|
|
} else {
|
|
|
|
if (!empty($config['voucher_redirect'])) {
|
2023-12-19 11:35:49 +07:00
|
|
|
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
|
2024-01-08 16:12:21 +07:00
|
|
|
} else {
|
2023-12-19 11:35:49 +07:00
|
|
|
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// voucher used by other customer
|
2024-02-13 13:54:01 +07:00
|
|
|
r2(U . 'login', 'e', Lang::T('Voucher Not Valid'));
|
2023-12-19 11:35:49 +07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
2024-02-13 13:54:01 +07:00
|
|
|
_msglog('e', Lang::T('Invalid Username or Password'));
|
2024-01-08 16:12:21 +07:00
|
|
|
r2(U . 'login');
|
2023-12-19 11:35:49 +07:00
|
|
|
}
|
2017-03-11 02:51:06 +07:00
|
|
|
default:
|
2022-09-18 00:00:40 +07:00
|
|
|
run_hook('customer_view_login'); #HOOK
|
2024-01-08 16:12:21 +07:00
|
|
|
if ($config['disable_registration'] == 'yes') {
|
2023-12-19 11:35:49 +07:00
|
|
|
$ui->display('user-login-noreg.tpl');
|
2024-01-08 16:12:21 +07:00
|
|
|
} else {
|
2023-12-19 11:35:49 +07:00
|
|
|
$ui->display('user-login.tpl');
|
|
|
|
}
|
2017-03-11 02:51:06 +07:00
|
|
|
break;
|
|
|
|
}
|