Delete the broken mobile version of "megp"

Task:
https://bugs.enginegp.com/view.php?id=40
This commit is contained in:
Sergei Solovev 2024-04-04 01:15:24 +03:00
parent b9c11c2447
commit 1b1ad0d68e
274 changed files with 14 additions and 29785 deletions

View file

@ -20,7 +20,6 @@ DEFINE('LIB', SYS . 'library/');
DEFINE('ENG', SYS . 'engine/');
DEFINE('SEC', SYS . 'sections/');
$device = isset($_COOKIE['egp_device']) ? $_COOKIE['egp_device'] : '!mobile';
$start_point = $_SERVER['REQUEST_TIME'];
$mcache = new Memcache;
@ -45,23 +44,8 @@ include(LIB . 'system.php');
$uip = sys::ip();
/* if(!isset($_COOKIE['egp_device']))
{
include(LIB.'megp.php');
$device = $megp->isMobile() ? 'mobile' : '!mobile';
sys::cookie('egp_device', $device, 14);
if($device == 'mobile')
sys::back();
} */
// Распределитель
if ($device == '!mobile')
include(SYS . 'distributor.php');
/* else
include(SYS.'mdistributor.php'); */
include(SYS . 'distributor.php');
// Выхлоп
echo $html->arr['all'];

View file

@ -17,8 +17,6 @@ $loggingInFile->loggerOnly(true);
$loggingInFile->setLogger((new \Monolog\Logger('EngineGP', [(new \Monolog\Handler\StreamHandler(ROOT . '/logs/enginegp.log'))->setFormatter((new \Monolog\Formatter\LineFormatter(null, null, true)))])));
$whoops->pushHandler($loggingInFile);
$device = '!mobile';
// Парсинг адреса
$url = is_array(sys::url()) ? sys::url() : array();
$route = sys::url(false);

View file

@ -29,19 +29,6 @@ $aRoute = array(
'partners',
);
// Массив главных разделов megp
$amRoute = array(
'index',
'servers',
'services',
'replenish',
'help',
'news',
'auth',
'quit',
'recovery'
);
// Массив регулярных выражений
$aValid = array(
'login' => '/^[A-Za-z0-9_]{4,16}$/',

View file

@ -1,5 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
include(SEC . 'user/auth.php');

View file

@ -1,28 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
// Проверка на авторизацию
sys::noauth();
$sql->query('SELECT `id` FROM `users` WHERE `id`="' . $user['id'] . '" AND `help`="0" LIMIT 1');
if (!$sql->num()) {
$html->get('noaccess', 'sections/help');
$html->pack('main');
} else {
// Подключение раздела
if (!in_array($section, array('create', 'dialog', 'open', 'close', 'notice', 'upload')))
include(ENG . '404.php');
$aNav = array(
'help' => 'Техническая поддержка',
'create' => 'Создание вопроса',
'dialog' => 'Решение вопроса',
'open' => 'Список открытых вопросов',
'close' => 'Список закрытых вопросов'
);
$title = isset($aNav[$section]) ? $aNav[$section] : $section;
include(SEC . 'help/' . $section . '.php');
}

View file

@ -1,23 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
sys::noauth();
$title = 'Главная страница';
$qLog = $sql->query('SELECT `text`, `date` FROM `logs` WHERE `user`="' . $user['id'] . '" ORDER BY `id` DESC LIMIT 5');
while ($aLog = $sql->get($qLog)) {
$html->get('list', 'logs');
$html->set('text', $aLog['text']);
$html->set('date', sys::today($aLog['date'], true));
$html->pack('logs');
}
$html->get('index');
$html->set('ip', $uip);
$html->set('login', $user['login']);
$html->set('balance', round($user['balance'], 2));
$html->set('cur', $cfg['currency']);
$html->set('logs', isset($html->arr['main']) ? $html->arr['main'] : '');
$html->pack('main');

View file

@ -1,39 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($id) {
$sql->query('SELECT `id`, `name`, `full_text`, `views`, `tags`, `date` FROM `news` WHERE `id`="' . $id . '" LIMIT 1');
if (!$sql->num())
include(ENG . '404.php');
$news = $sql->get();
$title = $news['name'];
$sql->query('UPDATE `news` set `views`="' . ($news['views'] + 1) . '" WHERE `id`="' . $id . '" LIMIT 1');
$html->get('news', 'sections/news');
$html->set('id', $news['id']);
$html->set('name', htmlspecialchars_decode($news['name']));
$html->set('text', htmlspecialchars_decode($news['full_text']));
$html->set('date', sys::today($news['date']));
$html->pack('main');
} else {
$title = 'Последние новости';
$sql->query('SELECT `id`, `name`, `text`, `views`, `tags`, `date` FROM `news` ORDER BY `id` DESC LIMIT 5');
while ($news = $sql->get()) {
$html->get('list', 'sections/news');
$html->set('id', $news['id']);
$html->set('name', htmlspecialchars_decode($news['name']));
$html->set('text', htmlspecialchars_decode($news['text']));
$html->set('date', sys::today($news['date']));
$html->pack('news');
}
$html->get('index', 'sections/news');
$html->set('list', isset($html->arr['news']) ? $html->arr['news'] : '');
$html->pack('main');
}

View file

@ -1,5 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
include(SEC . 'user/quit.php');

View file

@ -1,5 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
include(SEC . 'user/recovery.php');

View file

@ -1,28 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
// Проверка на авторизацию
sys::noauth();
if (isset($url['key']) && isset($url['sum']))
sys::out(md5($cfg['freekassa_id'] . ':' . intval($url['sum']) . ':' . $cfg['freekassa_key_1'] . ':1'));
// Генерация списка операций
$qLog = $sql->query('SELECT `text`, `date` FROM `logs` WHERE `user`="' . $user['id'] . '" AND `type`="replenish" ORDER BY `id` DESC LIMIT 5');
while ($aLog = $sql->get($qLog)) {
$html->get('list', 'sections/user/replenish');
$html->set('text', $aLog['text']);
$html->set('date', sys::today($aLog['date'], true));
$html->pack('logs');
}
$html->get('replenish', 'sections/user');
$html->set('id', $user['id']);
$html->set('wmr', $cfg['webmoney_wmr']);
$html->set('freekassa', $cfg['freekassa_id']);
$html->set('unitpay', $cfg['unitpay_pubkey']);
$html->set('balance', round($user['balance'], 2));
$html->set('cur', $cfg['currency']);
$html->set('logs', isset($html->arr['logs']) ? $html->arr['logs'] : '');
$html->pack('main');

View file

@ -1,71 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
// Проверка на авторизацию
sys::noauth();
if (!$id and $user['group'] == 'user') {
$servers = $sql->query('SELECT `id` FROM `servers` WHERE `user`="' . $user['id'] . '" LIMIT 1');
$owners = $sql->query('SELECT `id` FROM `owners` WHERE `user`="' . $user['id'] . '" LIMIT 1');
if (!$sql->num($servers) and !$sql->num($owners))
sys::back($cfg['http'] . 'services'); // Если нет игровых серверов отправить на страницу аренды
}
if ($id and !$section)
$section = 'index';
$title = 'Управление игровыми серверами';
// Подключение раздела
if (in_array($section, array('action', 'scan', 'index', 'console', 'settings', 'tarif', 'boost'))) {
if (!$id)
sys::back($cfg['http'] . 'servers');
$sql->query('SELECT `id` FROM `servers` WHERE `id`="' . $id . '" AND `user`="' . $user['id'] . '" LIMIT 1');
if (!$sql->num()) {
$sql->query('SELECT `rights` FROM `owners` WHERE `server`="' . $id . '" AND `user`="' . $user['id'] . '" LIMIT 1');
if (!$sql->num())
sys::back($cfg['http'] . 'servers');
$owner = $sql->get();
$rights = sys::b64djs($owner['rights']);
if ($section == 'action') {
if (!isset($rights[$url['action']]) || !$rights[$url['action']])
sys::outjs(array('e' => sys::text('error', 'ser_owner')));
} else {
if (!in_array($section, array('index', 'scan')) and (!isset($rights[$section]) || !$rights[$section]))
sys::back($cfg['http'] . 'servers/id/' . $owner['server']);
}
$sql->query('SELECT `id` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
}
if (!$sql->num())
sys::back($cfg['http'] . 'servers'); // Если нет игрового сервера отправить на страницу списка
$file_section = file_exists(SEC . 'megp/servers/' . $section . '.php');
if ($file_section)
include(SEC . 'megp/servers/' . $section . '.php');
else
sys::back($cfg['http'] . 'servers/id/' . $id);
} else {
if ($user['group'] == 'user' and $mcache->get('servers_' . $user['id']) != '')
$html->arr['main'] = $mcache->get('servers_' . $user['id']);
else {
include(SEC . 'megp/servers/list.php');
include(SEC . 'megp/servers/owners_list.php');
$html->get('servers', 'sections/servers');
$html->set('list', isset($html->arr['list']) ? $html->arr['list'] : 'У вас нет игровых серверов', true);
$html->set('wait_servers', $wait_servers);
$html->set('updates_servers', $updates_servers);
$html->pack('main');
$mcache->set('servers_' . $user['id'], $html->arr['main'], false, 4);
}
}

View file

@ -215,7 +215,7 @@ class ctrl
public static function route($server, $inc, $go)
{
global $device, $start_point;
global $start_point;
if (in_array($server['status'], array('install', 'reinstall', 'update', 'recovery'))) {
if ($go)
@ -232,7 +232,7 @@ class ctrl
public static function cpulist($unit, $core, $count = false)
{
global $device, $start_point;
global $start_point;
include(LIB . 'ssh.php');

View file

@ -15,7 +15,6 @@ $whoops->pushHandler($loggingInFile);
if (!file_exists(CRON . $task . '.php'))
exit('Invalid cron method');
$device = '!mobile';
$user = array('id' => 0, 'group' => 'admin');
class cron

View file

@ -54,11 +54,7 @@ class html
public function get($name, $path = '')
{
global $device, $cfg;
$path_root = $device == '!mobile' ? '' : 'megp/';
$path = $path_root . $path;
global $cfg;
if ($path != '')
$name = str_replace('//', '/', $path . '/' . $name);

File diff suppressed because one or more lines are too long

View file

@ -84,14 +84,10 @@ class sys
$html->set('home', $cfg['http']);
if (is_array($notice)) {
global $device;
if ($device == '!mobile')
$html->set('notice', '<div class="informer ' . $notice['color'] . ' topifon">' . $notice['text'] . '</div><div class="space"></div>');
else
$html->set('notice', '<div class="heading-style-1 container"><div class="smaller-text color-' . $notice['color'] . '-light">' . $notice['text'] . '</div><div class="heading-decoration bg-' . $notice['color'] . '-light" style="margin-top: 0px"></div></div>');
} else
$html->set('notice', '<div class="informer ' . $notice['color'] . ' topifon">' . $notice['text'] . '</div><div class="space"></div>');
} else {
$html->set('notice', '');
}
if ($server['console_use']) $html->unit('console_use', 1); else $html->unit('console_use');
if ($server['plugins_use']) $html->unit('plugins_use', 1); else $html->unit('plugins_use');
@ -127,9 +123,9 @@ class sys
public static function route($server, $inc, $go, $all = false)
{
global $device, $start_point;
global $start_point;
$dir = $device == '!mobile' ? '' : 'megp/';
$dir = '';
$use = true;
if (in_array($inc, array('plugins', 'ftp', 'console', 'graph', 'copy', 'web'))) {
@ -208,12 +204,12 @@ class sys
public static function outhtml($text, $time = 3, $url = false, $cache = false)
{
global $device, $mcache, $html, $cfg;
global $mcache, $html, $cfg;
if ($cache)
$mcache->delete($cache);
$tpl = $device == '!mobile' ? '' : '/megp';
$tpl = '';
$html->get('out');
@ -435,9 +431,7 @@ class sys
if ($go)
sys::outjs(array('e' => sys::text('output', 'auth')));
global $device;
$link = $device == '!mobile' ? 'user/section/lk' : '';
$link = 'user/section/lk';
exit(header('Refresh: 0; URL=' . $cfg['http'] . $link));
}
@ -453,9 +447,7 @@ class sys
if ($go)
sys::outjs(array('e' => sys::text('output', 'noauth')));
global $device;
$link = $device == '!mobile' ? 'user/section/auth' : 'auth';
$link = 'user/section/auth';
exit(header('Refresh: 0; URL=' . $cfg['http'] . $link));
}

View file

@ -1,114 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
// Парсинг адреса
$url = is_array(sys::url()) ? sys::url() : array();
$route = sys::url(false);
$section = isset($url['section']) ? $url['section'] : false;
$id = array_key_exists('id', $url) ? sys::int($url['id']) : false;
$go = array_key_exists('go', $url);
$page = array_key_exists('page', $url) ? sys::int($url['page']) : 1;
$route = $route == '' ? 'index' : $route;
$auth = false;
// Проверка cookie на авторизацию
$aAuth = array();
$aAuth['login'] = isset($_COOKIE['egp_login']) ? $_COOKIE['egp_login'] : '';
$aAuth['passwd'] = isset($_COOKIE['egp_passwd']) ? $_COOKIE['egp_passwd'] : '';
$aAuth['authkeycheck'] = isset($_COOKIE['egp_authkeycheck']) ? $_COOKIE['egp_authkeycheck'] : '';
$authkey = md5($aAuth['login'] . $uip . $aAuth['passwd']);
$userkey = md5($aAuth['login'] . $authkey . $aAuth['passwd']);
if (!in_array('', $aAuth) && $authkey == $aAuth['authkeycheck']) {
$users = $mcache->get('users_auth');
$user = isset($users[$userkey]) ? $users[$userkey] : 0;
if (!$user) {
if ((!sys::valid($aAuth['login'], 'other', $aValid['login'])) && !sys::valid($aAuth['passwd'], 'md5')) {
$sql->query('SELECT `id` FROM `users` WHERE `login`="' . $aAuth['login'] . '" AND `passwd`="' . $aAuth['passwd'] . '" LIMIT 1');
if ($sql->num()) {
$sql->query('SELECT `id`, `login`, `passwd`, `balance`, `group`, `level`, `time` FROM `users` WHERE `login`="' . $aAuth['login'] . '" AND `passwd`="' . $aAuth['passwd'] . '" LIMIT 1');
$user = array_merge(array('authkey' => $authkey), $sql->get());
$auth = 1;
sys::users($users, $user, $authkey);
}
}
if (!$auth) {
sys::cookie('egp_login', 'quit', -1);
sys::cookie('egp_passwd', 'quit', -1);
sys::cookie('egp_authkeycheck', 'quit', -1);
}
} else {
$sql->query('SELECT `balance`, `time` FROM `users` WHERE `id`="' . $user['id'] . '" LIMIT 1');
$user = array_merge($user, $sql->get());
sys::user($user);
$auth = 1;
}
}
// Заголовок
$title = '';
// Подключение файла
if (in_array($route, $amRoute))
include(ENG . 'megp/' . $route . '.php');
else
include(ENG . 'megp/index.php');
// Обновление ссылок
if (isset($html->arr['main'])) {
$html->upd(
array(
'[home]',
'[js]',
'[css]',
'[img]'
),
array(
$cfg['http'],
$cfg['http'] . 'template/megp/js/',
$cfg['http'] . 'template/megp/css/',
$cfg['http'] . 'template/megp/images/'
),
'main'
);
}
// Заготовка выхлопа
$html->get('all');
$html->set('title', $title . ' | ' . $cfg['name']);
$html->set('home', $cfg['http']);
$html->set('js', $cfg['http'] . 'template/megp/js/');
$html->set('css', $cfg['http'] . 'template/megp/css/');
$html->set('img', $cfg['http'] . 'template/megp/images/');
if ($auth)
$html->set('server_menu', isset($html->arr['vmenu']) ? $html->arr['vmenu'] : '');
else
$html->set('server_menu', '');
$html->set('main', isset($html->arr['main']) ? $html->arr['main'] : '', true);
$html->pack('all');
// Блоки
if ($auth) {
// Проверка наличия игрового сервера
$servers = $sql->query('(SELECT `id` FROM `servers` WHERE `user`="' . $user['id'] . '" LIMIT 1) UNION (SELECT `id` FROM `owners` WHERE `user`="' . $user['id'] . '" LIMIT 1)');
if ($sql->num())
$html->unitall('all', 'servers', 1, 1);
else
$html->unitall('all', 'servers', 0, 1);
}

View file

@ -1,26 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `id` FROM `news`');
$aPage = sys::page($page, $sql->num(), $cfg['news_page']);
sys::page_gen($aPage['ceil'], $page, $aPage['page'], 'news');
$sql->query('SELECT `id`, `name`, `text`, `views`, `tags`, `date` FROM `news` ORDER BY `id` DESC LIMIT ' . $aPage['num'] . ', ' . $cfg['news_page']);
while ($news = $sql->get()) {
$html->get('list', 'sections/news');
$html->set('id', $news['id']);
$html->set('name', htmlspecialchars_decode($news['name']));
$html->set('text', htmlspecialchars_decode($news['text']));
$html->set('views', $news['views']);
$html->set('tags', sys::tags($news['tags']));
$html->set('date', sys::today($news['date']));
$html->pack('news');
}
$html->get('all', 'sections/news');
$html->set('list', isset($html->arr['news']) ? $html->arr['news'] : '');
$html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : '');
$html->pack('main');

View file

@ -1,31 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `id`, `name`, `full_text`, `views`, `tags`, `date` FROM `news` WHERE `id`="' . $id . '" LIMIT 1');
if (!$sql->num())
include(ENG . '404.php');
$news = $sql->get();
$sql->query('UPDATE `news` set `views`="' . ($news['views'] + 1) . '" WHERE `id`="' . $id . '" LIMIT 1');
$text = htmlspecialchars_decode($news['full_text']);
$title = $news['name'];
$description = $text;
$keywords = $news['tags'];
$html->nav($news['name']);
$html->get('news', 'sections/news');
$html->set('id', $news['id']);
$html->set('name', htmlspecialchars_decode($news['name']));
$html->set('text', $text);
$html->set('views', $news['views']);
$html->set('tags', sys::tags($news['tags']));
$html->set('date', sys::today($news['date']));
$html->pack('main');

View file

@ -1,5 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
include(SEC . 'servers/action.php');

View file

@ -1,10 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `address`, `game`, `status`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use`, `time` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = $sql->get();
sys::nav($server, $id, 'boost');
include(sys::route($server, 'boost', $go));

View file

@ -1,10 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `address`, `game`, `status`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use`, `time` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = $sql->get();
sys::nav($server, $id, 'console');
include(sys::route($server, 'console', $go));

View file

@ -1,13 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($go)
include(SEC . 'servers/' . $server['game'] . '/console.php');
$sql->query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$html->get('console', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->pack('main');

View file

@ -1,34 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$btn = sys::buttons($id, $server['status'], $server['game']);
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('index', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('unit', $unit['name']);
$html->set('tarif', $tarif['name']);
$tarif['packs'] = sys::b64djs($tarif['packs']);
$html->set('pack', $tarif['packs'][$server['pack']]);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->set('time', sys::today($server['time']));
$html->set('date', sys::today($server['date']));
$html->set('btn', $btn);
$html->pack('main');

View file

@ -1,44 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$aSub = array('start', 'pack');
// Если выбран подраздел
if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
if ($go)
$nmch = sys::rep_act('server_settings_go_' . $id, 10);
$dir = $url['subsection'] == 'start' ? 'megp/' : '';
if (in_array($url['subsection'], $aRouteSub['settings']))
include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php');
else
include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php');
} else {
if ($mcache->get('server_settings_' . $id) != '')
$html->arr['main'] = $mcache->get('server_settings_' . $id);
else {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Построение списка доступных сборок
$aPacks = sys::b64djs($tarif['packs']);
$packs = '<option value="' . $server['pack'] . '">' . $aPacks[$server['pack']] . '</option>';
unset($aPacks[$server['pack']]);
foreach ($aPacks as $pack => $desc)
$packs .= '<option value="' . $pack . '">' . $desc . '</option>';
$html->get('settings', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('packs', $packs);
$html->pack('main');
$mcache->set('server_settings_' . $id, $html->arr['main'], false, 20);
}
}

View file

@ -1,41 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `slots`, `slots_start`, `autorestart` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
include(LIB . 'games/games.php');
// Сохранение
if ($go and $url['save']) {
$value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
switch ($url['save']) {
case 'slots':
$slots = $value > $server['slots'] ? $server['slots'] : $value;
$slots = $value < 2 ? 2 : $slots;
if ($slots != $server['slots_start'])
$sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// Генерация списка слот
$slots = '';
for ($slot = 2; $slot <= $server['slots']; $slot += 1)
$slots .= '<option value="' . $slot . '">' . $slot . ' шт.</option>';
// Авторестарт при зависании
$autorestart = $server['autorestart'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
$html->get('start', 'sections/servers/' . $server['game'] . '/settings');
$html->set('id', $id);
$html->set('autorestart', $autorestart);
$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots));
$html->pack('main');

View file

@ -1,11 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `name`, `slots_min`, `slots_max`, `install`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Подразделы
$aSub = array('extend', 'slots');
include(SEC . 'megp/servers/games/tarif.php');

View file

@ -1,46 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$aData = array();
// Если не расчетный период
if (!$cfg['settlement_period']) {
$aData['time'] = isset($_POST['time']) ? sys::int($_POST['time']) : sys::outjs(array('e' => 'Переданы не все данные'), $nmch);
// Проверка периода
if (!in_array($aData['time'], explode(':', $tarif['timext'])))
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
}
$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : '';
$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false;
$aData['server'] = $id;
$aData['user'] = $server['user'];
$aData['tarif'] = $server['tarif'];
$aData['slots'] = $server['slots'];
// Цена за выделенный адрес
$add_sum = tarifs::address_add_sum($aData['address'], $server);
// Цена за 30 дней 1 слота
$price = $tarif['price'];
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = $server['time'];
// Цена аренды
$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum;
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']);
$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true);
include(SEC . 'servers/games/tarif/extend.php');

View file

@ -1,29 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
// Если фикс. значение слот
if ($tarif['slots_min'] == $tarif['slots_max'])
sys::outjs(array('e' => 'На данном тарифе нельзя изменить количество слот.'), $nmch);
$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch);
$overdue = $server['time'] < $start_point;
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
// Цена за 1 день
$price = $tarif['price'] / 30;
// Цена аренды за остаток дней (с текущим кол-вом слот)
$price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots'];
}
$max = $tarif['slots_max'] - $server['slots'];
// Сумма за добавляемые слоты
$sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2);
include(SEC . 'servers/games/tarif/slots.php');

View file

@ -1,66 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($go) {
$aData = array();
$aData['site'] = isset($url['site']) ? $url['site'] : sys::outjs(array('e' => 'Необходимо указать сервис.'));
$aData['service'] = isset($url['service']) ? sys::int($url['service']) : sys::outjs(array('e' => 'Необходимо указать номер услуги.'));
include(DATA . 'boost.php');
// Проверка сервиса
if (!array_key_exists($aData['site'], $aBoost[$server['game']]))
sys::outjs(array('e' => 'Указанный сервис по раскрутке не найден.'));
// Проверка номера услуги
if (!in_array($aData['service'], $aBoost[$server['game']][$aData['site']]['services']))
sys::outjs(array('e' => 'Неправильно указан номер услуги.'));
// Определение суммы
$sum = $aBoost[$server['game']][$aData['site']]['price'][$aData['service']];
// Проверка баланса
if ($user['balance'] < $sum)
sys::outjs(array('e' => 'У вас не хватает ' . (round($sum - $user['balance'], 2)) . ' ' . $cfg['currency']), $name_mcache);
include(LIB . 'games/boost.php');
$boost = new boost($aBoost[$server['game']][$aData['site']]['key'], $aBoost[$server['game']][$aData['site']]['api']);
$buy = $boost->$aBoost[$server['game']][$aData['site']]['type'](array('period' => $aData['service'], 'address' => $server['address']));
if (is_array($buy))
sys::outjs(array('e' => $buy['error']));
// Списание средств с баланса пользователя
$sql->query('UPDATE `users` set `balance`="' . ($user['balance'] - $sum) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1');
include(LIB . 'games/games.php');
// Реф. система
games::part($user['id'], $sum);
$sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'buy_boost'),
array('circles' => $aBoost[$server['game']][$aData['site']]['circles'][$aData['service']],
'money' => $sum, 'site' => $aBoost[$server['game']][$aData['site']]['site'], 'id' => $id)) . '", `date`="' . $start_point . '", `type`="boost", `money`="' . $sum . '"');
$sql->query('INSERT INTO `boost` set `user`="' . $user['id'] . '", `server`="' . $id . '", `site`="' . $aData['site'] . '", `circles`="' . $aBoost[$server['game']][$aData['site']]['circles'][$aData['service']] . '", `money`="' . $sum . '", `date`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $name_mcache);
}
if ($mcache->get('server_boost_' . $id) != '')
$html->arr['main'] = $mcache->get('server_boost_' . $id);
else {
$html->get('boost', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('address', $server['address']);
$html->set('cur', $cfg['currency']);
$html->pack('main');
$mcache->set('server_boost_' . $id, $html->arr['main'], false, 4);
}

View file

@ -1,13 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($go)
include(SEC . 'servers/' . $server['game'] . '/console.php');
$sql->query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$html->get('console', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->pack('main');

View file

@ -1,40 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `fps`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$btn = sys::buttons($id, $server['status']);
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('index', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('unit', $unit['name']);
$html->set('tarif', $tarif['name'] . ' / ' . $server['fps'] . ' FPS');
$tarif['packs'] = sys::b64djs($tarif['packs']);
$html->set('pack', $tarif['packs'][$server['pack']]);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('players', base64_decode($server['players']));
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->set('time', sys::today($server['time']));
$html->set('date', sys::today($server['date']));
$html->set('btn', $btn);
$html->pack('main');

View file

@ -1,49 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$aSub = array('start', 'pack', 'antiddos');
// Если выбран подраздел
if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
if ($go)
$nmch = sys::rep_act('server_settings_go_' . $id, 10);
$dir = $url['subsection'] == 'start' ? 'megp/' : '';
if (in_array($url['subsection'], $aRouteSub['settings']))
include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php');
else
include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php');
} else {
if ($mcache->get('server_settings_' . $id) != '')
$html->arr['main'] = $mcache->get('server_settings_' . $id);
else {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Построение списка доступных сборок
$aPacks = sys::b64djs($tarif['packs']);
$packs = '<option value="' . $server['pack'] . '">' . $aPacks[$server['pack']] . '</option>';
unset($aPacks[$server['pack']]);
foreach ($aPacks as $pack => $desc)
$packs .= '<option value="' . $pack . '">' . $desc . '</option>';
$antiddos = '<option value="0">Индивидуальная защита отключена</option>'
. '<option value="1">Индивидуальная защита (Заблокировать всех кроме: RU, UA)</option>'
. '<option value="2">Индивидуальная защита (Заблокировать всех кроме: AM, BY, UA, RU, KZ)</option>';
$html->get('settings', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('packs', $packs);
$html->set('antiddos', str_replace($server['ddos'], $server['ddos'] . '" selected="select', $antiddos));
$html->pack('main');
$mcache->set('server_settings_' . $id, $html->arr['main'], false, 20);
}
}

View file

@ -1,152 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `slots`, `slots_start`, `map_start`, `vac`, `fps`, `fastdl`, `autorestart`, `pingboost` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `install`, `fps`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
include(LIB . 'games/games.php');
include(LIB . 'games/tarifs.php');
include(LIB . 'games/' . $server['game'] . '/tarif.php');
// Вывод списка карт
if (isset($url['maps']))
games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/cstrike/maps', $server['map_start'], false);
// Сохранение
if ($go and $url['save']) {
$value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
switch ($url['save']) {
case 'map':
$map = isset($url['value']) ? trim($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
if ($map != $server['map_start'])
games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/cstrike/maps', $map, true, $nmch);
sys::outjs(array('s' => 'ok'), $nmch);
case 'vac':
if ($value != $server['vac'])
$sql->query('UPDATE `servers` set `vac`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'slots':
$slots = $value > $server['slots'] ? $server['slots'] : $value;
$slots = $value < 2 ? 2 : $slots;
if ($slots != $server['slots_start'])
$sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'autorestart':
if ($value != $server['autorestart'])
$sql->query('UPDATE `servers` set `autorestart`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'fps':
if (!tarif::price($tarif['price']) and in_array($value, explode(':', $tarif['fps'])))
$sql->query('UPDATE `servers` set `fps`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'pingboost':
if ($cfg['change_pingboost'] and in_array($value, array(1, 2, 3)))
$sql->query('UPDATE `servers` set `pingboost`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'fastdl':
include(LIB . 'ssh.php');
if (!$ssh->auth($unit['passwd'], $unit['address']))
sys::outjs(array('e' => sys::text('error', 'ssh')), $nmch);
if ($value) {
$fastdl = 'sv_downloadurl "http://' . sys::first(explode(':', $unit['address'])) . ':8080/fast_' . $server['uid'] . '"' . PHP_EOL
. 'sv_consistency 1' . PHP_EOL
. 'sv_allowupload 1' . PHP_EOL
. 'sv_allowdownload 1';
// Временый файл
$temp = sys::temp($fastdl);
$ssh->setfile($temp, $tarif['install'] . $server['uid'] . '/cstrike/fastdl.cfg', 0644);
$ssh->set('chown server' . $server['uid'] . ':servers ' . $tarif['install'] . $server['uid'] . '/cstrike/fastdl.cfg;'
. 'ln -s ' . $tarif['install'] . $server['uid'] . '/cstrike /var/nginx/fast_' . $server['uid'] . ';'
. 'sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/cstrike/server.cfg;'
. 'echo "exec fastdl.cfg" >> ' . $tarif['install'] . $server['uid'] . '/cstrike/server.cfg');
unlink($temp);
} else
$ssh->set('sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/cstrike/server.cfg;'
. 'rm ' . $tarif['install'] . $server['uid'] . '/cstrike/fastdl.cfg; rm /var/nginx/fast_' . $server['uid']);
$sql->query('UPDATE `servers` set `fastdl`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// Генерация списка слот
$slots = '';
for ($slot = 2; $slot <= $server['slots']; $slot += 1)
$slots .= '<option value="' . $slot . '">' . $slot . ' шт.</option>';
// Античит VAC
$vac = $server['vac'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
// Быстрая скачака
$fastdl = $server['fastdl'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
// Авторестарт при зависании
$autorestart = $server['autorestart'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
$fps = '<option value="' . $server['fps'] . '">' . $server['fps'] . ' FPS</option>';
if (!tarif::price($tarif['price'])) {
$aFps = explode(':', $tarif['fps']);
unset($aFps[array_search($server['fps'], $aFps)]);
if (count($aFps))
foreach ($aFps as $value)
$fps .= '<option value="' . $value . '">' . $value . ' FPS</option>';
}
if ($cfg['change_pingboost'])
$pingboost = str_replace($server['pingboost'] . '"', $server['pingboost'] . '" selected="select"', '<option value="1">PINGBOOST 1</option><option value="2">PINGBOOST 2</option><option value="3">PINGBOOST 3</option>');
$html->get('start', 'sections/servers/' . $server['game'] . '/settings');
$html->set('id', $id);
$html->set('map', $server['map_start']);
$html->set('vac', $vac);
$html->set('fastdl', $fastdl);
$html->set('autorestart', $autorestart);
$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots));
if ($cfg['change_pingboost']) {
$html->unit('pingboost', true);
$html->set('pingboost', $pingboost);
} else
$html->unit('pingboost');
if (!tarif::price($tarif['price'])) {
$html->unit('fps', true);
$html->set('fps', $fps);
} else
$html->unit('fps');
$html->pack('main');

View file

@ -1,11 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `name`, `slots_min`, `slots_max`, `install`, `fps`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Подразделы
$aSub = array('extend', 'plan', 'slots');
include(SEC . 'megp/servers/games/tarif.php');

View file

@ -1,50 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$aData = array();
// Если не расчетный период
if (!$cfg['settlement_period']) {
$aData['time'] = isset($_POST['time']) ? sys::int($_POST['time']) : sys::outjs(array('e' => 'Переданы не все данные'), $nmch);
// Проверка периода
if (!in_array($aData['time'], explode(':', $tarif['timext'])))
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
}
$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : '';
$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false;
$aData['server'] = $id;
$aData['user'] = $server['user'];
$aData['tarif'] = $server['tarif'];
$aData['fps'] = $server['fps'];
$aData['slots'] = $server['slots'];
// Цена за выделенный адрес
$add_sum = tarifs::address_add_sum($aData['address'], $server);
$aPrice = explode(':', $tarif['price']);
$aFPS = explode(':', $tarif['fps']);
// Цена за 30 дней 1 слота
$price = $aPrice[array_search($server['fps'], $aFPS)];
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = $server['time'];
// Цена аренды
$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum;
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']);
$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true);
include(SEC . 'servers/games/tarif/extend.php');

View file

@ -1,61 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$plan = isset($url['plan']) ? sys::int($url['plan']) : sys::outjs(array('e' => 'Переданые не все данные'), $nmch);
$aPrice = explode(':', $tarif['price']);
$aFPS = explode(':', $tarif['fps']);
// Проверка плана
if (array_search($plan, $aFPS) === FALSE)
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
if ($plan == $server['fps'])
sys::outjs(array('e' => 'Смысла в этой операции нет'), $nmch);
if (!tarif::price($tarif['price']))
sys::outjs(array('e' => 'Чтобы изменить тариф, перейдите в настройки запуска'), $nmch);
if ($server['time'] < $start_point + 86400)
$time = $server['time'];
else {
// Цена за 1 день аренды (по новому тарифному плану)
$price = $aPrice[array_search($plan, $aFPS)] / 30 * $server['slots'];
// Цена за 1 день аренды (по старому тарифному плану)
$price_old = $aPrice[array_search($server['fps'], $aFPS)] / 30 * $server['slots'];
// Остаток дней аренды
$days = ($server['time'] - $start_point) / 86400;
$time = date('H:i:s', $server['time']);
$date = date('d.m.Y', round($start_point + $days * $price_old / $price * 86400 - 86400));
$aDate = explode('.', $date);
$aTime = explode(':', $time);
$time = mktime($aTime[0], $aTime[1], $aTime[2], $aDate[1], $aDate[0], $aDate[2]);
}
// Выполнение смена тарифного плана
if ($go) {
$sql->query('UPDATE `servers` set `time`="' . $time . '", `fps`="' . $plan . '" WHERE `id`="' . $id . '" LIMIT 1');
if (in_array($server['status'], array('working', 'start', 'restart', 'change'))) {
include(LIB . 'games/' . $server['game'] . '/action.php');
action::start($id, 'restart');
}
// Запись логов
$sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_plan') . '", `time`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп информации
sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch);

View file

@ -1,32 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
// Если фикс. значение слот
if ($tarif['slots_min'] == $tarif['slots_max'])
sys::outjs(array('e' => 'На данном тарифе нельзя изменить количество слот.'), $nmch);
$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch);
$aPrice = explode(':', $tarif['price']);
$aFPS = explode(':', $tarif['fps']);
$overdue = $server['time'] < $start_point;
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
// Цена за 1 день 1 слота
$price = $aPrice[array_search($server['fps'], $aFPS)] / 30;
// Цена аренды за остаток дней (с текущим кол-вом слот)
$price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots'];
}
$max = $tarif['slots_max'] - $server['slots'];
// Сумма за добавляемые слоты
$sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['fps'], $aFPS)] / 30) * $slots, 2);
include(SEC . 'servers/games/tarif/slots.php');

View file

@ -1,13 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($go)
include(SEC . 'servers/' . $server['game'] . '/console.php');
$sql->query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$html->get('console', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->pack('main');

View file

@ -1,40 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `fps`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$btn = sys::buttons($id, $server['status']);
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('index', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('unit', $unit['name']);
$html->set('tarif', $tarif['name'] . ' / ' . $server['fps'] . ' FPS');
$tarif['packs'] = sys::b64djs($tarif['packs']);
$html->set('pack', $tarif['packs'][$server['pack']]);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('players', base64_decode($server['players']));
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->set('time', sys::today($server['time']));
$html->set('date', sys::today($server['date']));
$html->set('btn', $btn);
$html->pack('main');

View file

@ -1,49 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$aSub = array('start', 'pack', 'antiddos');
// Если выбран подраздел
if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
if ($go)
$nmch = sys::rep_act('server_settings_go_' . $id, 10);
$dir = $url['subsection'] == 'start' ? 'megp/' : '';
if (in_array($url['subsection'], $aRouteSub['settings']))
include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php');
else
include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php');
} else {
if ($mcache->get('server_settings_' . $id) != '')
$html->arr['main'] = $mcache->get('server_settings_' . $id);
else {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Построение списка доступных сборок
$aPacks = sys::b64djs($tarif['packs']);
$packs = '<option value="' . $server['pack'] . '">' . $aPacks[$server['pack']] . '</option>';
unset($aPacks[$server['pack']]);
foreach ($aPacks as $pack => $desc)
$packs .= '<option value="' . $pack . '">' . $desc . '</option>';
$antiddos = '<option value="0">Индивидуальная защита отключена</option>'
. '<option value="1">Индивидуальная защита (Заблокировать всех кроме: RU, UA)</option>'
. '<option value="2">Индивидуальная защита (Заблокировать всех кроме: AM, BY, UA, RU, KZ)</option>';
$html->get('settings', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('packs', $packs);
$html->set('antiddos', str_replace($server['ddos'], $server['ddos'] . '" selected="select', $antiddos));
$html->pack('main');
$mcache->set('server_settings_' . $id, $html->arr['main'], false, 20);
}
}

View file

@ -1,137 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `slots`, `slots_start`, `map_start`, `vac`, `fastdl`, `autorestart`, `fps`, `tickrate` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `install`, `tickrate`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
include(LIB . 'games/games.php');
include(LIB . 'games/tarifs.php');
include(LIB . 'games/' . $server['game'] . '/tarif.php');
// Вывод списка карт
if (isset($url['maps']))
games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/csgo/maps', $server['map_start'], false);
// Сохранение
if ($go and $url['save']) {
$value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
switch ($url['save']) {
case 'map':
$map = isset($url['value']) ? trim($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
if ($map != $server['map_start'])
games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/csgo/maps', $map, true, $nmch);
sys::outjs(array('s' => 'ok'), $nmch);
case 'vac':
if ($value != $server['vac'])
$sql->query('UPDATE `servers` set `vac`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'slots':
$slots = $value > $server['slots'] ? $server['slots'] : $value;
$slots = $value < 2 ? 2 : $slots;
if ($slots != $server['slots_start'])
$sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'autorestart':
if ($value != $server['autorestart'])
$sql->query('UPDATE `servers` set `autorestart`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'tickrate':
if (!tarif::price($tarif['price']) and in_array($value, explode(':', $tarif['tickrate'])))
$sql->query('UPDATE `servers` set `tickrate`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'fastdl':
include(LIB . 'ssh.php');
if (!$ssh->auth($unit['passwd'], $unit['address']))
sys::outjs(array('e' => sys::text('error', 'ssh')), $nmch);
if ($value) {
$fastdl = 'sv_downloadurl "http://' . sys::first(explode(':', $unit['address'])) . ':8080/fast_' . $server['uid'] . '"' . PHP_EOL
. 'sv_consistency 1' . PHP_EOL
. 'sv_allowupload 1' . PHP_EOL
. 'sv_allowdownload 1';
// Временый файл
$temp = sys::temp($fastdl);
$ssh->setfile($temp, $tarif['install'] . $server['uid'] . '/csgo/cfg/fastdl.cfg', 0644);
$ssh->set('chown server' . $server['uid'] . ':servers ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/fastdl.cfg;'
. 'ln -s ' . $tarif['install'] . $server['uid'] . '/csgo /var/nginx/fast_' . $server['uid'] . ';'
. 'sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/server.cfg;'
. 'echo "exec fastdl.cfg" >> ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/server.cfg');
unlink($temp);
} else
$ssh->set('sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/server.cfg;'
. 'rm ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/fastdl.cfg; rm /var/nginx/fast_' . $server['uid']);
$sql->query('UPDATE `servers` set `fastdl`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// Генерация списка слот
$slots = '';
for ($slot = 2; $slot <= $server['slots']; $slot += 1)
$slots .= '<option value="' . $slot . '">' . $slot . ' шт.</option>';
// Античит VAC
$vac = $server['vac'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
// Быстрая скачака
$fastdl = $server['fastdl'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
// Авторестарт при зависании
$autorestart = $server['autorestart'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
$tickrate = '<option value="' . $server['tickrate'] . '">' . $server['tickrate'] . ' TickRate</option>';
if (!tarif::price($tarif['price'])) {
$aTick = explode(':', $tarif['tickrate']);
unset($aTick[array_search($server['tickrate'], $aTick)]);
if (count($aTick))
foreach ($aTick as $value)
$tickrate .= '<option value="' . $value . '">' . $value . ' TickRate</option>';
}
$html->get('start', 'sections/servers/' . $server['game'] . '/settings');
$html->set('id', $id);
$html->set('map', $server['map_start']);
$html->set('vac', $vac);
$html->set('fastdl', $fastdl);
$html->set('autorestart', $autorestart);
$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots));
if (!tarif::price($tarif['price'])) {
$html->unit('tickrate', true);
$html->set('tickrate', $tickrate);
} else
$html->unit('tickrate');
$html->pack('main');

View file

@ -1,11 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `name`, `slots_min`, `slots_max`, `install`, `fps`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Подразделы
$aSub = array('extend', 'plan', 'slots');
include(SEC . 'megp/servers/games/tarif.php');

View file

@ -1,49 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$aData = array();
// Если не расчетный период
if (!$cfg['settlement_period']) {
$aData['time'] = isset($_POST['time']) ? sys::int($_POST['time']) : sys::outjs(array('e' => 'Переданы не все данные'), $nmch);
// Проверка периода
if (!in_array($aData['time'], explode(':', $tarif['timext'])))
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
}
$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : '';
$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false;
$aData['server'] = $id;
$aData['user'] = $server['user'];
$aData['tarif'] = $server['tarif'];
$aData['tickrate'] = $server['tickrate'];
$aData['slots'] = $server['slots'];
// Цена за выделенный адрес
$add_sum = tarifs::address_add_sum($aData['address'], $server);
$aPrice = explode(':', $tarif['price']);
// Цена за 30 дней 1 слота
$price = $aPrice[array_search($server['tickrate'], explode(':', $tarif['tickrate']))];
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = $server['time'];
// Цена аренды
$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum;
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']);
$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true);
include(SEC . 'servers/games/tarif/extend.php');

View file

@ -1,61 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$plan = isset($url['plan']) ? sys::int($url['plan']) : sys::outjs(array('e' => 'Переданые не все данные'), $nmch);
$aPrice = explode(':', $tarif['price']);
$aTICK = explode(':', $tarif['tickrate']);
// Проверка плана
if (array_search($plan, $aTICK) === FALSE)
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
if ($plan == $server['tickrate'])
sys::outjs(array('e' => 'Смысла в этой операции нет'), $nmch);
if (!tarif::price($tarif['price']))
sys::outjs(array('e' => 'Чтобы изменить тариф, перейдите в настройки запуска'), $nmch);
if ($server['time'] < $start_point + 86400)
$time = $server['time'];
else {
// Цена за 1 день аренды (по новому тарифному плану)
$price = $aPrice[array_search($plan, $aTICK)] / 30 * $server['slots'];
// Цена за 1 день аренды (по старому тарифному плану)
$price_old = $aPrice[array_search($server['tickrate'], $aTICK)] / 30 * $server['slots'];
// Остаток дней аренды
$days = ($server['time'] - $start_point) / 86400;
$time = date('H:i:s', $server['time']);
$date = date('d.m.Y', round($start_point + $days * $price_old / $price * 86400 - 86400));
$aDate = explode('.', $date);
$aTime = explode(':', $time);
$time = mktime($aTime[0], $aTime[1], $aTime[2], $aDate[1], $aDate[0], $aDate[2]);
}
// Выполнение смена тарифного плана
if ($go) {
$sql->query('UPDATE `servers` set `time`="' . $time . '", `tickrate`="' . $plan . '" WHERE `id`="' . $id . '" LIMIT 1');
if (in_array($server['status'], array('working', 'start', 'restart', 'change'))) {
include(LIB . 'games/' . $server['game'] . '/action.php');
action::start($id, 'restart');
}
// Запись логов
$sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_plan') . '", `time`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп информации
sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch);

View file

@ -1,32 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
// Если фикс. значение слот
if ($tarif['slots_min'] == $tarif['slots_max'])
sys::outjs(array('e' => 'На данном тарифе нельзя изменить количество слот.'), $nmch);
$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch);
$aPrice = explode(':', $tarif['price']);
$aTICK = explode(':', $tarif['tickrate']);
$overdue = $server['time'] < $start_point;
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
// Цена за 1 день
$price = $aPrice[array_search($server['tickrate'], $aTICK)] / 30;
// Цена аренды за остаток дней (с текущим кол-вом слот)
$price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots'];
}
$max = $tarif['slots_max'] - $server['slots'];
// Сумма за добавляемые слоты
$sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['tickrate'], $aTICK)] / 30) * $slots, 2);
include(SEC . 'servers/games/tarif/slots.php');

View file

@ -1,13 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($go)
include(SEC . 'servers/' . $server['game'] . '/console.php');
$sql->query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$html->get('console', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->pack('main');

View file

@ -1,40 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `fps`, `tickrate`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$btn = sys::buttons($id, $server['status']);
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('index', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('unit', $unit['name']);
$html->set('tarif', $tarif['name'] . ' / ' . $server['fps'] . ' FPS / ' . $server['tickrate'] . ' TickRate');
$tarif['packs'] = sys::b64djs($tarif['packs']);
$html->set('pack', $tarif['packs'][$server['pack']]);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('players', base64_decode($server['players']));
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->set('time', sys::today($server['time']));
$html->set('date', sys::today($server['date']));
$html->set('btn', $btn);
$html->pack('main');

View file

@ -1,49 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$aSub = array('start', 'pack', 'antiddos');
// Если выбран подраздел
if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
if ($go)
$nmch = sys::rep_act('server_settings_go_' . $id, 10);
$dir = $url['subsection'] == 'start' ? 'megp/' : '';
if (in_array($url['subsection'], $aRouteSub['settings']))
include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php');
else
include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php');
} else {
if ($mcache->get('server_settings_' . $id) != '')
$html->arr['main'] = $mcache->get('server_settings_' . $id);
else {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Построение списка доступных сборок
$aPacks = sys::b64djs($tarif['packs']);
$packs = '<option value="' . $server['pack'] . '">' . $aPacks[$server['pack']] . '</option>';
unset($aPacks[$server['pack']]);
foreach ($aPacks as $pack => $desc)
$packs .= '<option value="' . $pack . '">' . $desc . '</option>';
$antiddos = '<option value="0">Индивидуальная защита отключена</option>'
. '<option value="1">Индивидуальная защита (Заблокировать всех кроме: RU, UA)</option>'
. '<option value="2">Индивидуальная защита (Заблокировать всех кроме: AM, BY, UA, RU, KZ)</option>';
$html->get('settings', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('packs', $packs);
$html->set('antiddos', str_replace($server['ddos'], $server['ddos'] . '" selected="select', $antiddos));
$html->pack('main');
$mcache->set('server_settings_' . $id, $html->arr['main'], false, 20);
}
}

View file

@ -1,157 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `slots`, `slots_start`, `map_start`, `vac`, `fastdl`, `autorestart`, `fps`, `tickrate` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `install`, `fps`, `tickrate`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
include(LIB . 'games/games.php');
include(LIB . 'games/tarifs.php');
include(LIB . 'games/' . $server['game'] . '/tarif.php');
// Вывод списка карт
if (isset($url['maps']))
games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/cstrike/maps', $server['map_start'], false);
// Сохранение
if ($go and $url['save']) {
$value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
switch ($url['save']) {
case 'map':
$map = isset($url['value']) ? trim($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
if ($map != $server['map_start'])
games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/cstrike/maps', $map, true, $nmch);
sys::outjs(array('s' => 'ok'), $nmch);
case 'vac':
if ($value != $server['vac'])
$sql->query('UPDATE `servers` set `vac`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'slots':
$slots = $value > $server['slots'] ? $server['slots'] : $value;
$slots = $value < 2 ? 2 : $slots;
if ($slots != $server['slots_start'])
$sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'autorestart':
if ($value != $server['autorestart'])
$sql->query('UPDATE `servers` set `autorestart`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'fps':
if (!tarif::price($tarif['price']) and in_array($value, explode(':', $tarif['fps'])))
$sql->query('UPDATE `servers` set `fps`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'tickrate':
if (!tarif::price($tarif['price']) and in_array($value, explode(':', $tarif['tickrate'])))
$sql->query('UPDATE `servers` set `tickrate`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'fastdl':
include(LIB . 'ssh.php');
if (!$ssh->auth($unit['passwd'], $unit['address']))
sys::outjs(array('e' => sys::text('error', 'ssh')), $nmch);
if ($value) {
$fastdl = 'sv_downloadurl "http://' . sys::first(explode(':', $unit['address'])) . ':8080/fast_' . $server['uid'] . '"' . PHP_EOL
. 'sv_consistency 1' . PHP_EOL
. 'sv_allowupload 1' . PHP_EOL
. 'sv_allowdownload 1';
// Временый файл
$temp = sys::temp($fastdl);
$ssh->setfile($temp, $tarif['install'] . $server['uid'] . '/cstrike/cfg/fastdl.cfg', 0644);
$ssh->set('chown server' . $server['uid'] . ':servers ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/fastdl.cfg;'
. 'ln -s ' . $tarif['install'] . $server['uid'] . '/cstrike /var/nginx/fast_' . $server['uid'] . ';'
. 'sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/server.cfg;'
. 'echo "exec fastdl.cfg" >> ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/server.cfg');
unlink($temp);
} else
$ssh->set('sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/server.cfg;'
. 'rm ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/fastdl.cfg; rm /var/nginx/fast_' . $server['uid']);
$sql->query('UPDATE `servers` set `fastdl`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// Генерация списка слот
$slots = '';
for ($slot = 2; $slot <= $server['slots']; $slot += 1)
$slots .= '<option value="' . $slot . '">' . $slot . ' шт.</option>';
// Античит VAC
$vac = $server['vac'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
// Быстрая скачака
$fastdl = $server['fastdl'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
// Авторестарт при зависании
$autorestart = $server['autorestart'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
$fps = '<option value="' . $server['fps'] . '">' . $server['fps'] . ' FPS</option>';
$tickrate = '<option value="' . $server['tickrate'] . '">' . $server['tickrate'] . ' TickRate</option>';
if (!tarif::price($tarif['price'])) {
$aFps = explode(':', $tarif['fps']);
unset($aFps[array_search($server['fps'], $aFps)]);
if (count($aFps))
foreach ($aFps as $value)
$fps .= '<option value="' . $value . '">' . $value . ' FPS</option>';
$aTick = explode(':', $tarif['tickrate']);
unset($aTick[array_search($server['tickrate'], $aTick)]);
if (count($aTick))
foreach ($aTick as $value)
$tickrate .= '<option value="' . $value . '">' . $value . ' TickRate</option>';
}
$html->get('start', 'sections/servers/' . $server['game'] . '/settings');
$html->set('id', $id);
$html->set('map', $server['map_start']);
$html->set('vac', $vac);
$html->set('fastdl', $fastdl);
$html->set('autorestart', $autorestart);
$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots));
if (!tarif::price($tarif['price'])) {
$html->unit('fps', true);
$html->set('fps', $fps);
$html->unit('tickrate', true);
$html->set('tickrate', $tickrate);
} else {
$html->unit('fps');
$html->unit('tickrate');
}
$html->pack('main');

View file

@ -1,11 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `name`, `slots_min`, `slots_max`, `install`, `fps`, `tickrate`, `ram`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Подразделы
$aSub = array('extend', 'plan', 'slots');
include(SEC . 'megp/servers/games/tarif.php');

View file

@ -1,50 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$aData = array();
// Если не расчетный период
if (!$cfg['settlement_period']) {
$aData['time'] = isset($_POST['time']) ? sys::int($_POST['time']) : sys::outjs(array('e' => 'Переданы не все данные'), $nmch);
// Проверка периода
if (!in_array($aData['time'], explode(':', $tarif['timext'])))
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
}
$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : '';
$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false;
$aData['server'] = $id;
$aData['user'] = $server['user'];
$aData['tarif'] = $server['tarif'];
$aData['fps'] = $server['fps'];
$aData['tickrate'] = $server['tickrate'];
$aData['slots'] = $server['slots'];
// Цена за выделенный адрес
$add_sum = tarifs::address_add_sum($aData['address'], $server);
$aPrice = sys::b64djs($tarif['price']);
// Цена за 30 дней 1 слота
$price = $aPrice[$server['tickrate'] . '_' . $server['fps']];
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = $server['time'];
// Цена аренды
$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum;
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']);
$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true);
include(SEC . 'servers/games/tarif/extend.php');

View file

@ -1,62 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$plan = isset($url['plan']) ? $url['plan'] : sys::outjs(array('e' => 'Переданые не все данные'), $nmch);
$aPrice = sys::b64djs($tarif['price']);
// Проверка плана
if (!array_key_exists($plan, $aPrice))
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
list($tickrate, $fps) = explode('_', $plan);
if ($tickrate == $server['tickrate'] and $fps == $server['fps'])
sys::outjs(array('e' => 'Смысла в этой операции нет'), $nmch);
if (!tarif::price($tarif['price']))
sys::outjs(array('e' => 'Чтобы изменить тариф, перейдите в настройки запуска'), $nmch);
if ($server['time'] < $start_point + 86400)
$time = $server['time'];
else {
// Цена за 1 день (по новому тарифному плану)
$price = $aPrice[$plan] / 30 * $server['slots'];
// Цена аренды за остаток дней
$price_old = $aPrice[$server['tickrate'] . '_' . $server['fps']] / 30 * $server['slots'];
// Остаток дней аренды
$days = ($server['time'] - $start_point) / 86400;
$time = date('H:i:s', $server['time']);
$date = date('d.m.Y', round($start_point + $days * $price_old / $price * 86400 - 86400));
$aDate = explode('.', $date);
$aTime = explode(':', $time);
$time = mktime($aTime[0], $aTime[1], $aTime[2], $aDate[1], $aDate[0], $aDate[2]);
}
// Выполнение смена тарифного плана
if ($go) {
$sql->query('UPDATE `servers` set `time`="' . $time . '", `fps`="' . $fps . '", `tickrate`="' . $tickrate . '" WHERE `id`="' . $id . '" LIMIT 1');
if (in_array($server['status'], array('working', 'start', 'restart', 'change'))) {
include(LIB . 'games/' . $server['game'] . '/action.php');
action::start($id, 'restart');
}
// Запись логов
$sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_plan') . '", `time`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп информации
sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch);

View file

@ -1,31 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
// Если фикс. значение слот
if ($tarif['slots_min'] == $tarif['slots_max'])
sys::outjs(array('e' => 'На данном тарифе нельзя изменить количество слот.'), $nmch);
$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch);
$aPrice = sys::b64djs($tarif['price']);
$overdue = $server['time'] < $start_point;
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
// Цена за 1 день
$price = $aPrice[$server['tickrate'] . '_' . $server['fps']] / 30;
// Цена аренды за остаток дней (с текущим кол-вом слот)
$price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots'];
}
$max = $tarif['slots_max'] - $server['slots'];
// Сумма за добавляемые слоты
$sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[$server['tickrate'] . '_' . $server['fps']] / 30) * $slots, 2);
include(SEC . 'servers/games/tarif/slots.php');

View file

@ -1,47 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
include(LIB . 'games/games.php');
include(LIB . 'games/tarifs.php');
include(LIB . 'games/' . $server['game'] . '/tarif.php');
// Выполнение операции
if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
$nmch = sys::rep_act('server_tarif_go_' . $id, 10);
if (file_exists(SEC . 'megp/servers/' . $server['game'] . '/tarif/' . $url['subsection'] . '.php'))
include(SEC . 'megp/servers/' . $server['game'] . '/tarif/' . $url['subsection'] . '.php');
else
include(SEC . 'megp/servers/games/tarif/' . $url['subsection'] . '.php');
}
// Общий шаблон раздела
$html->get('tarif', 'sections/servers/games');
$html->set('id', $id);
$html->pack('main');
// Шаблон продления
if ($cfg['settlement_period'])
tarif::extend_sp($server, $tarif, $id);
else {
$options = games::parse_time(explode(':', $tarif['timext']), $tarif['discount'], $server['tarif'], 'extend');
tarif::extend($options, $server, $tarif['name'], $id);
}
// Если не тестовый период
if (!$server['test']) {
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
// Шаблон смены тарифа (если аренда не менее 1 дня и цены планов различны)
if ($server['time'] > $start_point + 86400 and tarif::price($tarif['price']))
tarif::plan($server, $tarif['name'], $id);
// Шаблон изменения кол-ва слот
if ($tarif['slots_min'] != $tarif['slots_max'])
tarif::slots($server, array('min' => $tarif['slots_min'], 'max' => $tarif['slots_max']), $id);
}

View file

@ -1,68 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$promo = false;
// Цена аренды за выбранный период (promo -> с учетом промо-кода)
if (isset($url['promo']) || $aData['promo'] != '')
$promo = games::define_promo(
$aData['promo'],
$aData,
$tarif['discount'],
$sum,
'extend'
);
// Использование промо-кода
if (is_array($promo)) {
if (array_key_exists('sum', $promo))
$sum = $promo['sum'];
else
$aData['time'] += $promo['days'] * 86400; // Кол-во дней аренды с учетом подарочных (промо-код)
}
// Выполнение продления
if ($go) {
// Проверка баланса
if ($user['balance'] < $sum)
sys::outjs(array('e' => 'У вас не хватает ' . (round($sum - $user['balance'], 2)) . ' ' . $cfg['currency']), $nmch);
// Списание средств с баланса пользователя
$sql->query('UPDATE `users` set `balance`="' . ($user['balance'] - $sum) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1');
// Реф. система
games::part($user['id'], $sum);
$status = $server['status'] == 'overdue' ? '`status`="off",' : '';
// Время аренды
$time = $server['time'] < $start_point ? $start_point + $aData['time'] * 86400 : $server['time'] + $aData['time'] * 86400;
// Обновление информации
$sql->query('UPDATE `servers` set ' . $status . ' `time`="' . $time . '", `test`="0" WHERE `id`="' . $id . '" LIMIT 1');
// Продление адреса на 30 дней
if ($add_sum)
$sql->query('UPDATE `address_buy` set `time`=`time`+"2592000" WHERE `server`="' . $id . '" LIMIT 1');
// Запись логов
if (!is_array($promo))
$sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'extend_server'),
array('days' => $days,
'money' => $sum,
'id' => $id)) . '", `date`="' . $start_point . '", `type`="extend", `money`="' . $sum . '"');
else {
$sql->query('INSERT INTO `promo_use` set `promo`="' . $promo['id'] . '", `user`="' . $user['id'] . '", `time`="' . $start_point . '"');
$sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'extend_server_promo'),
array('days' => $days,
'money' => $sum,
'promo' => $promo['cod'], 'id' => $id)) . '", `date`="' . $start_point . '", `type`="extend", `money`="' . $sum . '"');
}
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп цены
sys::outjs(array('s' => $sum));

View file

@ -1,114 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
// Изменение кол-ва слот за счет пересчета дней аренды или закончился срок аренды (иначе аренда дополнительных слот)
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
// Если просрочен
if ($overdue) {
sys::outjs(array('i' => ''));
if ($go) {
$start = $server['slots_start'] > $slots ? ', `slots_start`="' . $slots . '"' : '';
$sql->query('UPDATE `servers` set `slots`="' . $slots . '" ' . $start . ' WHERE `id`="' . $id . '" LIMIT 1');
// Запись логов
$sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_slots') . '", `time`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// При возможности уменьшить
if ($cfg['change_slots'][$server['game']]['down'] || $overdue) {
// Проверка кол-ва слот
if ($slots < $tarif['slots_min'] || $slots > $tarif['slots_max'])
sys::outjs(array('e' => 'Переданые неверные данные.'), $nmch);
if ($server['slots'] == $slots) {
if ($go)
sys::outjs(array('s' => 'ok'), $nmch);
sys::outjs(array('s' => 'Сервер будет арендован до: ' . date('d.m.Y - H:i', $server['time']) . ' (' . sys::date('min', $server['time']) . ')'), $nmch);
}
} else {
// Установлено макс. значение
if ($server['slots'] == $tarif['slots_max'] and !$overdue)
sys::outjs(array('e' => 'На игровом сервере установлено максимальное значение.'), $nmch);
if ($slots < 1 || $slots > $max)
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
$slots += $server['slots'];
}
$date = date('H.i.s.d.m.Y', round($start_point + $price_old / ($price * $slots) * 86400 - 86400));
$aDate = explode('.', $date);
$time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]);
// При уменьшении кол-ва слот не добавлять дни
if ($slots < $server['slots'] and ($cfg['change_slots'][$server['game']]['days'] and $cfg['change_slots'][$server['game']]['down'] and !$cfg['change_slots'][$server['game']]['add']))
$time = $server['time'];
// Выполнение операции
if ($go) {
$start = $server['slots_start'] > $slots ? ', `slots_start`="' . $slots . '"' : '';
$sql->query('UPDATE `servers` set `time`="' . $time . '", `slots`="' . $slots . '" ' . $start . ' WHERE `id`="' . $id . '" LIMIT 1');
if (in_array($server['status'], array('working', 'start', 'restart', 'change')) and $slots < $server['slots_start']) {
include(LIB . 'games/' . $server['game'] . '/action.php');
action::start($id, 'restart');
}
// Запись логов
$sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_slots') . '", `time`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп информации
sys::outjs(array('s' => 'Сервер будет арендован до: ' . $arenda . ' ' . date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'));
}
if ($slots < 1 || $slots > $max)
sys::outjs(array('e' => 'Переданые неверные данные'), $nmch);
// Выполнение операции
if ($go) {
$slots_new = $server['slots'] + $slots;
// Проверка баланса
if ($user['balance'] < $sum)
sys::outjs(array('e' => 'У вас не хватает ' . (round($sum - $user['balance'], 2)) . ' ' . $cfg['currency']), $nmch);
// Списание средств с баланса пользователя
$sql->query('UPDATE `users` set `balance`="' . ($user['balance'] - $sum) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1');
// Реф. система
games::part($user['id'], $sum);
$start = $server['slots_start'] == $server['slots'] ? ', `slots_start`="' . $slots_new . '"' : '';
// Обновление информации
$sql->query('UPDATE `servers` set `slots`="' . $slots_new . '" ' . $start . ' WHERE `id`="' . $id . '" LIMIT 1');
if (in_array($server['status'], array('working', 'start', 'restart', 'change')) and $slots_new != $server['slots_start']) {
include(LIB . 'games/' . $server['game'] . '/action.php');
action::start($id, 'restart');
}
// Запись логов
$sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'buy_slots'),
array('slots' => $slots, 'money' => $sum, 'id' => $id)) . '", `date`="' . $start_point . '", `type`="buy", `money`="' . $sum . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп информации
sys::outjs(array('s' => 'Цена за дополнительные слоты: ' . $sum . ' ' . $cfg['currency']));

View file

@ -1,10 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `address`, `game`, `status`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = $sql->get();
sys::nav($server, $id, 'index');
include(SEC . 'megp/servers/' . $server['game'] . '/index.php');

View file

@ -1,84 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$q_Servers = $sql->query('SELECT `unit`, `tarif` FROM `servers` WHERE `user`="' . $user['id'] . '" ORDER BY `id` ASC');
$n = $sql->num($q_Servers);
$aUnits = array();
$aTarifs = array();
// Проверка массивов в кеше
if (is_array($mcache->get('aut_' . $user['id'])) and $mcache->get('nser_' . $user['id']) == $n) {
$aUT = $mcache->get('aut_' . $user['id']);
$aUnits = $aUT[0];
$aTarifs = $aUT[1];
} else {
while ($server = $sql->get($q_Servers)) {
if (!array_key_exists($server['unit'], $aUnits)) {
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$aUnits[$server['unit']] = array(
'name' => $unit['name']
);
}
if (!array_key_exists($server['tarif'], $aTarifs)) {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$aTarifs[$server['tarif']] = array(
'name' => $tarif['name'],
'packs' => sys::b64djs($tarif['packs'])
);
}
}
// Запись массивов в кеш
$mcache->set('aut_' . $user['id'], array($aUnits, $aTarifs), false, 60);
// Запись кол-во серверов в кеш
$mcache->set('nser_' . $user['id'], $n, false, 60);
}
include(LIB . 'games/games.php');
$sql->query('SELECT '
. '`id`,'
. '`unit`,'
. '`tarif`,'
. '`address`,'
. '`game`,'
. '`slots_start`,'
. '`online`,'
. '`status`,'
. '`name`,'
. '`map`,'
. '`time`,'
. '`overdue`'
. ' FROM `servers` WHERE `user`="' . $user['id'] . '" ORDER BY `id` ASC');
$wait_servers = '';
$updates_servers = '';
while ($server = $sql->get()) {
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('list', 'sections/servers');
$html->set('id', $server['id']);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->pack('list');
$wait_servers .= $server['id'] . ':false,';
$updates_servers .= 'setTimeout(function() {update_info(\'' . $server['id'] . '\', true)}, 5000); setTimeout(function() {update_status(\'' . $server['id'] . '\', true)}, 10000);';
}

View file

@ -1,13 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($go)
include(SEC . 'servers/' . $server['game'] . '/console.php');
$sql->query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$html->get('console', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->pack('main');

View file

@ -1,39 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `map`, `time`, `date`, `overdue`, `ram` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$btn = sys::buttons($id, $server['status'], $server['game']);
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('index', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('unit', $unit['name']);
$html->set('tarif', $tarif['name'] . ' / ' . $server['ram'] . ' RAM');
$tarif['packs'] = sys::b64djs($tarif['packs']);
$html->set('pack', $tarif['packs'][$server['pack']]);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->set('time', sys::today($server['time']));
$html->set('date', sys::today($server['date']));
$html->set('btn', $btn);
$html->pack('main');

View file

@ -1,44 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$aSub = array('start', 'pack');
// Если выбран подраздел
if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
if ($go)
$nmch = sys::rep_act('server_settings_go_' . $id, 10);
$dir = $url['subsection'] == 'start' ? 'megp/' : '';
if (in_array($url['subsection'], $aRouteSub['settings']))
include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php');
else
include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php');
} else {
if ($mcache->get('server_settings_' . $id) != '')
$html->arr['main'] = $mcache->get('server_settings_' . $id);
else {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Построение списка доступных сборок
$aPacks = sys::b64djs($tarif['packs']);
$packs = '<option value="' . $server['pack'] . '">' . $aPacks[$server['pack']] . '</option>';
unset($aPacks[$server['pack']]);
foreach ($aPacks as $pack => $desc)
$packs .= '<option value="' . $pack . '">' . $desc . '</option>';
$html->get('settings', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('packs', $packs);
$html->pack('main');
$mcache->set('server_settings_' . $id, $html->arr['main'], false, 20);
}
}

View file

@ -1,41 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `slots`, `slots_start`, `autorestart` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
include(LIB . 'games/games.php');
// Сохранение
if ($go and $url['save']) {
$value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
switch ($url['save']) {
case 'slots':
$slots = $value > $server['slots'] ? $server['slots'] : $value;
$slots = $value < 2 ? 2 : $slots;
if ($slots != $server['slots_start'])
$sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// Генерация списка слот
$slots = '';
for ($slot = 2; $slot <= $server['slots']; $slot += 1)
$slots .= '<option value="' . $slot . '">' . $slot . ' шт.</option>';
// Авторестарт при зависании
$autorestart = $server['autorestart'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
$html->get('start', 'sections/servers/' . $server['game'] . '/settings');
$html->set('id', $id);
$html->set('autorestart', $autorestart);
$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots));
$html->pack('main');

View file

@ -1,11 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `name`, `slots_min`, `slots_max`, `install`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Подразделы
$aSub = array('extend', 'slots');
include(SEC . 'megp/servers/games/tarif.php');

View file

@ -1,51 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$aData = array();
// Если не расчетный период
if (!$cfg['settlement_period']) {
$aData['time'] = isset($_POST['time']) ? sys::int($_POST['time']) : sys::outjs(array('e' => 'Переданы не все данные'), $nmch);
// Проверка периода
if (!in_array($aData['time'], explode(':', $tarif['timext'])))
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
}
$ram = $server['slots_fix'] ? $server['ram'] : $server['ram'] / $server['slots'];
$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : '';
$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false;
$aData['server'] = $id;
$aData['user'] = $server['user'];
$aData['tarif'] = $server['tarif'];
$aData['ram'] = $ram;
$aData['slots'] = $server['slots'];
// Цена за выделенный адрес
$add_sum = tarifs::address_add_sum($aData['address'], $server);
$aPrice = explode(':', $tarif['price']);
// Цена за 30 дней 1 слота
$price = $aPrice[array_search($ram, explode(':', $tarif['ram']))];
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = $server['time'];
// Цена аренды
$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum;
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']);
$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true);
include(SEC . 'servers/games/tarif/extend.php');

View file

@ -1,65 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$plan = isset($url['plan']) ? sys::int($url['plan']) : sys::outjs(array('e' => 'Переданые не все данные'), $nmch);
$aPrice = explode(':', $tarif['price']);
$aRAM = explode(':', $tarif['ram']);
// Проверка плана
if (array_search($plan, $aRAM) === FALSE)
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
$ram = $server['slots_fix'] ? $server['ram'] : $server['ram'] / $server['slots'];
if ($plan == $ram)
sys::outjs(array('e' => 'Смысла в этой операции нет'), $nmch);
if (!tarif::price($tarif['price']))
sys::outjs(array('e' => 'Чтобы изменить тариф, перейдите в настройки запуска'), $nmch);
if ($server['time'] < $start_point + 86400)
$time = $server['time'];
else {
// Цена за 1 день аренды (по новому тарифному плану)
$price = $aPrice[array_search($plan, $aRAM)] / 30 * $server['slots'];
// Цена за 1 день аренды (по старому тарифному плану)
$price_old = $aPrice[array_search($ram, $aRAM)] / 30 * $server['slots'];
// Остаток дней аренды
$days = ($server['time'] - $start_point) / 86400;
$time = date('H:i:s', $server['time']);
$date = date('d.m.Y', round($start_point + $days * $price_old / $price * 86400 - 86400));
$aDate = explode('.', $date);
$aTime = explode(':', $time);
$time = mktime($aTime[0], $aTime[1], $aTime[2], $aDate[1], $aDate[0], $aDate[2]);
}
$plan = $server['slots_fix'] ? $plan : $plan * $server['slots'];
// Выполнение смена тарифного плана
if ($go) {
$sql->query('UPDATE `servers` set `time`="' . $time . '", `ram`="' . $plan . '" WHERE `id`="' . $id . '" LIMIT 1');
if (in_array($server['status'], array('working', 'start', 'restart'))) {
include(LIB . 'games/' . $server['game'] . '/action.php');
action::start($id, 'restart');
}
// Запись логов
$sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_plan') . '", `time`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп информации
sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch);

View file

@ -1,147 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
// Если фикс. значение слот
if ($tarif['slots_min'] == $tarif['slots_max'])
sys::outjs(array('e' => 'На данном тарифе нельзя изменить количество слот.'), $nmch);
$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch);
$aPrice = explode(':', $tarif['price']);
$aRAM = explode(':', $tarif['ram']);
$ram = $server['ram_fix'] ? $server['ram'] : $server['ram'] / $server['slots'];
$overdue = $server['time'] < $start_point;
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
// Цена за 1 день
$price = $aPrice[array_search($ram, $aRAM)] / 30;
// Цена аренды за остаток дней (с текущим кол-вом слот)
$price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots'];
}
$max = $tarif['slots_max'] - $server['slots'];
// Сумма за добавляемые слоты
$sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($ram, $aRAM)] / 30) * $slots, 2);
// Изменение кол-ва слот за счет пересчета дней аренды или закончился срок аренды (иначе аренда дополнительных слот)
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
$ram = $server['ram_fix'] ? $server['ram'] : $server['ram'] / $server['slots'] * $slots;
// Если просрочен
if ($overdue) {
sys::outjs(array('i' => ''));
if ($go) {
$start = $server['slots_start'] > $slots ? ', `slots_start`="' . $slots . '"' : '';
$sql->query('UPDATE `servers` set `slots`="' . $slots . '" ' . $start . ', `ram`=' . $ram . ' WHERE `id`="' . $id . '" LIMIT 1');
// Запись логов
$sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_slots') . '", `time`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// При возможности уменьшить
if ($cfg['change_slots'][$server['game']]['down'] || $overdue) {
// Проверка кол-ва слот
if ($slots < $tarif['slots_min'] || $slots > $tarif['slots_max'])
sys::outjs(array('e' => 'Переданые неверные данные.'), $nmch);
if ($server['slots'] == $slots) {
if ($go)
sys::outjs(array('s' => 'ok'), $nmch);
sys::outjs(array('s' => 'Сервер будет арендован до: ' . date('d.m.Y - H:i', $server['time']) . ' (' . sys::date('min', $server['time']) . ')'), $nmch);
}
} else {
// Установлено макс. значение
if ($server['slots'] == $tarif['slots_max'] and !$overdue)
sys::outjs(array('e' => 'На игровом сервере установлено максимальное значение.'), $nmch);
if ($slots < 1 || $slots > $max)
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
$slots += $server['slots'];
}
$date = date('H.i.s.d.m.Y', round($start_point + $price_old / ($price * $slots) * 86400 - 86400));
$aDate = explode('.', $date);
$time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]);
// При уменьшении кол-ва слот не добавлять дни
if ($slots < $server['slots'] and ($cfg['change_slots'][$server['game']]['days'] and $cfg['change_slots'][$server['game']]['down'] and !$cfg['change_slots'][$server['game']]['add']))
$time = $server['time'];
// Выполнение операции
if ($go) {
$start = $server['slots_start'] > $slots ? ', `slots_start`="' . $slots . '"' : '';
$sql->query('UPDATE `servers` set `time`="' . $time . '", `slots`="' . $slots . '" ' . $start . ', `ram`=' . $ram . ' WHERE `id`="' . $id . '" LIMIT 1');
if (in_array($server['status'], array('working', 'start', 'restart', 'change')) and $slots < $server['slots_start']) {
include(LIB . 'games/' . $server['game'] . '/action.php');
action::start($id, 'restart');
}
// Запись логов
$sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_slots') . '", `time`="' . $start_point . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп информации
sys::outjs(array('s' => 'Сервер будет арендован до: ' . $arenda . ' ' . date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'));
}
if ($slots < 1 || $slots > $max)
sys::outjs(array('e' => 'Переданые неверные данные'), $nmch);
// Выполнение операции
if ($go) {
$slots_new = $server['slots'] + $slots;
// Проверка баланса
if ($user['balance'] < $sum)
sys::outjs(array('e' => 'У вас не хватает ' . (round($sum - $user['balance'], 2)) . ' ' . $cfg['currency']), $nmch);
// Списание средств с баланса пользователя
$sql->query('UPDATE `users` set `balance`="' . ($user['balance'] - $sum) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1');
// Реф. система
games::part($user['id'], $sum);
$start = $server['slots_start'] == $server['slots'] ? ', `slots_start`="' . $slots_new . '"' : '';
$ram = $server['ram_fix'] ? $server['ram'] : $server['ram'] / $server['slots'] * $slots_new;
// Обновление информации
$sql->query('UPDATE `servers` set `slots`="' . $slots_new . '" ' . $start . ', `ram`=' . $ram . ' WHERE `id`="' . $id . '" LIMIT 1');
if (in_array($server['status'], array('working', 'start', 'restart')) and $slots_new != $server['slots_start']) {
include(LIB . 'games/' . $server['game'] . '/action.php');
action::start($id, 'restart');
}
// Запись логов
$sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'buy_slots'),
array('slots' => $slots, 'money' => $sum, 'id' => $id)) . '", `date`="' . $start_point . '", `type`="buy", `money`="' . $sum . '"');
sys::outjs(array('s' => 'ok'), $nmch);
}
// Выхлоп информации
sys::outjs(array('s' => 'Цена за дополнительные слоты: ' . $sum . ' ' . $cfg['currency']));

View file

@ -1,13 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($go)
include(SEC . 'servers/' . $server['game'] . '/console.php');
$sql->query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$html->get('console', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->pack('main');

View file

@ -1,34 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$btn = sys::buttons($id, $server['status'], $server['game']);
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('index', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('unit', $unit['name']);
$html->set('tarif', $tarif['name']);
$tarif['packs'] = sys::b64djs($tarif['packs']);
$html->set('pack', $tarif['packs'][$server['pack']]);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->set('time', sys::today($server['time']));
$html->set('date', sys::today($server['date']));
$html->set('btn', $btn);
$html->pack('main');

View file

@ -1,44 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$aSub = array('start', 'pack');
// Если выбран подраздел
if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
if ($go)
$nmch = sys::rep_act('server_settings_go_' . $id, 10);
$dir = $url['subsection'] == 'start' ? 'megp/' : '';
if (in_array($url['subsection'], $aRouteSub['settings']))
include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php');
else
include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php');
} else {
if ($mcache->get('server_settings_' . $id) != '')
$html->arr['main'] = $mcache->get('server_settings_' . $id);
else {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Построение списка доступных сборок
$aPacks = sys::b64djs($tarif['packs']);
$packs = '<option value="' . $server['pack'] . '">' . $aPacks[$server['pack']] . '</option>';
unset($aPacks[$server['pack']]);
foreach ($aPacks as $pack => $desc)
$packs .= '<option value="' . $pack . '">' . $desc . '</option>';
$html->get('settings', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('packs', $packs);
$html->pack('main');
$mcache->set('server_settings_' . $id, $html->arr['main'], false, 20);
}
}

View file

@ -1,47 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `slots`, `slots_start`, `autorestart` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
include(LIB . 'games/games.php');
// Сохранение
if ($go and $url['save']) {
$value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
switch ($url['save']) {
case 'slots':
$slots = $value > $server['slots'] ? $server['slots'] : $value;
$slots = $value < 2 ? 2 : $slots;
if ($slots != $server['slots_start'])
$sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
case 'autorestart':
if ($value != $server['autorestart'])
$sql->query('UPDATE `servers` set `autorestart`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// Генерация списка слот
$slots = '';
for ($slot = 2; $slot <= $server['slots']; $slot += 1)
$slots .= '<option value="' . $slot . '">' . $slot . ' шт.</option>';
// Авторестарт при зависании
$autorestart = $server['autorestart'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
$html->get('start', 'sections/servers/' . $server['game'] . '/settings');
$html->set('id', $id);
$html->set('autorestart', $autorestart);
$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots));
$html->pack('main');

View file

@ -1,11 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `name`, `slots_min`, `slots_max`, `install`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Подразделы
$aSub = array('extend', 'slots');
include(SEC . 'megp/servers/games/tarif.php');

View file

@ -1,46 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$aData = array();
// Если не расчетный период
if (!$cfg['settlement_period']) {
$aData['time'] = isset($_POST['time']) ? sys::int($_POST['time']) : sys::outjs(array('e' => 'Переданы не все данные'), $nmch);
// Проверка периода
if (!in_array($aData['time'], explode(':', $tarif['timext'])))
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
}
$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : '';
$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false;
$aData['server'] = $id;
$aData['user'] = $server['user'];
$aData['tarif'] = $server['tarif'];
$aData['slots'] = $server['slots'];
// Цена за выделенный адрес
$add_sum = tarifs::address_add_sum($aData['address'], $server);
// Цена за 30 дней 1 слота
$price = $tarif['price'];
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = $server['time'];
// Цена аренды
$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum;
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']);
$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true);
include(SEC . 'servers/games/tarif/extend.php');

View file

@ -1,29 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
// Если фикс. значение слот
if ($tarif['slots_min'] == $tarif['slots_max'])
sys::outjs(array('e' => 'На данном тарифе нельзя изменить количество слот.'), $nmch);
$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch);
$overdue = $server['time'] < $start_point;
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
// Цена за 1 день
$price = $tarif['price'] / 30;
// Цена аренды за остаток дней (с текущим кол-вом слот)
$price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots'];
}
$max = $tarif['slots_max'] - $server['slots'];
// Сумма за добавляемые слоты
$sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2);
include(SEC . 'servers/games/tarif/slots.php');

View file

@ -1,21 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($server['time'] < $start_point)
$html->get('overdue');
else {
$status = array(
'install' => 'установки',
'reinstall' => 'переустановки',
'update' => 'обновления',
'recovery' => 'восстановления',
'blocked' => 'блокировки'
);
$html->get('noaccess');
$html->set('status', $status[$server['status']]);
}
$html->pack('main');

View file

@ -1,93 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$owners = $sql->query('SELECT `server` FROM `owners` WHERE `user`="' . $user['id'] . '" AND `time`>"' . $start_point . '" ORDER BY `id` ASC');
$n = $sql->num($owners);
$aUnits = array();
$aTarifs = array();
// Проверка массивов в кеше
if (is_array($mcache->get('owners_aut_' . $user['id'])) and $mcache->get('owners_nser_' . $user['id']) == $n) {
$aUT = $mcache->get('owners_aut_' . $user['id']);
$aUnits = $aUT[0];
$aTarifs = $aUT[1];
} else {
while ($owner = $sql->get($owners)) {
$server_sql = $sql->query('SELECT `unit`, `tarif` FROM `servers` WHERE `id`="' . $owner['server'] . '"');
while ($server = $sql->get($server_sql)) {
if (!array_key_exists($server['unit'], $aUnits)) {
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$aUnits[$server['unit']] = array(
'name' => $unit['name']
);
}
if (!array_key_exists($server['tarif'], $aTarifs)) {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$aTarifs[$server['tarif']] = array(
'name' => $tarif['name'],
'packs' => sys::b64djs($tarif['packs'])
);
}
}
}
// Запись массивов в кеш
$mcache->set('owners_aut_' . $user['id'], array($aUnits, $aTarifs), false, 60);
// Запись кол-во серверов в кеш
$mcache->set('owners_nser_' . $user['id'], $n, false, 60);
}
$owners = $sql->query('SELECT `id`, `server`, `time` FROM `owners` WHERE `user`="' . $user['id'] . '" ORDER BY `id` ASC');
while ($owner = $sql->get($owners)) {
if ($owner['time'] < $start_point) {
$sql->query('DELETE FROM `owners` WHERE `id`="' . $owner['id'] . '" LIMIT 1');
continue;
}
$sql->query('SELECT '
. '`id`,'
. '`unit`,'
. '`tarif`,'
. '`address`,'
. '`game`,'
. '`slots_start`,'
. '`online`,'
. '`status`,'
. '`name`,'
. '`map`,'
. '`time`,'
. '`overdue`'
. ' FROM `servers` WHERE `id`="' . $owner['server'] . '" LIMIT 1');
while ($server = $sql->get()) {
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('list', 'sections/servers');
$html->set('id', $server['id']);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->pack('list');
$wait_servers .= $server['id'] . ':false,';
$updates_servers .= 'setTimeout(function() {update_info(\'' . $server['id'] . '\', true)}, 5000); setTimeout(function() {update_status(\'' . $server['id'] . '\', true)}, 10000);';
}
}

View file

@ -1,13 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if ($go)
include(SEC . 'servers/' . $server['game'] . '/console.php');
$sql->query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$html->get('console', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->pack('main');

View file

@ -1,34 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1');
$unit = $sql->get();
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
$btn = sys::buttons($id, $server['status'], $server['game']);
$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']);
$html->get('index', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('unit', $unit['name']);
$html->set('tarif', $tarif['name']);
$tarif['packs'] = sys::b64djs($tarif['packs']);
$html->set('pack', $tarif['packs'][$server['pack']]);
$html->set('address', $server['address']);
$html->set('game', $aGname[$server['game']]);
$html->set('slots', $server['slots_start']);
$html->set('online', $server['online']);
$html->set('name', $server['name']);
$html->set('status', sys::status($server['status'], $server['game'], $server['map']));
$html->set('time_end', $time_end);
$html->set('time', sys::today($server['time']));
$html->set('date', sys::today($server['date']));
$html->set('btn', $btn);
$html->pack('main');

View file

@ -1,44 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
$aSub = array('start', 'pack');
// Если выбран подраздел
if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) {
if ($go)
$nmch = sys::rep_act('server_settings_go_' . $id, 10);
$dir = $url['subsection'] == 'start' ? 'megp/' : '';
if (in_array($url['subsection'], $aRouteSub['settings']))
include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php');
else
include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php');
} else {
if ($mcache->get('server_settings_' . $id) != '')
$html->arr['main'] = $mcache->get('server_settings_' . $id);
else {
$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Построение списка доступных сборок
$aPacks = sys::b64djs($tarif['packs']);
$packs = '<option value="' . $server['pack'] . '">' . $aPacks[$server['pack']] . '</option>';
unset($aPacks[$server['pack']]);
foreach ($aPacks as $pack => $desc)
$packs .= '<option value="' . $pack . '">' . $desc . '</option>';
$html->get('settings', 'sections/servers/' . $server['game']);
$html->set('id', $id);
$html->set('packs', $packs);
$html->pack('main');
$mcache->set('server_settings_' . $id, $html->arr['main'], false, 20);
}
}

View file

@ -1,41 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `slots`, `slots_start`, `autorestart` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = array_merge($server, $sql->get());
include(LIB . 'games/games.php');
// Сохранение
if ($go and $url['save']) {
$value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch);
switch ($url['save']) {
case 'slots':
$slots = $value > $server['slots'] ? $server['slots'] : $value;
$slots = $value < 2 ? 2 : $slots;
if ($slots != $server['slots_start'])
$sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1');
sys::outjs(array('s' => 'ok'), $nmch);
}
}
// Генерация списка слот
$slots = '';
for ($slot = 2; $slot <= $server['slots']; $slot += 1)
$slots .= '<option value="' . $slot . '">' . $slot . ' шт.</option>';
// Авторестарт при зависании
$autorestart = $server['autorestart'] ? '<option value="1">Включен</option><option value="0">Выключен</option>' : '<option value="0">Выключен</option><option value="1">Включен</option>';
$html->get('start', 'sections/servers/' . $server['game'] . '/settings');
$html->set('id', $id);
$html->set('autorestart', $autorestart);
$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots));
$html->pack('main');

View file

@ -1,11 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `name`, `slots_min`, `slots_max`, `install`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1');
$tarif = $sql->get();
// Подразделы
$aSub = array('extend', 'slots');
include(SEC . 'megp/servers/games/tarif.php');

View file

@ -1,46 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
$aData = array();
// Если не расчетный период
if (!$cfg['settlement_period']) {
$aData['time'] = isset($_POST['time']) ? sys::int($_POST['time']) : sys::outjs(array('e' => 'Переданы не все данные'), $nmch);
// Проверка периода
if (!in_array($aData['time'], explode(':', $tarif['timext'])))
sys::outjs(array('e' => 'Переданы неверные данные'), $nmch);
}
$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : '';
$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false;
$aData['server'] = $id;
$aData['user'] = $server['user'];
$aData['tarif'] = $server['tarif'];
$aData['slots'] = $server['slots'];
// Цена за выделенный адрес
$add_sum = tarifs::address_add_sum($aData['address'], $server);
// Цена за 30 дней 1 слота
$price = $tarif['price'];
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = $server['time'];
// Цена аренды
$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum;
// Если расчетный период
if ($cfg['settlement_period'])
$aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']);
$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true);
include(SEC . 'servers/games/tarif/extend.php');

View file

@ -1,29 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
if (!isset($nmch))
$nmch = false;
// Если фикс. значение слот
if ($tarif['slots_min'] == $tarif['slots_max'])
sys::outjs(array('e' => 'На данном тарифе нельзя изменить количество слот.'), $nmch);
$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch);
$overdue = $server['time'] < $start_point;
if ($cfg['change_slots'][$server['game']]['days'] || $overdue) {
// Цена за 1 день
$price = $tarif['price'] / 30;
// Цена аренды за остаток дней (с текущим кол-вом слот)
$price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots'];
}
$max = $tarif['slots_max'] - $server['slots'];
// Сумма за добавляемые слоты
$sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2);
include(SEC . 'servers/games/tarif/slots.php');

View file

@ -1,26 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `game` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = $sql->get();
include(LIB . 'games/' . $server['game'] . '/scan.php');
// Запрошена информация (статус, онлайн, название)
if (isset($url['mon']))
sys::outjs(scan::mon($id));
// Запрошена информация (статус, онлайн, название, игроки)
if (isset($url['fmon']))
sys::outjs(scan::mon($id, true));
// Запрошена информация (cpu, ram, hdd)
if (isset($url['resources']))
sys::outjs(scan::resources($id));
// Запрошена информация (работает, меняется карта, переустанавливается)
if (isset($url['status']))
sys::outjs(scan::status($id));
exit;

View file

@ -1,10 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `unit`, `address`, `game`, `status`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use`, `time` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = $sql->get();
sys::nav($server, $id, 'settings');
include(sys::route($server, 'settings', $go));

View file

@ -1,16 +0,0 @@
<?php
if (!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404'));
$sql->query('SELECT `uid`, `unit`, `user`, `tarif`, `address`, `port`, `game`, `status`, `slots`, `slots_start`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use`, `time`, `test`, `fps`, `tickrate`, `ram`, `ram_fix` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1');
$server = $sql->get();
sys::nav($server, $id, 'tarif');
if ($server['status'] == 'blocked') {
if ($go)
sys::out('Раздел недоступен');
include(SEC . 'megp/servers/noaccess.php');
} else
include(SEC . 'megp/servers/' . $server['game'] . '/tarif.php');

View file

@ -50,7 +50,7 @@ if ($go) {
$user = $sql->get();
$link = $device == '!mobile' ? 'user/section/recovery/confirm/' : 'recovery/confirm/';
$link = 'user/section/recovery/confirm/';
// Проверка подачи запроса на восстановление
$sql->query('SELECT `id`, `key` FROM `recovery` WHERE `user`="' . $user['id'] . '" LIMIT 1');

View file

@ -1,142 +0,0 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<title>EGP Mobile</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0 minimal-ui"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="icon" type="image/png" href="[img]splash/android-chrome-192x192.png" sizes="192x192">
<link rel="apple-touch-icon" sizes="196x196" href="[img]splash/apple-touch-icon-196x196.png">
<link rel="apple-touch-icon" sizes="180x180" href="[img]splash/apple-touch-icon-180x180.png">
<link rel="apple-touch-icon" sizes="152x152" href="[img]splash/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="144x144" href="[img]splash/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="120x120" href="[img]splash/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="114x114" href="[img]splash/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="76x76" href="[img]splash/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="72x72" href="[img]splash/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="60x60" href="[img]splash/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="57x57" href="[img]splash/apple-touch-icon-57x57.png">
<link rel="icon" type="image/png" href="[img]splash/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="[img]splash/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="[img]splash/favicon-16x16.png" sizes="16x16">
<link rel="shortcut icon" href="[img]splash/favicon.ico" type="image/x-icon"/>
<link href="[css]style.css" rel="stylesheet" type="text/css"/>
<link href="[css]framework.css" rel="stylesheet" type="text/css"/>
<link href="[css]font-awesome.css" rel="stylesheet" type="text/css"/>
<link href="[css]animate.css" rel="stylesheet" type="text/css"/>
<link type="text/css" href="[css]bootbox.css" rel="stylesheet" media="screen"/>
<script type="text/javascript" src="[js]jquery.js"></script>
<script type="text/javascript" src="[js]jqueryui.js"></script>
<script type="text/javascript" src="[js]framework-plugins.js"></script>
<script type="text/javascript" src="[js]custom.js"></script>
<script type="text/javascript" src="[js]form.js"></script>
<script type="text/javascript" src="[js]bootstrap.js"></script>
<script type="text/javascript" src="[js]bootbox.js"></script>
<script type="text/javascript">
var hnt = false;
var title = document.title;
var home = '[home]';
</script>
<script type="text/javascript" src="[js]functions.js"></script>
</head>
<body class="dual-sidebar">
<div id="preloader">
<div id="status">
<div class="preloader-logo"></div>
<h3 class="center-text">Загрузка</h3>
<p class="center-text smaller-text">Пожалуйста подождите.</p>
</div>
</div>
<div id="header" class="header">
<div class="header-elements">
<a href="[home]" class="header-logo"></a>
<a href="#" class="header-icon-1 open-right-sidebar"><i class="fa fa-envelope-o"></i></a>
<a href="#" class="header-icon-2 open-left-sidebar"><i class="fa fa-navicon"></i></a>
[server_menu]
</div>
</div>
<div class="all-elements">
<div class="snap-drawers">
<!-- Правый блок -->
<div class="snap-drawer snap-drawer-left">
<div class="sidebar-header-left">
<a class="sidebar-logo" href="[home]"></a>
<a class="close-sidebar" href="#"><i class="fa fa-times"></i></a>
</div>
<p class="sidebar-divider">Навигация</p>
<div class="sidebar-menu">
<a class="menu-item menu-item-active" href="[home]">
<i class="fa fa-home"></i>
<em>Главная страница</em>
<i class="fa fa-circle"></i>
</a>
<a class="menu-item" href="[home]servers">
<i class="fa fa-server"></i>
<em>Список серверов</em>
<i class="fa fa-circle"></i>
</a>
<a class="menu-item" href="[home]news">
<i class="fa-regular fa-newspaper"></i>
<em>Новости хостинга</em>
<i class="fa fa-circle"></i>
</a>
</div>
<p class="sidebar-footer">Мобильная версия EGPv3</p>
</div>
<!-- Левый блок -->
<div class="snap-drawer snap-drawer-right">
<div class="sidebar-header-right">
<a class="sidebar-logo" href="[home]"></a>
<a class="close-sidebar" href="#"><i class="fa fa-times"></i></a>
</div>
<p class="sidebar-divider">Техническая поддержка</p>
<div class="sidebar-menu">
<a class="menu-item" href="[home]help/section/create">
<i class="fa fa-pencil-square"></i>
<em>Задать вопрос</em>
</a>
<a class="menu-item" href="[home]help/section/open">
<i class="fa fa-envelope-open"></i>
<em>Открытые вопросы</em>
</a>
<a class="menu-item" href="[home]help/section/close">
<i class="fa fa-envelope"></i>
<em>Закрытые вопросы</em>
</a>
</div>
<p class="sidebar-footer">Мобильная версия EGPv3</p>
</div>
<div id="content" class="snap-content">
<div class="content">
<div class="header-clear-large"></div>
[main]
<div class="footer">
<p class="center-text">Copyright 2017. Все права защищены.</p>
</div>
</div>
</div>
</div>
<a href="index.html#" class="back-to-top-badge"><i class="fa fa-caret-up"></i>Back to top</a>
</div>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -1,122 +0,0 @@
.fade {
opacity: 0;
-webkit-transition: opacity .15s linear;
-moz-transition: opacity .15s linear;
-o-transition: opacity .15s linear;
transition: opacity .15s linear
}
.fade.in {
opacity: 1
}
.modal-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1040;
background-color: #000
}
.modal-backdrop.fade {
opacity: 0
}
.modal-backdrop, .modal-backdrop.fade.in {
opacity: 0.5;
filter: alpha(opacity=50);
background-color: #90D3F4;
}
.modal {
position: fixed;
top: 40%;
left: 45%;
z-index: 1050;
width: 98%;
background-color: #fff;
border: 1px solid #EEE;
outline: 0;
-webkit-background-clip: padding-box;
-moz-background-clip: padding-box;
background-clip: padding-box
}
.modal.fade {
top: -25%;
-webkit-transition: opacity .3s linear, top .3s ease-out;
-moz-transition: opacity .3s linear, top .3s ease-out;
-o-transition: opacity .3s linear, top .3s ease-out;
transition: opacity .3s linear, top .3s ease-out
}
.modal.fade.in {
top: 35%;
left: 1%;
}
.modal-header {
padding: 9px 15px;
border-bottom: 1px solid #eee
}
.modal-header .close {
margin-top: 2px
}
.modal-header h3 {
margin: 0;
line-height: 30px
}
.modal-body {
position: relative;
max-height: 400px;
padding: 15px;
overflow-y: auto
}
.modal-form {
margin-bottom: 0
}
.modal-footer {
padding: 14px 15px 15px;
margin-bottom: 0;
text-align: right;
background-color: #f5f5f5;
border-top: 1px solid #ddd;
-webkit-border-radius: 0 0 6px 6px;
-moz-border-radius: 0 0 6px 6px;
border-radius: 0 0 6px 6px;
*zoom: 1;
-webkit-box-shadow: inset 0 1px 0 #fff;
-moz-box-shadow: inset 0 1px 0 #fff;
box-shadow: inset 0 1px 0 #fff
}
.modal-footer:before, .modal-footer:after {
display: table;
line-height: 0;
content: ""
}
.modal-footer:after {
clear: both
}
.modal-footer .btn + .btn {
margin-bottom: 0;
margin-left: 5px
}
.modal-footer .btn-group .btn + .btn {
margin-left: -1px
}
.modal-footer .btn-block + .btn-block {
margin-left: 0
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 451 KiB

Some files were not shown because too many files have changed in this diff Show more