Сборка REDL: панель на PHP 8, капча-тумблер, закрытые уязвимости, установщики в один клик
- панель работает на PHP 8.4 (оригинал под PHP 7.0): elFinder utf8_encode, apache_get_modules, warnings - капча выключена и управляется из админки (флаг captcha_enable + блок настроек) - закрыты две SQL-инъекции без авторизации (createAuthLog: пароль из POST и CF-Connecting-IP) - убрано хранение паролей в открытом виде в authlog, XSS в поле ref - установщики install-panel.sh и install-node.sh (оригинальный затирал sources.list репозиториями Debian 9) - современный Dockerfile (оригинальный на debian:stretch больше не собирается) - планировщик и автозапуск работают без systemd - брендинг REDL.IO, год 2026, ссылки на redl.io - документация на русском: ИЗМЕНЕНИЯ, БЕЗОПАСНОСТЬ, ИНСТРУКЦИЯ
This commit is contained in:
@@ -0,0 +1,260 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class autoinstallController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('autoinstall');
|
||||
$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->model('servers');
|
||||
$this->load->model('users');
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->session->data['error'] = $error;
|
||||
$this->response->redirect($this->config->url . 'servers/index');
|
||||
}
|
||||
|
||||
$userid = $this->user->getId();
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid, array('games', 'locations'));
|
||||
$this->data['server'] = $server;
|
||||
|
||||
$mods = $this->serversModel->getMods(array('mod_status' => 1),array('games'),array(), array());
|
||||
$this->data['usermods'] = $this->usersModel->getUserMods($userid);
|
||||
$this->data['mods'] = $mods;
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/autoinstall', $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);
|
||||
}
|
||||
$userid = $this->user->getId();
|
||||
$this->load->model('servers');
|
||||
$this->load->library('ssh2');
|
||||
$this->load->model('users');
|
||||
$this->load->model('waste');
|
||||
$ssh2Lib = new ssh2Library();
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = $error;
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$error = $this->validateMode($action);
|
||||
if($error) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = $error;
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$balance = $this->user->getBalance();
|
||||
$server = $this->serversModel->getServerById($serverid, array('users', 'locations', 'games'));
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
$mod = $this->serversModel->getModById($action);
|
||||
|
||||
if($mod["mod_status"] != 1) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Данный мод не доступен для установки!";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
if($server['server_mysql'] == 0) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Создайте базу MySQL и включите ее!";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
if($server['server_status'] != 1) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Сервер должен быть выключен!";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$stats = $this->serversModel->getHDD($server['server_id']);
|
||||
if($stats > $server['game_ssd']) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Вы привысили ограничение размера директории на ". round($stats - $server['game_ssd'], 2) ."МБ, установка мода невозможна!";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
if($this->request->server['REQUEST_METHOD'] == 'POST') {
|
||||
$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));
|
||||
if($mod['mod_price'] > 0) {
|
||||
if($this->usersModel->checkFreeMode($userid, $mod['mod_id'])){
|
||||
$free_mode = 1;
|
||||
}
|
||||
$price = $mod['mod_price'];
|
||||
if(($balance < $price) and $free_mode != 1){
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Недостаточно средств";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
}
|
||||
$this->serversModel->action($serverid, 'reinstall');
|
||||
$host = $server['location_ip'];
|
||||
$uname = "gs$serverid";
|
||||
$dbpass = $server['db_pass'];
|
||||
$database = "gs$serverid";
|
||||
$conn = new mysqli($host, $uname, $dbpass, $database);
|
||||
$op_data = '';
|
||||
if ($mresult = $conn->query("SHOW TABLES"))
|
||||
{
|
||||
while($row = $mresult->fetch_array(MYSQLI_NUM))
|
||||
{
|
||||
$conn->query('DROP TABLE IF EXISTS '.$row[0]);
|
||||
}
|
||||
}
|
||||
$FILE = "scriptfiles/mysql_settings.ini";
|
||||
$link = $ssh2Lib->connect($server['location_ip'], $server['location_user'], $server['location_password']);
|
||||
$ssh2Lib->execute($link,
|
||||
"
|
||||
cd /home/gs$serverid;
|
||||
rm server.cfg;
|
||||
rm -rf gamemodes;
|
||||
rm -rf filterscripts;
|
||||
rm -rf include;
|
||||
rm -rf npcmodes;
|
||||
rm -rf scriptfiles;
|
||||
wget ".$mod['mod_url'].";
|
||||
tar -xf ".$mod['mod_arch'].";
|
||||
rm ".$mod['mod_arch'].";
|
||||
mysql -h".$server['location_ip']." -u gs$serverid -p".$server['db_pass']." gs$serverid < dump.sql;
|
||||
rm dump.sql;
|
||||
echo 'host = ".$server['location_ip']."'>>".$FILE.";
|
||||
echo 'username = gs$serverid'>>".$FILE.";
|
||||
echo 'password = ".$server['db_pass']."'>>".$FILE.";
|
||||
echo 'database = gs$serverid'>>".$FILE.";
|
||||
sudo chown -R gs". $server['server_id'] .":gameservers /home/gs". $server['server_id'] ."
|
||||
"
|
||||
);
|
||||
$ssh2Lib->disconnect($link);
|
||||
if($mod['mod_price'] > 0) {
|
||||
if($free_mode != 1){
|
||||
$userid = $this->user->getId();
|
||||
$wasteData = array(
|
||||
'user_id' => $userid,
|
||||
'waste_ammount' => $price,
|
||||
'waste_status' => 1,
|
||||
'waste_usluga' => "Установка мода ".$mod['mod_name'].""
|
||||
);
|
||||
$this->wasteModel->createWaste($wasteData);
|
||||
$this->usersModel->downUserBalance($userid, $price);
|
||||
$freeData = array(
|
||||
'user_id' => $userid,
|
||||
'mod_id' => "".$mod['mod_id'].""
|
||||
);
|
||||
$this->usersModel->addMode($freeData);
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Мод ".$mod['mod_name']." успешно был установлен,с вашего счёта снято ".$mod['mod_price']." р! Запускаем игровой сервер, пожалуйста, подождите...";
|
||||
} else{
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Мод ".$mod['mod_name']." успешно был установлен. Запускаем игровой сервер, пожалуйста, подождите...";
|
||||
}
|
||||
} else {
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Мод ".$mod['mod_name']." успешно был установлен. Запускаем игровой сервер, пожалуйста, подождите...";
|
||||
}
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Не POST запрос!";
|
||||
}
|
||||
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 validateMode($modid) {
|
||||
$result = null;
|
||||
|
||||
if(!$this->serversModel->getTotalMods(array('mod_id' => (int)$modid))) {
|
||||
$result = "Запрашиваемый мод не существует!";
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class configController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('config');
|
||||
$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->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'));
|
||||
$this->data['server'] = $server;
|
||||
|
||||
if($server['server_status'] == 1 || $server['server_status'] == 2) {
|
||||
if($server['game_query'] == 'samp') {
|
||||
$file = "/server.cfg";
|
||||
} else if($server['game_query'] == 'mtasa') {
|
||||
$file = "/mods/deathmatch/mtaserver.conf";
|
||||
} else if($server['game_code'] == 'cs') {
|
||||
$file = "/cstrike/server.cfg";
|
||||
} else if($server['game_code'] == 'css') {
|
||||
$file = "/cstrike/cfg/server.cfg";
|
||||
} else if($server['game_code'] == 'csgo') {
|
||||
$file = "/csgo/cfg/server.cfg";
|
||||
} else if($server['game_query'] == 'mine') {
|
||||
$file = "/server.properties";
|
||||
} else if($server['game_code'] == 'ragemp') {
|
||||
$file = "/conf.json";
|
||||
}
|
||||
|
||||
$this->load->library('sftp');
|
||||
$sftpLib = new sftpLibrary();
|
||||
$sftpLink = $sftpLib->connect($server['location_ip'], $server['location_user'], $server['location_password']);
|
||||
$config = $sftpLib->open($sftpLink, '/home/gs' . $serverid . '/' . $file);
|
||||
$this->data['config'] = $config;
|
||||
} else {
|
||||
$config = "В данном статусе не доступно редактирование конфигурации!";
|
||||
$this->data['config'] = $config;
|
||||
}
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/config', $this->data);
|
||||
}
|
||||
|
||||
public function send_config($serverid = 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');
|
||||
|
||||
$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('users', 'locations', 'games'));
|
||||
|
||||
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 || $server['server_status'] == 2) {
|
||||
$config = htmlspecialchars_decode($this->request->post['config']);
|
||||
if($server['game_query'] == 'samp') {
|
||||
$file = "/server.cfg";
|
||||
} else if($server['game_query'] == 'mtasa') {
|
||||
$file = "/mods/deathmatch/mtaserver.conf";
|
||||
} else if($server['game_code'] == 'cs') {
|
||||
$file = "/cstrike/server.cfg";
|
||||
} else if($server['game_code'] == 'css') {
|
||||
$file = "/cstrike/cfg/server.cfg";
|
||||
} else if($server['game_code'] == 'csgo') {
|
||||
$file = "/csgo/cfg/server.cfg";
|
||||
} else if($server['game_query'] == 'mine') {
|
||||
$file = "/server.properties";
|
||||
} else if($server['game_code'] == 'ragemp') {
|
||||
$file = "/conf.json";
|
||||
}
|
||||
|
||||
$this->load->library('sftp');
|
||||
$sftpLib = new sftpLibrary();
|
||||
$sftpLink = $sftpLib->connect($server['location_ip'], $server['location_user'], $server['location_password']);
|
||||
$sftpLib->write($sftpLink, '/home/gs' . $serverid . '/' . $file, $config);
|
||||
$this->data['status'] = 'success';
|
||||
$this->data['success'] = 'Конфигурационный файл отредактирован!';
|
||||
}
|
||||
}
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
function validate($serverid) {
|
||||
$result = null;
|
||||
$this->user->getId( );
|
||||
$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() {
|
||||
|
||||
$this->load->library('validate');
|
||||
|
||||
$validateLib = new validateLibrary();
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,371 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class consoleController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('console');
|
||||
$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);
|
||||
}
|
||||
|
||||
if(isset($this->request->get['open'])) {
|
||||
$this->data['fileid'] = $this->request->get['open'];
|
||||
}
|
||||
|
||||
$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'));
|
||||
$this->data['server'] = $server;
|
||||
|
||||
if(isset($_COOKIE["data-theme-console"])){
|
||||
$this->data['theme'] = $_COOKIE['data-theme-console'];
|
||||
} else{
|
||||
$this->data['theme'] = "color: white; background-color: black; font-family: Inconsolata; resize: none; min-height: 300px;";
|
||||
}
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/console', $this->data);
|
||||
}
|
||||
|
||||
public function getconsole($serverid = null, $file = 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('servers');
|
||||
$this->load->library('ssh2');
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid, array('games', 'locations'));
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->session->data['error'] = $error;
|
||||
$this->response->redirect($this->config->url . 'servers/index');
|
||||
}
|
||||
|
||||
switch($file) {
|
||||
default: {
|
||||
if($server["game_query"] == "samp") {
|
||||
$fileLog = "server_log.txt";
|
||||
} elseif($server["game_query"] == "mtasa") {
|
||||
$fileLog = "mods/deathmatch/logs/server.log";
|
||||
} elseif($server["game_code"] == "mcpe") {
|
||||
$fileLog = "server.log";
|
||||
} else {
|
||||
$fileLog = "screenlog.0";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'screenlog': {
|
||||
$fileLog = "screenlog.0";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($server['server_status'] == 3) {
|
||||
$result = "Идет установка сервера!";
|
||||
} else if($server['server_status'] == 4) {
|
||||
$result = "Идет переустановка сервера!";
|
||||
} else if($server['server_status'] == 5) {
|
||||
$result = "Идет создание BackUP сервера!";
|
||||
} else if($server['server_status'] == 6) {
|
||||
$result = "Идет восстанновление сервера из BackUP!";
|
||||
} else if($server['server_status'] == 7) {
|
||||
$result = "Идет обновление сервера!";
|
||||
} else if($server["server_status"] == 0) {
|
||||
$result = "Сервер заблокирован!";
|
||||
} else if($server["server_status"] == 1) {
|
||||
$result = "Сервер должен быть включен!";
|
||||
} else if($server["server_status"] == 2) {
|
||||
$ssh = new ssh2Library();
|
||||
$connect = $ssh->connect($server['location_ip'], $server['location_user'], $server['location_password']);
|
||||
if($server["game_query"] == "ragemp" || $server["game_query"] == "valve") {
|
||||
$logs = $ssh->execute($connect, "tail -n 500 /home/gs" . $serverid . "/" . $fileLog. " | iconv -t utf8");
|
||||
} else {
|
||||
$logs = $ssh->execute($connect, "tail -n 500 /home/gs" . $serverid . "/" . $fileLog. " | iconv -f cp1251 -t utf8");
|
||||
}
|
||||
$logs = str_replace("", "", $logs);
|
||||
$logs = str_replace(">[2K", "", $logs);
|
||||
$logs = str_replace(">", "", $logs);
|
||||
$logs = str_replace("[1mnull[22m", "", $logs);
|
||||
if(!empty($logs)) {
|
||||
$result = $logs;
|
||||
} else {
|
||||
$result = 'Список логов пуст :(';
|
||||
}
|
||||
$ssh->disconnect($connect);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function sendconsole($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('servers');
|
||||
$this->load->library('ssh2');
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid, array('games', 'locations'));
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->session->data['error'] = $error;
|
||||
$this->response->redirect($this->config->url . 'servers/index');
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
$command = @$this->request->post['cmd'];
|
||||
|
||||
if($server['server_status'] == 2){
|
||||
if($command == ""){
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Введите команду!";
|
||||
}elseif($command != ""){
|
||||
if($server['game_query'] == "samp") {
|
||||
$this->load->library('SampRconAPI');
|
||||
$SampRcon = new SampRconAPI($server['location_ip'], $server['server_port'], $server['rcon_password']);
|
||||
if ($SampRcon->connect()) {
|
||||
$SampRcon->call($command, false);
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Команда успешно отправлена!";
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Ошибка подключения к rcon!";
|
||||
}
|
||||
$SampRcon->close();
|
||||
} else {
|
||||
$exec = str_replace("'", "'", $command);
|
||||
$this->serversModel->action($serverid, 'sendcommand', array('command' => $exec));
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Команда успешно отправлена!";
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Сервер должен быть включён!";
|
||||
}
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
public function clearcon($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('servers');
|
||||
$this->load->library('ssh2');
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid, array('games','locations'));
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->session->data['error'] = $error;
|
||||
$this->response->redirect($this->config->url . 'servers/index');
|
||||
}
|
||||
|
||||
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'] == 2) {
|
||||
$ssh2Lib = new ssh2Library();
|
||||
$link = $ssh2Lib->connect($server['location_ip'], $server['location_user'], $server['location_password']);
|
||||
if($server['game_query'] == 'samp') {
|
||||
$ssh2Lib->execute($link, "cat /dev/null > /home/gs$serverid/server_log.txt;");
|
||||
$ssh2Lib->execute($link, "cat /dev/null > /home/gs$serverid/screenlog.0;");
|
||||
} elseif($server['game_code'] == 'mcpe') {
|
||||
$ssh2Lib->execute($link, "cat /dev/null > /home/gs$serverid/server.log;");
|
||||
} elseif($server['game_query'] == 'mtasa') {
|
||||
$ssh2Lib->execute($link, "cat /dev/null > /home/gs$serverid/mods/deathmatch/logs/server.log;");
|
||||
} else {
|
||||
$ssh2Lib->execute($link, "cat /dev/null > /home/gs$serverid/screenlog.0;");
|
||||
}
|
||||
$ssh2Lib->disconnect($link);
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Консоль успешно очищена!";
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Сервер должен быть включен!";
|
||||
}
|
||||
}
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
public function action_theme_console($action = 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);
|
||||
}
|
||||
|
||||
switch($action) {
|
||||
case 'default': {
|
||||
$name = 'color: white; background-color: black; font-family: Inconsolata; resize: none; min-height: 300px;';
|
||||
setcookie('data-theme-console',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема установлена!";
|
||||
break;
|
||||
}
|
||||
case 'Amethyst': {
|
||||
$name = 'color: #323e42; background-color: #a48ad4; font-family: Inconsolata; resize: none; min-height: 300px;';
|
||||
setcookie('data-theme-console',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема установлена!";
|
||||
break;
|
||||
}
|
||||
case 'City': {
|
||||
$name = 'color: #323e42; background-color: #ff6b6b; font-family: Inconsolata; resize: none; min-height: 300px;';
|
||||
setcookie('data-theme-console',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема установлена!";
|
||||
break;
|
||||
}
|
||||
case 'Flat': {
|
||||
$name = 'color: #323e42; background-color: #44b4a6; font-family: Inconsolata; resize: none; min-height: 300px;';
|
||||
setcookie('data-theme-console',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема установлена!";
|
||||
break;
|
||||
}
|
||||
case 'Modern': {
|
||||
$name = 'color: #323e42; background-color: #14adc4; font-family: Inconsolata; resize: none; min-height: 300px;';
|
||||
setcookie('data-theme-console',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема установлена!";
|
||||
break;
|
||||
}
|
||||
case 'Smooth': {
|
||||
$name = 'color: #323e42; background-color: #ff6c9d; font-family: Inconsolata; resize: none; min-height: 300px;';
|
||||
setcookie('data-theme-console',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема установлена!";
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Вы выбрали несуществующее действие!";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
function validate($serverid) {
|
||||
$result = null;
|
||||
$this->user->getId( );
|
||||
$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() {
|
||||
$this->load->library('validate');
|
||||
|
||||
$validateLib = new validateLibrary();
|
||||
|
||||
$result = null;
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,233 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class firewallController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('firewall');
|
||||
$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->model('servers');
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->session->data['error'] = $error;
|
||||
$this->response->redirect($this->config->url . 'servers/index');
|
||||
}
|
||||
|
||||
$this->data['server'] = $this->serversModel->getServerById($serverid, array('games', 'locations'));
|
||||
$this->data['Firewalls'] = $this->serversModel->getFirewallsById($serverid);
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/firewall', $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('servers');
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid);
|
||||
|
||||
$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') {
|
||||
$ipmask = @$this->request->post['address'];
|
||||
|
||||
if (!$ipmask) {
|
||||
$this->data['status'] = 'error';
|
||||
$this->data['error'] = 'Вы не ввели IP';
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$ip = explode('/', $ipmask)[0];
|
||||
$net = explode('/', $ipmask)[1];
|
||||
|
||||
if (($ipmask !== str_replace('/', '', $ipmask)) && !$net) {
|
||||
$this->data['status'] = 'error';
|
||||
$this->data['error'] = 'Не введены данные после "/"';
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
if (!filter_var($ip, FILTER_VALIDATE_IP)) {
|
||||
$this->data['status'] = 'error';
|
||||
$this->data['error'] = 'Введен неверный IP';
|
||||
return json_encode($this->data);
|
||||
}
|
||||
if ($net) {
|
||||
if (is_numeric($net)) {
|
||||
if (2 < mb_strlen($net)) {
|
||||
$this->data['status'] = 'error';
|
||||
$this->data['error'] = 'Не больше двух цифр после "/"';
|
||||
return json_encode($this->data);
|
||||
|
||||
if (!filter_var($net, FILTER_VALIDATE_IP)) {
|
||||
$this->data['status'] = 'error';
|
||||
$this->data['error'] = 'Введены неверные данные после "/"';
|
||||
return json_encode($this->data);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->data['status'] = 'error';
|
||||
$this->data['error'] = 'Введены неверные данные после "/"';
|
||||
return json_encode($this->data);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->serversModel->getTotalFirewalls(array('server_ip' => $ipmask, 'server_id' => $serverid))) {
|
||||
$this->data['status'] = 'error';
|
||||
$this->data['error'] = 'Данное правило уже добавлено!';
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$firewallData = array(
|
||||
'server_id' => $serverid,
|
||||
'server_ip' => $ipmask
|
||||
);
|
||||
$firewallid = $this->serversModel->createFirewall($firewallData);
|
||||
|
||||
$this->serversModel->addFirewall($firewallid);
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Вы успешно заблокировали ".$ipmask."!";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
}
|
||||
|
||||
public function action($action = null, $serverid = null, $firewallid = 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('servers');
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid);
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
switch($action) {
|
||||
case 'delete': {
|
||||
$this->serversModel->deleteFirewall($firewallid);
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Вы успешно разблокировали IP!";
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Вы выбрали несуществующее действие!";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,344 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class ftpController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('ftp');
|
||||
$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->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'));
|
||||
$this->data['server'] = $server;
|
||||
|
||||
if(isset($_COOKIE["data-theme-ftp"])){
|
||||
$this->data['theme'] = $_COOKIE['data-theme-ftp'];
|
||||
} else{
|
||||
$this->data['theme'] = "/application/public/css/elfinderT/default/css/theme.css";
|
||||
}
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/ftp', $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('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') {
|
||||
$errorPOST = $this->validatePOST();
|
||||
if(!$errorPOST) {
|
||||
$editpassword = @$this->request->post['editpassword'];
|
||||
$password = @$this->request->post['password'];
|
||||
if($editpassword) {
|
||||
$this->serversModel->updateServer($serverid, array('server_password' => $password));
|
||||
$result = $this->serversModel->action($serverid, "updatepass");
|
||||
if($result["status"] == "success") {
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Пароль FTP успешно изменен!!";
|
||||
} 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'] = $errorPOST;
|
||||
}
|
||||
}
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
public function action_theme_ftp($action = 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('servers');
|
||||
|
||||
switch($action) {
|
||||
case 'default': {
|
||||
$name = '/application/public/css/elfinderT/default/css/theme.css';
|
||||
setcookie('data-theme-ftp',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема Default успешно установлена!";
|
||||
break;
|
||||
}
|
||||
case 'material': {
|
||||
$name = '/application/public/css/elfinderT/Material/css/theme.css';
|
||||
setcookie('data-theme-ftp',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема Material успешно установлена!";
|
||||
break;
|
||||
}
|
||||
case 'materialgray': {
|
||||
$name = '/application/public/css/elfinderT/Material/css/theme-gray.css';
|
||||
setcookie('data-theme-ftp',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема Material gray успешно установлена!";
|
||||
break;
|
||||
}
|
||||
case 'materiallight': {
|
||||
$name = '/application/public/css/elfinderT/Material/css/theme-light.css';
|
||||
setcookie('data-theme-ftp',$name,time() + (86400 * 5), '/' );
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Тема Material light успешно установлена!";
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Вы выбрали несуществующее действие!";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public function getftp($serverid = null) {
|
||||
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->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'] == 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);
|
||||
}
|
||||
|
||||
include_once ENGINE_DIR . 'engine_ftp/elFinderConnector.class.php';
|
||||
include_once ENGINE_DIR . 'engine_ftp/elFinder.class.php';
|
||||
include_once ENGINE_DIR . 'engine_ftp/elFinderVolumeDriver.class.php';
|
||||
include_once ENGINE_DIR . 'engine_ftp/elFinderVolumeLocalFileSystem.class.php';
|
||||
include_once ENGINE_DIR . 'engine_ftp/elFinderVolumeFTP.class.php';
|
||||
|
||||
function access($attr, $path, $data, $volume) {
|
||||
return strpos(basename($path), '.') === 0
|
||||
? !($attr == 'read' || $attr == 'write')
|
||||
: null;
|
||||
}
|
||||
|
||||
function logger($cmd, $result, $args, $elfinder) {
|
||||
$log = sprintf('[%s] %s:', date('r'), strtoupper($cmd));
|
||||
foreach ($result as $key => $value) {
|
||||
if (empty($value)) {
|
||||
continue;
|
||||
}
|
||||
$data = array();
|
||||
if (in_array($key, array('error', 'warning'))) {
|
||||
array_push($data, implode(' ', $value));
|
||||
} else {
|
||||
if (is_array($value)) {
|
||||
foreach ($value as $file) {
|
||||
$filepath = (isset($file['realpath']) ? $file['realpath'] : $elfinder->realpath($file['hash']));
|
||||
array_push($data, $filepath);
|
||||
}
|
||||
} else {
|
||||
array_push($data, $value);
|
||||
}
|
||||
}
|
||||
$log .= sprintf(' %s(%s)', $key, implode(', ', $data));
|
||||
}
|
||||
$log .= "\n";
|
||||
|
||||
$logfile = 'files/log.txt';
|
||||
$dir = dirname($logfile);
|
||||
if (!is_dir($dir) && !mkdir($dir)) {
|
||||
return;
|
||||
}
|
||||
if (($fp = fopen($logfile, 'a'))) {
|
||||
fwrite($fp, $log);
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
|
||||
$opts = array(
|
||||
'roots' => array(
|
||||
array(
|
||||
'driver' => 'FTP',
|
||||
'URL' => 'ftp://gs'.$server['server_id'].':'.$server['server_password'].'@'.$server['location_ip'].':21/',
|
||||
'host' => $server['location_ip'],
|
||||
'user' => 'gs'.$server['server_id'],
|
||||
'pass' => $server['server_password'],
|
||||
'port' => 21,
|
||||
'mode' => 'passive',
|
||||
'path' => '/',
|
||||
'read' => true,
|
||||
'write' => true,
|
||||
'utf8fix' => true,
|
||||
'bind' => array(
|
||||
'mkdir mkfile rename duplicate upload rm paste' => 'logger'
|
||||
),
|
||||
'rootAlias'=>'Server Root',
|
||||
'fileURL'=>True,
|
||||
'dotFiles'=>True,
|
||||
'dirSize'=>True,
|
||||
'fileMode'=>0644,
|
||||
'dirMode'=>0775,
|
||||
'imgLib'=>False,
|
||||
'tmbDir'=>'.tmb',
|
||||
'tmbAtOnce'=>5,
|
||||
'debug'=>True
|
||||
),
|
||||
'attributes' => array(
|
||||
array(
|
||||
'pattern' => '~/\.~',
|
||||
'read' => true,
|
||||
'write' => true,
|
||||
'hidden' => true
|
||||
),
|
||||
|
||||
)
|
||||
)
|
||||
);
|
||||
$connector = new elFinderConnector(new elFinder($opts));
|
||||
$connector->run();
|
||||
}
|
||||
|
||||
private function validatePOST() {
|
||||
$this->load->library('validate');
|
||||
|
||||
$validateLib = new validateLibrary();
|
||||
|
||||
$result = null;
|
||||
|
||||
$editpassword = @$this->request->post['editpassword'];
|
||||
$password = @$this->request->post['password'];
|
||||
$password2 = @$this->request->post['password2'];
|
||||
if($editpassword) {
|
||||
if(!$validateLib->password($password)) {
|
||||
$result = "Пароль должен содержать от 6 до 32 латинских букв, цифр и знаков <i>,.!?_-</i>!";
|
||||
}
|
||||
elseif($password != $password2) {
|
||||
$result = "Введенные вами пароли не совпадают!";
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,208 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class indexController extends Controller {
|
||||
private $limit = 10;
|
||||
public function index($page = 1) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('index');
|
||||
|
||||
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('pagination');
|
||||
$this->load->model('servers');
|
||||
|
||||
$userid = $this->user->getId();
|
||||
|
||||
$options = array(
|
||||
'start' => ($page - 1) * $this->limit,
|
||||
'limit' => $this->limit
|
||||
);
|
||||
|
||||
$this->data['servers'] = $this->serversModel->getServers(array('user_id' => (int)$userid), array('games', 'locations'), array(), $options);
|
||||
$this->data['serversOwners'] = $this->serversModel->getOwners(array('servers_owners.user_id' => $userid), array('servers', 'games', 'locations'));
|
||||
|
||||
$paginationLib = new paginationLibrary();
|
||||
|
||||
$paginationLib->total = $this->serversModel->getTotalServers(array('user_id' => (int)$userid));
|
||||
$paginationLib->page = $page;
|
||||
$paginationLib->limit = $this->limit;
|
||||
$paginationLib->url = $this->config->url . 'servers/index/index/{page}';
|
||||
|
||||
$this->data['pagination'] = $paginationLib->render();
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/index', $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() < 1) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "У вас нет доступа к данному разделу!";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$this->load->model('servers');
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = $error;
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid, array('users', 'locations', 'games'));
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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 "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;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,246 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class mysqlController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('mysql');
|
||||
$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->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'));
|
||||
$this->data['server'] = $server;
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/mysql', $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');
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->session->data['error'] = $error;
|
||||
$this->response->redirect($this->config->url . 'servers/index');
|
||||
}
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
switch($action) {
|
||||
case 'mysqlon': {
|
||||
if($server['server_mysql'] == 2) {
|
||||
$this->serversModel->updateServer($serverid, array('server_mysql' => 1));
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Вы успешно включили базу данных gs$serverid!";
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "База данных и так включена либо вы ее еще не создали!";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'mysqloff': {
|
||||
if($server['server_mysql'] == 1) {
|
||||
$this->serversModel->updateServer($serverid, array('server_mysql' => 2));
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Вы успешно выключили базу данных gs$serverid!";
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "База данных и так выключена!";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'mysqlcr': {
|
||||
if($server['server_mysql'] == 0) {
|
||||
$result = $this->serversModel->action($serverid, 'create_mysql');
|
||||
if($result["status"] == "success") {
|
||||
$this->serversModel->updateServer($serverid, array('server_mysql' => 2));
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Вы успешно создали базу данных gs$serverid!";
|
||||
} else {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = $result["description"];
|
||||
}
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "База данных и так создана!";
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Вы выбрали несуществующее действие!";
|
||||
break;
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
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('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') {
|
||||
$errorPOST = $this->validatePOST();
|
||||
if(!$errorPOST) {
|
||||
$editpassword = @$this->request->post['editpassword'];
|
||||
$password = @$this->request->post['password'];
|
||||
if($editpassword) {
|
||||
$this->serversModel->updateServer($serverid, array('db_pass' => $password));
|
||||
$result = $this->serversModel->action($serverid, "updatepassm");
|
||||
if($result["status"] == "success") {
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Пароль MySql успешно изменен!!";
|
||||
} 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'] = $errorPOST;
|
||||
}
|
||||
}
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
private function validatePOST() {
|
||||
$this->load->library('validate');
|
||||
|
||||
$validateLib = new validateLibrary();
|
||||
|
||||
$result = null;
|
||||
|
||||
$editpassword = @$this->request->post['editpassword'];
|
||||
$password = @$this->request->post['password'];
|
||||
$password2 = @$this->request->post['password2'];
|
||||
if($editpassword) {
|
||||
if(!$validateLib->password($password)) {
|
||||
$result = "Пароль должен содержать от 6 до 32 латинских букв, цифр и знаков <i>,.!?_-</i>!";
|
||||
}
|
||||
elseif($password != $password2) {
|
||||
$result = "Введенные вами пароли не совпадают!";
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,281 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class orderController extends Controller {
|
||||
public function index() {
|
||||
$this->data['serv_test'] = $this->config->serv_test;
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('order');
|
||||
|
||||
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->model('games');
|
||||
$this->load->model('locations');
|
||||
|
||||
$games = $this->gamesModel->getGames(array('game_status' => 1));
|
||||
$locations = $this->locationsModel->getLocations(array('location_status' => 1));
|
||||
|
||||
$this->data['games'] = $games;
|
||||
$this->data['locations'] = $locations;
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/order', $this->data);
|
||||
}
|
||||
|
||||
public function promo() {
|
||||
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('users');
|
||||
|
||||
if($this->request->server['REQUEST_METHOD'] == 'POST') {
|
||||
$code = $this->request->post['code'];
|
||||
$skidka = $this->usersModel->getSkidkaByCode($code, false);
|
||||
$kofficent=(100-$skidka['skidka'])/100;
|
||||
if($skidka['skidka'] == NULL){
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Данного кода не существует";
|
||||
}else{
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Вы активировали скидку ".$skidka['skidka']."%";
|
||||
$this->data['skidka'] = $kofficent;
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
public function ajax() {
|
||||
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('games');
|
||||
$this->load->model('locations');
|
||||
$this->load->model('servers');
|
||||
|
||||
if($this->request->server['REQUEST_METHOD'] == 'POST') {
|
||||
$errorPOST = $this->validatePOST();
|
||||
if(!$errorPOST) {
|
||||
$gameid = $this->request->post['gameid'];
|
||||
$locationid = $this->request->post['locationid'];
|
||||
$slots = $this->request->post['slots'];
|
||||
$days = $this->request->post['days'];
|
||||
$password = $this->request->post['password'];
|
||||
|
||||
$location = $this->locationsModel->getLocationById($locationid);
|
||||
$location_games = explode(" ", $location['location_games']);
|
||||
|
||||
if(!in_array($gameid, $location_games)) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Данная игра не доступна для указанной локации!";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
|
||||
$userid = $this->user->getId();
|
||||
$balance = $this->user->getBalance();
|
||||
$firstname = $this->user->getFirstname();
|
||||
$lastname = $this->user->getLastname();
|
||||
$email = $this->user->getEmail();
|
||||
$test_server = $this->user->getTest_server();
|
||||
|
||||
$game = $this->gamesModel->getGameById($gameid);
|
||||
$port = $this->serversModel->getServerNewPort($locationid, $game['game_min_port'], $game['game_max_port']);
|
||||
$user = $this->usersModel->getUserById($userid, array(), array(), array());
|
||||
$code = $this->request->post['promo'];
|
||||
$skidka = $this->usersModel->getSkidkaByCode($code,true);$kofficent=(100-$skidka['skidka'])/100;
|
||||
if($port) {
|
||||
$price = $slots * $game['game_price'];
|
||||
|
||||
switch($days) {
|
||||
case "0":
|
||||
$test_periud = true;
|
||||
break;
|
||||
case "15":
|
||||
$price = $price / 2;
|
||||
$test_periud = false;
|
||||
break;
|
||||
case "30":
|
||||
$test_periud = false;
|
||||
break;
|
||||
case "60":
|
||||
$price = $price * 2;
|
||||
$test_periud = false;
|
||||
break;
|
||||
case "90":
|
||||
$price = 3 * $price * 0.95;
|
||||
$test_periud = false;
|
||||
break;
|
||||
case "180":
|
||||
$price = 6 * $price * 0.90;
|
||||
$test_periud = false;
|
||||
break;
|
||||
case "360":
|
||||
$price = 12 * $price * 0.85;
|
||||
$test_periud = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if($skidka['skidka'] != NULL){
|
||||
$price = $price * $kofficent;
|
||||
}
|
||||
if($test_periud == true){
|
||||
if($this->config->serv_test == 1) {
|
||||
if($test_server == 1){
|
||||
$serverData = array(
|
||||
'user_id' => $userid,
|
||||
'game_id' => $gameid,
|
||||
'location_id' => $locationid,
|
||||
'server_mysql' => 0,
|
||||
'server_slots' => $slots,
|
||||
'server_port' => $port,
|
||||
'server_password' => $password,
|
||||
'server_status' => 3,
|
||||
'test_periud' => $test_periud,
|
||||
'server_days' => $days
|
||||
);
|
||||
|
||||
$serverid = $this->serversModel->createServer($serverData);
|
||||
$this->usersModel->downUserBalance($userid, $price);
|
||||
$wasteData = array(
|
||||
'user_id' => $userid,
|
||||
'waste_ammount' => $price,
|
||||
'waste_status' => 1,
|
||||
'waste_usluga' => "Заказ тестового сервера gs$serverid"
|
||||
);
|
||||
$this->wasteModel->createWaste($wasteData);
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Сервер успешно поставлен в очередь на установку.";
|
||||
$this->data['id'] = $serverid;
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Вы уже брали тестовый период, либо у вас нет одобрения администратора!";
|
||||
}
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Тестовый период отключен на хостинге!";
|
||||
}
|
||||
}elseif($balance >= $price AND $test_periud == false) {
|
||||
$serverData = array(
|
||||
'user_id' => $userid,
|
||||
'game_id' => $gameid,
|
||||
'location_id' => $locationid,
|
||||
'server_mysql' => 0,
|
||||
'server_slots' => $slots,
|
||||
'server_port' => $port,
|
||||
'server_password' => $password,
|
||||
'server_status' => 3,
|
||||
'test_periud' => $test_periud,
|
||||
'server_days' => $days
|
||||
);
|
||||
|
||||
$serverid = $this->serversModel->createServer($serverData);
|
||||
$this->usersModel->downUserBalance($userid, $price);
|
||||
$wasteData = array(
|
||||
'user_id' => $userid,
|
||||
'waste_ammount' => $price,
|
||||
'waste_status' => 1,
|
||||
'waste_usluga' => "Заказ сервера 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);
|
||||
}
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Сервер успешно поставлен в очередь на установку.";
|
||||
$this->data['id'] = $serverid;
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "На Вашем счету недостаточно средств";
|
||||
}
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "На выбранной Вами локации нет свободных портов для данной игры";
|
||||
}
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = $errorPOST;
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
private function validatePOST() {
|
||||
$this->load->library('validate');
|
||||
|
||||
$validateLib = new validateLibrary();
|
||||
|
||||
$result = null;
|
||||
|
||||
$gameid = @$this->request->post['gameid'];
|
||||
$locationid = @$this->request->post['locationid'];
|
||||
$slots = @$this->request->post['slots'];
|
||||
$days = @$this->request->post['days'];
|
||||
$password = @$this->request->post['password'];
|
||||
$password2 = @$this->request->post['password2'];
|
||||
|
||||
if(!$this->gamesModel->getTotalGames(array('game_id' => (int)$gameid, 'game_status' => 1))) {
|
||||
$result = "Вы указали несуществующую игру!";
|
||||
}
|
||||
elseif(!$this->locationsModel->getTotalLocations(array('location_id' => (int)$locationid, 'location_status' => 1))) {
|
||||
$result = "Вы указали несуществующую локацию!";
|
||||
}
|
||||
elseif($days != "30" && $days != "60" && $days != "90" && $days != "180" && $days != "360" && $days != "15" && $days != "0") {
|
||||
$result = "Вы указали недопустимый период оплаты!";
|
||||
}
|
||||
elseif(!$this->gamesModel->validateSlots($gameid, $slots)) {
|
||||
$result = "Вы указали недопустимое количество слотов!";
|
||||
}
|
||||
elseif(!$validateLib->password($password)) {
|
||||
$result = "Пароль должен содержать от 6 до 32 латинских букв, цифр и знаков <i>,.!?_-</i>!";
|
||||
}
|
||||
elseif($password != $password2) {
|
||||
$result = "Введенные вами пароли не совпадают!";
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,210 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class ownerController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('owner');
|
||||
$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->model('servers');
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->session->data['error'] = $error;
|
||||
$this->response->redirect($this->config->url . 'servers/index');
|
||||
}
|
||||
|
||||
$this->data['server'] = $this->serversModel->getServerById($serverid, array('games', 'locations'));
|
||||
$this->data['serversOwners'] = $this->serversModel->getOwners(array('server_id' => $serverid), array('users'));
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/owner', $this->data);
|
||||
}
|
||||
|
||||
public function create($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('users');
|
||||
$this->load->model('servers');
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid);
|
||||
|
||||
$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(!$this->validatePOST($serverid)) {
|
||||
$ownerid = @$this->request->post['ownerid'];
|
||||
|
||||
$ownerData = array(
|
||||
'server_id' => $serverid,
|
||||
'user_id' => $ownerid,
|
||||
'owner_status' => 1
|
||||
);
|
||||
$this->serversModel->createOwner($ownerData);
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Вы успешно добавили друга!";
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = $this->validatePOST($serverid);
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
|
||||
public function delete($serverid = null, $ownerid = 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('users');
|
||||
$this->load->model('servers');
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid);
|
||||
|
||||
$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($this->serversModel->getTotalServerOwners(array('server_id' => $serverid, 'owner_id' => $ownerid))) {
|
||||
$this->serversModel->deleteOwner($ownerid);
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Вы успешно удалили друга!";
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Ошибка!";
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
private function validate($serverid) {
|
||||
$result = null;
|
||||
$userid = $this->user->getId();
|
||||
|
||||
if (!$this->serversModel->getTotalServers( array( 'server_id' => (int)$serverid, 'user_id' => (int)$userid ) )) {
|
||||
$result = 'Вы не являетесь владельцем сервера. У вас нет доступа к разделу!';
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function validatePOST($serverid) {
|
||||
$result = null;
|
||||
$this->load->library('validate');
|
||||
|
||||
$validateLib = new validateLibrary();
|
||||
$ownerid = @$this->request->post['ownerid'];
|
||||
$userid = $this->user->getId();
|
||||
|
||||
if(!$validateLib->money($ownerid)) {
|
||||
$result = "Вы указали недоступный ID пользователя!";
|
||||
}elseif(!$this->usersModel->getTotalUsers(array('user_id' => $ownerid))) {
|
||||
$result = "Запрашиваемый пользователь не существует!";
|
||||
}elseif($this->serversModel->getTotalServerOwners(array('server_id' => $serverid, 'user_id' => $ownerid))) {
|
||||
$result = "Запрашиваемый пользователь уже добавлен!";
|
||||
}elseif($userid == $ownerid) {
|
||||
$result = "Запрашиваемый пользователь является владельцем сервера!";
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class repoController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('repo');
|
||||
$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->model('servers');
|
||||
$this->load->model('users');
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->session->data['error'] = $error;
|
||||
$this->response->redirect($this->config->url . 'servers/index');
|
||||
}
|
||||
|
||||
$userid = $this->user->getId();
|
||||
|
||||
$server = $this->serversModel->getServerById($serverid, array('games', 'locations'));
|
||||
$this->data['server'] = $server;
|
||||
|
||||
$repos = $this->serversModel->getRepos(array('repo_status' => 1),array('games'),array(), array());
|
||||
$this->data['userrepos'] = $this->usersModel->getUserRepos($userid);
|
||||
$this->data['repos'] = $repos;
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/repo', $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);
|
||||
}
|
||||
$userid = $this->user->getId();
|
||||
$this->load->model('servers');
|
||||
$this->load->model('users');
|
||||
$this->load->model('waste');
|
||||
|
||||
$error = $this->validate($serverid);
|
||||
if($error) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = $error;
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$error = $this->validateRepo($action);
|
||||
if($error) {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = $error;
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
$balance = $this->user->getBalance();
|
||||
$server = $this->serversModel->getServerById($serverid, array('users', 'locations', 'games'));
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
$repo = $this->serversModel->getRepoById($action);
|
||||
|
||||
if($repo["repo_status"] != 1) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Данный файл не доступен!";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
if($this->request->server['REQUEST_METHOD'] == 'POST') {
|
||||
$price = $repo['repo_price'];
|
||||
if($balance < $price){
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Недостаточно средств";
|
||||
return json_encode($this->data);
|
||||
}
|
||||
$userid = $this->user->getId();
|
||||
$wasteData = array(
|
||||
'user_id' => $userid,
|
||||
'waste_ammount' => $price,
|
||||
'waste_status' => 1,
|
||||
'waste_usluga' => "Покупка файла ".$repo['repo_id'].""
|
||||
);
|
||||
$this->wasteModel->createWaste($wasteData);
|
||||
$this->usersModel->downUserBalance($userid, $price);
|
||||
$freeData = array(
|
||||
'user_id' => $userid,
|
||||
'repo_id' => "".$repo['repo_id'].""
|
||||
);
|
||||
$this->usersModel->addRepos($freeData);
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
$this->data['status'] = "success";
|
||||
$this->data['success'] = "Файл ".$repo['repo_name']." успешно был приобретен, с вашего счёта снято ".$repo['repo_price']." р!";
|
||||
} else {
|
||||
$this->data['status'] = "error";
|
||||
$this->data['error'] = "Не POST запрос!";
|
||||
}
|
||||
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 validateRepo($repoid) {
|
||||
$result = null;
|
||||
|
||||
if(!$this->serversModel->getRepoById(array('repo_id' => (int)$repoid))) {
|
||||
$result = "Запрашиваемый файл не существует!";
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class statisticsController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('statistic');
|
||||
$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->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'));
|
||||
$logs = $this->serversModel->getLogs(array(), array('servers'), array(), array());
|
||||
$stats = $this->serversModel->getServerStats($serverid, "NOW() - INTERVAL 31 DAY", "NOW()");
|
||||
|
||||
$this->data['server'] = $server;
|
||||
$this->data['logs'] = $logs;
|
||||
$this->data['stats'] = $stats;
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/statistics', $this->data);
|
||||
}
|
||||
|
||||
public function getData($serverid = null) {
|
||||
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->model('servers');
|
||||
$this->load->library('query');
|
||||
|
||||
$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();
|
||||
|
||||
$sysload = $this->serversModel->getServerSystemLoad($serverid);
|
||||
$ssd = round($sysload['ssd']);
|
||||
$ssd_all = $server['game_ssd'];
|
||||
$this->data['ssd'] = (int)(($ssd * 100) / $ssd_all);
|
||||
$this->data['cpu'] = $sysload['cpu'] > 100 ? 100 : round($sysload['cpu']);
|
||||
$this->data['ram'] = $sysload['ram'] > 100 ? 100 : round($sysload['ram']);
|
||||
$this->data['players'] = $query['players'];
|
||||
} else if($server['server_status'] == 3 || $server['server_status'] == 4) {
|
||||
$this->data['ssd'] = 'N/A';
|
||||
$this->data['cpu'] = 'N/A';
|
||||
$this->data['ram'] = 'N/A';
|
||||
$this->data['players'] = 'N/A';
|
||||
} else {
|
||||
$ssd = $this->serversModel->getHDD($serverid);
|
||||
$ssd = round($ssd);
|
||||
$ssd_all = $server['game_ssd'];
|
||||
$this->data['ssd'] = (int)(($ssd * 100) / $ssd_all);
|
||||
$this->data['cpu'] = 0;
|
||||
$this->data['ram'] = 0;
|
||||
$this->data['players'] = 0;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,216 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
class tasksController extends Controller {
|
||||
public function index($serverid = null) {
|
||||
$this->document->setActiveSection('servers');
|
||||
$this->document->setActiveItem('tasks');
|
||||
$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->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'));
|
||||
$this->data['server'] = $server;
|
||||
|
||||
$tasks = $this->serversModel->getTasks(array("server_id" => $serverid, "isSystemTask" => 0), array(), array("task_id" => "DESC"));
|
||||
$this->data["tasks"] = $tasks;
|
||||
|
||||
include_once 'application/controllers/common/main.php';
|
||||
|
||||
$this->getChild(array('common/header', 'common/footer'));
|
||||
return $this->load->view('servers/tasks', $this->data);
|
||||
}
|
||||
|
||||
public function createTask($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') {
|
||||
$tasks = $this->serversModel->getTasks(array("server_id" => $serverid));
|
||||
if(count($tasks) < 4) {
|
||||
$task = @$this->request->post['task'];
|
||||
$type = @$this->request->post['type'];
|
||||
$time = @$this->request->post['time'];
|
||||
if(!in_array($task, array("enable", "disable", "restart"))) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Вы указали несуществующую задачу!";
|
||||
} else if(($task == 'enable' && $server['server_status'] != 1) || ($task == 'diable' && $server['server_status'] != 2) || ($task == 'restart' && $server['server_status'] != 2)) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Вы не можете создать данную задачу!";
|
||||
} else if(!empty($this->serversModel->getTasks(array("server_id" => $serverid, "task_name" => $task)))) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Данная задача уже создана!";
|
||||
} else if(!in_array($type, array('repeating', 'single'))) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Вы указали несуществующий тип задачи!";
|
||||
} else if($task == 'repeating' && ($task == 'enable' || $task == 'diable')) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Данный тип задачи недоступен для задачи!";
|
||||
} else if(!in_array($time, array("15min", "30min", "1hour", "12hours", "24hours"))) {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Вы указали недопустимое время выполнения!";
|
||||
} else {
|
||||
if($time == '15min') {
|
||||
$lead_time = "NOW() + INTERVAL 15 MINUTE";
|
||||
} else if($time == '30min') {
|
||||
$lead_time = "NOW() + INTERVAL 30 MINUTE";
|
||||
} else if($time == '1hour') {
|
||||
$lead_time = "NOW() + INTERVAL 1 HOUR";
|
||||
} else if($time == '12hours') {
|
||||
$lead_time = "NOW() + INTERVAL 12 HOUR";
|
||||
} else if($time == '24hours') {
|
||||
$lead_time = "NOW() + INTERVAL 24 HOUR";
|
||||
}
|
||||
$task = $this->serversModel->getTaskById($this->serversModel->createTask(array("server_id" => $serverid, "task_name" => $task, "task_type" => $type, "task_time" => $time, "task_lead_time" => $lead_time)));
|
||||
|
||||
$this->data['task'] = array("task_id" => $task['task_id'], "task_name" => $task['task_name'], "task_type" => $task['task_type'], "task_time" => $task['task_time'], "task_lead_time" => date("d.m.Y в H:i", strtotime($task['task_lead_time'])));
|
||||
|
||||
$this->data["status"] = "success";
|
||||
$this->data["success"] = "Задача успешно создана!";
|
||||
}
|
||||
} else {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Вы не можете создавать больше 4-х задач!";
|
||||
}
|
||||
}
|
||||
return json_encode($this->data);
|
||||
}
|
||||
|
||||
public function deleteTask($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') {
|
||||
$task_id = @$this->request->post['task_id'];
|
||||
$task = $this->serversModel->getTaskById($serverid);
|
||||
if($task['server_id'] == $server_id) {
|
||||
$this->serversModel->deleteTask(array('task_id' => $task_id));
|
||||
$this->data["status"] = "success";
|
||||
$this->data["success"] = "Задача успешно удалена!";
|
||||
} else {
|
||||
$this->data["status"] = "error";
|
||||
$this->data["error"] = "Задача не найдена!";
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user