EngineGP/system/library/cron/control_scan_servers_admins.php

68 lines
1.9 KiB
PHP
Raw Normal View History

2023-03-04 23:45:46 +00:00
<?php
2023-11-11 20:56:12 +00:00
if(!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
class control_scan_servers_admins extends cron
{
function __construct()
{
global $sql, $argv, $start_point;
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$servers = $argv;
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
unset($servers[0], $servers[1], $servers[2]);
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$game = $servers[3];
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
if(!array_key_exists($game, cron::$admins_file))
return NULL;
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$sql->query('SELECT `address` FROM `control` WHERE `id`="'.$servers[4].'" LIMIT 1');
if(!$sql->num())
return NULL;
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$unit = $sql->get();
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
unset($servers[3], $servers[4]);
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$sql->query('SELECT `unit` FROM `control_servers` WHERE `id`="'.$servers[5].'" LIMIT 1');
$server = $sql->get();
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$sql->query('SELECT `address`, `passwd` FROM `control` WHERE `id`="'.$server['unit'].'" LIMIT 1');
$unit = $sql->get();
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
include(LIB.'ssh.php');
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
// Проверка ssh соедниения пу с локацией
if(!$ssh->auth($unit['passwd'], $unit['address']))
return NULL;
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
foreach($servers as $id)
{
$sql->query('SELECT `uid` FROM `control_servers` WHERE `id`="'.$id.'" LIMIT 1');
$server = $sql->get();
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$admins = $sql->query('SELECT `id`, `text` FROM `control_admins_'.$game.'` WHERE `server`="'.$id.'" AND `active`="1" AND `time`<"'.$start_point.'"');
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
if(!$sql->num($admins))
continue;
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$cmd = 'cd /servers/'.$server['uid'].';';
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
while($admin = $sql->get($admins))
{
$cmd .= 'sed -i -e \'s/'.escapeshellcmd(htmlspecialchars_decode($admin['text'])).'//g\' '.cron::$admins_file[$game].';';
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$sql->query('UPDATE `admins_'.$game.'` set `active`="0" WHERE `id`="'.$admin['id'].'" LIMIT 1');
}
2023-03-04 23:45:46 +00:00
2023-11-11 20:56:12 +00:00
$cmd .= 'sed -i '."'/./!d'".' '.cron::$admins_file[$game].'; echo -e "\n" >> '.cron::$admins_file[$game].';';
$cmd .= 'chown server'.$server['uid'].':1000 '.cron::$admins_file[$game];
2023-05-05 01:17:19 +00:00
2023-11-11 20:56:12 +00:00
$ssh->set($cmd);
}
2023-05-05 01:17:19 +00:00
2023-11-11 20:56:12 +00:00
return NULL;
}
}
2023-03-04 23:45:46 +00:00
?>