query('SELECT `time`, `overdue` FROM `servers` WHERE `id`="'.$id.'" LIMIT 1'); $server = $sql->get(); if($server['time'] > $start_point AND $server['overdue']) $sql->query('UPDATE `servers` set `overdue`="0" WHERE `id`="'.$id.'" LIMIT 1'); $sql->query('SELECT * FROM `servers` WHERE `id`="'.$id.'" LIMIT 1'); $server = $sql->get(); $sql->query('SELECT `address` FROM `units` WHERE `id`="'.$server['unit'].'" LIMIT 1'); $unit = $sql->get(); $sql->query('SELECT `name`, `slots_min`, `slots_max`, `packs` FROM `tarifs` WHERE `id`="'.$server['tarif'].'" LIMIT 1'); $tarif = $sql->get(); if($go) { if(isset($url['type']) AND in_array($url['type'], array('overdue', 'block', 'tarif'))) { if($url['type'] != 'tarif') { $time = isset($_POST['time']) ? trim($_POST['time']) : sys::outjs(array('e' => 'Необходимо указать дату.')); $date = sys::checkdate($time); } switch($url['type']) { case 'overdue': if($server['time'] > $start_point) sys::outjs(array('e' => 'Игровой сервер должен быть просрочен.')); $sql->query('UPDATE `servers` set `overdue`="'.$date.'" WHERE `id`="'.$id.'" LIMIT 1'); break; case 'block': if($server['status'] != ('off' || 'overdue')) sys::outjs(array('e' => 'Игровой сервер должен быть выключен.')); if($date < $start_point) $sql->query('UPDATE `servers` set `status`="off", `block`="0" WHERE `id`="'.$id.'" LIMIT 1'); else $sql->query('UPDATE `servers` set `status`="blocked", `block`="'.$date.'" WHERE `id`="'.$id.'" LIMIT 1'); break; case 'tarif': $tid = isset($url['tarif']) ? sys::int($url['tarif']) : sys::outjs(array('e' => 'Необходимо указать тариф.')); if($tid == $server['tarif']) sys::outjs(array('s' => 'ok')); $sql->query('SELECT `id`, `slots_min`, `slots_max`, `packs`, `fps`, `tickrate`, `ram` FROM `tarifs` WHERE `id`="'.$tid.'" AND `unit`="'.$server['unit'].'" AND `game`="'.$server['game'].'" LIMIT 1'); if(!$sql->num()) sys::outjs(array('e' => 'Укажите тариф из списка.')); $tarif = $sql->get(); if($server['slots'] < $tarif['slots_min'] || $server['slots'] > $tarif['slots_max']) sys::outjs(array('e' => 'Данный тариф не совместим по слотам.')); if($server['fps']) { if(!in_array($server['fps'], explode(':', $tarif['fps']))) sys::outjs(array('e' => 'Данный тариф не совместим по FPS.')); } if($server['tickrate']) { if(!in_array($server['tickrate'], explode(':', $tarif['tickrate']))) sys::outjs(array('e' => 'Данный тариф не совместим по TickRate.')); } if($server['game'] == 'mc') { $ram = $server['ram']/$server['slots']; if(!in_array($ram, explode(':', $tarif['ram']))) sys::outjs(array('e' => 'Данный тариф не совместим по RAM.')); } if(!array_key_exists($server['pack'], sys::b64djs($tarif['packs']))) sys::outjs(array('e' => 'На данном тарифном плане нет сборки игрового сервера.')); $sql->query('UPDATE `servers` set `tarif`="'.$tid.'" WHERE `id`="'.$id.'" LIMIT 1'); break; } sys::outjs(array('s' => 'ok')); } $aData = array(); $aData['user'] = isset($_POST['user']) ? sys::int($_POST['user']) : $server['user']; $aData['address'] = isset($_POST['address']) ? trim($_POST['address']) : $server['address']; $aData['port'] = isset($_POST['port']) ? sys::int($_POST['port']) : $server['port']; $aData['hdd'] = isset($_POST['hdd']) ? sys::int($_POST['hdd']) : $server['hdd']; $aData['slots'] = isset($_POST['slots']) ? trim($_POST['slots']) : $server['slots']; $aData['pack'] = isset($_POST['pack']) ? trim($_POST['pack']) : $server['pack']; $aData['fps'] = isset($_POST['fps']) ? sys::int($_POST['fps']) : $server['fps']; $aData['tickrate'] = isset($_POST['tickrate']) ? sys::int($_POST['tickrate']) : $server['tickrate']; $aData['ram'] = isset($_POST['ram']) ? sys::int($_POST['ram']) : $server['ram']; $aData['core_fix_one'] = isset($_POST['core_fix_one']) ? sys::int($_POST['core_fix_one']) : $server['core_fix_one']; $aData['core_fix'] = isset($_POST['core_fix']) ? sys::int($_POST['core_fix']) : $server['core_fix']; $aData['cpu_use_max'] = isset($_POST['cpu_use_max']) ? sys::int($_POST['cpu_use_max']) : $server['cpu_use_max']; $aData['pingboost'] = isset($_POST['pingboost']) ? sys::int($_POST['pingboost']) : $server['pingboost']; $aData['time'] = isset($_POST['time']) ? trim($_POST['time']) : $server['time']; $aData['ftp_use'] = isset($_POST['ftp_use']) ? $_POST['ftp_use'] : $server['ftp_use']; $aData['ftp_root'] = isset($_POST['ftp_root']) ? sys::int($_POST['ftp_root']) : $server['ftp_root']; $aData['plugins_use'] = isset($_POST['plugins_use']) ? $_POST['plugins_use'] : $server['plugins_use']; $aData['console_use'] = isset($_POST['console_use']) ? $_POST['console_use'] : $server['console_use']; $aData['stats_use'] = isset($_POST['stats_use']) ? $_POST['stats_use'] : $server['stats_use']; $aData['copy_use'] = isset($_POST['copy_use']) ? $_POST['copy_use'] : $server['copy_use']; $aData['web_use'] = isset($_POST['web_use']) ? $_POST['web_use'] : $server['web_use']; if($server['user'] != $aData['user']) { $sql->query('SELECT `id` FROM `users` WHERE `id`="'.$aData['user'].'" LIMIT 1'); if(!$sql->num()) sys::outjs(array('e' => 'Пользователь не найден.')); else{ $sql->query('SELECT `id` FROM `web` WHERE `user`!="'.$aData['user'].'" AND `server`="'.$id.'" LIMIT 1'); if($sql->num()) sys::outjs(array('e' => 'Невозможно установить пользователя владельцем данного сервера
Из-за возможной несовместимости с бесплатными услугами.
Удалите у данного сервера бесплатные услуги.')); } } if(sys::valid($aData['address'], 'other', $aValid['address'])) $aData['address'] = $server['address']; $sql->query('SELECT `id` FROM `servers` WHERE `id`!="'.$id.'" AND `address`="'.$aData['address'].'" LIMIT 1'); if($sql->num()) sys::outjs(array('e' => 'Данный адрес занят другим сервером.')); $sql->query('SELECT `id` FROM `servers` WHERE `id`!="'.$id.'" AND `address` LIKE \'%'.sys::first(explode(':', $unit['address'])).'\' AND `port`="'.$aData['port'].'" LIMIT 1'); if($sql->num()) sys::outjs(array('e' => 'Данный порт занят другим сервером.')); $slots = explode(':', $aData['slots']); if(!isset($slots[0]) AND !isset($slots[1])) sys::outjs(array('e' => 'Слоты указаны не правильно.')); if($slots[0] < 2 || $slots[1] < 2) sys::outjs(array('e' => 'Слоты указаны не правильно.')); if($slots[0] > $tarif['slots_max'] || $slots[0] < $tarif['slots_min']) sys::outjs(array('e' => 'Слоты указаны не правильно.')); $slots[1] = $slots[1] > $slots[0] ? $slots[0] : $slots[1]; $aPacks = sys::b64djs($tarif['packs']); if(!array_key_exists($aData['pack'], $aPacks)) sys::outjs(array('e' => 'Указанная сборка не найдена.')); if($aData['core_fix_one']) { if($aData['core_fix']) { $sql->query('SELECT `id` FROM `servers` WHERE `id`!="'.$id.'" AND `unit`="'.$server['unit'].'" AND `core_fix`="'.$aData['core_fix'].'" AND `core_fix_one`="1"'); if($sql->num()) sys::outjs(array('e' => 'Указанное ядро занято другим сервером.')); }else $aData['core_fix_one'] = 0; } if(!in_array($aData['pingboost'], array(1,2,3))) $aData['pingboost'] = 0; $aData['time'] = sys::checkdate($aData['time']); foreach(array('ftp_use', 'plugins_use', 'console_use', 'stats_use', 'copy_use', 'web_use') as $section) $aData[$section] = (string) $aData[$section] == 'on' ? '1' : '0'; $sql->query('UPDATE `servers` set ' .'`user`="'.$aData['user'].'",' .'`address`="'.$aData['address'].'",' .'`port`="'.$aData['port'].'",' .'`slots`="'.$slots[0].'",' .'`slots_start`="'.$slots[1].'",' .'`fps`="'.$aData['fps'].'",' .'`tickrate`="'.$aData['tickrate'].'",' .'`ram`="'.$aData['ram'].'",' .'`core_fix`="'.$aData['core_fix'].'",' .'`core_fix_one`="'.$aData['core_fix_one'].'",' .'`cpu_use_max`="'.$aData['cpu_use_max'].'",' .'`pingboost`="'.$aData['pingboost'].'",' .'`time`="'.$aData['time'].'",' .'`ftp_use`="'.$aData['ftp_use'].'",' .'`ftp_root`="'.$aData['ftp_root'].'",' .'`plugins_use`="'.$aData['plugins_use'].'",' .'`console_use`="'.$aData['console_use'].'",' .'`stats_use`="'.$aData['stats_use'].'",' .'`copy_use`="'.$aData['copy_use'].'",' .'`web_use`="'.$aData['web_use'].'",' .'`pack`="'.$aData['pack'].'",' .'`hdd`="'.$aData['hdd'].'" WHERE `id`="'.$id.'" LIMIT 1'); $sql->query('UPDATE `web` set `user`="'.$aData['user'].'" WHERE `server`="'.$id.'"'); $mcache->delete('server_index_'.$id); $mcache->delete('server_resources_'.$id); $mcache->delete('server_status_'.$id); sys::outjs(array('s' => 'ok')); } $sql->query('SELECT `name` FROM `units` WHERE `id`="'.$server['unit'].'" LIMIT 1'); $unit = $sql->get(); $packs = ''; $aPacks = sys::b64djs($tarif['packs']); foreach($aPacks as $name => $fullname) $packs .= ''; $packs = str_replace('"'.$server['pack'].'"', '"'.$server['pack'].'" selected', $packs); $cfo = $server['core_fix_one'] ? '' : ''; $pingboost = str_replace('="'.$server['pingboost'].'"', '="'.$server['pingboost'].'" selected', ''); $ftp_root = $server['ftp_root'] ? '' : ''; $tarifs = ''; $sql->query('SELECT `id`, `name` FROM `tarifs` WHERE `unit`="'.$server['unit'].'" AND `game`="'.$server['game'].'" AND `id`!="'.$server['tarif'].'"'); while($tarif_list = $sql->get()) $tarifs .= ''; $copys = $sql->query('SELECT `id`, `user` FROM `copy` WHERE `server`="'.$id.'" LIMIT 10'); while($copy = $sql->get($copys)) { $aCP = explode('_', $copy['user']); if($aCP[0] != $aData['user']) $sql->query('UPDATE `copy` set `user`="'.$aData['user'].'_'.$aCP[1].'" WHERE `id`="'.$copy['id'].' LIMIT 1'); } $html->get('server', 'sections/servers'); $html->set('id', $id); $html->set('name', $server['name']); $html->set('address', $server['address']); $html->set('port', $server['port']); $html->set('slots', $server['slots']); $html->set('slots_start', $server['slots_start']); $html->set('user', $server['user']); $html->set('game', $server['game']); $html->set('unit', $unit['name']); $html->set('tarif', '#'.$server['tarif'].' '.$tarif['name']); $html->set('hdd', $server['hdd']); $html->set('fps', $server['fps']); $html->set('tickrate', $server['tickrate']); $html->set('ram', $server['ram']); $html->set('ftp_on', $server['ftp_on'] ? 'Использовался' : 'Не использовался'); $html->set('tarifs', $tarifs); $html->set('pingboost', $pingboost); $html->set('ftp_root', $ftp_root); $html->set('core_fix', $server['core_fix']); $html->set('cpu_use_max', $server['cpu_use_max']); $html->set('cpu_limi', $cfg['cpu_use_max'][$server['game']]); $html->set('core_fix_one', $cfo); $html->set('packs', $packs); $html->set('time', date('d/m/Y H:i', $server['time'])); $html->set('date', date('d.m.Y - H:i:s', $server['date'])); $html->set('overdue', $server['overdue'] == 0 ? 'Установить' : date('d/m/Y H:i', $server['overdue'])); $html->set('block', $server['block'] == 0 ? 'Заблокировать' : date('d/m/Y H:i', $server['block'])); foreach(array('ftp_use', 'plugins_use', 'console_use', 'stats_use', 'copy_use', 'web_use') as $section) { if($server[$section]) $html->unit($section, 1); else $html->unit($section); } $html->pack('main'); ?>