moved interfaces ui into a seperate php file.
[CBFWR.git] / libcbfwr / interfaceui.php
1 <?php
2
3
4 function CBFWInterfacesPage($urls)
5 {
6         if(isset($urls[1])) {
7                 switch($urls[1]) {
8                         case "edit":
9                                 CBFWpageBuilder(null, "CBFWInterfacesPageEdit", null, null, $urls[2]);
10                                 break;
11                         case "change":
12                                 CBFWpageBuilder(null, "CBFWInterfacesChange", null, null, $urls[2]);
13                                 break;
14                         default:
15                                 CBFWpageBuilder(null, "CBFWInterfacesPageDisplay");
16                 }
17         } else {
18                 error_log("main interface page");
19                 CBFWpageBuilder(null, "CBFWInterfacesPageDisplay");
20         }
21 }
22
23 function CBFWInterfacesChange($interface)
24 {
25         global $BASE_URL, $MENU_ITEMS;
26         $comms = new Comms();
27         
28         $config = getWebUserConfig();
29         $boot_config = $comms->getConfig(1);
30         
31         // set all to null
32         $hwaddr = null;
33         $zone = null;
34         $ip4 = null;
35         $ip6 = null;
36         $desc = null;
37         $speed = null;
38         $duplex = null;
39         
40         if(isset($config["interface"]["dev"]["$interface"]["name"])) $name = $config["interface"]["dev"]["$interface"]["name"];
41         else $name = null;
42         
43         
44         $extra2 = "";
45         if(file_exists("/sys/class/net/$interface/address")) {
46                 $extra2 = trim(file_get_contents("/sys/class/net/$interface/address"));
47         }
48         
49         $extra = "";
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>";
55                 }
56         }
57         
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"];
65
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"];
74         
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");
87         }
88         
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 #");
96         }
97         
98         header("Location: $BASE_URL/interfaces");
99 }
100
101 function CBFWInterfacesPageEdit($urls)
102 {
103         global $BASE_URL, $MENU_ITEMS;
104         $interface = $urls;
105         
106         $comms = new Comms();
107         
108         $config = getWebUserConfig();
109         $boot_config = $comms->getConfig(1);
110         
111         $hwaddr = null;
112         $zone = null;
113         $ip4 = null;
114         $ip6 = null;
115         $speed = null;
116         $duplex = null;
117         $desc = null;
118         
119         if(isset($config["interface"]["dev"]["$interface"]["name"])) $name = $config["interface"]["dev"]["$interface"]["name"];
120         else $name = "";
121         
122         $extra2 = "";
123         if(file_exists("/sys/class/net/$interface/address")) {
124                 $extra2 = trim(file_get_contents("/sys/class/net/$interface/address"));
125         }
126         
127         $extra = "";
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>";
133                 }
134         }
135         
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"];
145         
146         echo "<h3>Edit Interface $interface</h3><br>";
147         echo "<form method=\"post\" action=\"$BASE_URL/interfaces/change/$interface\">";
148         echo "<table>";
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) {
155                 $sel = "";
156                 if($zone!=null) if($zone == $key) $sel = " selected";
157                 echo "<option value=\"$key\"$sel>$key</option>";
158         }
159         echo "</select>";
160         echo "</td></tr>";
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>";
166         echo "</table>";
167         echo "<input type=\"submit\" name=\"Change\" value=\"Change\"><br>";
168         //echo "<a href=\"$BASE_URL/interfaces/\">Back</a>";
169         echo "</form>";
170 }
171
172 function CBFWInterfacesPageDisplay()
173 {
174         global $BASE_URL, $MENU_ITEMS;
175         $comms = new Comms();
176         
177         $config = getWebUserConfig();
178         $boot_config = $comms->getConfig(1);
179         
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>";
185         echo "<hr>";
186         
187         // now build an interface table
188         $table = array();
189         foreach($boot_config["hardware"]["netdev"] as $key=>$val) {
190                 $ename = $key;
191                 $table[$key]["realname"] = $val["name"];
192                 $table[$key]["name"] = $val["name"];
193                 
194                 
195                 // driver
196                 if(isset($val["driver"])) $table[$key]["type"] = $val["driver"];
197                 else $table[$key]["type"] = "Unknown";
198                 
199                 // hw address
200                 if(isset($val["hwaddress"])) $table[$key]["hwaddress"] = $val["hwaddress"];
201                 
202                 // current mtu
203                 if(isset($val["mtu"])) $table[$key]["mtu"] = $val["mtu"];
204                 
205                 // speed
206                 if(isset($val["speed"])) $table[$key]["speed"] = $val["speed"];
207                 else $table[$key]["speed"] = "default";
208                 
209                 // duplex
210                 if(isset($val["duplex"])) $table[$key]["duplex"] = $val["duplex"];
211                 else $table[$key]["duplex"] = "default";
212         }
213         
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"];
222         }
223
224         
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"].")";
229                 
230                 // zone
231                 if(isset($val["zone"])) {
232                         if($val["zone"] == null) $zone = "-";
233                         else $zone = $val["zone"];
234                 } else $zone = "-";
235                 
236                 // mtu
237                 if(isset($val["mtu"])) {
238                         $mtu = $val["mtu"];
239                 } else $mtu = "-";
240                 
241                 // driver type
242                 if(isset($val["type"])) { 
243                         $type = $val["type"];
244                 } else $type = "-";
245                 
246                 // hardware address
247                 if(isset($val["hwaddress"])) {
248                         $mac = $val["hwaddress"];
249                 } else $mac = "-";
250                 
251                 // speed and duplex
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
256                 
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
261                 
262                 $spanddu = "$spd/$dup";
263                 
264                 // network address
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"];
271                 } else {
272                         $address = "-";
273                 }
274                 
275                 if(isset($val["description"])) $desc = $val["description"];
276                 else $desc = "-";
277                 
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>";
279         }
280         echo "</table>";
281         
282         // to test
283         echo "config: <pre>";
284         print_r($config);
285         echo "</pre>";
286 }
287
288 ?>