4 function CBFWInterfacesPage($urls)
9 CBFWpageBuilder(null, "CBFWInterfacesPageEdit", null, null, $urls[2]);
12 CBFWpageBuilder(null, "CBFWInterfacesChange", null, null, $urls[2]);
15 CBFWpageBuilder(null, "CBFWInterfacesPageDisplay");
18 error_log("main interface page");
19 CBFWpageBuilder(null, "CBFWInterfacesPageDisplay");
23 function CBFWInterfacesChange($interface)
25 global $BASE_URL, $MENU_ITEMS;
28 $config = getWebUserConfig();
29 $boot_config = $comms->getConfig(1);
40 if(isset($config["interface"]["dev"]["$interface"]["name"])) $name = $config["interface"]["dev"]["$interface"]["name"];
45 if(file_exists("/sys/class/net/$interface/address")) {
46 $extra2 = trim(file_get_contents("/sys/class/net/$interface/address"));
50 if(isset($boot_config["hardware"]["netdev"]["$interface"]["hwaddress"])) {
51 $hwaddr = $boot_config["hardware"]["netdev"]["$interface"]["hwaddress"];
52 $extra = " <i>Original address: $hwaddr</i>";
53 if($hwaddr != $extra2 && $extra2 != "") {
54 $extra .= " <i>Current Address: $hwaddr</i>";
58 if(isset($config["interface"]["dev"]["$interface"]["hwaddress"])) $hwaddr = $config["interface"]["dev"]["$interface"]["hwaddress"];
59 if(isset($config["interface"]["dev"]["$interface"]["zone"])) $zone = $config["interface"]["dev"]["$interface"]["zone"];
60 if(isset($config["interface"]["dev"]["$interface"]["address4"])) $ip4 = $config["interface"]["dev"]["$interface"]["address4"];
61 if(isset($config["interface"]["dev"]["$interface"]["address6"])) $ip6 = $config["interface"]["dev"]["$interface"]["address6"];
62 if(isset($config["interface"]["dev"]["$interface"]["description"])) $desc = $config["interface"]["dev"]["$interface"]["description"];
63 if(isset($config["interface"]["dev"]["$interface"]["speed"])) $speed = $config["interface"]["dev"]["$interface"]["speed"];
64 if(isset($config["interface"]["dev"]["$interface"]["duplex"])) $duplex = $config["interface"]["dev"]["$interface"]["duplex"];
66 $newzone = $_REQUEST["zone"];
67 $newhwaddr = $_REQUEST["hwaddr"];
68 $newaddr4 = $_REQUEST["ipv4addr"];
69 $newaddr6 = $_REQUEST["ipv6addr"];
70 $newname = $_REQUEST["name"];
71 $newspeed = $_REQUEST["speed"];
72 $newduplex = $_REQUEST["duplex"];
73 $newdesc = $_REQUEST["description"];
75 // first, check the zone
76 error_log("comparing zone, $zone to $newzone for $interface");
77 if($zone == null && $newzone != "-") {
78 // we changed from no zone to some zone
79 error_log("modify interface zone to $newzone for $interface");
80 addWebUserChange("hold modify interface $interface zone $newzone");
81 } else if($zone != null && $newzone != "-" && $zone != $newzone) {
82 error_log("modify interface zone from $zone to $newzone for $interface");
83 addWebUserChange("hold modify interface $interface zone $newzone");
84 } else if($newzone == "-" && $zone != null) {
85 error_log("remove interface zone from $zone for $interface");
86 addWebUserChange("hold delete interface $interface zone $zone");
89 // next, check the description
90 if($newdesc != "" && $desc == null) {
91 addWebUserChange("hold modify interface $interface # $newdesc");
92 } else if($desc != null && $newdesc != "" && $desc != $newdesc) {
93 addWebUserChange("hold modify interface $interface # $newdesc");
94 } else if($desc != null && $newdesc == "") {
95 addWebUserChange("hold modify interface $interface #");
98 header("Location: $BASE_URL/interfaces");
101 function CBFWInterfacesPageEdit($urls)
103 global $BASE_URL, $MENU_ITEMS;
106 $comms = new Comms();
108 $config = getWebUserConfig();
109 $boot_config = $comms->getConfig(1);
119 if(isset($config["interface"]["dev"]["$interface"]["name"])) $name = $config["interface"]["dev"]["$interface"]["name"];
123 if(file_exists("/sys/class/net/$interface/address")) {
124 $extra2 = trim(file_get_contents("/sys/class/net/$interface/address"));
128 if(isset($boot_config["hardware"]["netdev"]["$interface"]["hwaddress"])) {
129 $hwaddr = $boot_config["hardware"]["netdev"]["$interface"]["hwaddress"];
130 $extra = " <i>Original address: $hwaddr</i>";
131 if($hwaddr != $extra2 && $extra2 != "") {
132 $extra .= " <i>Current Address: $hwaddr</i>";
136 if(isset($config["interface"]["dev"]["$interface"]["hwaddress"])) $hwaddr = $config["interface"]["dev"]["$interface"]["hwaddress"];
137 if(isset($config["interface"]["dev"]["$interface"]["zone"])) $zone = $config["interface"]["dev"]["$interface"]["zone"];
138 if(isset($config["interface"]["dev"]["$interface"]["address4"])) $ip4 = $config["interface"]["dev"]["$interface"]["address4"];
139 if(isset($config["interface"]["dev"]["$interface"]["address6"])) $ip6 = $config["interface"]["dev"]["$interface"]["address6"];
140 if(isset($config["interface"]["dev"]["$interface"]["description"])) $desc = $config["interface"]["dev"]["$interface"]["description"];
141 if(isset($boot_config["hardware"]["netdev"]["$interface"]["speed"])) $speed = $boot_config["hardware"]["netdev"]["$interface"]["speed"];
142 if(isset($boot_config["hardware"]["netdev"]["$interface"]["duplex"])) $duplex = $boot_config["hardware"]["netdev"]["$interface"]["duplex"];
143 if(isset($config["interface"]["dev"]["$interface"]["speed"])) $speed = $config["interface"]["dev"]["$interface"]["speed"];
144 if(isset($config["interface"]["dev"]["$interface"]["duplex"])) $duplex = $config["interface"]["dev"]["$interface"]["duplex"];
146 echo "<h3>Edit Interface $interface</h3><br>";
147 echo "<form method=\"post\" action=\"$BASE_URL/interfaces/change/$interface\">";
149 echo "<tr><td>Name</td><td><input type=\"text\" name=\"name\" value=\"$name\"></td></tr>";
150 echo "<tr><td>Description</td><td><input type=\"text\" name=\"description\" value=\"$desc\"></td></tr>";
151 echo "<tr><td>HW Address</td><td><input type=\"text\" name=\"hwaddr\" value=\"$hwaddr\">$extra</td></tr>";
152 echo "<tr><td>Zone</td><td>";
153 echo "<select name=\"zone\"><option value=\"-\">None</option>";
154 foreach($config["zone"] as $key=>$val) {
156 if($zone!=null) if($zone == $key) $sel = " selected";
157 echo "<option value=\"$key\"$sel>$key</option>";
161 echo "<tr><td>IPv4 Address</td><td><input type=\"text\" name=\"ipv4addr\" value=\"$ip4\"></td></tr>";
162 echo "<tr><td>IPv6 Address</td><td><input type=\"text\" name=\"ipv6addr\" value=\"$ip6\"></td></tr>";
163 echo "<tr><td>Speed</td><td><select name=\"speed\"><option value=\"auto\">Auto</option><option value=\"10\">10</option>";
164 echo "<option value=\"100\">100</option><option value=\"1000\">1000</option><option value=\"10000\">10000</option></select></td></tr>";
165 echo "<tr><td>Duplex</td><td><select name=\"duplex\"><option value=\"auto\">Auto</option><option value=\"full\">Full</option><option value=\"half\">Half</option></select></td></tr>";
167 echo "<input type=\"submit\" name=\"Change\" value=\"Change\"><br>";
168 //echo "<a href=\"$BASE_URL/interfaces/\">Back</a>";
172 function CBFWInterfacesPageDisplay()
174 global $BASE_URL, $MENU_ITEMS;
175 $comms = new Comms();
177 $config = getWebUserConfig();
178 $boot_config = $comms->getConfig(1);
180 // at the top, we put in the creation bits
181 echo "<h2>Create Interface</h2>";
182 echo "<li><a href=\"$BASE_URL/interfaces/create/bond\">Link Aggregation Group (bonded/teamed interfaces)</a><br>";
183 echo "<li><a href=\"$BASE_URL/interfaces/create/vlan\">VLAN Tagged Sub Interfaces</a><br>";
184 echo "<li><a href=\"$BASE_URL/interfaces/create/bridge\">Bridged Interfaces</a><br>";
187 // now build an interface table
189 foreach($boot_config["hardware"]["netdev"] as $key=>$val) {
191 $table[$key]["realname"] = $val["name"];
192 $table[$key]["name"] = $val["name"];
196 if(isset($val["driver"])) $table[$key]["type"] = $val["driver"];
197 else $table[$key]["type"] = "Unknown";
200 if(isset($val["hwaddress"])) $table[$key]["hwaddress"] = $val["hwaddress"];
203 if(isset($val["mtu"])) $table[$key]["mtu"] = $val["mtu"];
206 if(isset($val["speed"])) $table[$key]["speed"] = $val["speed"];
207 else $table[$key]["speed"] = "default";
210 if(isset($val["duplex"])) $table[$key]["duplex"] = $val["duplex"];
211 else $table[$key]["duplex"] = "default";
214 foreach($config["interface"]["dev"] as $key => $val) {
215 // TODO construction zone
216 error_log("doing $key");
217 if(isset($val["name"])) $table[$key]["name"] = $val["name"];
218 if(isset($val["address4"])) $table[$key]["address4"] = $val["address4"];
219 if(isset($val["address6"])) $table[$key]["address6"] = $val["address6"];
220 if(isset($val["description"])) $table[$key]["description"] = $val["description"];
221 if(isset($val["zone"])) $table[$key]["zone"] = $val["zone"];
225 echo "<h2>Interfaces</h2><table border=\"1\"><th>Device</th><th>Zone</th><th>Type</th><th>MAC Address</th><th>Address</th><th>MTU</th><th>Speed/Duplex</th><th>Description</th><th>Control</th></tr>";
226 foreach($table as $key =>$val) {
227 if($val["realname"] == $val["name"]) $name = $val["name"];
228 else $name = $val["name"]." (".$val["realname"].")";
231 if(isset($val["zone"])) {
232 if($val["zone"] == null) $zone = "-";
233 else $zone = $val["zone"];
237 if(isset($val["mtu"])) {
242 if(isset($val["type"])) {
243 $type = $val["type"];
247 if(isset($val["hwaddress"])) {
248 $mac = $val["hwaddress"];
252 if(isset($val["duplex"])) {
253 if($val["duplex"] == null) $dup = "default";
254 else $dup = $val["duplex"];
255 } //else $dup = "default"; // TODO: needs to go away in fav of hardware setting
257 if(isset($val["speed"])) {
258 if($val["speed"] == null) $spd = "default";
259 else $spd = $val["speed"];
260 } //else $spd = "default"; // TODO: needs to go away inf av of hardware setting
262 $spanddu = "$spd/$dup";
265 if(isset($val["address4"]) && isset($val["address6"])) {
266 $address = $val["address4"]."<br>".$val["address6"];
267 } else if(isset($val["address4"])) {
268 $address = $val["address4"];
269 } else if(isset($val["address6"])) {
270 $address = $val["address6"];
275 if(isset($val["description"])) $desc = $val["description"];
278 echo "<tr><th>$name</th><td>$zone</td><td>$type</td><td>$mac</td><td>$address</td><td>$mtu</td><td>$spanddu</td><td>$desc</td><td><a href=\"$BASE_URL/interfaces/edit/".$val["realname"]."\">Edit</a></td></tr>";
283 echo "config: <pre>";