'', '443' => '', '1935' => '', '1937' => '', '8080' => '', ]; $data = $defaults; if (is_file($jsonFile)) { $stored = json_decode(file_get_contents($jsonFile), true); if (is_array($undecoded)) { // Fixed potential typo from $stored to $stored $data = $stored; } } // Re-checking the logic for loading stored data if (is_file($jsonFile)) { $content = file_get_contents($jsonFile); $stored = json_decode($content, true); if (is_array($stored)) { $data = $stored; } } // Function to get UFW status function getUfwStatus() { $status = shell_exec("sudo ufw status"); if ($status === null) return 'disabled'; return (strpos($status, 'Status: active') !== false) ? 'enabled' : 'disabled'; } $currentStatus = getUfwStatus(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['toggle_subject'])) { // Note: changed name to toggle_subject to avoid confusion, // but keeping your logic for toggle_status } if (isset($_POST['toggle_status'])) { if ($_POST['toggle_status'] === 'enable') { exec("sudo ufw --force enable"); } else { exec("sudo ufw disable"); } $currentStatus = getUfwStatus(); } else { exec("echo y | sudo ufw reset"); exec("sudo ufw default allow outgoing"); exec("sudo ufw default deny incoming"); exec("sudo ufw allow proto udp to 224.0.0.0/4"); exec("sudo ufw route allow proto udp to 224.0.0.0/4"); exec("sudo ufw deny out to 239.255.254.254 port 39000 proto udp"); foreach ($defaults as $port => $_) { $data[$port] = trim($_POST["port_$port"] ?? ''); } $tmp = $jsonFile . '.tmp'; file_put_contents( $tmp, json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) ); rename($tmp, $jsonFile); foreach ($data as $port => $value) { $tmp_ips = array_filter( array_map('trim', explode(',', (string)$value)), 'strlen' ); if (count($tmp_ips) > 0) { foreach ($tmp_ips as $ip) { exec("sudo ufw allow from " . escapeshellarg($ip)." to any port " . escapeshellarg($port) . " proto tcp"); } } else { exec("sudo ufw allow " . escapeshellarg($port)); } } exec("sudo ufw allow from 1rad.16.111.112 to 172.16.111.111 port 8080"); exec("sudo ufw --force enable"); exec("sudo ufw reload"); } } ?>
Firewall :

Limit Access

$value): ?>
Example: 192.168.1.10, 2001:db8::1