<div class="login-form"> <?php if (isset($_GET['action']) && $_GET['action'] == "login") { if ($_POST['username'] != "" && $_POST['password'] != "") { $username = $_POST['username']; $password = $_POST['password']; if (userExists($username)) { if (!userIsDisabled($username)) { $email_status = getUserInfo($_POST['username'], 'email-status'); if ($email_status == 'verified') { if (checkUserPassword($username, $password)) { echo '<p>Username and password correct!</p>'; logUserIn($username, $password); header('Location: ./'); } else { echo '<p>Incorrect username or password.</p>'; } } else { echo '<p>Please verify your account to login.<br/>Check your email.</p>'; } } else { echo '<p>Your account has been disabled.</p>'; } } else { echo '<p>Incorrect username or password.</p>'; } } else { echo '<p>Please enter your username & password.</p>'; } ?> <a href="./?page=login">Go Back</a> <?php
public function update($userid) { if ($this->connected) { $resource = $this->checkConnection(); $majorVersion = intval($resource['version'][0]); $usersTable = new table('user'); $usersRes = $usersTable->load(" WHERE id={$userid}"); if (!$usersRes) { return; } foreach ($usersRes as $devuserrow) { $syncData = array("/ip/firewall/address-list" => array(), "/queue/simple" => array(), "/ppp/secret" => array()); $userId = '' . $devuserrow['id']; $useraddr = json_decode($devuserrow['iplist'], true); // Address list section $currentTariff = getCurrentTariff($devuserrow['id'], $usersTable); if ($currentTariff) { $currentTariff = $currentTariff['detailsid']; } if (empty($useraddr) || $useraddr == NULL) { return true; } $ipList = array(); foreach ($useraddr as $ip => $mac) { $ipList[] = $ip; } if (userIsDisabled($userid, $usersTable)) { $addrlist = 'disabled'; } else { $addrlist = $currentTariff ? 'allow' : 'deny'; } if (count($ipList) === 2) { $syncData["/ip/firewall/address-list"][$userId][] = array("list" => $addrlist, "address" => $ipList[1]); } // Queque section if ($currentTariff) { $tariffTable = new table('tariff'); $utariffres = $tariffTable->load("WHERE id={$currentTariff}"); $utariffrow = $utariffres[0]; if ($utariffrow) { // Select right target addresses index if ($majorVersion === 5) { $addressIndex = 'target-addresses'; } else { $addressIndex = 'target'; } // Normal / day if (pluginExists('night') && ($utariffrow['nightupspeed'] || $utariffrow['nightdownspeed'])) { $dayTime = $this->calculateMikrotikTime(configgetvalue('system', 'tariff', NULL, 'nightHourEnd')); $dayTime .= '-1d'; //$dayTime .= '-'.$this->calculateMikrotikTime ( configgetvalue('system', 'tariff', NULL, 'nightHourStart') ); $dayTime .= ',sun,mon,tue,wed,thu,fri,sat'; } else { $dayTime = '0s-1d,sun,mon,tue,wed,thu,fri,sat'; } // Burst if (pluginExists('burst') && ($utariffrow['downburstlimit'] && $utariffrow['upburstlimit'] && $utariffrow['downburstthreshold'] && $utariffrow['upburstthreshold'] && $utariffrow['downbursttime'] && $utariffrow['upbursttime'])) { $burstLimit = $utariffrow['upburstlimit'] . '/' . $utariffrow['downburstlimit']; $burstThreshold = $utariffrow['upburstthreshold'] . '/' . $utariffrow['downburstthreshold']; $burstTime = $utariffrow['upbursttime'] . '/' . $utariffrow['downbursttime']; } else { $burstLimit = "0/0"; $burstThreshold = "0/0"; $burstTime = "0s/0s"; } $useraddr = json_decode($devuserrow['iplist'], true); $responce = $this->API->comm('/queue/simple/print', array('?name' => $userid)); $ipList = array(); foreach ($useraddr as $ip => $mac) { $ipList[] = $ip . "/32"; } if (count($ipList) === 2) { $syncData["/queue/simple"][$userId][] = array("limit-at" => $utariffrow['upspeed'] . "/" . $utariffrow['downspeed'], "max-limit" => $utariffrow['upspeed'] . "/" . $utariffrow['downspeed'], $addressIndex => $ipList[1], "name" => $userId, "time" => $dayTime, "burst-limit" => $burstLimit, "burst-threshold" => $burstThreshold, "burst-time" => $burstTime); } // Night $responce = $this->API->comm('/queue/simple/print', array('?name' => "{$userid}-night")); if (pluginExists('night') && ($utariffrow['nightupspeed'] || $utariffrow['nightdownspeed'])) { $useraddr = json_decode($devuserrow['iplist'], true); $ipList = array(); foreach ($useraddr as $ip => $mac) { $ipList[] = $ip . "/32"; } //$time = $this->calculateMikrotikTime ( configgetvalue('system', 'tariff', NULL, 'nightHourStart') ); $time = '0s'; $time .= '-' . $this->calculateMikrotikTime(configgetvalue('system', 'tariff', NULL, 'nightHourEnd')); $time .= ',sun,mon,tue,wed,thu,fri,sat'; if (count($ipList) == 2) { $syncData["/queue/simple"][$userId][] = array("limit-at" => $utariffrow['nightupspeed'] . "/" . $utariffrow['nightdownspeed'], "max-limit" => $utariffrow['nightupspeed'] . "/" . $utariffrow['nightdownspeed'], $addressIndex => $ipList[1], "name" => $userId . '-night', "time" => $time, "burst-limit" => $burstLimit, "burst-threshold" => $burstThreshold, "burst-time" => $burstTime); } } else { if (count($responce)) { $this->API->comm("/queue/simple/remove", array(".id" => $responce[0]['.id'])); } } } } // PPP section // $useraddr = json_decode($devuserrow['iplist'], true); $response = $this->API->comm('/ppp/secret/print', array('?comment' => $userid)); $ipList = array(); $disableSecretsForDisabledUsers = configgetvalue('router', 'ppp', $this->id, 'disablePPPSecretsOfBlockedUsers'); $disabledState = $devuserrow['disabled'] == '1' && $disableSecretsForDisabledUsers ? 'yes' : 'no'; foreach ($useraddr as $ip => $mac) { $ipList[] = $ip; } if (count($ipList) === 2) { $syncData["/ppp/secret"][$userId][] = array("service" => "any", "profile" => "default", "local-address" => $ipList[0], "remote-address" => $ipList[1], "disabled" => $disabledState, "name" => $devuserrow['login'], "password" => $devuserrow['password']); } } $this->sync($syncData); return $this->checkConnection(); } }
public function update($userid) { if ($this->connected) { $resource = $this->checkConnection(); $majorVersion = intval($resource['version'][0]); $usersTable = new table('user'); $usersRes = $usersTable->load(" WHERE id={$userid}"); if (!$usersRes) { return; } $syncData = array("/ip/firewall/address-list" => array(), "/ip/firewall/filter" => array(), "/ip/firewall/mangle" => array(), "/ip/arp" => array(), "/queue/simple" => array(), "/ip/dhcp-server/lease" => array()); foreach ($usersRes as $devuserrow) { $userId = '' . $devuserrow['id']; foreach ($syncData as $key => $value) { $syncData[$key][$userId] = array(); } $useraddr = json_decode($devuserrow['iplist'], true); // Address list section foreach ($useraddr as $ip => $mac) { if (strlen($mac)) { $mac = strtoupper($mac); $useraddr[$ip] = preg_replace('/..(?!$)/', '$0:', strtoupper($mac)); } } $currentTariff = getCurrentTariff($devuserrow['id'], $usersTable); if ($currentTariff) { $currentTariff = $currentTariff['detailsid']; } if (empty($useraddr) || $useraddr == NULL) { return true; } if (userIsDisabled($devuserrow['id'], $usersTable)) { $addrlist = 'disabled'; } else { $addrlist = $currentTariff ? 'allow' : 'deny'; } foreach ($useraddr as $key => $value) { $syncData["/ip/firewall/address-list"][$userId][] = array("list" => $addrlist, "address" => $key); } // MAC-filter section $macFilterType = configgetvalue('router', 'main', $this->id, 'filterType'); switch ($macFilterType) { case 1: $inInterface = configgetvalue('router', 'main', $this->id, 'inInterface'); foreach ($useraddr as $ip => $mac) { if (strlen($mac)) { $syncData["/ip/arp"][$userId][] = array("mac-address" => $mac, "address" => $ip, "interface" => $inInterface); } } break; case 2: foreach ($useraddr as $ip => $mac) { if (strlen($mac)) { $syncData["/ip/firewall/filter"][$userId][] = array("list" => $addrlist, "address" => $key, "action" => "drop", "chain" => "forward", "src-mac-address" => "!" . $mac, "src-address" => $ip); } } break; case 3: foreach ($useraddr as $ip => $mac) { if (strlen($mac)) { $syncData["/ip/firewall/mangle"][$userId][] = array("action" => "mark-connection", "new-connection-mark" => "badmac", "chain" => "prerouting", "src-mac-address" => "!" . $mac, "src-address" => $ip); } } break; } // Queque section // if ($currentTariff) { $tariffTable = new table('tariff'); $utariffres = $tariffTable->load("WHERE id={$currentTariff}"); $utariffrow = $utariffres[0]; if ($utariffrow) { // Normal / day if (pluginExists('night') && ($utariffrow['nightupspeed'] || $utariffrow['nightdownspeed'])) { $dayTime = $this->calculateMikrotikTime(configgetvalue('system', 'tariff', NULL, 'nightHourEnd')); $dayTime .= '-1d'; //$dayTime .= '-'.$this->calculateMikrotikTime ( configgetvalue('system', 'tariff', NULL, 'nightHourStart') ); $dayTime .= ',sun,mon,tue,wed,thu,fri,sat'; } else { $dayTime = '0s-1d,sun,mon,tue,wed,thu,fri,sat'; } // Burst if (pluginExists('burst') && $utariffrow['downburstlimit'] && $utariffrow['upburstlimit'] && $utariffrow['downburstthreshold'] && $utariffrow['upburstthreshold'] && $utariffrow['downbursttime'] && $utariffrow['upbursttime']) { $burstLimit = $utariffrow['upburstlimit'] . '/' . $utariffrow['downburstlimit']; $burstThreshold = $utariffrow['upburstthreshold'] . '/' . $utariffrow['downburstthreshold']; $burstTime = $utariffrow['upbursttime'] . '/' . $utariffrow['downbursttime']; } else { $burstLimit = "0/0"; $burstThreshold = "0/0"; $burstTime = "0s/0s"; } // Speed $speed = $utariffrow['upspeed'] . "/" . $utariffrow['downspeed']; $useraddr = json_decode($devuserrow['iplist'], true); $responce = $this->API->comm('/queue/simple/print', array('?name' => $userid)); //$addresslist=explode(',', $responce[0]['target-addresses']); $ipList = array(); foreach ($useraddr as $ip => $mac) { $ipList[] = $ip . "/32"; } // Select right target addresses index if ($majorVersion === 5) { $addressIndex = 'target-addresses'; } else { $addressIndex = 'target'; } $dbadrr = implode(',', $ipList); if (count($useraddr)) { $syncData["/queue/simple"][$userId][] = array("limit-at" => $utariffrow['upspeed'] . "/" . $utariffrow['downspeed'], "max-limit" => $utariffrow['upspeed'] . "/" . $utariffrow['downspeed'], $addressIndex => $dbadrr, "name" => $userId, "time" => $dayTime, "burst-limit" => $burstLimit, "burst-threshold" => $burstThreshold, "burst-time" => $burstTime); } // Night $responce = $this->API->comm('/queue/simple/print', array('?name' => "{$userid}-night")); if (pluginExists('night') && ($utariffrow['nightupspeed'] || $utariffrow['nightdownspeed'])) { $nightSpeed = $utariffrow['nightupspeed'] . "/" . $utariffrow['nightdownspeed']; $useraddr = json_decode($devuserrow['iplist'], true); $ipList = array(); foreach ($useraddr as $ip => $mac) { $ipList[] = $ip . "/32"; } $dbadrr = implode(',', $ipList); //$time = $this->calculateMikrotikTime ( configgetvalue('system', 'tariff', NULL, 'nightHourStart') ); $time = '0s'; $time .= '-' . $this->calculateMikrotikTime(configgetvalue('system', 'tariff', NULL, 'nightHourEnd')); $time .= ',sun,mon,tue,wed,thu,fri,sat'; if (count($useraddr)) { $syncData["/queue/simple"][$userId][] = array("limit-at" => $nightSpeed, "max-limit" => $nightSpeed, $addressIndex => $dbadrr, "name" => $userId . '-night', "time" => $time, "burst-limit" => $burstLimit, "burst-threshold" => $burstThreshold, "burst-time" => $burstTime); } } } } // DHCP section $useraddr = json_decode($devuserrow['iplist'], true); foreach ($useraddr as $key => $value) { if ($useraddr[$key]) { $useraddr[$key] = preg_replace('/..(?!$)/', '$0:', strtoupper($value)); } } foreach ($useraddr as $ip => $mac) { if (strlen($mac)) { $syncData["/ip/dhcp-server/lease"][$userId][] = array("address" => $ip, "mac-address" => $mac); } } $this->sync($syncData); return $this->checkConnection(); } } }