#!/usr/bin/env php exec("UPDATE settings SET firewall_enabled = 1, certbot_strict_port80 = 1 WHERE id = 1"); shell_exec('systemctl start fail2ban 2>&1'); $settings = FirewallManager::getSettings(); FirewallManager::applyNginxConfig((int)$settings['admin_https_port'], 1); @unlink('/tmp/nexus_fw_status_cache.json'); echo "\033[32m[OK] Pare-feu NexusPBX activé avec succès (Mode Strict + Fail2ban démarré).\033[0m\n"; break; case 'off': case 'disable': $db = Database::getConnection(); $db->exec("UPDATE settings SET firewall_enabled = 0, certbot_strict_port80 = 0 WHERE id = 1"); shell_exec('systemctl stop fail2ban 2>&1'); $settings = FirewallManager::getSettings(); FirewallManager::applyNginxConfig((int)$settings['admin_https_port'], 0); @unlink('/tmp/nexus_fw_status_cache.json'); echo "\033[33m[OK] Pare-feu NexusPBX désactivé (Mode normal + Fail2ban arrêté).\033[0m\n"; break; case 'unban': $ip = $argv[2] ?? ''; if (!$ip) { echo "Usage: nexus-firewall unban \n"; exit(1); } $res = FirewallManager::unbanIp($ip, 'all'); echo ($res['success'] ? "\033[32m[OK]\033[0m " : "\033[31m[ERREUR]\033[0m ") . $res['message'] . "\n"; break; case 'ban': $ip = $argv[2] ?? ''; $jail = $argv[3] ?? 'asterisk'; if (!$ip) { echo "Usage: nexus-firewall ban [jail]\n"; exit(1); } $res = FirewallManager::banIp($ip, $jail); echo ($res['success'] ? "\033[32m[OK]\033[0m " : "\033[31m[ERREUR]\033[0m ") . $res['message'] . "\n"; break; default: echo "Usage: nexus-firewall [status|on|off|ban |unban ]\n"; exit(1); }