scan_servers_admins.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. if(!DEFINED('EGP'))
  3. exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
  4. class scan_servers_admins extends cron
  5. {
  6. function __construct()
  7. {
  8. global $sql, $argv, $start_point;
  9. $servers = $argv;
  10. unset($servers[0], $servers[1], $servers[2]);
  11. $game = $servers[3];
  12. if(!array_key_exists($game, cron::$admins_file))
  13. return NULL;
  14. $sql->query('SELECT `address` FROM `units` WHERE `id`="'.$servers[4].'" LIMIT 1');
  15. if(!$sql->num())
  16. return NULL;
  17. $unit = $sql->get();
  18. unset($servers[3], $servers[4]);
  19. $sql->query('SELECT `unit` FROM `servers` WHERE `id`="'.$servers[5].'" LIMIT 1');
  20. $server = $sql->get();
  21. $sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="'.$server['unit'].'" LIMIT 1');
  22. $unit = $sql->get();
  23. include(LIB.'ssh.php');
  24. // Проверка ssh соедниения пу с локацией
  25. if(!$ssh->auth($unit['passwd'], $unit['address']))
  26. return NULL;
  27. foreach($servers as $id)
  28. {
  29. $sql->query('SELECT `uid`, `tarif` FROM `servers` WHERE `id`="'.$id.'" LIMIT 1');
  30. $server = $sql->get();
  31. $sql->query('SELECT `install` FROM `tarifs` WHERE `id`="'.$server['tarif'].'" LIMIT 1');
  32. $tarif = $sql->get();
  33. $admins = $sql->query('SELECT `id`, `text` FROM `admins_'.$game.'` WHERE `server`="'.$id.'" AND `active`="1" AND `time`<"'.$start_point.'"');
  34. if(!$sql->num($admins))
  35. continue;
  36. $cmd = 'cd '.$tarif['install'].$server['uid'].';';
  37. while($admin = $sql->get($admins))
  38. {
  39. $cmd .= 'sed -i -e \'s/'.escapeshellcmd(htmlspecialchars_decode($admin['text'])).'//g\' '.cron::$admins_file[$game].';';
  40. $sql->query('UPDATE `admins_'.$game.'` set `active`="0" WHERE `id`="'.$admin['id'].'" LIMIT 1');
  41. }
  42. $cmd .= 'sed -i '."'/./!d'".' '.cron::$admins_file[$game].'; echo -e "\n" >> '.cron::$admins_file[$game].';';
  43. $cmd .= 'chown server'.$server['uid'].':1000 '.cron::$admins_file[$game];
  44. $ssh->set($cmd);
  45. }
  46. return NULL;
  47. }
  48. }
  49. ?>