handle_action.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. define("CONFIG", 1);
  3. require_once 'functions.php';
  4. // Подключаем конфигурационный файл
  5. $config_file = __DIR__ . '/config.php';
  6. if (!file_exists($config_file)) {
  7. die("Configuration file not found: $config_file");
  8. }
  9. $servers = require $config_file;
  10. // Проверяем AJAX-запрос
  11. if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] !== 'XMLHttpRequest') {
  12. http_response_code(403);
  13. die(json_encode(['success' => false, 'message' => 'Direct access not allowed']));
  14. }
  15. // Обработка POST-данных
  16. $server_name = $_POST['server'] ?? null;
  17. $action = $_POST['action'] ?? null;
  18. $client_name = $_POST['client'] ?? null;
  19. if (!isset($servers[$server_name])) {
  20. die(json_encode(['success' => false, 'message' => 'Invalid server']));
  21. }
  22. $server = $servers[$server_name];
  23. $result = false;
  24. try {
  25. switch ($action) {
  26. case 'ban':
  27. $result = banClient($server, $client_name);
  28. break;
  29. case 'revoke':
  30. $result = revokeClient($server, $client_name);
  31. break;
  32. case 'unban':
  33. $result = unbanClient($server, $client_name);
  34. break;
  35. case 'remove':
  36. $result = removeCCD($server, $client_name);
  37. break;
  38. default:
  39. throw new Exception('Invalid action');
  40. }
  41. echo json_encode(['success' => $result]);
  42. } catch (Exception $e) {
  43. echo json_encode(['success' => false, 'message' => $e->getMessage()]);
  44. }
  45. $clean_url = strtok($_SERVER['REQUEST_URI'], '?');
  46. header("Refresh:0; url=" . $clean_url);
  47. exit;