Initial commit - NexusPBX IP Telephony Platform

This commit is contained in:
sorcier committed 2026-11-02 02:24:47 +01:00
commit c5de8d0c71
25 files changed
+18123

No files matched your search

+79
View File
@@ -0,0 +1,79 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../src/Database.php';
require_once __DIR__ . '/../src/FirewallManager.php';
use App\Database;
use App\FirewallManager;
$cmd = strtolower($argv[1] ?? 'status');
switch ($cmd) {
case 'status':
$st = FirewallManager::getStatus(true);
$settings = $st['settings'];
echo "=== Statut Pare-feu & Sécurité NexusPBX ===\n";
echo "• Service Fail2ban : " . ($st['is_running'] ? "\033[32mACTIF (En ligne)\033[0m" : "\033[31mARRÊTÉ\033[0m") . "\n";
echo "• Pare-feu & Filtrage : " . ($settings['firewall_enabled'] ? "\033[32mACTIF\033[0m" : "\033[33mINACTIF\033[0m") . "\n";
echo "• Mode Strict Certbot 80 : " . ($settings['certbot_strict_port80'] ? "OUI (Port 80 ACME seul)" : "NON (Port 80 ouvert)") . "\n";
echo "• Port HTTPS Admin : " . ($settings['admin_https_port'] ?? 8443) . "\n";
echo "• Total IPs Bannies : " . $st['total_banned'] . "\n";
if (!empty($st['banned_ips'])) {
echo "\nListe des IPs bannies :\n";
foreach ($st['banned_ips'] as $b) {
echo " - {$b['ip']} (Prison: {$b['jail']} - {$b['jail_label']})\n";
}
}
echo "===========================================\n";
break;
case 'on':
case 'enable':
$db = Database::getConnection();
$db->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 <ip>\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 <ip> [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 <ip>|unban <ip>]\n";
exit(1);
}