bans.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. if(!DEFINED('EGP'))
  3. exit(header('Refresh: 0; URL=http://'.$_SERVER['SERVER_NAME'].'/404'));
  4. $html->nav('Бан листы');
  5. $sql->query('SELECT `address`, `passwd` FROM `control` WHERE `id`="'.$id.'" LIMIT 1');
  6. $unit = $sql->get();
  7. include(LIB.'ssh.php');
  8. if(!$ssh->auth($unit['passwd'], $unit['address']))
  9. sys::back($cfg['http'].'control/id/'.$id.'/server/'.$sid.'/section/settings');
  10. // Путь к файлам (banned.cfg / listip.cfg)
  11. $folder = '/servers/'.$server['uid'].'/cstrike';
  12. // Если бан/разбан/проверка
  13. if($go)
  14. {
  15. $aData = array();
  16. $aData['value'] = isset($_POST['value']) ? trim($_POST['value']) : sys::outjs(array('e' => sys::text('servers', 'bans')), $nmch);
  17. $aData['amxbans'] = isset($_POST['amxbans']) ? true : false;
  18. // Проверка входных данных
  19. if(sys::valid($aData['value'], 'steamid') AND sys::valid($aData['value'], 'ip'))
  20. sys::outjs(array('e' => sys::text('servers', 'bans')), $nmch);
  21. // Если указан steamid
  22. if(sys::valid($aData['value'], 'ip'))
  23. {
  24. // бан
  25. if(isset($url['action']) AND $url['action'] == 'ban')
  26. {
  27. // Если включен amxbans/csbans
  28. if($aData['amxbans'])
  29. {
  30. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"amx_ban 0 ".$aData['value']." EGP\"\015'");
  31. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"fb_ban 0 ".$aData['value']." EGP\"\015'");
  32. }else
  33. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"banid 0.0 ".$aData['value']." kick\"\015'");
  34. $ssh->set('cd '.$folder.' && sudo -u server'.$server['uid'].' fgrep '.$aData['value'].' banned.cfg | awk \'{print $3}\'');
  35. if($aData['value'] != trim($ssh->get()))
  36. $ssh->set('sudo -u server'.$server['uid'].' sh -c "echo \"banid 0.0 '.$aData['value'].'\" >> '.$folder.'/banned.cfg"');
  37. sys::outjs(array('s' => 'ok'), $nmch);
  38. // разбан
  39. }elseif(isset($url['action']) AND $url['action'] == 'unban'){
  40. // Убираем запись из banned.cfg
  41. $ssh->set('cd '.$folder.' && sudo -u server'.$server['uid'].' sh -c "cat banned.cfg | grep -v '.$aData['value'].' > temp_banned.cfg; echo "" >> temp_banned.cfg && cat temp_banned.cfg > banned.cfg; rm temp_banned.cfg"');
  42. // Если включен amxbans/csbans
  43. if($aData['amxbans'])
  44. {
  45. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"amx_unban ".$aData['value']."\"\015'");
  46. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"fb_unban ".$aData['value']."\"\015'");
  47. }else{
  48. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"removeid ".$aData['value']."\"\015'");
  49. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"writeid\"\015'");
  50. }
  51. sys::outjs(array('s' => 'ok'), $nmch);
  52. // проверка
  53. }else{
  54. $ssh->set('cd '.$folder.' && sudo -u server'.$server['uid'].' fgrep '.$aData['value'].' banned.cfg | awk \'{print $3}\'');
  55. if($aData['value'] == trim($ssh->get()))
  56. sys::outjs(array('ban' => 'Данный SteamID <u>найден</u> в файле banned.cfg'), $nmch);
  57. sys::outjs(array('unban' => 'Данный SteamID <u>не найден</u> в файле banned.cfg'), $nmch);
  58. }
  59. }else{
  60. // бан
  61. if(isset($url['action']) AND $url['action'] == 'ban')
  62. {
  63. // Если включен amxbans/csbans
  64. if($aData['amxbans'])
  65. {
  66. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"amx_ban 0 ".$aData['value']." EGP\"\015'");
  67. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"fb_ban 0 ".$aData['value']." EGP\"\015'");
  68. }else
  69. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"addip 0.0 ".$aData['value']." EGP\"\015'");
  70. $ssh->set('cd '.$folder.' && sudo -u server'.$server['uid'].' fgrep '.$aData['value'].' listip.cfg | awk \'{print $3}\'');
  71. if($aData['value'] != trim($ssh->get()))
  72. $ssh->set('sudo -u server'.$server['uid'].' sh -c "echo \"addip 0.0 '.$aData['value'].'\" >> '.$folder.'/listip.cfg"');
  73. sys::outjs(array('s' => 'ok'), $nmch);
  74. // разбан
  75. }elseif(isset($url['action']) AND $url['action'] == 'unban'){
  76. // Убираем запись из listip.cfg
  77. $ssh->set('cd '.$folder.' && sudo -u server'.$server['uid'].' sh -c "cat listip.cfg | grep -v '.$aData['value'].' > temp_listip.cfg; echo "" >> temp_listip.cfg && cat temp_listip.cfg > listip.cfg; rm temp_listip.cfg"');
  78. // Если включен amxbans/csbans
  79. if($aData['amxbans'])
  80. {
  81. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"amx_unban ".$aData['value']."\"\015'");
  82. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"fb_unban ".$aData['value']."\"\015'");
  83. }else{
  84. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"removeip ".$aData['value']."\"\015'");
  85. $ssh->set("sudo -u server".$server['uid']." screen -p 0 -S s_".$server['uid']." -X eval 'stuff \"writeip\"\015'");
  86. }
  87. sys::outjs(array('s' => 'ok'), $nmch);
  88. // проверка
  89. }else{
  90. $ssh->set('cd '.$folder.' && sudo -u server'.$server['uid'].' fgrep '.$aData['value'].' listip.cfg | awk \'{print $3}\'');
  91. if($aData['value'] == trim($ssh->get()))
  92. sys::outjs(array('ban' => 'Данный IP <u>найден</u> в файле listip.cfg'), $nmch);
  93. sys::outjs(array('unban' => 'Данный IP <u>не найден</u> в файле listip.cfg'), $nmch);
  94. }
  95. }
  96. }
  97. // Содержимое banned.cfg
  98. $ssh->set('cd '.$folder.' && cat banned.cfg | awk \'{print $3}\' | grep STEAM_');
  99. $aBanned = explode("\n", $ssh->get());
  100. // Содержимое listip.cfg
  101. $ssh->set('cd '.$folder.' && cat listip.cfg | awk \'{print $3}\' | egrep "(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])(\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])){3}"');
  102. $aListip = explode("\n", $ssh->get());
  103. if(isset($aBanned[count($aBanned)-1]) AND $aBanned[count($aBanned)-1] == '')
  104. unset($aBanned[count($aBanned)-1]);
  105. if(isset($aListip[count($aListip)-1]) AND $aListip[count($aListip)-1] == '')
  106. unset($aListip[count($aListip)-1]);
  107. // Построение списка забаненых по steamid
  108. foreach($aBanned as $line => $steam)
  109. {
  110. $html->get('bans_list', 'sections/control/servers/games/settings');
  111. $html->set('value', trim($steam));
  112. $html->pack('banned');
  113. }
  114. // Построение списка забаненых по ip
  115. foreach($aListip as $line => $ip)
  116. {
  117. $html->get('bans_list', 'sections/control/servers/games/settings');
  118. $html->set('value', trim($ip));
  119. $html->pack('listip');
  120. }
  121. $html->get('bans', 'sections/control/servers/'.$server['game'].'/settings');
  122. $html->set('id', $id);
  123. $html->set('server', $sid);
  124. $html->set('banned', isset($html->arr['banned']) ? $html->arr['banned'] : '');
  125. $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : '');
  126. $html->pack('main');
  127. ?>