console.php 2.4 KB

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