commit 2efd4ad0ab06b2bba5764240c43f5a1fc8dbdc6f Author: Thomas Hooge Date: Mon Feb 13 08:34:23 2023 +0100 First commit based on v0.1 diff --git a/asset.php b/asset.php new file mode 100644 index 0000000..7a688cb --- /dev/null +++ b/asset.php @@ -0,0 +1,23 @@ + + + + + + + +'; + } +?> + +
+ Asset:
+
' . $row->asset_name . '
+ + \ No newline at end of file diff --git a/assetadd.php b/assetadd.php new file mode 100644 index 0000000..4020431 --- /dev/null +++ b/assetadd.php @@ -0,0 +1,80 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $asset_name = $_POST['asset_name']; + $hostname = $_POST['hostname']; + $assetclass_id = $_POST['assetclass_id']; + $asset_info = $_POST['asset_info']; + mysql_query("INSERT INTO asset (asset_name, hostname, assetclass_id, asset_info) VALUE ('$asset_name', '$hostname', '$assetclass_id', '$asset_info')") or die(mysql_error()); + $asset_id = mysql_insert_id(); + + header_location("assetview.php?asset_id=" . $asset_id); + } +?> + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ Add asset:
+
+ Asset name: + + +
+ Hostname: + + +
+ Asset class: + + +
+ Asset info: + + +
+ +
+
+ + \ No newline at end of file diff --git a/assetclass.php b/assetclass.php new file mode 100644 index 0000000..1ebdd87 --- /dev/null +++ b/assetclass.php @@ -0,0 +1,23 @@ + + + + + + + +'; + } +?> + +
+ Assetclass:
+
' . $row->assetclass_name . '
+ + \ No newline at end of file diff --git a/assetclassadd.php b/assetclassadd.php new file mode 100644 index 0000000..636bf35 --- /dev/null +++ b/assetclassadd.php @@ -0,0 +1,63 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $assetclass_name = $_POST['assetclass_name']; + $assetclassgroup_id = $_POST['assetclassgroup_id']; + mysql_query("INSERT INTO assetclass (assetclass_name, assetclassgroup_id) VALUE ('$assetclass_name', '$assetclassgroup_id')") or die(mysql_error()); + $assetclass_id = mysql_insert_id(); + + header_location("assetclassview.php?assetclass_id=" . $assetclass_id); + } +?> + +
+ + + + + + + + + + + + + + + +
+ Add new assetclass:
+
+ Assetclass name: + + +
+ Assetclass Group:
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/assetclassedit.php b/assetclassedit.php new file mode 100644 index 0000000..90063d4 --- /dev/null +++ b/assetclassedit.php @@ -0,0 +1,78 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $assetclass_id = $_POST['assetclass_id']; + $assetclass_name = $_POST['assetclass_name']; + $assetclassgroup_id = $_POST['assetclassgroup_id']; + mysql_query("UPDATE assetclass SET assetclass_name='$assetclass_name', assetclassgroup_id='$assetclassgroup_id' WHERE assetclass_id='$assetclass_id'") or die(mysql_error()); + + header_location("assetclassview.php?assetclass_id=" . $assetclass_id); + } + + $assetclass_id = $_GET['assetclass_id']; + + // get current information + $result = mysql_query("SELECT assetclass_name, assetclassgroup_id FROM assetclass WHERE assetclass_id='$assetclass_id'"); + while ($row = mysql_fetch_object($result)) { + $assetclass_name = $row->assetclass_name; + $assetclassgroup_id = $row->assetclassgroup_id; + } +?> + +
+ + + + + + + + + + + + + + + + +
+ Edit assetclass:
+
+ Assetclass name: + + +
+ Assetclass Group:
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/assetclassgroupview.php b/assetclassgroupview.php new file mode 100644 index 0000000..31abeb9 --- /dev/null +++ b/assetclassgroupview.php @@ -0,0 +1,51 @@ +assetclassgroup_name; + $color = $row->color; + } +?> + + + + + + + + + + + + + + +
+ Assetclass Groupname: + + +
+ Color: + + +
+ Assetclass(es): + + +assetclass_id . '">' . $row->assetclass_name . '
'; + } +?> + +
+ + \ No newline at end of file diff --git a/assetclassview.php b/assetclassview.php new file mode 100644 index 0000000..22c290c --- /dev/null +++ b/assetclassview.php @@ -0,0 +1,70 @@ +assetclass_name; + $assetclassgroup_id = $row->assetclassgroup_id; + $assetclassgroup_name = $row->assetclassgroup_name; + } +?> + + + + + + + + + + + + + + +
+ Assetclass Name: + + +
+ Assetclass Groupname: + + +
+ Asset(s):
+
+ +asset_id . '">' . $row->asset_name . '
'; + } +?> + +
+ +

+ += 2) { +?> + + + + + +
+ Modify assetclass +
+ + \ No newline at end of file diff --git a/assetdel.php b/assetdel.php new file mode 100644 index 0000000..a6dfec0 --- /dev/null +++ b/assetdel.php @@ -0,0 +1,17 @@ += 2) { + + $asset_id = $_GET['asset_id']; + mysql_query("DELETE FROM asset WHERE asset_id='$asset_id'") or die(mysql_error()); + mysql_query("DELETE FROM node WHERE asset_id='$asset_id'") or die(mysql_error()); + + header("Location: asset.php"); + + // end display only if admin + } + + include("footer.php"); +?> \ No newline at end of file diff --git a/assetedit.php b/assetedit.php new file mode 100644 index 0000000..e796a64 --- /dev/null +++ b/assetedit.php @@ -0,0 +1,96 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $asset_id = $_POST['asset_id']; + $asset_name = $_POST['asset_name']; + $hostname = $_POST['hostname']; + $assetclass_id = $_POST['assetclass_id']; + $asset_info = $_POST['asset_info']; + mysql_query("UPDATE asset SET asset_name='$asset_name', hostname='$hostname', assetclass_id='$assetclass_id', asset_info='$asset_info' WHERE asset_id='$asset_id'") or die(mysql_error()); + + header_location("assetview.php?asset_id=" . $asset_id); + } + + $asset_id = $_GET['asset_id']; + + // get current information + $result = mysql_query("SELECT asset_name, hostname, assetclass_id, asset_info FROM asset WHERE asset_id='$asset_id'"); + while ($row = mysql_fetch_object($result)) { + $asset_name = $row->asset_name; + $hostname = $row->hostname; + $assetclass_id = $row->assetclass_id; + $asset_info = $row->asset_info; + } +?> + +

+ + + + + + + + + + + + + + + + + + + + + + + + +
+ Edit asset:
+
+ Asset name: + + +
+ Hostname: + + +
+ Asset class: + + +
+ Asset info: + + +
+ +
+
+ + \ No newline at end of file diff --git a/assetview.php b/assetview.php new file mode 100644 index 0000000..f1c1533 --- /dev/null +++ b/assetview.php @@ -0,0 +1,158 @@ +asset_name; + $hostname = $row->hostname; + $asset_info = $row->asset_info; + $assetclass_id = $row->assetclass_id; + $assetclass_name = $row->assetclass_name; + } +?> + + + + + + + + + + + + + + + + + + +
+ Asset name: + + +
+ Hostname: + + +
+ Asset class: + + +
+ Asset info: + + +
+ +node_id; + $ip = $row->ip; + $mac = write_mac($row->mac); + $dns1 = $row->dns1; + $dns2 = $row->dns2; + $subnet_id = $row->subnet_id; + $node_info = $row->node_info; + $subnet_address = $row->subnet_address; + $subnet_mask = $row->subnet_mask; + $nodecount++; +?> + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+   + + Node # +
+ IP Address: + + +
+ Subnet: + + / +
+ MAC Address: + + +
+ DNS name: + + +
+ DNS alias: + + +
+ Node info: + + +
+ += 2) { +?> + +

+ + + + + + + + +
+ Modify asset +
+ Delete asset +
+ + \ No newline at end of file diff --git a/assigniptoasset.php b/assigniptoasset.php new file mode 100644 index 0000000..70b0f3b --- /dev/null +++ b/assigniptoasset.php @@ -0,0 +1,115 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $ip = $_POST['ip']; + $mac = strip_mac($_POST['mac']); + $subnet_id = $_POST['subnet_id']; + $asset_id = $_POST['asset_id']; + $node_info = $_POST['node_info']; + + // DNS1 + if (!empty($_POST['dns1']) && isset($_POST['dns1suffix'])) { + $dns1 = $_POST['dns1'] . $config_dns1suffix; + } else { + $dns1 = $_POST['dns1']; + } + + // DNS2 + if (!empty($_POST['dns2']) && isset($_POST['dns2suffix'])) { + $dns2 = $_POST['dns2'] . $config_dns2suffix; + } else { + $dns2 = $_POST['dns2']; + } + + mysql_query("INSERT INTO node (ip, mac, dns1, dns2, subnet_id, asset_id, node_info) VALUE ('$ip', '$mac', '$dns1', '$dns2', '$subnet_id', '$asset_id', '$node_info')") or die(mysql_error()); + + header_location("assetview.php?asset_id=" . $asset_id); + } + + $ip = $_GET['ip']; + $subnet_id = $_GET['subnet_id']; +?> + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Assign :
+
+ Asset: + + +
+ MAC address: + + +
+ DNS name: + + + + +
+ DNS alias: + + + + +
+ Node info: + + +
+ +
+
+ + \ No newline at end of file diff --git a/assigniptonode.php b/assigniptonode.php new file mode 100644 index 0000000..24c34ae --- /dev/null +++ b/assigniptonode.php @@ -0,0 +1,59 @@ +subnet_address; + $subnet_mask = $row->subnet_mask; + } +?> + + + + + + + + + + +
+ IP: + + +
+ Subnet: + + / +
+ += 2) { +?> + +

+ + + + + + + + +
+ Assign IP to asset +
+ Create new asset +
+ + \ No newline at end of file diff --git a/assignlocationtosubnet.php b/assignlocationtosubnet.php new file mode 100644 index 0000000..edb6e3f --- /dev/null +++ b/assignlocationtosubnet.php @@ -0,0 +1,53 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $location_id = $_POST['location_id']; + $subnet_id = $_POST['subnet_id']; + + mysql_query("INSERT INTO subnetlocation (location_id, subnet_id) VALUE ('$location_id', '$subnet_id')") or die(mysql_error()); + + header("Location: location.php"); + } + + $location_id = $_GET['location_id']; +?> + +

+ + + + + + + + + +
+ Assign to:
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/assignsubnettolocation.php b/assignsubnettolocation.php new file mode 100644 index 0000000..29ea59c --- /dev/null +++ b/assignsubnettolocation.php @@ -0,0 +1,58 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $location_id = $_POST['location_id']; + $subnet_id = $_POST['subnet_id']; + + mysql_query("INSERT INTO subnetlocation (location_id, subnet_id) VALUE ('$location_id', '$subnet_id')") or die(mysql_error()); + + header("Location: subnet.php"); + } + + $subnet_id = $_GET['subnet_id']; +?> + +
+ + + + + + + + + +
+ Assign to:
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/assignvlantosubnet.php b/assignvlantosubnet.php new file mode 100644 index 0000000..4744d47 --- /dev/null +++ b/assignvlantosubnet.php @@ -0,0 +1,53 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $vlan_id = $_POST['vlan_id']; + $subnet_id = $_POST['subnet_id']; + + mysql_query("UPDATE subnet SET vlan_id='$vlan_id' WHERE subnet_id='$subnet_id'") or die(mysql_error()); + + header("location: vlan.php"); + } + + $vlan_id = $_GET['vlan_id']; +?> + +
+ + + + + + + + + +
+ Assign to:
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/config.php b/config.php new file mode 100644 index 0000000..cec84b7 --- /dev/null +++ b/config.php @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/dbconnect.php b/dbconnect.php new file mode 100644 index 0000000..3b1007c --- /dev/null +++ b/dbconnect.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..ce69cc7 --- /dev/null +++ b/footer.php @@ -0,0 +1,20 @@ + + +
+ + + + + +
+ IP Reg +
+ + + + + \ No newline at end of file diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..1ae6e4c --- /dev/null +++ b/functions.php @@ -0,0 +1,69 @@ +location_name); + + // repeat + location_name($row->parent, '.'); + } + + // count total no. of found locations + $location_count = count($location_name); + + // display location for every array value + for ($i = 0; $i < $location_count; $i++ ) { + echo '' . $location_name[$i] . '' . $seperator; + } + } + + // calculate page for pagination (pagination is used in subnetview.php) + function page($ip) { + $iprange = explode('.', $ip); + $iprange3 = $iprange[2]; + + return $iprange3; + } +?> \ No newline at end of file diff --git a/header.php b/header.php new file mode 100644 index 0000000..0bb996a --- /dev/null +++ b/header.php @@ -0,0 +1,65 @@ + + +
+ IP Reg + + +
+ +
+ + + + + +
+ View by: Asset - + Assetclass - + Location - + Subnet - + VLAN  + .: + +displayname . ' - '; + } +?> + + Options - + Log out +
+
+ +
\ No newline at end of file diff --git a/images/arrow.gif b/images/arrow.gif new file mode 100644 index 0000000..b2e8788 Binary files /dev/null and b/images/arrow.gif differ diff --git a/images/black.jpg b/images/black.jpg new file mode 100644 index 0000000..6f6430d Binary files /dev/null and b/images/black.jpg differ diff --git a/images/blue.jpg b/images/blue.jpg new file mode 100644 index 0000000..f8eda18 Binary files /dev/null and b/images/blue.jpg differ diff --git a/images/cross.jpg b/images/cross.jpg new file mode 100644 index 0000000..a37ce9c Binary files /dev/null and b/images/cross.jpg differ diff --git a/images/green.jpg b/images/green.jpg new file mode 100644 index 0000000..901e8b4 Binary files /dev/null and b/images/green.jpg differ diff --git a/images/grey.jpg b/images/grey.jpg new file mode 100644 index 0000000..87461ba Binary files /dev/null and b/images/grey.jpg differ diff --git a/images/orange.jpg b/images/orange.jpg new file mode 100644 index 0000000..3a4b8c3 Binary files /dev/null and b/images/orange.jpg differ diff --git a/images/red.jpg b/images/red.jpg new file mode 100644 index 0000000..8915766 Binary files /dev/null and b/images/red.jpg differ diff --git a/index.php b/index.php new file mode 100644 index 0000000..36c5aaa --- /dev/null +++ b/index.php @@ -0,0 +1,81 @@ + + + + + + +
+ IP Reg +
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Statistics: +
+ Assets: + + +
+ Locations: + + +
+ Nodes: + + +
+ Subnets: + + +
+ VLANs: + + +
+ + \ No newline at end of file diff --git a/install/install.sql b/install/install.sql new file mode 100644 index 0000000..f0f930d --- /dev/null +++ b/install/install.sql @@ -0,0 +1,136 @@ +-- +-- Table structure for table `asset` +-- + +CREATE TABLE `asset` ( + `asset_id` int(10) NOT NULL auto_increment, + `asset_name` varchar(100) NOT NULL default '', + `hostname` varchar(100) NOT NULL default '', + `assetclass_id` int(10) NOT NULL default '0', + `asset_info` text NOT NULL, + PRIMARY KEY (`asset_id`) +) ; + +-- +-- Table structure for table `assetclass` +-- + +CREATE TABLE `assetclass` ( + `assetclass_id` int(10) NOT NULL auto_increment, + `assetclassgroup_id` int(10) NOT NULL default '0', + `assetclass_name` varchar(100) NOT NULL default '', + PRIMARY KEY (`assetclass_id`) +) ; + +INSERT INTO `assetclass` VALUES ('', 1, 'Access device'); +INSERT INTO `assetclass` VALUES ('', 1, 'Firewall'); +INSERT INTO `assetclass` VALUES ('', 1, 'HUB'); +INSERT INTO `assetclass` VALUES ('', 1, 'Router'); +INSERT INTO `assetclass` VALUES ('', 1, 'Switch'); +INSERT INTO `assetclass` VALUES ('', 2, 'Server'); +INSERT INTO `assetclass` VALUES ('', 2, 'NAS'); +INSERT INTO `assetclass` VALUES ('', 3, 'IP Phone'); +INSERT INTO `assetclass` VALUES ('', 4, 'Laptop'); +INSERT INTO `assetclass` VALUES ('', 4, 'PC'); +INSERT INTO `assetclass` VALUES ('', 4, 'Printer'); +INSERT INTO `assetclass` VALUES ('', 4, 'Thin Client'); + +-- +-- Table structure for table `assetclassgroup` +-- + +CREATE TABLE `assetclassgroup` ( + `assetclassgroup_id` int(10) NOT NULL auto_increment, + `assetclassgroup_name` varchar(100) NOT NULL default '', + `color` varchar(10) NOT NULL default '', + PRIMARY KEY (`assetclassgroup_id`) +) ; + +INSERT INTO `assetclassgroup` VALUES ('', 'Network', 'green'); +INSERT INTO `assetclassgroup` VALUES ('', 'Servers', 'red'); +INSERT INTO `assetclassgroup` VALUES ('', 'VOIP', 'orange'); +INSERT INTO `assetclassgroup` VALUES ('', 'Workstations', 'blue'); +INSERT INTO `assetclassgroup` VALUES ('', 'Other', 'black'); + +-- +-- Table structure for table `location` +-- + +CREATE TABLE `location` ( + `location_id` int(10) NOT NULL auto_increment, + `location_name` varchar(100) NOT NULL default '', + `parent` int(1) NOT NULL default '0', + `location_info` text NOT NULL, + PRIMARY KEY (`location_id`) +) ; + +-- +-- Table structure for table `node` +-- + +CREATE TABLE `node` ( + `node_id` int(10) NOT NULL auto_increment, + `ip` varchar(15) NOT NULL default '', + `mac` varchar(12) NOT NULL default '', + `dns1` varchar(100) NOT NULL default '', + `dns2` varchar(100) NOT NULL default '', + `subnet_id` int(10) NOT NULL default '0', + `asset_id` int(10) NOT NULL default '0', + `node_info` text NOT NULL, + PRIMARY KEY (`node_id`) +) ; + +-- +-- Table structure for table `subnet` +-- + +CREATE TABLE `subnet` ( + `subnet_id` int(10) NOT NULL auto_increment, + `subnet_address` varchar(15) NOT NULL default '', + `subnet_mask` int(2) NOT NULL default '0', + `vlan_id` int(10) NOT NULL default '0', + `subnet_info` text NOT NULL, + PRIMARY KEY (`subnet_id`) +) ; + +-- +-- Table structure for table `subnetlocation` +-- + +CREATE TABLE `subnetlocation` ( + `subnetlocation_id` int(10) NOT NULL auto_increment, + `subnet_id` int(10) NOT NULL default '0', + `location_id` int(10) NOT NULL default '0', + PRIMARY KEY (`subnetlocation_id`) +) ; + +-- +-- Table structure for table `user` +-- + +CREATE TABLE `user` ( + `user_id` int(10) NOT NULL auto_increment, + `user_name` varchar(100) NOT NULL default '', + `user_pass` varchar(32) NOT NULL default '', + `user_level` int(1) NOT NULL default '0', + `displayname` varchar(100) NOT NULL default '', + PRIMARY KEY (`user_id`) +) ; + +-- +-- Dumping data for table `user` +-- + +INSERT INTO `user` VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 2, 'admin'); + +-- +-- Table structure for table `vlan` +-- + +CREATE TABLE `vlan` ( + `vlan_id` int(10) NOT NULL auto_increment, + `vlan_number` int(3) NOT NULL default '0', + `vlan_name` varchar(100) NOT NULL default '', + `vlan_info` text NOT NULL, + PRIMARY KEY (`vlan_id`) +) ; \ No newline at end of file diff --git a/install/install.txt b/install/install.txt new file mode 100644 index 0000000..ec41738 --- /dev/null +++ b/install/install.txt @@ -0,0 +1,18 @@ +--- +--- IP Reg 0.1 +--- http://ipreg.sourceforge.net +--- + +Installation instructions + +1) Copy all files to your webserver + +2) Create your MYSQL-database + +3) Use install.sql to create the tables and insert the first data + +4) Update config.php with your settings + +5) Start your browser, log in with admin/admin + +6) Please report your comments at http://ipreg.sourceforge.net \ No newline at end of file diff --git a/location.php b/location.php new file mode 100644 index 0000000..314e587 --- /dev/null +++ b/location.php @@ -0,0 +1,48 @@ +subnet_id . '">' . $row->subnet_address . '/' . $row->subnet_mask . '
'; + } + + return $subnet; + } + + // displaysubnet link (or not) + if (isset($_GET['displaysubnet'])) { + $displaysubnetlink = '(hide subnets)'; + } else { + $displaysubnetlink = '(display subnets)'; + } + + // "menu" + function display_children($parent, $level) { + $result = mysql_query("SELECT location_id, location_name FROM location WHERE parent='$parent' ORDER BY location_name"); + while ($row = mysql_fetch_object($result)) { + if (isset($_GET['displaysubnet'])) { + $displaysubnet = display_subnet($row->location_id); + } else { + $displaysubnet = ''; + } + echo '' . str_repeat('   ',$level) . '' . $row->location_name . ' ' . $displaysubnet . ''; + display_children($row->location_id, $level+1); + } + } +?> + + + + + + +
+ Location: +
+ + \ No newline at end of file diff --git a/locationadd.php b/locationadd.php new file mode 100644 index 0000000..d68bb59 --- /dev/null +++ b/locationadd.php @@ -0,0 +1,62 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $location_name = $_POST['location_name']; + $parent = $_POST['parent']; + mysql_query("INSERT INTO location (location_name, parent) VALUE ('$location_name', '$parent')") or die(mysql_error()); + $location_id = mysql_insert_id(); + + header_location("locationview.php?location_id=" . $location_id); + } +?> + +

+ + + + + + + + + + + + + + + +
+ Add new location:
+
+ Location name: + + +
+ Parent: + + +
+ +
+
+ + \ No newline at end of file diff --git a/locationedit.php b/locationedit.php new file mode 100644 index 0000000..9d5f1ee --- /dev/null +++ b/locationedit.php @@ -0,0 +1,87 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $location_id = $_POST['location_id']; + $location_name = $_POST['location_name']; + $parent = $_POST['parent']; + $location_info = $_POST['location_info']; + mysql_query("UPDATE location SET location_name='$location_name', parent='$parent', location_info='$location_info' WHERE location_id='$location_id'") or die(mysql_error()); + + header_location("locationview.php?location_id=" . $location_id); + } + + $location_id = $_GET['location_id']; + + // get current information + $result = mysql_query("SELECT location_name, parent, location_info FROM location WHERE location_id='$location_id'"); + while ($row = mysql_fetch_object($result)) { + $location_name = $row->location_name; + $location_info = $row->location_info; + $parent = $row->parent; + } +?> + +
+ + + + + + + + + + + + + + + + + + + + +
+ Edit location:
+
+ Location name: + + +
+ Parent: + + +
+ Location info: + + +
+ +
+
+ + \ No newline at end of file diff --git a/locationview.php b/locationview.php new file mode 100644 index 0000000..d043cb4 --- /dev/null +++ b/locationview.php @@ -0,0 +1,90 @@ +location_info; + } +?> + + + + + + + + + + + + + + + + + + +
+ Location name: + + +
+ Location info: + + +
+ Subnet(s): + + +subnet_id . '">' . $row->subnet_address . '/' . $row->subnet_mask . '
'; + } +?> + +
+ Sub-location(s): + + +location_id . '">' . $row->location_name . '
'; + } +?> + +
+ += 2) { +?> + +

+ + + + + + + + +
+ Modify location +
+ Assign subnet +
+ + \ No newline at end of file diff --git a/login.php b/login.php new file mode 100644 index 0000000..8dcda3a --- /dev/null +++ b/login.php @@ -0,0 +1,89 @@ + "" && trim($_POST['user_pass']) <> "") { + $user_name = $_POST['user_name']; + $result = mysql_query("SELECT user_id, user_pass, user_level FROM user WHERE user_name='$user_name'") or die(mysql_error()); + + if(mysql_num_rows($result) > 0) { + if(!strcmp(md5($_POST['user_pass']), mysql_result($result, 0, "user_pass"))) { + // all ok, user logged in + $_SESSION['suser_id'] = mysql_result($result, 0, "user_id"); + $_SESSION['suser_level'] = mysql_result($result, 0, "user_level"); + + header("Location: index.php"); + } else { + // not ok, break session + $_SESSION = array(); + session_destroy(); + } + // clear mysql-result + mysql_free_result($result); + } + } + echo 'Error!'; + } +?> + + +

+ IP Reg + + +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
+ IP Reg +
+ Username: + + +
+ Password: + + +
+ +
+
+ +
+ + + + + +
+ IP Reg +
+ + + \ No newline at end of file diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..5e2e145 --- /dev/null +++ b/logout.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/nodeadd.php b/nodeadd.php new file mode 100644 index 0000000..bb201c5 --- /dev/null +++ b/nodeadd.php @@ -0,0 +1,191 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $ip = str_replace(' ', '', $_POST['ip']); + + // IP in use? + $result = mysql_query("SELECT * FROM node WHERE ip='$ip'"); + if (mysql_num_rows($result)!=0) { + echo 'IP in use!'; + exit; + } else { + $asset_name = $_POST['asset_name']; + $hostname = $_POST['hostname']; + $assetclass_id = $_POST['assetclass_id']; + mysql_query("INSERT INTO asset (asset_name, hostname, assetclass_id) VALUE ('$asset_name', '$hostname', '$assetclass_id')") or die(mysql_error()); + + // get asset_id for new node + $asset_id = mysql_insert_id(); + $mac = strip_mac($_POST['mac']); + + // DNS1 + if (!empty($_POST['dns1']) && isset($_POST['dns1suffix'])) { + $dns1 = $_POST['dns1'] . $config_dns1suffix; + } else { + $dns1 = $_POST['dns1']; + } + + // DNS2 + if (!empty($_POST['dns2']) && isset($_POST['dns2suffix'])) { + $dns2 = $_POST['dns2'] . $config_dns2suffix; + } else { + $dns2 = $_POST['dns2']; + } + + $subnet_id = $_POST['subnet_id']; + mysql_query("INSERT INTO node (ip, mac, dns1, dns2, subnet_id, asset_id) VALUE ('$ip', '$mac', '$dns1', '$dns2', '$subnet_id', '$asset_id')") or die(mysql_error()); + $node_id = mysql_insert_id(); + + header_location("assetview.php?asset_id=" . $asset_id); + } + } + + // check for ip + if (isset($_GET['ip'])) { + $ip = $_GET['ip']; + } else { + $ip = ""; + } + // check for subnet_id + if (isset($_GET['subnet_id'])) { + $subnet_id = $_GET['subnet_id']; + } else { + $subnet_id = ''; + } +?> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Add new node:
+
+ Asset name: + + + + * +
+ Hostname: + + + +   +
+ IP Address: + + + + * +
+ Subnet:
+
+ + + * +
+ Asset class: + + + + * +
+ MAC Address: + + + +   +
+ DNS name: + + + + +
+ DNS alias: + + + + +
+ +
+
+ + \ No newline at end of file diff --git a/nodedel.php b/nodedel.php new file mode 100644 index 0000000..12929c1 --- /dev/null +++ b/nodedel.php @@ -0,0 +1,23 @@ += 2) { + + $node_id = $_GET['node_id']; + + // get asset id + $result = mysql_query("SELECT asset_id FROM node WHERE node_id='$node_id'") or die(mysql_error()); + $asset_id = mysql_result($result, 0, "asset_id"); + + // delete node + mysql_query("DELETE FROM node WHERE node_id='$node_id'") or die(mysql_error()); + + // redirect + header("Location: assetview.php?asset_id=" . $asset_id); + + // end display only if admin + } + + include("footer.php"); +?> \ No newline at end of file diff --git a/nodeedit.php b/nodeedit.php new file mode 100644 index 0000000..142c597 --- /dev/null +++ b/nodeedit.php @@ -0,0 +1,129 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $node_id = $_POST['node_id']; + $subnet_id = $_POST['subnet_id']; + $mac = strip_mac($_POST['mac']); + $dns1 = $_POST['dns1']; + $dns2 = $_POST['dns2']; + $node_info = $_POST['node_info']; + mysql_query("UPDATE node SET subnet_id='$subnet_id', mac='$mac', dns1='$dns1', dns2='$dns2', node_info='$node_info' WHERE node_id='$node_id'") or die(mysql_error()); + + header_location("nodeview.php?node_id=" . $node_id); + } + + $node_id = $_GET['node_id']; + + // get node info + $result = mysql_query("SELECT a.asset_name, n.ip, n.mac, n.dns1, n.dns2, n.subnet_id, n.node_info FROM asset a, node n WHERE node_id='$node_id' AND a.asset_id=n.asset_id"); + while ($row = mysql_fetch_object($result)) { + $ip = $row->ip; + $subnet_id = $row->subnet_id; + $mac = $row->mac; + $dns1 = $row->dns1; + $dns2 = $row->dns2; + $node_info = $row->node_info; + $asset_name = $row->asset_name; + } +?> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Edit node:
+
+ Asset: + + +
+ IP Address: + + +
+ Subnet:
+
+ + + * +
+ MAC Address: + + +
+ DNS name: + + +
+ DNS alias: + + +
+ Node info: + + +
+ +
+
+ + \ No newline at end of file diff --git a/nodelist.php b/nodelist.php new file mode 100644 index 0000000..103e649 --- /dev/null +++ b/nodelist.php @@ -0,0 +1,80 @@ + + + + + + + + + + + + +asset_id; + $asset_name = $row->asset_name; + $hostname = $row->hostname; + $node_id = $row->node_id; + $ip = $row->ip; + $mac = write_mac($row->mac); + $dns1 = $row->dns1; + $dns2 = $row->dns2; +?> + + + + + + + + + + + + +
+ IP Address: + + Asset name: + + Hostname: + + MAC Address: + + DNS name: + + DNS alias: +
+ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/nodeview.php b/nodeview.php new file mode 100644 index 0000000..9a913e3 --- /dev/null +++ b/nodeview.php @@ -0,0 +1,109 @@ +asset_id; + $asset_name = $row->asset_name; + $ip = $row->ip; + $mac = write_mac($row->mac); + $dns1 = $row->dns1; + $dns2 = $row->dns2; + $node_info = $row->node_info; + $subnet_id = $row->subnet_id; + $subnet_address = $row->subnet_address; + $subnet_mask = $row->subnet_mask; + } +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ IP Address: + + +
+ Subnet + + / +
 
+ Asset name: + + +
+ MAC Address: + + +
+ DNS name: + + +
+ DNS alias: + + +
+ Node info: + + +
+ += 2) { +?> + +

+ + + + + + + + +
+ Modify node +
+ Delete node +
+ + \ No newline at end of file diff --git a/options.php b/options.php new file mode 100644 index 0000000..51a27a7 --- /dev/null +++ b/options.php @@ -0,0 +1,77 @@ += 2) { +?> + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ IP Reg options +
+ Add new asset +
+ Add new assetclass +
+ Add new location +
+ Add new node +
+ Add new user +
+ Add new subnet +
+ Add new vlan +
+ + +

+ + + + + + + + + + + +
+ Personal options +
+ Modify settings +
+ Modify password +
+ + \ No newline at end of file diff --git a/search.php b/search.php new file mode 100644 index 0000000..b64da98 --- /dev/null +++ b/search.php @@ -0,0 +1,103 @@ +'; + + // look for asset + $result = mysql_query("SELECT asset_id, asset_name FROM asset WHERE asset_name LIKE '$needle' OR asset_info LIKE '%$needle%' ORDER BY asset_name"); + if (mysql_num_rows($result)>0) { + echo 'Asset(s):'; + } + while ($row = mysql_fetch_object($result)) { + echo '' . $row->asset_name . ''; + $resultcounter++; + } + + // look for location + $result = mysql_query("SELECT location_id, location_name FROM location WHERE location_name LIKE '$needle' OR location_info LIKE '%$needle%' ORDER BY location_name"); + if (mysql_num_rows($result)>0) { + echo 'Location(s):'; + } + while ($row = mysql_fetch_object($result)) { + echo '' . $row->location_name . ''; + $resultcounter++; + } + + // look for ip + $result = mysql_query("SELECT node_id, ip FROM node WHERE ip LIKE '$needle' ORDER BY ip"); + if (mysql_num_rows($result)>0) { + echo 'Registered IP(s):'; + } + while ($row = mysql_fetch_object($result)) { + echo '' . $row->ip . ''; + $resultcounter++; + } + + // look for mac + $mac = strip_mac($needle); + $result = mysql_query("SELECT node_id, mac FROM node WHERE mac LIKE '$mac' ORDER BY mac"); + if (mysql_num_rows($result)>0) { + echo 'MAC(s):'; + } + while ($row = mysql_fetch_object($result)) { + echo '' . write_mac($row->mac) . ''; + $resultcounter++; + } + + // look for dns1 + $result = mysql_query("SELECT node_id, dns1 FROM node WHERE dns1 LIKE '$needle' ORDER BY dns1"); + if (mysql_num_rows($result)>0) { + echo 'DNS name(s):'; + } + while ($row = mysql_fetch_object($result)) { + echo '' . $row->dns1 . ''; + $resultcounter++; + } + + // look for dns2 + $result = mysql_query("SELECT node_id, dns2 FROM node WHERE dns2 LIKE '$needle' ORDER BY dns2"); + if (mysql_num_rows($result)>0) { + echo 'DNS alias(es):'; + } + while ($row = mysql_fetch_object($result)) { + echo '' . $row->dns2 . ''; + $resultcounter++; + } + + // look for subnet + $result = mysql_query("SELECT subnet_id, subnet_address FROM subnet WHERE subnet_address LIKE '$needle' OR subnet_info LIKE '%$needle%' ORDER BY subnet_address"); + if (mysql_num_rows($result)>0) { + echo 'Subnet(s):'; + } + while ($row = mysql_fetch_object($result)) { + echo '' . $row->subnet_address . ''; + $resultcounter++; + } + + // look for vlan + $result = mysql_query("SELECT vlan_id, vlan_name FROM vlan WHERE vlan_name LIKE '$needle' OR vlan_info LIKE '%$needle%' ORDER BY vlan_name"); + if (mysql_num_rows($result)>0) { + echo 'VLAN(s):'; + } + while ($row = mysql_fetch_object($result)) { + echo '' . $row->vlan_name . ''; + $resultcounter++; + } + + echo ' '; + echo 'Results found: ' . $resultcounter . ''; + + echo ''; + + include("footer.php"); +?> \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..399be96 --- /dev/null +++ b/style.css @@ -0,0 +1,39 @@ +body { + background-color: #FFFFFF; + color: #000000; + font-family: Verdana, Arial, Helvetica, Sans-serif; + margin: 12px; + margin-top: 12px; + font-size: 70%; +} + +a { + color: #466A8D; +} + +a:hover { + color: #E1B100; +} + +input { + font-size: 100%; + position: relative; + top: -2px; + font-family: Verdana, Arial, Helvetica, Sans-serif; +} + +select { + font-size: 100%; + font-family: Verdana, Sans-serif; + position: relative; + top: -2px; +} + +table { + font-size: 100%; +} + +td { + vertical-align: top; + height: 18px; +} \ No newline at end of file diff --git a/subnet.php b/subnet.php new file mode 100644 index 0000000..24ac45b --- /dev/null +++ b/subnet.php @@ -0,0 +1,23 @@ + + + + + + + +'; + } +?> + +
+ Subnet:
+
' . $row->subnet_address . '/' . $row->subnet_mask . '
+ + \ No newline at end of file diff --git a/subnetadd.php b/subnetadd.php new file mode 100644 index 0000000..abee6b3 --- /dev/null +++ b/subnetadd.php @@ -0,0 +1,54 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $subnet_address= $_POST['subnet_address']; + $subnet_mask = $_POST['subnet_mask']; + mysql_query("INSERT INTO subnet (subnet_address, subnet_mask) VALUE ('$subnet_address', '$subnet_mask')") or die(mysql_error()); + $subnet_id = mysql_insert_id(); + + header_location("subnetview.php?subnet_id=" . $subnet_id); + } +?> + +

+ + + + + + + + + + + + + + + +
+ Add new subnet:
+
+ Subnet Address: + + +
+ Subnet Mask: + + (16-30) +
+ +
+
+ + \ No newline at end of file diff --git a/subnetedit.php b/subnetedit.php new file mode 100644 index 0000000..5a12ef6 --- /dev/null +++ b/subnetedit.php @@ -0,0 +1,100 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $subnet_id = $_POST['subnet_id']; + $subnet_address= $_POST['subnet_address']; + $subnet_mask = $_POST['subnet_mask']; + $vlan_id = $_POST['vlan_id']; + $subnet_info = $_POST['subnet_info']; + + mysql_query("UPDATE subnet SET subnet_address='$subnet_address', subnet_mask='$subnet_mask', vlan_id='$vlan_id', subnet_info='$subnet_info' WHERE subnet_id='$subnet_id'") or die(mysql_error()); + + header_location("subnetview.php?subnet_id=" . $subnet_id); + } + + $subnet_id = $_GET['subnet_id']; + + // get current information + $result = mysql_query("SELECT subnet_address, subnet_mask, vlan_id, subnet_info FROM subnet WHERE subnet_id='$subnet_id'"); + while ($row = mysql_fetch_object($result)) { + $subnet_address = $row->subnet_address; + $subnet_mask = $row->subnet_mask; + $vlan_id = $row->vlan_id; + $subnet_info = $row->subnet_info; + } +?> + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ Edit subnet:
+
+ Subnet Address: + + +
+ Subnet Mask: + + +
+ VLAN + + +
+ Subnet info: + + +
+ +
+
+ + \ No newline at end of file diff --git a/subnetview.php b/subnetview.php new file mode 100644 index 0000000..cb17fcf --- /dev/null +++ b/subnetview.php @@ -0,0 +1,229 @@ + + + + + +subnet_address; + $subnet_mask = $row->subnet_mask; + $vlan_id = $row->vlan_id; + $subnet_info = $row->subnet_info; + } + + // determine current range + $iprange = explode('.', $subnet_address); + $iprange1 = $iprange[0]; + $iprange2 = $iprange[1]; + $iprange3 = $iprange[2]; + $iprange4 = $iprange[3]; + + // calculate no. of hosts + $hostcount = pow(2,(32-$subnet_mask)); + + // is there a need for pagination? + if ($hostcount>256) { + $maxdisplayedip = 256; + + // calculate broadcast address and create pagination + if ($hostcount>65536) { + // class A subnet + echo 'Class A subnets (>65536 nodes) are not supported'; + exit; + } else { + // class B subnet + $broadcast_address = $iprange1 . '.' . $iprange2 . '.' . ($hostcount/256-1) . '.255'; + + $pagination = 'Page: '; + } + } else { + // // class C subnet so no pagination needed, set static variables + $pagination = ' '; + $page = 0; + $maxdisplayedip = $hostcount; + $broadcast_address = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$hostcount-1); + } +?> + + + + + + + +'; + + for ($i=1;$i<=$maxdisplayedip;$i++) { + // build current ip + $ip = $iprange1 . '.' . $iprange2 . '.' . ($iprange3+$page) . '.' . ($i+$iprange4-1); + + // disable subnet_address and broadcast_address + if ($ip==$subnet_address) { + echo ''; + } else if ($ip==$broadcast_address) { + echo ''; + } else { + // check for current ip address + $result = mysql_query("SELECT a.asset_name, acg.color, n.node_id FROM asset a, assetclass ac, assetclassgroup acg, node n WHERE n.ip='$ip' AND a.asset_id=n.asset_id AND ac.assetclass_id=a.assetclass_id AND acg.assetclassgroup_id=ac.assetclassgroup_id"); + if (mysql_num_rows($result)==0) { + // ip not in use + echo ''; + } else { + // ip in use + while ($row = mysql_fetch_object($result)) { + $node_id = $row->node_id; + echo ''; + } + } + } + + if ($i%64==0) { + echo ''; + } + } +?> + + + +
+ Subnet: + + +
+   +
+ + + + + + + +
+ + + + + + + + + + + + + +
+ VLAN(s): + + + vlan_id . '">' . $row->vlan_name . ' ('. $row->vlan_number . ')'; + } + ?> + +
+ Location(s): + + + location_id, '') . '
'; + } + ?> + +
+ Subnet info: + + +
+
+   + + + + + + +'; + } +?> +
+ Unassigned +
' . $row->assetclassgroup_name . '
+
+ +

+ += 2) { +?> + + + + + + + + + + + + + + +
+ Modify subnet +
+ Assign location +
+ View assigned IP addresses in subnet +
+ + \ No newline at end of file diff --git a/useradd.php b/useradd.php new file mode 100644 index 0000000..a7e3ad4 --- /dev/null +++ b/useradd.php @@ -0,0 +1,70 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + // check for unique username + $result = mysql_query("SELECT user_name FROM user WHERE user_name='$user_name'") or die(mysql_error()); + if(mysql_num_rows($result) == 0) { + $user_name = $_POST['user_name']; + $user_pass = md5($config_user_pass); + $user_level = $_POST['user_level']; + $displayname = $_POST['user_name']; + mysql_query("INSERT INTO user (user_name, user_pass, user_level, displayname) VALUE ('$user_name', '$user_pass', '$user_level', '$displayname')") or die(mysql_error()); + + header_location("options.php"); + } + echo 'Error!'; + } +?> + +

+ + + + + + + + + + + + + + + + + + + +
+ Add user:
+
+ Username: + + +
+ Password: + + +
+ Level: + +
+ +
+
+ + \ No newline at end of file diff --git a/useredit.php b/useredit.php new file mode 100644 index 0000000..f65ff9d --- /dev/null +++ b/useredit.php @@ -0,0 +1,47 @@ +displayname; + } +?> + +
+ + + + + + + + + + + +
+ Modify settings:
+
+ Displayname: + + +
+ +
+
+ + \ No newline at end of file diff --git a/userpassedit.php b/userpassedit.php new file mode 100644 index 0000000..de10972 --- /dev/null +++ b/userpassedit.php @@ -0,0 +1,75 @@ + "" && trim($_POST['user_passnew1']) && trim($_POST['user_passnew2']) && trim($_POST['user_passnew1']) == trim($_POST['user_passnew2'])) { + $user_passold = $_POST['user_passold']; + $user_passnew = md5($_POST['user_passnew1']); + + $result = mysql_query("SELECT user_pass FROM user WHERE user_id='$suser_id'") or die(mysql_error()); + // check current pass + if(!strcmp(md5($user_passold), mysql_result($result, 0, "user_pass"))) { + // ok, update pass + mysql_query("UPDATE user SET user_pass='$user_passnew' WHERE user_id='$suser_id'") or die(mysql_error()); + + header_location("options.php"); + } + } + + // not ok + echo 'Error!'; + } + + // get current information + $result = mysql_query("SELECT displayname FROM user WHERE user_id='$suser_id'"); + while ($row = mysql_fetch_object($result)) { + $displayname = $row->displayname; + } +?> + +
+ + + + + + + + + + + + + + + + + + + +
+ Modify settings:
+
+ Current password: + + +
+ New password: + + +
+ Retype new password: + + +
+ +
+
+ + \ No newline at end of file diff --git a/vlan.php b/vlan.php new file mode 100644 index 0000000..1eeef11 --- /dev/null +++ b/vlan.php @@ -0,0 +1,23 @@ + + + + + + + +'; + } +?> + +
+ VLAN:
+
' . $row->vlan_name . ' ('. $row->vlan_number . ')
+ + \ No newline at end of file diff --git a/vlanadd.php b/vlanadd.php new file mode 100644 index 0000000..ebd64c9 --- /dev/null +++ b/vlanadd.php @@ -0,0 +1,53 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $vlan_name = $_POST['vlan_name']; + $vlan_number= $_POST['vlan_number']; + mysql_query("INSERT INTO vlan (vlan_name, vlan_number) VALUE ('$vlan_name', '$vlan_number')") or die(mysql_error()); + + header("Location: vlan.php"); + } +?> + +
+ + + + + + + + + + + + + + + +
+ Add new VLAN:
+
+ VLAN name: + + +
+ VLAN ID: + + +
+ +
+
+ + \ No newline at end of file diff --git a/vlanedit.php b/vlanedit.php new file mode 100644 index 0000000..c876865 --- /dev/null +++ b/vlanedit.php @@ -0,0 +1,72 @@ += 2) { + + // check for submit + if ($_SERVER['REQUEST_METHOD']=="POST" ) { + $vlan_id = $_POST['vlan_id']; + $vlan_name = $_POST['vlan_name']; + $vlan_number = $_POST['vlan_number']; + $vlan_info = $_POST['vlan_info']; + mysql_query("UPDATE vlan SET vlan_name='$vlan_name', vlan_number='$vlan_number', vlan_info='$vlan_info' WHERE vlan_id='$vlan_id'") or die(mysql_error()); + + header_location("vlanview.php?vlan_id=" . $vlan_id); + } + + // get current information + $result = mysql_query("SELECT vlan_name, vlan_number, vlan_info FROM vlan WHERE vlan_id='$vlan_id'"); + while ($row = mysql_fetch_object($result)) { + $vlan_name = $row->vlan_name; + $vlan_number = $row->vlan_number; + $vlan_info = $row->vlan_info; + } +?> + +
+ + + + + + + + + + + + + + + + + + + + +
+ Edit VLAN:
+
+ VLAN name: + + +
+ VLAN ID: + + +
+ VLAN info: + + +
+ +
+
+ + \ No newline at end of file diff --git a/vlanview.php b/vlanview.php new file mode 100644 index 0000000..b1e71bd --- /dev/null +++ b/vlanview.php @@ -0,0 +1,83 @@ +vlan_name; + $vlan_number = $row->vlan_number; + $vlan_info = $row->vlan_info; + } +?> + + + + + + + + + + + + + + + + + + +
+ VLAN name: + + +
+ VLAN ID: + + +
+ VLAN info: + + +
+ Subnet(s): + +subnet_id . '">' . $row->subnet_address . '
'; + } +?> + +
+ += 2) { +?> + +

+ + + + + + + + +
+ Modify +
+ Assign subnet +
+ + \ No newline at end of file