console.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. if(!DEFINED('EGP'))
  3. exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
  4. $sql->query('SELECT `uid`, `time_start` FROM `control_servers` WHERE `id`="'.$sid.'" LIMIT 1');
  5. $server = array_merge($server, $sql->get());
  6. if($go)
  7. {
  8. $sql->query('SELECT `address`, `passwd` FROM `control` WHERE `id`="'.$id.'" LIMIT 1');
  9. $unit = $sql->get();
  10. include(LIB.'ssh.php');
  11. $command = isset($_POST['command']) ? sys::cmd($_POST['command']) : '';
  12. if($server['status'] == 'off')
  13. {
  14. if($command)
  15. sys::outjs(array('e' => sys::text('servers', 'off')));
  16. sys::out(sys::text('servers', 'off'));
  17. }
  18. if(!$ssh->auth($unit['passwd'], $unit['address']))
  19. {
  20. if($command)
  21. sys::outjs(array('e' => sys::text('error', 'ssh')));
  22. sys::out(sys::text('error', 'ssh'));
  23. }
  24. $dir = '/servers/'.$server['uid'].'/csgo/';
  25. $filecmd = $dir.'console.log';
  26. if($command)
  27. {
  28. if(strtolower($command) == 'clear')
  29. $ssh->set('sudo -u server'.$server['uid'].' sh -c "echo \"Очистка консоли\n\" > '.$filecmd.'"');
  30. else
  31. $ssh->set('sudo -u server'.$server['uid'].' screen -p 0 -S s_'.$server['uid'].' -X eval \'stuff "'.$command.'"\015\';'
  32. .'sudo -u server'.$server['uid'].' screen -p 0 -S s_'.$server['uid'].' -X eval \'stuff \015\'');
  33. sys::outjs(array('s' => 'ok'));
  34. }
  35. $filecmd_copy = $dir.'oldstart/'.date('d.m.Y_H:i:s', $server['time_start']).'.log';
  36. $weight = sys::int($ssh->get('du --block-size=1 '.$filecmd.' | awk \'{print $1}\''));
  37. if($weight > 524288)
  38. $ssh->set('sudo -u server'.$server['uid'].' sh -c "mkdir -p '.$dir.'oldstart; cat '.$filecmd.' >> '.$filecmd_copy.'; echo \"Выполнена очистка консоли, слишком большой объем данных\n\" > '.$filecmd.'"');
  39. sys::out(htmlspecialchars($ssh->get('cat '.$filecmd), NULL, ''));
  40. }
  41. $html->nav('Список подключенных серверов', $cfg['http'].'control');
  42. $html->nav('Список игровых серверов #'.$id, $cfg['http'].'control/id/'.$id);
  43. $html->nav($server['address'], $cfg['http'].'control/id/'.$id.'/server/'.$sid);
  44. $html->nav('Консоль');
  45. $html->get('console', 'sections/control/servers/'.$server['game']);
  46. $html->set('id', $id);
  47. $html->set('server', $sid);
  48. $html->pack('main');
  49. ?>