admins.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. if(!DEFINED('EGP'))
  3. exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
  4. $html->nav('Управление администраторами');
  5. if($go)
  6. {
  7. $sql->query('SELECT `address`, `passwd` FROM `control` WHERE `id`="'.$id.'" LIMIT 1');
  8. $unit = $sql->get();
  9. include(LIB.'ssh.php');
  10. if(!$ssh->auth($unit['passwd'], $unit['address']))
  11. sys::outjs(array('e' => sys::text('error', 'ssh')), $nmch);
  12. $aData = array();
  13. $aData['active'] = isset($_POST['active']) ? $_POST['active'] : '';
  14. $aData['value'] = isset($_POST['value']) ? $_POST['value'] : '';
  15. $aData['passwd'] = isset($_POST['passwd']) ? $_POST['passwd'] : '';
  16. $aData['flags'] = isset($_POST['flags']) ? $_POST['flags'] : '';
  17. $aData['type'] = isset($_POST['type']) ? $_POST['type'] : '';
  18. $aData['time'] = isset($_POST['time']) ? $_POST['time'] : '';
  19. $aData['info'] = isset($_POST['info']) ? $_POST['info'] : '';
  20. // Удаление текущих записей
  21. $sql->query('DELETE FROM `control_admins_'.$server['game'].'` WHERE `server`="'.$sid.'"');
  22. $usini = '';
  23. foreach($aData['value'] as $index => $val)
  24. {
  25. if($val != '')
  26. {
  27. $type = isset($aData['type'][$index]) ? $aData['type'][$index] : 'a';
  28. if(!in_array($type, array('c', 'ce', 'de', 'a')))
  29. $type = 'a';
  30. $aDate = isset($aData['time'][$index]) ? explode('.', $aData['time'][$index]) : explode('.', date('d.m.Y', $start_point));
  31. if(!isset($aDate[1], $aDate[0], $aDate[2]) || !checkdate($aDate[1], $aDate[0], $aDate[2]))
  32. $aDate = explode('.', date('d.m.Y', $start_point));
  33. $time = mktime(0, 0, 0, $aDate[1], $aDate[0], $aDate[2]);
  34. $aData['active'][$index] = isset($aData['active'][$index]) ? 1 : 0;
  35. $aData['passwd'][$index] = isset($aData['passwd'][$index]) ? $aData['passwd'][$index] : '';
  36. $aData['flags'][$index] = isset($aData['flags'][$index]) ? $aData['flags'][$index] : '';
  37. $aData['info'][$index] = isset($aData['info'][$index]) ? $aData['info'][$index] : '';
  38. $text = '"'.$val.'" "'.$aData['passwd'][$index].'" "'.$aData['flags'][$index].'" "'.$type.'"';
  39. $sql->query('INSERT INTO `control_admins_'.$server['game'].'` set'
  40. .'`server`="'.$sid.'",'
  41. .'`value`="'.htmlspecialchars($val).'",'
  42. .'`active`="'.$aData['active'][$index].'",'
  43. .'`passwd`="'.htmlspecialchars($aData['passwd'][$index]).'",'
  44. .'`flags`="'.htmlspecialchars($aData['flags'][$index]).'",'
  45. .'`type`="'.$type.'",'
  46. .'`time`="'.$time.'",'
  47. .'`text`="'.htmlspecialchars($text).'",'
  48. .'`info`="'.htmlspecialchars($aData['info'][$index]).'"');
  49. if($aData['active'][$index])
  50. $usini .= $text.PHP_EOL;
  51. }
  52. }
  53. $temp = sys::temp($usini);
  54. $ssh->setfile($temp, '/servers/'.$server['uid'].'/cstrike/addons/amxmodx/configs/users.ini', 0644);
  55. unlink($temp);
  56. $ssh->set('chown server'.$server['uid'].':servers /servers/'.$server['uid'].'/cstrike/addons/amxmodx/configs/users.ini');
  57. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"amx_reloadadmins\"\015'");
  58. sys::outjs(array('s' => 'ok'), $nmch);
  59. }
  60. // Построение списка добавленных админов
  61. $sql->query('SELECT `id`, `value`, `active`, `passwd`, `flags`, `type`, `time`, `info` FROM `control_admins_'.$server['game'].'` WHERE `server`="'.$sid.'" ORDER BY `id` ASC');
  62. while($admin = $sql->get())
  63. {
  64. switch($admin['type'])
  65. {
  66. case 'c':
  67. $type = '<option value="c">SteamID/Пароль</option><option value="a">Ник/Пароль</option><option value="ce">SteamID</option><option value="de">IP Адрес</option>';
  68. break;
  69. case 'ce':
  70. $type = '<option value="ce">SteamID</option><option value="a">Ник/Пароль</option><option value="c">SteamID/Пароль</option><option value="de">IP Адрес</option>';
  71. break;
  72. case 'de':
  73. $type = '<option value="de">IP Адрес</option><option value="a">Ник/Пароль</option><option value="c">SteamID/Пароль</option><option value="ce">SteamID</option>';
  74. break;
  75. default:
  76. $type = '<option value="a">Ник/Пароль</option><option value="c">SteamID/Пароль</option><option value="ce">SteamID</option><option value="de">IP Адрес</option>';
  77. }
  78. $html->get('list', 'sections/control/servers/'.$server['game'].'/settings/admins');
  79. if($admin['active'])
  80. $html->unit('active', 1);
  81. else
  82. $html->unit('active');
  83. $html->set('id', $admin['id']);
  84. $html->set('value', $admin['value']);
  85. $html->set('passwd', $admin['passwd']);
  86. $html->set('flags', $admin['flags']);
  87. $html->set('type', $type);
  88. $html->set('time', date('d.m.y', $admin['time']));
  89. $html->set('info', $admin['info']);
  90. $html->pack('admins');
  91. }
  92. $sql->query('SELECT `id` FROM `control_admins_'.$server['game'].'` WHERE `server`="'.$sid.'" ORDER BY `id` DESC LIMIT 1');
  93. $max = $sql->get();
  94. $html->get('admins', 'sections/control/servers/'.$server['game'].'/settings');
  95. $html->set('id', $id);
  96. $html->set('server', $sid);
  97. $html->set('admins', isset($html->arr['admins']) ? $html->arr['admins'] : '');
  98. $html->set('index', $max['id'] < 1 ? 0 : $max['id']);
  99. $html->pack('main');
  100. ?>