moved interfaces ui into a seperate php file.
[CBFWR.git] / libcbfwr / interfaceui.php
diff --git a/libcbfwr/interfaceui.php b/libcbfwr/interfaceui.php
new file mode 100644 (file)
index 0000000..379314d
--- /dev/null
@@ -0,0 +1,288 @@
+<?php
+
+
+function CBFWInterfacesPage($urls)
+{
+       if(isset($urls[1])) {
+               switch($urls[1]) {
+                       case "edit":
+                               CBFWpageBuilder(null, "CBFWInterfacesPageEdit", null, null, $urls[2]);
+                               break;
+                       case "change":
+                               CBFWpageBuilder(null, "CBFWInterfacesChange", null, null, $urls[2]);
+                               break;
+                       default:
+                               CBFWpageBuilder(null, "CBFWInterfacesPageDisplay");
+               }
+       } else {
+               error_log("main interface page");
+               CBFWpageBuilder(null, "CBFWInterfacesPageDisplay");
+       }
+}
+
+function CBFWInterfacesChange($interface)
+{
+       global $BASE_URL, $MENU_ITEMS;
+       $comms = new Comms();
+       
+       $config = getWebUserConfig();
+       $boot_config = $comms->getConfig(1);
+       
+       // set all to null
+       $hwaddr = null;
+       $zone = null;
+       $ip4 = null;
+       $ip6 = null;
+       $desc = null;
+       $speed = null;
+       $duplex = null;
+       
+       if(isset($config["interface"]["dev"]["$interface"]["name"])) $name = $config["interface"]["dev"]["$interface"]["name"];
+       else $name = null;
+       
+       
+       $extra2 = "";
+       if(file_exists("/sys/class/net/$interface/address")) {
+               $extra2 = trim(file_get_contents("/sys/class/net/$interface/address"));
+       }
+       
+       $extra = "";
+       if(isset($boot_config["hardware"]["netdev"]["$interface"]["hwaddress"])) {
+               $hwaddr = $boot_config["hardware"]["netdev"]["$interface"]["hwaddress"];
+               $extra = " <i>Original address: $hwaddr</i>";
+               if($hwaddr != $extra2 && $extra2 != "") {
+                       $extra .= " <i>Current Address: $hwaddr</i>";
+               }
+       }
+       
+       if(isset($config["interface"]["dev"]["$interface"]["hwaddress"])) $hwaddr = $config["interface"]["dev"]["$interface"]["hwaddress"];
+       if(isset($config["interface"]["dev"]["$interface"]["zone"])) $zone = $config["interface"]["dev"]["$interface"]["zone"];
+       if(isset($config["interface"]["dev"]["$interface"]["address4"])) $ip4 = $config["interface"]["dev"]["$interface"]["address4"];
+       if(isset($config["interface"]["dev"]["$interface"]["address6"])) $ip6 = $config["interface"]["dev"]["$interface"]["address6"];
+       if(isset($config["interface"]["dev"]["$interface"]["description"])) $desc = $config["interface"]["dev"]["$interface"]["description"];
+       if(isset($config["interface"]["dev"]["$interface"]["speed"])) $speed = $config["interface"]["dev"]["$interface"]["speed"];
+       if(isset($config["interface"]["dev"]["$interface"]["duplex"])) $duplex = $config["interface"]["dev"]["$interface"]["duplex"];
+
+       $newzone = $_REQUEST["zone"];
+       $newhwaddr = $_REQUEST["hwaddr"];
+       $newaddr4 = $_REQUEST["ipv4addr"];
+       $newaddr6 = $_REQUEST["ipv6addr"];
+       $newname = $_REQUEST["name"];
+       $newspeed = $_REQUEST["speed"];
+       $newduplex = $_REQUEST["duplex"];
+       $newdesc = $_REQUEST["description"];
+       
+       // first, check the zone
+       error_log("comparing zone, $zone to $newzone for $interface");
+       if($zone == null && $newzone != "-") {
+               // we changed from no zone to some zone
+               error_log("modify interface zone to $newzone for $interface");
+               addWebUserChange("hold modify interface $interface zone $newzone");
+       } else if($zone != null && $newzone != "-" && $zone != $newzone) {
+               error_log("modify interface zone from $zone to $newzone for $interface");
+               addWebUserChange("hold modify interface $interface zone $newzone");
+       } else if($newzone == "-" && $zone != null) {
+               error_log("remove interface zone from $zone for $interface");
+               addWebUserChange("hold delete interface $interface zone $zone");
+       }
+       
+       // next, check the description
+       if($newdesc != "" && $desc == null) {
+               addWebUserChange("hold modify interface $interface # $newdesc");
+       } else if($desc != null && $newdesc != "" && $desc != $newdesc) {
+               addWebUserChange("hold modify interface $interface # $newdesc");
+       } else if($desc != null && $newdesc == "") {
+               addWebUserChange("hold modify interface $interface #");
+       }
+       
+       header("Location: $BASE_URL/interfaces");
+}
+
+function CBFWInterfacesPageEdit($urls)
+{
+       global $BASE_URL, $MENU_ITEMS;
+       $interface = $urls;
+       
+       $comms = new Comms();
+       
+       $config = getWebUserConfig();
+       $boot_config = $comms->getConfig(1);
+       
+       $hwaddr = null;
+       $zone = null;
+       $ip4 = null;
+       $ip6 = null;
+       $speed = null;
+       $duplex = null;
+       $desc = null;
+       
+       if(isset($config["interface"]["dev"]["$interface"]["name"])) $name = $config["interface"]["dev"]["$interface"]["name"];
+       else $name = "";
+       
+       $extra2 = "";
+       if(file_exists("/sys/class/net/$interface/address")) {
+               $extra2 = trim(file_get_contents("/sys/class/net/$interface/address"));
+       }
+       
+       $extra = "";
+       if(isset($boot_config["hardware"]["netdev"]["$interface"]["hwaddress"])) {
+               $hwaddr = $boot_config["hardware"]["netdev"]["$interface"]["hwaddress"];
+               $extra = " <i>Original address: $hwaddr</i>";
+               if($hwaddr != $extra2 && $extra2 != "") {
+                       $extra .= " <i>Current Address: $hwaddr</i>";
+               }
+       }
+       
+       if(isset($config["interface"]["dev"]["$interface"]["hwaddress"])) $hwaddr = $config["interface"]["dev"]["$interface"]["hwaddress"];
+       if(isset($config["interface"]["dev"]["$interface"]["zone"])) $zone = $config["interface"]["dev"]["$interface"]["zone"];
+       if(isset($config["interface"]["dev"]["$interface"]["address4"])) $ip4 = $config["interface"]["dev"]["$interface"]["address4"];
+       if(isset($config["interface"]["dev"]["$interface"]["address6"])) $ip6 = $config["interface"]["dev"]["$interface"]["address6"];
+       if(isset($config["interface"]["dev"]["$interface"]["description"])) $desc = $config["interface"]["dev"]["$interface"]["description"];
+       if(isset($boot_config["hardware"]["netdev"]["$interface"]["speed"])) $speed = $boot_config["hardware"]["netdev"]["$interface"]["speed"];
+       if(isset($boot_config["hardware"]["netdev"]["$interface"]["duplex"])) $duplex = $boot_config["hardware"]["netdev"]["$interface"]["duplex"];
+       if(isset($config["interface"]["dev"]["$interface"]["speed"])) $speed = $config["interface"]["dev"]["$interface"]["speed"];
+       if(isset($config["interface"]["dev"]["$interface"]["duplex"])) $duplex = $config["interface"]["dev"]["$interface"]["duplex"];
+       
+       echo "<h3>Edit Interface $interface</h3><br>";
+       echo "<form method=\"post\" action=\"$BASE_URL/interfaces/change/$interface\">";
+       echo "<table>";
+       echo "<tr><td>Name</td><td><input type=\"text\" name=\"name\" value=\"$name\"></td></tr>";
+       echo "<tr><td>Description</td><td><input type=\"text\" name=\"description\" value=\"$desc\"></td></tr>";
+       echo "<tr><td>HW Address</td><td><input type=\"text\" name=\"hwaddr\" value=\"$hwaddr\">$extra</td></tr>";
+       echo "<tr><td>Zone</td><td>";
+       echo "<select name=\"zone\"><option value=\"-\">None</option>";
+       foreach($config["zone"] as $key=>$val) {
+               $sel = "";
+               if($zone!=null) if($zone == $key) $sel = " selected";
+               echo "<option value=\"$key\"$sel>$key</option>";
+       }
+       echo "</select>";
+       echo "</td></tr>";
+       echo "<tr><td>IPv4 Address</td><td><input type=\"text\" name=\"ipv4addr\" value=\"$ip4\"></td></tr>";
+       echo "<tr><td>IPv6 Address</td><td><input type=\"text\" name=\"ipv6addr\" value=\"$ip6\"></td></tr>";
+       echo "<tr><td>Speed</td><td><select name=\"speed\"><option value=\"auto\">Auto</option><option value=\"10\">10</option>";
+       echo "<option value=\"100\">100</option><option value=\"1000\">1000</option><option value=\"10000\">10000</option></select></td></tr>";
+       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>";
+       echo "</table>";
+       echo "<input type=\"submit\" name=\"Change\" value=\"Change\"><br>";
+       //echo "<a href=\"$BASE_URL/interfaces/\">Back</a>";
+       echo "</form>";
+}
+
+function CBFWInterfacesPageDisplay()
+{
+       global $BASE_URL, $MENU_ITEMS;
+       $comms = new Comms();
+       
+       $config = getWebUserConfig();
+       $boot_config = $comms->getConfig(1);
+       
+       // at the top, we put in the creation bits
+       echo "<h2>Create Interface</h2>";
+       echo "<li><a href=\"$BASE_URL/interfaces/create/bond\">Link Aggregation Group (bonded/teamed interfaces)</a><br>";
+       echo "<li><a href=\"$BASE_URL/interfaces/create/vlan\">VLAN Tagged Sub Interfaces</a><br>";
+       echo "<li><a href=\"$BASE_URL/interfaces/create/bridge\">Bridged Interfaces</a><br>";
+       echo "<hr>";
+       
+       // now build an interface table
+       $table = array();
+       foreach($boot_config["hardware"]["netdev"] as $key=>$val) {
+               $ename = $key;
+               $table[$key]["realname"] = $val["name"];
+               $table[$key]["name"] = $val["name"];
+               
+               
+               // driver
+               if(isset($val["driver"])) $table[$key]["type"] = $val["driver"];
+               else $table[$key]["type"] = "Unknown";
+               
+               // hw address
+               if(isset($val["hwaddress"])) $table[$key]["hwaddress"] = $val["hwaddress"];
+               
+               // current mtu
+               if(isset($val["mtu"])) $table[$key]["mtu"] = $val["mtu"];
+               
+               // speed
+               if(isset($val["speed"])) $table[$key]["speed"] = $val["speed"];
+               else $table[$key]["speed"] = "default";
+               
+               // duplex
+               if(isset($val["duplex"])) $table[$key]["duplex"] = $val["duplex"];
+               else $table[$key]["duplex"] = "default";
+       }
+       
+       foreach($config["interface"]["dev"] as $key => $val) {
+               // TODO construction zone
+               error_log("doing $key");
+               if(isset($val["name"])) $table[$key]["name"] = $val["name"];
+               if(isset($val["address4"])) $table[$key]["address4"] = $val["address4"];
+               if(isset($val["address6"])) $table[$key]["address6"] = $val["address6"];
+               if(isset($val["description"])) $table[$key]["description"] = $val["description"];
+               if(isset($val["zone"])) $table[$key]["zone"] = $val["zone"];
+       }
+
+       
+       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>";
+       foreach($table as $key =>$val) {
+               if($val["realname"] == $val["name"]) $name = $val["name"];
+               else $name = $val["name"]." (".$val["realname"].")";
+               
+               // zone
+               if(isset($val["zone"])) {
+                       if($val["zone"] == null) $zone = "-";
+                       else $zone = $val["zone"];
+               } else $zone = "-";
+               
+               // mtu
+               if(isset($val["mtu"])) {
+                       $mtu = $val["mtu"];
+               } else $mtu = "-";
+               
+               // driver type
+               if(isset($val["type"])) { 
+                       $type = $val["type"];
+               } else $type = "-";
+               
+               // hardware address
+               if(isset($val["hwaddress"])) {
+                       $mac = $val["hwaddress"];
+               } else $mac = "-";
+               
+               // speed and duplex
+               if(isset($val["duplex"])) {
+                       if($val["duplex"] == null) $dup = "default";
+                       else $dup = $val["duplex"];
+               } //else $dup = "default"; // TODO: needs to go away in fav of hardware setting
+               
+               if(isset($val["speed"])) {
+                       if($val["speed"] == null) $spd = "default";
+                       else $spd = $val["speed"];
+               } //else $spd = "default"; // TODO: needs to go away inf av of hardware setting
+               
+               $spanddu = "$spd/$dup";
+               
+               // network address
+               if(isset($val["address4"]) && isset($val["address6"])) {
+                       $address = $val["address4"]."<br>".$val["address6"];
+               } else if(isset($val["address4"])) {
+                       $address = $val["address4"];
+               } else if(isset($val["address6"])) {
+                       $address = $val["address6"];
+               } else {
+                       $address = "-";
+               }
+               
+               if(isset($val["description"])) $desc = $val["description"];
+               else $desc = "-";
+               
+               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>";
+       }
+       echo "</table>";
+       
+       // to test
+       echo "config: <pre>";
+       print_r($config);
+       echo "</pre>";
+}
+
+?>
\ No newline at end of file