2023-03-04 23:45:46 +00:00
|
|
|
|
<?php
|
2023-03-05 13:59:34 +00:00
|
|
|
|
if(!DEFINED('EGP'))
|
|
|
|
|
exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
class server_delete extends cron
|
|
|
|
|
{
|
|
|
|
|
function __construct()
|
|
|
|
|
{
|
|
|
|
|
global $cfg, $sql, $argv;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$sql->query('SELECT `id`, `uid`, `user`, `unit`, `tarif`, `game`, `slots`, `address`, `ddos` FROM `servers` WHERE `id`="'.$argv[3].'" AND `user`="-1" LIMIT 1');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
if(!$sql->num())
|
|
|
|
|
return NULL;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$server = $sql->get();
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
if(!$server['uid'])
|
|
|
|
|
return NULL;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$sql->query('SELECT `install` FROM `tarifs` WHERE `id`="'.$server['tarif'].'" LIMIT 1');
|
|
|
|
|
$tarif = $sql->get();
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$sql->query('SELECT `address`, `passwd`, `sql_login`, `sql_passwd`, `sql_port`, `sql_ftp` FROM `units` WHERE `id`="'.$server['unit'].'" LIMIT 1');
|
|
|
|
|
$unit = $sql->get();
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
include(LIB.'ssh.php');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Проверка ssh соединения с локацией
|
|
|
|
|
if(!$ssh->auth($unit['passwd'], $unit['address']))
|
|
|
|
|
return NULL;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Убить процессы
|
|
|
|
|
$ssh->set('kill -9 `ps aux | grep s_'.$server['uid'].' | grep -v grep | awk '."'{print $2}'".' | xargs;'
|
|
|
|
|
.'lsof -i@:'.$server['address'].' | awk '."'{print $2}'".' | xargs`; sudo -u server'.$server['uid'].' screen -wipe');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Директория игрового сервера
|
|
|
|
|
$install = $tarif['install'].$server['uid'];
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$copys = 'screen -dmS r_copy_'.$server['uid'].' sh -c "';
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$scopy = $sql->query('SELECT `id`, `name` FROM `copy` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
while($copy = $sql->get($scopy))
|
|
|
|
|
{
|
|
|
|
|
$copys .= 'rm /copy/'.$copy['name'].'.tar;';
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$sql->query('DELETE FROM `copy` WHERE `id`="'.$copy['id'].'" LIMIT 1');
|
|
|
|
|
}
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$copys .= '";';
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$ssh->set($copys // Удаление резервных копий
|
|
|
|
|
.'screen -dmS r_'.$server['uid'].' sh -c "rm -r '.$install.';' // Удаление директории сервера
|
|
|
|
|
.'userdel server'.$server['uid'].'"'); // Удаление пользователя сервера c локации
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Удаление ftp доступа
|
|
|
|
|
$qSql = 'DELETE FROM users WHERE username=\''.$server['uid'].'\';'
|
2023-03-04 23:45:46 +00:00
|
|
|
|
.'DELETE FROM quotalimits WHERE name=\''.$server['uid'].'\';'
|
|
|
|
|
.'DELETE FROM quotatallies WHERE name=\''.$server['uid'].'\'';
|
|
|
|
|
|
|
|
|
|
$ssh->set('screen -dmS ftp'.$server['uid'].' mysql -P '.$unit['sql_port'].' -u'.$unit['sql_login'].' -p'.$unit['sql_passwd'].' --database '.$unit['sql_ftp'].' -e "'.$qSql.'"');
|
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
include(LIB.'games/games.php');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Очистка правил FireWall
|
|
|
|
|
games::iptables($server['id'], 'remove', NULL, NULL, NULL, false, $ssh);
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Очистка правил FireWall GEO
|
|
|
|
|
if($server['ddos'])
|
|
|
|
|
{
|
|
|
|
|
$geo = $cfg['iptables'].'_geo';
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$country = $server['ddos'] == 2 ? 'AM,BY,UA,RU,KZ' : 'UA,RU';
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$ssh->set('iptables -D INPUT -p udp -d '.$ip.' --dport '.$port.' -m geoip ! --source-country '.$country.' -j DROP;'
|
|
|
|
|
.'sed "`nl '.$geo.' | grep \"#'.$id.'\" | awk \'{print $1","$1+1}\'`d" '.$geo.' > '.$geo.'_temp; cat '.$geo.'_temp > '.$geo.'; rm '.$geo.'_temp;');
|
|
|
|
|
}
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Удаление заданий из crontab
|
|
|
|
|
$sql->query('SELECT `address`, `passwd` FROM `panel` LIMIT 1');
|
|
|
|
|
$panel = $sql->get();
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
if(!$ssh->auth($panel['passwd'], $panel['address']))
|
|
|
|
|
return NULL;
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$crons = $sql->query('SELECT `id`, `cron` FROM `crontab` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
while($cron = $sql->get($crons))
|
|
|
|
|
{
|
|
|
|
|
$ssh->set('echo "" >> /etc/crontab && cat /etc/crontab');
|
|
|
|
|
$crontab = str_replace($cron['cron'], '', $ssh->get());
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Временный файл
|
|
|
|
|
$temp = sys::temp($crontab);
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$ssh->setfile($temp, '/etc/crontab', 0644);
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$ssh->set("sed -i '/^$/d' /etc/crontab");
|
|
|
|
|
$ssh->set('crontab -u root /etc/crontab');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
unlink($temp);
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$sql->query('DELETE FROM `crontab` WHERE `id`="'.$cron['id'].'" LIMIT 1');
|
|
|
|
|
}
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Обновление данных выделенного адреса
|
|
|
|
|
$sql->query('SELECT `id`, `aid` FROM `address_buy` WHERE `server`="'.$server['id'].'" LIMIT 1');
|
|
|
|
|
if($sql->num())
|
|
|
|
|
{
|
|
|
|
|
$add = $sql->get();
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$sql->query('UPDATE `address` set `buy`="0" WHERE `id`="'.$add['aid'].'" LIMIT 1');
|
|
|
|
|
$sql->query('DELETE FROM `address_buy` WHERE `id`="'.$add['id'].'" LIMIT 1');
|
|
|
|
|
}
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
include(DATA.'web.php');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$sql->query('SELECT `id` FROM `servers` WHERE `id`!="'.$server['id'].'" AND `user`="'.$server['user'].'" AND `unit`="'.$server['unit'].'" LIMIT 1');
|
|
|
|
|
if($sql->num())
|
|
|
|
|
{
|
|
|
|
|
$server_sec = $sql->get();
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Подготовка к удалению доп. услуги или обновление данных
|
|
|
|
|
$webs = $sql->query('SELECT `id`, `type` FROM `web` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
while($web = $sql->get($webs))
|
|
|
|
|
{
|
|
|
|
|
if($aWebInstall[$server['game']][$web['type']] == ('unit' || 'user'))
|
|
|
|
|
$sql->query('UPDATE `web` set `server`="'.$server_sec['id'].'" WHERE `id`="'.$web['id'].'" LIMIT 1');
|
|
|
|
|
else
|
|
|
|
|
$sql->query('UPDATE `web` set `user`="0" WHERE `id`="'.$web['id'].'" LIMIT 1');
|
|
|
|
|
}
|
|
|
|
|
}else
|
|
|
|
|
$sql->query('UPDATE `web` set `user`="0" WHERE `server`="'.$server['id'].'"');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
// Удаление различной информации игрового сервера
|
|
|
|
|
$sql->query('DELETE FROM `admins_'.$server['game'].'` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
$sql->query('DELETE FROM `plugins_install` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
$sql->query('DELETE FROM `owners` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
$sql->query('DELETE FROM `graph` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
$sql->query('DELETE FROM `graph_day` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
$sql->query('DELETE FROM `graph_hour` WHERE `server`="'.$server['id'].'"');
|
|
|
|
|
$sql->query('DELETE FROM `servers` WHERE `id`="'.$server['id'].'" LIMIT 1');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
$sql->query('INSERT INTO `logs_sys` set `user`="0", `server`="'.$argv[3].'", `text`="Удаление игрового сервера #'.$argv[3].' ('.$server['game'].') unit: #'.$server['unit'].', tarif: #'.$server['tarif'].', slots: #'.$server['slots'].'", `time`="'.$start_point.'"');
|
2023-03-04 23:45:46 +00:00
|
|
|
|
|
2023-03-05 13:59:34 +00:00
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-03-04 23:45:46 +00:00
|
|
|
|
?>
|