$interface, 'method' => $_POST['method'] ?? '', 'ip' => $_POST['ip'] ?? '', 'netmask' => $_POST['netmask'] ?? '', 'gateway' => $_POST['gateway'] ?? '', 'dns' => $_POST['dns'] ?? '', 'multicast' => $_POST['multicast'] ?? 'off' ]; $network_config[$interface] = $config; file_put_contents($config_file, json_encode($network_config, JSON_PRETTY_PRINT)); } elseif ($action === 'activate') { // Activate interface exec("sudo ip link set $interface up", $output, $return_code); } elseif ($action === 'deactivate') { // Deactivate interface exec("sudo ip link set $interface down", $output, $return_code); } } } // Get network interfaces excluding specific ones $interfaces = []; $output = []; exec('ip addr show', $output); $current_interface = null; $interface_data = []; foreach ($output as $line) { // Match interface name if (preg_match('/^\d+:\s+([a-zA-Z0-9]+):/', $line, $matches)) { $current_interface = $matches[1]; // Skip interfaces we want to exclude if (strpos($current_interface, 'enx') === 0) { $current_interface = null; continue; } if ($current_interface === 'lo') { $current_interface = null; continue; } // Check if interface is a bridge or docker interface if ( strpos($current_interface, 'docker') === 0 || strpos($current_interface, 'br-') === 0 || strpos($current_interface, 'veth') === 0 ) { $current_interface = null; continue; } $interface_data[$current_interface] = [ 'name' => $current_interface, 'ip' => '', 'mac' => '', 'status' => 'down', 'config' => $network_config[$current_interface] ?? null ]; } // Extract IP address if ($current_interface && preg_match('/inet\s+(\d+\.\d+\.\d+\.\d+)/', $line, $matches)) { $interface_data[$current_interface]['ip'] = $matches[1]; } // Extract MAC address if ($current_interface && preg_match('/link\/ether\s+([a-f0-9:]+)/', $line, $matches)) { $interface_data[$current_interface]['mac'] = $matches[1]; } // Check if interface is up if ($current_interface && strpos($line, 'state UP') !== false) { $interface_data[$current_interface]['status'] = 'up'; } } // Get selected interface from GET parameter or first interface $selected_interface = $_GET['interface'] ?? array_keys($interface_data)[0] ?? null; ?>
IP Address:
MAC Address: