EngineGP/system/library/cron/privileges.php
2023-11-11 23:56:12 +03:00

99 lines
2.7 KiB
PHP

<?php
if(!DEFINED('EGP'))
exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
class privileges extends cron
{
function __construct()
{
global $sql, $argv, $start_point;
$servers = $argv;
unset($servers[0], $servers[1], $servers[2]);
$game = $servers[3];
if(!array_key_exists($game, cron::$admins_file))
return NULL;
$sql->query('SELECT `address` FROM `units` WHERE `id`="'.$servers[4].'" LIMIT 1');
if(!$sql->num())
return 'Îøèáêà: UNIT#'.$servers[4].' íå íàéäåí.';
$unit = $sql->get();
unset($servers[3], $servers[4]);
foreach($servers as $i => $id)
{
$sql->query('SELECT `id` FROM `privileges_buy` WHERE `server`="'.$id.'" AND `status`="1" LIMIT 1');
if(!$sql->num())
unset($servers[$i]);
}
if(!count($servers))
return NULL;
$sql->query('SELECT `unit` FROM `servers` WHERE `id`="'.end($servers).'" LIMIT 1');
$server = $sql->get();
$sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="'.$server['unit'].'" LIMIT 1');
$unit = $sql->get();
include(LIB.'ssh.php');
// Ïðîâåðêà ssh ñîåäíèåíèÿ ïó ñ ëîêàöèåé
if(!$ssh->auth($unit['passwd'], $unit['address']))
return 'Îøèáêà: UNIT#'.$server['unit'].' íå óäàëîñü ñîçäàòü ñâÿçü.';
$time = $start_point-172800;
foreach($servers as $id)
{
$sql->query('DELETE FROM `privileges_buy` WHERE `date`<"'.$time.'" AND status`="0" LIMIT 5');
$aMail = array();
$sql->query('SELECT `uid`, `tarif` FROM `servers` WHERE `id`="'.$id.'" LIMIT 1');
$server = $sql->get();
$sql->query('SELECT `install` FROM `tarifs` WHERE `id`="'.$server['tarif'].'" LIMIT 1');
$tarif = $sql->get();
$file = $tarif['install'].$server['uid'].'/'.cron::$admins_file[$game];
$text = $ssh->get('cat '.$file);
$privileges = $sql->query('SELECT `id`, `text`, `sql`, `mail` FROM `privileges_buy` WHERE `server`="'.$id.'" AND `status`="1" LIMIT 3');
while($privilege = $sql->get($privileges))
{
$text .= base64_decode($privilege['text']).PHP_EOL;
$sql->query(base64_decode($privilege['sql']));
$sql->query('DELETE FROM `privileges_buy` WHERE `id`="'.$privilege['id'].'" LIMIT 1');
$aMail[] = $privilege['mail'];
}
$temp = sys::temp($text);
$ssh->setfile($temp, $file, 0644);
unlink($temp);
$cmd = $game == 'cs' ? 'amx_reloadadmins' : 'sm_reloadadmins';
$ssh->set('chown server'.$server['uid'].':servers '.$file);
$ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"".$cmd."\"\015'");
foreach($aMail as $mail)
sys::mail('Ïîêóïêà ïðèâèëåãèè', sys::text('mail', 'success_privilege'), $mail);
echo 'server#'.$id.' ('.$game.') -> add privileges '.PHP_EOL;
}
return NULL;
}
}
?>