server_action.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. if(!DEFINED('EGP'))
  3. exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
  4. class server_action extends cron
  5. {
  6. function __construct()
  7. {
  8. global $argv, $mcache;
  9. $nmch = 'cron_server_action_'.$argv[5];
  10. if($mcache->get($nmch))
  11. return NULL;
  12. $mcache->set($nmch, true, false, 10);
  13. if($argv[3] == 'console')
  14. {
  15. global $sql;
  16. $sql->query('SELECT `uid`, `unit` FROM `servers` WHERE `id`="'.$argv[5].'" LIMIT 1');
  17. $server = $sql->get();
  18. include(LIB.'ssh.php');
  19. $sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="'.$server['unit'].'" LIMIT 1');
  20. $unit = $sql->get();
  21. // Проверка ssh соедниения пу с локацией
  22. if(!$ssh->auth($unit['passwd'], $unit['address']))
  23. return NULL;
  24. $sql->query('SELECT `commands` FROM `crontab` WHERE `id`="'.$argv[6].'" LIMIT 1');
  25. $cron = $sql->get();
  26. $aCmd = explode("\n", base64_decode($cron['commands']));
  27. foreach($aCmd as $cmd)
  28. $ssh->set('sudo -u server'.$server['uid'].' screen -p 0 -S s_'.$server['uid'].' -X eval \'stuff "'.sys::cmd($cmd).'"\015\'; sudo -u server'.$server['uid'].' screen -p 0 -S s_'.$server['uid'].' -X eval \'stuff \015\'');
  29. return NULL;
  30. }
  31. include(LIB.'games/'.$argv[4].'/action.php');
  32. if($argv[3] == 'restart')
  33. action::start($argv[5], 'restart');
  34. else
  35. action::$argv[3]($argv[5]);
  36. return NULL;
  37. }
  38. }
  39. ?>