document->setActiveSection('servers'); $this->document->setActiveItem('control'); $this->data['activesection'] = $this->document->getActiveSection(); $this->data['activeitem'] = $this->document->getActiveItem(); if(!$this->user->isLogged()) { $this->session->data['error'] = "Вы не авторизированы!"; $this->response->redirect($this->config->url . 'account/login'); } if($this->user->getAccessLevel() < 0) { $this->session->data['error'] = "У вас нет доступа к данному разделу!"; $this->response->redirect($this->config->url); } $this->load->library('query'); $this->load->model('servers'); $error = $this->validate($serverid); if($error) { $this->session->data['error'] = $error; $this->response->redirect($this->config->url . 'servers/index'); } $server = $this->serversModel->getServerById($serverid, array('games', 'locations')); if($server['server_status'] == 2) { $queryLib = new queryLibrary($server['game_query']); $queryLib->connect($server['location_ip'], $server['server_port']); $query = $queryLib->getInfo(); $queryLib->disconnect(); $this->data['query'] = $query; } $datenow = date_create('now'); $dateend = date_create($server['server_date_end']); $diff = date_diff($datenow, $dateend); if ($diff->invert) { $days = 1; } else { $days = $diff->days; } if($server['server_status'] == 2 AND $server['game_code'] == "cs" || $server['game_code'] == "css" || $server['game_code'] == "csgo") { $this->load->library('ssh2'); $ssh = new ssh2Library(); $connect = $ssh->connect($server['location_ip'], $server['location_user'], $pass = $server['location_password']); $output = $ssh->execute($connect, "cd /home/gs".$server['server_id']."/cstrike/maps/; ls | grep .bsp;"); $disconnect = $ssh->disconnect($connect); $data = $output . $disconnect; $data = explode("\n", $data); $maps = ''; foreach ($data as $map) { if (!preg_match('/\.(bsp.ztmp)/', $map)) { $map = str_replace(".bsp", "", $map); $maps .= ''; } } $this->data['maps'] = $maps; } if($server['game_code'] == "mcpe" || $server['game_code'] == "mine") { $cores = @array_reverse(@$this->game_settings->cores[$server['game_code']]); $this->data["cores"] = $cores; $no_core = @array_reverse(@$this->game_settings->cores[$server['game_code']]['latest_core']); $this->data["no_core"] = $no_core; } if($server['game_code'] == "cs") { $builds = @array_reverse(@$this->game_settings->builds[$server['game_code']]); $this->data["builds"] = $builds; $no_build = @array_reverse(@$this->game_settings->builds[$server['game_code']]['latest_build']); $this->data["no_build"] = $no_build; } if($server['server_status'] == 1 AND $server['game_code'] == "ragemp") { $node_modules = @array_reverse(@$this->game_settings->node_modules[$server['game_code']]); $this->data["node_modules"] = $node_modules; } if($server['server_status'] == 1 AND $server['game_code'] == "cs" || $server['game_code'] == "css" || $server['game_code'] == "csgo") { if($server["game_code"] == "cs") { $fps = array("300", "500", "1100"); $this->data["fps"] = $fps; } if($server["game_code"] == "csgo") { $tickrate = array("64", "128"); $this->data["tickrate"] = $tickrate; } if($server["game_code"] == "css") { $tickrate = array("66", "100"); $this->data["tickrate"] = $tickrate; } } $this->data['server'] = $server; $this->data['days'] = $days; $this->data['portPrice'] = $portPrice = round($this->config->portPrice); include_once 'application/controllers/common/main.php'; $this->getChild(array('common/header', 'common/footer')); return $this->load->view('servers/control', $this->data); } public function ajax($serverid = null) { if(!$this->user->isLogged()) { $this->data['status'] = "error"; $this->data['error'] = "Вы не авторизированы!"; return json_encode($this->data); } if($this->user->getAccessLevel() < 1) { $this->data['status'] = "error"; $this->data['error'] = "У вас нет доступа к данному разделу!"; return json_encode($this->data); } $this->load->model('waste'); $this->load->model('users'); $this->load->model('servers'); $server = $this->serversModel->getServerById($serverid, array('games')); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($server['server_status'] == 3) { $this->data["status"] = "error"; $this->data["error"] = "Идет установка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 4) { $this->data["status"] = "error"; $this->data["error"] = "Идет переустановка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 5) { $this->data["status"] = "error"; $this->data["error"] = "Идет создание BackUP сервера!"; return json_encode($this->data); } else if($server['server_status'] == 6) { $this->data["status"] = "error"; $this->data["error"] = "Идет восстанновление сервера из BackUP!"; return json_encode($this->data); } else if($server['server_status'] == 7) { $this->data["status"] = "error"; $this->data["error"] = "Идет обновление сервера!"; return json_encode($this->data); } else if($server["server_status"] == 0) { $this->data["status"] = "error"; $this->data["error"] = "Сервер заблокирован!"; return json_encode($this->data); } if($this->request->server['REQUEST_METHOD'] == 'POST') { $errorPOST = $this->validatePOST($serverid); if(!$errorPOST) { if($server["server_status"] == 1) { $slots = $this->request->post['slots']; $userid = $this->user->getId(); $balance = $this->user->getBalance(); $user = $this->usersModel->getUserById($userid, array(), array(), array()); $datenow = date_create('now'); $dateend = date_create($server['server_date_end']); $diff = date_diff($datenow, $dateend); if ($diff->invert) { $days = 1; } else { $days = $diff->days; } $price = $server['game_price'] * ($slots-$server['server_slots']); if ($days != NULL) { $price = ($price / 30) * $days; } if ($server['server_slots'] == $slots) { $price = '0'; } if (($slots - $server['server_slots']) <= 0) { $price = '0'; } if($slots < $server['server_slots']) { $this->data['status'] = "error"; $this->data['error'] = "Невозможно установить слоты ниже заданных."; return json_encode($this->data); } if($slots == $server['server_slots']) { $this->data['status'] = "success"; $this->data['success'] = "Слоты не были изменены."; return json_encode($this->data); } if($balance >= $price) { $this->serversModel->slotsServer($serverid, $slots); $this->usersModel->downUserBalance($userid, round($price, 2)); $wasteData = array( 'user_id' => $userid, 'waste_ammount' => round($price, 2), 'waste_status' => 1, 'waste_usluga' => "Увеличено до $slots слотов для сервера gs$serverid" ); $this->wasteModel->createWaste($wasteData); if($user['ref'] != 0) { $ref_percent = $this->config->ref_percent; $getpref = ($price * (1 + $ref_percent / 100)) - $price; $this->usersModel->upUserBalance($user['ref'], $getpref); $this->usersModel->upUserRMoney($user['ref'], $getpref); $wasteData = array( 'user_id' => $user['ref'], 'waste_ammount' => $getpref, 'waste_status' => 0, 'waste_usluga' => "Бонус с реферала ID-$userid" ); $this->wasteModel->createWaste($wasteData); } $logData = array( 'server_id' => $serverid, 'reason' => 'Увеличено до '.$slots.' слотов.', 'status' => 1 ); $this->serversModel->createLog($logData); $this->data['status'] = "success"; $this->data['success'] = "Вы успешно установили $slots слотов! С Вашего счета снято ".(round($price, 2))." руб."; } else { $this->data['status'] = "error"; $logData = array( 'server_id' => $serverid, 'reason' => '[SLOTS] Не достаточно средств!', 'status' => 3 ); $this->serversModel->createLog($logData); $this->data['error'] = "На Вашем счету не хватает ". round($price - $balance, 2) ." руб."; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } } else { $this->data['status'] = "error"; $this->data['error'] = $errorPOST; } } return json_encode($this->data); } public function action($serverid = null, $action = null) { if(!$this->user->isLogged()) { $this->data['status'] = "error"; $this->data['error'] = "Вы не авторизированы!"; return json_encode($this->data); } if($this->user->getAccessLevel() < 0) { $this->data['status'] = "error"; $this->data['error'] = "У вас нет доступа к данному разделу!"; return json_encode($this->data); } $this->load->model('servers'); $this->load->model('users'); $this->load->library('ssh2'); $ssh2Lib = new ssh2Library(); $server = $this->serversModel->getServerById($serverid, array('users', 'locations', 'games')); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($server['server_status'] == 3) { $this->data["status"] = "error"; $this->data["error"] = "Идет установка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 4) { $this->data["status"] = "error"; $this->data["error"] = "Идет переустановка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 5) { $this->data["status"] = "error"; $this->data["error"] = "Идет создание BackUP сервера!"; return json_encode($this->data); } else if($server['server_status'] == 6) { $this->data["status"] = "error"; $this->data["error"] = "Идет восстанновление сервера из BackUP!"; return json_encode($this->data); } else if($server['server_status'] == 7) { $this->data["status"] = "error"; $this->data["error"] = "Идет обновление сервера!"; return json_encode($this->data); } else if($action == "start" || $action == "stop" || $action == "restart" || $action == "reinstall" || $action == "backup" || $action == "unbackup" || $action == "delete_backup") { if($server["server_status"] == 0) { $this->data["status"] = "error"; $this->data["error"] = "Сервер заблокирован!"; return json_encode($this->data); } } switch($action) { case "start": { if($server["server_status"] == 1) { $stats = $this->serversModel->getHDD($server['server_id']); if((int)$stats < $server['game_ssd']) { $result = $this->serversModel->action($serverid, 'start'); if($result["status"] == "success") { $this->serversModel->deleteTask(array('task_name' => 'enable', 'server_id' => $serverid)); $this->serversModel->updateServer($serverid, array("server_status" => 2)); $logData = array( 'server_id' => $serverid, 'reason' => 'Успешный запуск сервера', 'status' => 1 ); $this->serversModel->createLog($logData); $this->data["status"] = "success"; $this->data["success"] = "Вы успешно запустили сервер!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } else { $this->data["status"] = "error"; $this->data["error"] = "Вы привысили ограничение размера директории на ". round($stats - $server['game_ssd'], 2) ."МБ, запуск сервера невозможен!"; } } else { $this->data["status"] = "error"; $this->data["error"] = "Сервер должен быть выключен!"; } break; } case "reinstall": { if($server["server_status"] == 1) { $logData = array( 'server_id' => $serverid, 'reason' => 'Сервер успешно поставлен на переустановку!', 'status' => 2 ); $this->serversModel->createLog($logData); $this->serversModel->updateServer($serverid, array('server_status' => 4, 'server_work' => 1)); $this->data["status"] = "success"; $this->data["success"] = "Сервер успешно поставлен на переустановку!"; } else { $this->data["status"] = "error"; $this->data["error"] = "Сервер должен быть выключен!"; } break; } case "restart": { if($server["server_status"] == 2) { $stats = $this->serversModel->getHDD($server['server_id']); if((int)$stats < $server['game_ssd']) { $result = $this->serversModel->action($serverid, 'restart'); if($result["status"] == "success") { $this->serversModel->deleteTask(array('task_name' => 'restart', 'server_id' => $serverid)); $logData = array( 'server_id' => $serverid, 'reason' => 'Успешный перезапуск сервера', 'status' => 1 ); $this->serversModel->createLog($logData); $this->data["status"] = "success"; $this->data["success"] = "Вы успешно перезапустили сервер!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } else { $result = $this->serversModel->action($serverid, 'stop'); if($result['status'] == "success") { $this->serversModel->updateServer($serverid, array('server_status' => 1)); $this->data["status"] = "error"; $this->data["error"] = "Вы привысили ограничение размера директории на ". round($stats - $server['game_ssd'], 2) ."МБ, перезагрузка сервера невозможна!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } } else if($server["server_status"] == 2) { $this->data["status"] = "error"; $this->data["error"] = "Сервер должен быть включен!"; } break; } case "stop": { if($server["server_status"] == 2) { $result = $this->serversModel->action($serverid, 'stop'); if($result["status"] == "success") { $this->serversModel->deleteTask(array('task_name' => 'disable', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'restart', 'server_id' => $serverid)); $this->serversModel->updateServer($serverid, array("server_status" => 1)); $logData = array( 'server_id' => $serverid, 'reason' => 'Успешное выключение сервера', 'status' => 1 ); $this->serversModel->createLog($logData); $this->data["status"] = "success"; $this->data["success"] = "Вы успешно выключили сервер!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } else { $this->data["status"] = "error"; $this->data["error"] = "Сервер должен быть вылючен!"; } break; } case 'backup': { if($server['server_status'] == 1) { $stats = $this->serversModel->getHDD($server['server_id']); if((int)$stats < $server['game_ssd']) { $this->serversModel->deleteTask(array('task_name' => 'restart', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'enable', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'disable', 'server_id' => $serverid)); $this->serversModel->updateServer($serverid, array('server_status' => 5, 'server_work' => 1)); $logData = array( 'server_id' => $serverid, 'reason' => 'Успешное начало создания BackUP сервера.', 'status' => 1 ); $this->serversModel->createLog($logData); $this->data['status'] = "success"; $this->data['success'] = "Вы успешно начали создание BackUP сервера!"; } else { $this->data["status"] = "error"; $this->data["error"] = "Вы привысили ограничение размера директории на ". round($stats - $server['game_ssd'], 2) ."МБ, создание бекапа сервера невозможено!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } break; } case 'unbackup': { if($server['server_status'] == 1) { if (file_exists('ssh2.sftp://'.$server['location_user'].':'.$server['location_password'].'@'.$server['location_ip'].':22/home/cp/backups/gs'.$serverid.'.tar')) { $this->serversModel->deleteTask(array('task_name' => 'restart', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'enable', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'disable', 'server_id' => $serverid)); $this->serversModel->updateServer($serverid, array('server_status' => 6, 'server_work' => 1)); $logData = array( 'server_id' => $serverid, 'reason' => 'Успешное начало восстановление BackUP сервера.', 'status' => 1 ); $this->serversModel->createLog($logData); $this->data['status'] = "success"; $this->data['success'] = "Вы успешно восстановили BackUP сервера!"; } else { $this->data['status'] = "error"; $this->data['error'] = "У вас нет BackUP сервера!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } break; } case 'delete_backup': { if($server['server_status'] == 1) { if (file_exists('ssh2.sftp://'.$server['location_user'].':'.$server['location_password'].'@'.$server['location_ip'].':22/home/cp/backups/gs'.$serverid.'.tar')) { $result = $this->serversModel->action($serverid, 'delete_backup'); if($result["status"] == "success") { $logData = array( 'server_id' => $serverid, 'reason' => 'Успешное удаление BackUP сервера', 'status' => 1 ); $this->serversModel->createLog($logData); $this->data["status"] = "success"; $this->data["success"] = "Вы успешно удалили BackUP сервера!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } else { $this->data['status'] = "error"; $this->data['error'] = "У вас нет BackUP сервера!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } break; } case 'promised': { $this->load->model('users'); $this->load->model('waste'); $userid = $this->user->getId(); $user = $this->usersModel->getUserById($userid, array(), array(), array()); if($user['user_promised_pay'] == 0){ $result = $this->serversModel->promisedServer($serverid); if($result["status"] == "success") { $this->usersModel->updateUser($userid, array('user_promised_pay' => 1)); $this->usersModel->downUserBalance($userid, 15); $wasteData = array( 'user_id' => $userid, 'waste_ammount' => 15, 'waste_status' => 1, 'waste_usluga' => "Услуга обещанный платеж для сервера gs$serverid" ); $this->wasteModel->createWaste($wasteData); $this->data['status'] = "success"; $this->data['success'] = "Вы активирали обещаный платёж!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } else { $this->data['status'] = "error"; $this->data['error'] = "На данный момент Вам недоступна данная функция!"; } break; } default: { $logData = array( 'server_id' => $serverid, 'reason' => 'Вы выбрали несуществующее действие!', 'status' => 3 ); $this->serversModel->createLog($logData); $this->data['status'] = "error"; $this->data['error'] = "Вы выбрали несуществующее действие!"; break; } } return json_encode($this->data); } public function ajax_port($serverid = null) { if(!$this->user->isLogged()) { $this->data['status'] = "error"; $this->data['error'] = "Вы не авторизированы!"; return json_encode($this->data); } if($this->user->getAccessLevel() < 1) { $this->data['status'] = "error"; $this->data['error'] = "У вас нет доступа к данному разделу!"; return json_encode($this->data); } $userid = $this->user->getId(); $balance = $this->user->getBalance(); $portPrice = round($this->config->portPrice); $this->load->model('waste'); $this->load->model('users'); $this->load->model('servers'); $gameServer = $this->serversModel->getServerById($serverid, array('games', 'locations')); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($gameServer['server_status'] == 3) { $this->data["status"] = "error"; $this->data["error"] = "Идет установка сервера!"; return json_encode($this->data); } else if($gameServer['server_status'] == 4) { $this->data["status"] = "error"; $this->data["error"] = "Идет переустановка сервера!"; return json_encode($this->data); } else if($gameServer['server_status'] == 5) { $this->data["status"] = "error"; $this->data["error"] = "Идет создание BackUP сервера!"; return json_encode($this->data); } else if($gameServer['server_status'] == 6) { $this->data["status"] = "error"; $this->data["error"] = "Идет восстанновление сервера из BackUP!"; return json_encode($this->data); } else if($gameServer['server_status'] == 7) { $this->data["status"] = "error"; $this->data["error"] = "Идет обновление сервера!"; return json_encode($this->data); } else if($gameServer["server_status"] == 0) { $this->data["status"] = "error"; $this->data["error"] = "Сервер заблокирован!"; return json_encode($this->data); } if($this->request->server['REQUEST_METHOD'] == 'POST') { $port = @(int)$this->request->post['port']; if($gameServer['server_status'] == 1){ if($balance >= $portPrice){ if(!$this->serversModel->getTotalFirewalls(array('server_id' => $serverid))){ if(!$this->serversModel->getTotalServers(array('location_id' => $gameServer['location_id'], 'server_port' => $port))){ $gameServerPorts = $this->serversModel->getGameServerPortList($gameServer['location_id'], $gameServer['game_min_port'], $gameServer['game_max_port']); if (in_array($port, $gameServerPorts)) { $this->serversModel->updateServer($serverid, array('server_port' => $port)); $this->usersModel->downUserBalance($userid, $portPrice); $wasteData = array( 'user_id' => $userid, 'waste_ammount' => $portPrice, 'waste_status' => 1, 'waste_usluga' => "Установлен порт $port для сервера gs$serverid" ); $this->wasteModel->createWaste($wasteData); $user = $this->usersModel->getUserById($userid, array(), array(), array()); if($user['ref'] != 0) { $ref_percent = $this->config->ref_percent; $getpref = ($portPrice * (1 + $ref_percent / 100)) - $portPrice; $this->usersModel->upUserBalance($user['ref'], $getpref); $this->usersModel->upUserRMoney($user['ref'], $getpref); $wasteData = array( 'user_id' => $user['ref'], 'waste_ammount' => $getpref, 'waste_status' => 0, 'waste_usluga' => "Бонус с реферала ID-$userid" ); $this->wasteModel->createWaste($wasteData); } $this->data['status'] = "success"; $this->data['success'] = "Вы успешно сменили порт сервера на ".$port; } else { $this->data['status'] = 'error'; $this->data['error'] = 'Выбранный порт не может быть использован!'; } } else { $this->data['status'] = "error"; $this->data['error'] = "Выбранный порт уже занят другим сервером!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Необходимо удалить все заблокированные IP адреса!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "На Вашем счету не хватает ".(round($portPrice-$balance, 2))." руб"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } } return json_encode($this->data); } public function changemap_go($serverid = null) { if(!$this->user->isLogged()) { $this->session->data['error'] = "Вы не авторизированы!"; $this->response->redirect($this->config->url . 'news/index'); } if($this->user->getAccessLevel() < 0) { $this->session->data['error'] = "У вас нет доступа к данному разделу!"; $this->response->redirect($this->config->url); } $this->load->model('servers'); $server = $this->serversModel->getServerById($serverid, array('games', 'locations')); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($server['server_status'] == 3) { $this->data["status"] = "error"; $this->data["error"] = "Идет установка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 4) { $this->data["status"] = "error"; $this->data["error"] = "Идет переустановка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 5) { $this->data["status"] = "error"; $this->data["error"] = "Идет создание BackUP сервера!"; return json_encode($this->data); } else if($server['server_status'] == 6) { $this->data["status"] = "error"; $this->data["error"] = "Идет восстанновление сервера из BackUP!"; return json_encode($this->data); } else if($server['server_status'] == 7) { $this->data["status"] = "error"; $this->data["error"] = "Идет обновление сервера!"; return json_encode($this->data); } else if($server["server_status"] == 0) { $this->data["status"] = "error"; $this->data["error"] = "Сервер заблокирован!"; return json_encode($this->data); } if($server['server_status'] == 2){ $command = str_replace("'", "'", "changelevel ".$_POST['map'].""); $this->serversModel->action($serverid, 'sendcommand', array('command' => $command)); $this->data['status'] = "success"; $this->data['success'] = "Вы успешно сменили карту на ".$_POST['map']."!"; }else{ $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть включен!"; } return json_encode($this->data); } public function changecore($serverid = null) { if(!$this->user->isLogged()) { $this->session->data['error'] = "Вы не авторизированы!"; $this->response->redirect($this->config->url . 'news/index'); } if($this->user->getAccessLevel() < 0) { $this->session->data['error'] = "У вас нет доступа к данному разделу!"; $this->response->redirect($this->config->url); } $this->load->model('servers'); $server = $this->serversModel->getServerById($serverid, array('games', 'locations')); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($server['server_status'] == 3) { $this->data["status"] = "error"; $this->data["error"] = "Идет установка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 4) { $this->data["status"] = "error"; $this->data["error"] = "Идет переустановка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 5) { $this->data["status"] = "error"; $this->data["error"] = "Идет создание BackUP сервера!"; return json_encode($this->data); } else if($server['server_status'] == 6) { $this->data["status"] = "error"; $this->data["error"] = "Идет восстанновление сервера из BackUP!"; return json_encode($this->data); } else if($server['server_status'] == 7) { $this->data["status"] = "error"; $this->data["error"] = "Идет обновление сервера!"; return json_encode($this->data); } else if($server["server_status"] == 0) { $this->data["status"] = "error"; $this->data["error"] = "Сервер заблокирован!"; return json_encode($this->data); } if($this->request->server['REQUEST_METHOD'] == 'POST') { if($server['server_status'] == 1){ if($server["game_code"] == "mine" || $server["game_code"] == "mcpe") { $core = @$this->request->post['core']; $coreInfo = $this->game_settings->cores[$server['game_code']][$core]; if(is_array($coreInfo)) { $result = $this->serversModel->action($serverid, 'sendcommand', array('command' => 'unsetFiles')); if($result['status'] == "success") { $this->serversModel->deleteTask(array('task_name' => 'restart', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'enable', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'disable', 'server_id' => $serverid)); $this->serversModel->updateServer($serverid, array('server_status' => 7, 'server_work' => 1, 'server_binary' => $core, 'server_binary_version' => $this->game_settings->cores[$server['game_code']][$core]['corebinary'])); $this->data["status"] = "success"; $this->data["success"] = "Вы успешно начали смену ядра!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } else { $this->data["status"] = "error"; $this->data["error"] = "Вы указали неверное ядро!"; } } else { $this->data["status"] = "error"; $this->data["error"] = "Не для Вашей игры!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } } return json_encode($this->data); } public function changebuild($serverid = null) { if(!$this->user->isLogged()) { $this->session->data['error'] = "Вы не авторизированы!"; $this->response->redirect($this->config->url . 'news/index'); } if($this->user->getAccessLevel() < 0) { $this->session->data['error'] = "У вас нет доступа к данному разделу!"; $this->response->redirect($this->config->url); } $this->load->model('servers'); $server = $this->serversModel->getServerById($serverid, array('games', 'locations')); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($server['server_status'] == 3) { $this->data["status"] = "error"; $this->data["error"] = "Идет установка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 4) { $this->data["status"] = "error"; $this->data["error"] = "Идет переустановка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 5) { $this->data["status"] = "error"; $this->data["error"] = "Идет создание BackUP сервера!"; return json_encode($this->data); } else if($server['server_status'] == 6) { $this->data["status"] = "error"; $this->data["error"] = "Идет восстанновление сервера из BackUP!"; return json_encode($this->data); } else if($server['server_status'] == 7) { $this->data["status"] = "error"; $this->data["error"] = "Идет обновление сервера!"; return json_encode($this->data); } else if($server["server_status"] == 0) { $this->data["status"] = "error"; $this->data["error"] = "Сервер заблокирован!"; return json_encode($this->data); } if($this->request->server['REQUEST_METHOD'] == 'POST') { if($server['server_status'] == 1){ if($server["game_code"] == "cs") { $build = @$this->request->post['build']; $buildInfo = $this->game_settings->builds[$server['game_code']][$build]; if(is_array($buildInfo)) { $result = $this->serversModel->action($serverid, 'sendcommand', array('command' => 'unsetFiles')); if($result['status'] == "success") { $this->serversModel->deleteTask(array('task_name' => 'restart', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'enable', 'server_id' => $serverid)); $this->serversModel->deleteTask(array('task_name' => 'disable', 'server_id' => $serverid)); $this->serversModel->updateServer($serverid, array('server_status' => 7, 'server_work' => 1, 'server_binary' => $build)); $this->data["status"] = "success"; $this->data["success"] = "Вы успешно начали смену билда!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } else { $this->data["status"] = "error"; $this->data["error"] = "Вы указали неверный билд!"; } } else { $this->data["status"] = "error"; $this->data["error"] = "Не для Вашей игры!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } } return json_encode($this->data); } public function loadModuleJS($serverid = null) { if(!$this->user->isLogged()) { $this->session->data['error'] = "Вы не авторизированы!"; $this->response->redirect($this->config->url . 'news/index'); } if($this->user->getAccessLevel() < 0) { $this->session->data['error'] = "У вас нет доступа к данному разделу!"; $this->response->redirect($this->config->url); } $this->load->model('servers'); $server = $this->serversModel->getServerById($serverid, array('games', 'locations')); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($server['server_status'] == 3) { $this->data["status"] = "error"; $this->data["error"] = "Идет установка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 4) { $this->data["status"] = "error"; $this->data["error"] = "Идет переустановка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 5) { $this->data["status"] = "error"; $this->data["error"] = "Идет создание BackUP сервера!"; return json_encode($this->data); } else if($server['server_status'] == 6) { $this->data["status"] = "error"; $this->data["error"] = "Идет восстанновление сервера из BackUP!"; return json_encode($this->data); } else if($server['server_status'] == 7) { $this->data["status"] = "error"; $this->data["error"] = "Идет обновление сервера!"; return json_encode($this->data); } else if($server["server_status"] == 0) { $this->data["status"] = "error"; $this->data["error"] = "Сервер заблокирован!"; return json_encode($this->data); } if($this->request->server['REQUEST_METHOD'] == 'POST') { if($server['server_status'] == 1){ if($server["game_code"] == "ragemp") { $stats = $this->serversModel->getHDD($server['server_id']); if((int)$stats < $server['game_ssd']) { $module = @$this->request->post['module']; $moduleInfo = $this->game_settings->node_modules[$server['game_code']][$module]; if(is_array($moduleInfo)) { $result = $this->serversModel->action($serverid, 'sendcommand', array('command' => 'loadModuleJS', 'module' => $module)); if($result['status'] == "success") { $this->data["status"] = "success"; $this->data["success"] = "Вы успешно загрузили на сервер модуль ".$this->game_settings->node_modules[$server['game_code']][$module]['module_name']."!"; } else { $this->data["status"] = "error"; $this->data["error"] = $result["description"]; } } else { $this->data["status"] = "error"; $this->data["error"] = "Вы указали неверный модуль!"; } } else { $this->data["status"] = "error"; $this->data["error"] = "Вы привысили ограничение размера директории на ". round($stats - $server['game_ssd'], 2) ."МБ, загрузка модулей невозможна!"; } } else { $this->data["status"] = "error"; $this->data["error"] = "Не для Вашей игры!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } } return json_encode($this->data); } public function settingStart($serverid = null) { if(!$this->user->isLogged()) { $this->session->data['error'] = "Вы не авторизированы!"; $this->response->redirect($this->config->url . 'news/index'); } if($this->user->getAccessLevel() < 0) { $this->session->data['error'] = "У вас нет доступа к данному разделу!"; $this->response->redirect($this->config->url); } $this->load->model('servers'); $server = $this->serversModel->getServerById($serverid, array('games', 'locations')); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($server['server_status'] == 3) { $this->data["status"] = "error"; $this->data["error"] = "Идет установка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 4) { $this->data["status"] = "error"; $this->data["error"] = "Идет переустановка сервера!"; return json_encode($this->data); } else if($server['server_status'] == 5) { $this->data["status"] = "error"; $this->data["error"] = "Идет создание BackUP сервера!"; return json_encode($this->data); } else if($server['server_status'] == 6) { $this->data["status"] = "error"; $this->data["error"] = "Идет восстанновление сервера из BackUP!"; return json_encode($this->data); } else if($server['server_status'] == 7) { $this->data["status"] = "error"; $this->data["error"] = "Идет обновление сервера!"; return json_encode($this->data); } else if($server["server_status"] == 0) { $this->data["status"] = "error"; $this->data["error"] = "Сервер заблокирован!"; return json_encode($this->data); } if($this->request->server['REQUEST_METHOD'] == 'POST') { if($server['server_status'] == 1){ if($server["game_code"] == "cs" || $server["game_code"] == "css" || $server["game_code"] == "csgo" || $server["game_query"] == "samp") { $rcon_password = @$this->request->post['rcon_password']; if(mb_strlen($rcon_password) < 2 || mb_strlen($rcon_password) > 18) { $this->data["status"] = "error"; $this->data["error"] = "RCON Пароль должен содержать от 2 до 18 символов!"; return json_encode($this->data); } $this->serversModel->updateServer($serverid, array('rcon_password' => $rcon_password)); if($server["game_code"] == "cs" || $server["game_code"] == "css" || $server["game_code"] == "csgo") { $vac = @$this->request->post['vac']; if(!in_array($vac, array("0", "1"))) { $this->data["status"] = "error"; $this->data["error"] = "Статус античита VAC указан неверно!"; return json_encode($this->data); } $this->serversModel->updateServer($serverid, array('server_vac' => $vac)); $fastdl = @$this->request->post['fastdl']; if(!in_array($fastdl, array("0", "1"))) { $this->data["status"] = "error"; $this->data["error"] = "Статус FastDL указан неверно!"; return json_encode($this->data); } $this->serversModel->updateServer($serverid, array('fastdl_status' => $fastdl)); if($server["game_code"] == "cs") { $fps = @$this->request->post['fps']; if(!in_array($fps, array("300", "500", "1100"))) { $this->data["status"] = "error"; $this->data["error"] = "Параметр FPS указан неверно!"; return json_encode($this->data); } else { $this->serversModel->updateServer($serverid, array('server_fps' => $fps)); } } if($server["game_code"] == "csgo") { $tickrate = @$this->request->post['tickrate']; if(!in_array($tickrate, array("64", "128"))) { $this->data["status"] = "error"; $this->data["error"] = "Параметр Tickrate указан неверно!"; return json_encode($this->data); } else { $this->serversModel->updateServer($serverid, array('server_tickrate' => $tickrate)); } } if($server["game_code"] == "css") { $tickrate = @$this->request->post['tickrate']; if(!in_array($tickrate, array("66", "100"))) { $this->data["status"] = "error"; $this->data["error"] = "Параметр Tickrate указан неверно!"; return json_encode($this->data); } else { $this->serversModel->updateServer($serverid, array('server_tickrate' => $tickrate)); } } } $this->data["status"] = "success"; $this->data["success"] = "Параметры запуска успешно изменены!"; } else { $this->data["status"] = "error"; $this->data["error"] = "Не для Вашей игры!"; } } else { $this->data['status'] = "error"; $this->data['error'] = "Сервер должен быть выключен!"; } } return json_encode($this->data); } public function buy_months($serverid = null) { if(!$this->user->isLogged()) { $this->data['status'] = "error"; $this->data['error'] = "Вы не авторизированы!"; return json_encode($this->data); } if($this->user->getAccessLevel() < 1) { $this->data['status'] = "error"; $this->data['error'] = "У вас нет доступа к данному разделу!"; return json_encode($this->data); } $this->load->model('waste'); $this->load->model('users'); $this->load->model('servers'); $error = $this->validate($serverid); if($error) { $this->data['status'] = "error"; $this->data['error'] = $error; return json_encode($this->data); } if($this->request->server['REQUEST_METHOD'] == 'POST') { $days = @$this->request->post['days']; if($days != "30" && $days != "60" && $days != "90" && $days != "180" && $days != "360" && $days != "15") { $this->data['status'] = "error"; $this->data['error'] = "Вы указали недопустимый период оплаты!"; return json_encode($this->data); } $userid = $this->user->getId(); $balance = $this->user->getBalance(); $server = $this->serversModel->getServerById($serverid, array('games')); $price = $server['server_slots'] * $server['game_price']; switch($days) { case "15": $price = $price / 2; break; case "30": break; case "60": $price = $price * 2; break; case "90": $price = 3 * $price * 0.95; break; case "180": $price = 6 * $price * 0.90; break; case "360": $price = 12 * $price * 0.85; break; } if($balance >= $price) { if($server['server_status'] == 0) { $this->serversModel->updateServer($serverid, array('server_status' => 1)); $this->serversModel->extendServer($serverid,$days,true); $this->serversModel->action($serverid, "updatepassm"); $this->serversModel->action($serverid, "updatepass"); } else { $this->serversModel->extendServer($serverid,$days,false); } $this->usersModel->downUserBalance($userid, $price); $wasteData = array( 'user_id' => $userid, 'waste_ammount' => $price, 'waste_status' => 1, 'waste_usluga' => "Продление сервера gs$serverid на $days дней" ); $this->wasteModel->createWaste($wasteData); $user = $this->usersModel->getUserById($userid, array(), array(), array()); if($user['ref'] != 0) { $ref_percent = $this->config->ref_percent; $getpref = ($price * (1 + $ref_percent / 100)) - $price; $this->usersModel->upUserBalance($user['ref'], $getpref); $this->usersModel->upUserRMoney($user['ref'], $getpref); $wasteData = array( 'user_id' => $user['ref'], 'waste_ammount' => $getpref, 'waste_status' => 0, 'waste_usluga' => "Бонус с реферала ID-$userid" ); $this->wasteModel->createWaste($wasteData); } $logData = array( 'server_id' => $serverid, 'reason' => 'Сервер успешно продлен!', 'status' => 1 ); $this->serversModel->createLog($logData); $this->data['status'] = "success"; $this->data['success'] = "Вы успешно оплатили сервер на $days дней. С Вашего счета снято ".(round($price, 2))." руб"; } else { $logData = array( 'server_id' => $serverid, 'reason' => '[PAY] На счету не достаточно средств для продления сервера!', 'status' => 3 ); $this->serversModel->createLog($logData); $this->data['status'] = "error"; $this->data['error'] = "На Вашем счету не хватает ".(round($price-$balance, 2))." руб"; } } return json_encode($this->data); } private function validate($serverid) { $result = null; $userid = $this->user->getId(); if(!$this->serversModel->getTotalServerOwners(array('server_id' => (int)$serverid, 'user_id' => (int)$userid, 'owner_status' => 1))) { if(!$this->serversModel->getTotalServers(array('server_id' => (int)$serverid, 'user_id' => (int)$userid))) { $result = "Запрашиваемый сервер не существует!"; } } return $result; } private function validatePOST($serverid) { $this->load->library('validate'); $this->load->model('games'); $validateLib = new validateLibrary(); $result = NULL; $server = $this->serversModel->getServerById($serverid, array('games', 'locations')); $gameid = $server['game_id']; $slots = $this->request->post['slots']; if (!$this->gamesModel->validateSlots($gameid, $slots)) { $result = 'Вы указали недопустимое количество слотов!'; } elseif(!$validateLib->money($slots)) { $result = "Укажите количество слотов в допустимом формате!"; } return $result; } } ?>