diff --git a/about.php b/about.php
index c063027..6998c67 100644
--- a/about.php
+++ b/about.php
@@ -12,5 +12,5 @@ include("header.php");
$smarty->display("about.tpl");
-include("footer.php");
+$smarty->display("footer.tpl");
?>
\ No newline at end of file
diff --git a/asset.php b/asset.php
index 131849a..27e60b6 100644
--- a/asset.php
+++ b/asset.php
@@ -58,6 +58,24 @@ switch ($submit = form_get_action()) {
$sth->execute([$asset_name, $asset_info, $asset_hostname,
$assetclass_id, $asset_intf, $asset_type,
$id]);
+
+ // Ext. links
+ if ($config_ext['zabbix']['enabled'] and isset($_POST['x_zbx_host'])) {
+ $zbx_host = sanitize($_POST['x_zbx_host']);
+ $sql = "SELECT extlink_id FROM extlink WHERE asset_id=? AND extlink_type='zabbix'";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$id]);
+ if ($linkid = $sth->fetchColumn()) {
+ $sql = "UPDATE extlink SET extlink_refid=? WHERE extlink_id=?";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$zbx_host, $linkid]);
+ } else {
+ $sql = "INSERT INTO extlink (asset_id, extlink_type, extlink_refid) VALUES (?, 'zabbix', ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$id, $zbx_host]);
+ }
+ }
+
$action = ACT_VIEW;
break;
@@ -165,7 +183,19 @@ $smarty->assign("nodes", $sth->fetchAll(PDO::FETCH_ASSOC));
// ID: extlink_refid int
// extlink_uid string
-// $sql = "SELECT extlink_id, extlink_type, extlink_refid, extlink_uid FROM extline WHERE extlink_asset_id=?";
+if ($config_ext['zabbix']['enabled']) {
+ $smarty->assign("zabbix", true);
+ $sql = "SELECT extlink_refid FROM extlink WHERE extlink_type='zabbix' AND asset_id=?";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$id]);
+ $refid = $sth->fetchColumn();
+ // TODO fetch ext data here
+ //$zbx = new PDO('mysql:host='.$config_ext['zabbix']['host'].';dbname='.$config_ext['zabbix']['db'].';', $config_ext['zabbix']['user'], $config_ext['zabbix']['pass']);
+ //$zbx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ //$zbx->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
+ $smarty->assign('refid', $refid);
+}
+
$smarty->display("assetview.tpl");
@@ -186,6 +216,8 @@ $smarty->assign("type_names", ['Active', 'Passive']);
$smarty->assign("assetclass_options", db_get_options_assetclass());
+
+
$smarty->display("assetedit.tpl");
elseif ($action == ACT_DELETE):
diff --git a/assigniptonode.php b/assigniptonode.php
deleted file mode 100644
index 89de0d4..0000000
--- a/assigniptonode.php
+++ /dev/null
@@ -1,29 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-$smarty->assign("node_ip", $node_ip);
-
-$smarty->display("assigniptonode.tpl");
-
-include("footer.php");
-?>
diff --git a/assignnodetoasset.php b/assignnodetoasset.php
deleted file mode 100644
index 035b43a..0000000
--- a/assignnodetoasset.php
+++ /dev/null
@@ -1,28 +0,0 @@
-assign("node_ip", $node_ip);
-$smarty->assign("asset_id", $asset_id);
-$smarty->assign("subnet_id", $subnet_id);
-
-$smarty->assign("asset_options", db_get_options_asset());
-$smarty->assign("subnet_options", db_get_options_subnet());
-
-$smarty->display("assignnodetoasset.tpl");
-
-include("footer.php");
-?>
diff --git a/cable.php b/cable.php
index a7d8d53..bb25d2c 100644
--- a/cable.php
+++ b/cable.php
@@ -10,7 +10,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php");
if ($_SESSION['suser_role_admin'] == 0) {
- header_location('comments.php?comments=accessdenied');
+ $g_error->add('Access denied!');
+ $action = ACT_ERR_DENIED;
}
if (isset($_REQUEST['id'])) {
@@ -33,23 +34,43 @@ switch ($submit = form_get_action()) {
case 'insert':
$description = sanitize($_POST['description']);
+ $length = sanitize($_POST['length']);
$color = sanitize($_POST['color']);
$type = sanitize($_POST['cable_type']);
$links = sanitize($_POST['links']);
$info = sanitize($_POST['info']);
$sql = "INSERT INTO cable
- (cable_description, cable_color, cable_type, cable_links, cable_info)
+ (cable_description, cable_color, cable_type, cable_links,
+ cable_length, cable_info)
VALUES
- (:description, :color, :type, :links, :info)";
+ (:description, :color, :type, :links,
+ :length, :info)";
$sth = $dbh->prepare($sql);
- $sth->bindValue(':description', $description, PDO::PARAM_STR);
- $sth->bindValue(':color', $color, PDO::PARAM_STR);
- $sth->bindValue(':type', $type, PDO::PARAM_STR);
- $sth->bindValue(':links', $info, PDO::PARAM_INT);
- $sth->bindValue(':info', $info, PDO::PARAM_STR);
- $sth->execute();
- $id = $dbh->lastInsertId();
- $action = ACT_VIEW;
+ try {
+ $sth->bindValue(':description', $description, PDO::PARAM_STR);
+ $sth->bindValue(':length', $length, PDO::PARAM_INT);
+ $sth->bindValue(':color', $color, PDO::PARAM_STR);
+ $sth->bindValue(':type', $type, PDO::PARAM_STR);
+ $sth->bindValue(':links', $info, PDO::PARAM_INT);
+ $sth->bindValue(':info', $info, PDO::PARAM_STR);
+ $sth->execute();
+ $id = $dbh->lastInsertId();
+ $action = ACT_VIEW;
+ } catch (PDOException $e) {
+ $g_error->Add($e->getMessage());
+ if ($e->getCode() == 23000) {
+ // duplicate key
+ $g_warning->Add("Save failed");
+ $g_warning->Add("Cable description '$description' already in use!");
+ }
+ // reassign entered values
+ $smarty->assign('length', $length);
+ $smarty->assign('type', $type);
+ $smarty->assign('links', $links);
+ $smarty->assign('color', $color);
+ $smarty->assign('info', $info);
+ $action = ACT_ADD;
+ }
break;
case 'update':
@@ -156,6 +177,14 @@ $smarty->assign('description', $sth->fetchColumn());
$smarty->display('cabledel.tpl');
+elseif ($action == ACT_ERR_DENIED):
+// ========== ERROR ACCESS TO PAGE DENIED =====================================
+
+if (isset($_SERVER['HTTP_REFERER'])) {
+ echo '
', "Back to last page
\n";
+}
+echo "";
+
else:
// ========== ERROR UNKNOWN VARIANT ===========================================
diff --git a/comments.php b/comments.php
deleted file mode 100644
index f450c38..0000000
--- a/comments.php
+++ /dev/null
@@ -1,22 +0,0 @@
-assign("comments", $lang['lang_comments_' . $comments]);
-
-$smarty->display("comments.tpl");
-
-include("footer.php");
-?>
diff --git a/index.php b/index.php
index 031717f..5086928 100644
--- a/index.php
+++ b/index.php
@@ -55,5 +55,5 @@ $smarty->assign("cable_counter", $sth->fetchColumn());
$smarty->display("index.tpl");
-include("footer.php");
+$smarty->display("footer.tpl");
?>
diff --git a/lib.php b/lib.php
index 8f8f1eb..cd26015 100644
--- a/lib.php
+++ b/lib.php
@@ -10,6 +10,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
// ========== CONSTANT DEFINITIONS ============================================
// page actions
+define ('ACT_ERR_DENIED', -1);
define ('ACT_DEFAULT', 0);
define ('ACT_ADD', 1);
define ('ACT_VIEW', 2);
@@ -24,6 +25,7 @@ define ('ACT_LINK', 10);
define ('ACT_UNLINK', 11);
define ('ACT_MAIL', 12);
define ('ACT_VIEW_LIST', 13);
+define ('ACT_PASSWORD', 14);
// ========== GLOBAL PAGE START CODE ==========================================
diff --git a/location.php b/location.php
index d317ef3..4da2f16 100644
--- a/location.php
+++ b/location.php
@@ -46,6 +46,12 @@ function checkchildren($locations, $level) {
}
}
+// ========== ADDITIONAL ACTION DEFINITIONS ===================================
+
+define ('ACT_SUBNET_EDIT', 100);
+define ('ACT_SUBNET_ADD', 101);
+define ('ACT_SUBNET_DEL', 102);
+
// ========== ACTIONS START ===================================================
switch ($submit = form_get_action()) {
@@ -55,6 +61,17 @@ switch ($submit = form_get_action()) {
case 'view': $action = ACT_VIEW; break;
case 'edit': $action = ACT_EDIT; break;
case 'del': $action = ACT_DELETE; break;
+ case 'link': $action = ACT_SUBNET_EDIT; break;
+
+ case 'exec-link':
+ if ($_POST['action'] == 'locationsubnetadd') {
+ $action = ACT_SUBNET_ADD;
+ } elseif ($_POST['action'] == 'locationsubnetdel') {
+ $action = ACT_SUBNET_DEL;
+ } else {
+ $g_warning->Add('invalid action!'. $_POST['action']);
+ }
+ break;
case 'insert':
$name = sanitize($_POST['location_name']);
@@ -84,6 +101,22 @@ switch ($submit = form_get_action()) {
$action = ACT_VIEW;
break;
+ case 'subnetlink':
+ $subnet_id = sanitize($_POST['subnet_id']);
+ $sql = "INSERT INTO subnetlocation (location_id, subnet_id) VALUE (?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$id, $subnet_id]);
+ $action = ACT_VIEW;
+ break;
+
+ case 'subnetunlink':
+ $subnet_id = sanitize($_POST['subnet_id']);
+ $sth = $dbh->prepare("DELETE FROM subnetlocation WHERE location_id=? AND subnet_id=?");
+ $sth->execute([$id, $subnet_id]);
+ $g_message->Add('Link removed');
+ $action = ACT_VIEW;
+ break;
+
case 'delete':
$sth = $dbh->prepare("DELETE FROM location WHERE location_id=?");
$sth->execute([$id]);
@@ -118,7 +151,7 @@ function build_tree($parent_id, $level) {
unset($location['parent_id']);
$location['children'] = build_tree($location['id'], $level+1);
$location['level'] = $level;
- $location['href'] = 'locationview.php?location_id=' . $location['id'];
+ $location['href'] = 'location.php?f=view&id=' . $location['id'];
$children[] = $location;
}
}
@@ -166,7 +199,7 @@ elseif ($action == ACT_VIEW):
// base location
$sql = "SELECT location_id AS id, location_name AS name,
location_parent AS parent_id, location_info AS info,
- CONCAT('locationview.php?location_id=', location_id) AS url
+ CONCAT('location.php?f=view&id=', location_id) AS url
FROM location
WHERE location_id=?";
$sth = $dbh->prepare($sql);
@@ -178,7 +211,7 @@ $smarty->assign("location", $location);
$crumbs[] = $location;
$sql = "SELECT location_id AS id, location_name AS name,
location_parent AS parent_id,
- CONCAT('locationview.php?location_id=', location_id) AS url
+ CONCAT('location.php?f=view&id=', location_id) AS url
FROM location
WHERE location_id=?";
$sth = $dbh->prepare($sql);
@@ -243,7 +276,7 @@ $location_counter = count($locations);
$smarty->assign("location_counter", $location_counter);
-// any loactions?
+// any locations?
if ($location_counter>0) {
foreach($locations AS $location) {
$location_names[$location['location_id']] = $location['location_name'];
@@ -259,6 +292,59 @@ $smarty->assign("location_parent", $location_parent);
$smarty->display("locationedit.tpl");
+elseif ($action == ACT_SUBNET_EDIT):
+// ========== VARIANT: location to subnet =====================================
+
+$sql = "SELECT location_id AS id, location_name AS name
+ FROM location
+ WHERE location_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->display("locationsubnetedit.tpl");
+
+elseif ($action == ACT_SUBNET_ADD):
+// ========== VARIANT: add location to subnet =================================
+
+$sql = "SELECT location_id AS id, location_name AS name
+ FROM location
+ WHERE location_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
+
+// TODO Filter für bereits zugeordnete Subnetze
+$smarty->assign("subnet_options", db_get_options_subnet());
+
+$smarty->display("locationsubnetadd.tpl");
+
+elseif ($action == ACT_SUBNET_DEL):
+// ========== VARIANT: del location to subnet =================================
+
+// location
+$sql = "SELECT location_id AS id, location_name AS name
+ FROM location
+ WHERE location_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
+
+// subnet
+$sql = "SELECT s.subnet_id, CONCAT_WS('/', s.subnet_address, s.subnet_mask)
+ FROM subnetlocation AS l LEFT JOIN subnet AS s USING (subnet_id)
+ WHERE l.location_id=?
+ ORDER BY INET_ATON(s.subnet_address)";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$options = array();
+foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
+ $options[$rec[0]] = $rec[1];
+}
+$smarty->assign("subnet_options", $options);
+
+$smarty->display("locationsubnetdel.tpl");
+
elseif ($action == ACT_DELETE):
// ========== VARIANT: delete record ==========================================
diff --git a/locationadd.php b/locationadd.php
deleted file mode 100644
index db5c8ba..0000000
--- a/locationadd.php
+++ /dev/null
@@ -1,75 +0,0 @@
-{$lang_option_none}
-
-$sql = "SELECT location_id AS id, location_name AS name,
- location_parent AS parent, location_sort AS sort
- FROM location
- ORDER BY location_parent, location_sort, location_name";
-$sth = $dbh->query($sql);
-$locations = $sth->fetchAll();
-
-if (count($locations) > 0) {
- foreach ($locations AS $location) {
- $location_names[$location['id']] = $location['name'];
- $parents[$location['parent']][] = $location['id'];
- }
-}
-
-// look for parents
-// function to look for parents and create a new array for every child
-function location($parents, $parent = 0) {
- foreach ($parents[$parent] as $child) {
- if (isset($parents[$child])) {
- // element has children
- $children[$child] = location($parents, $child);
- } else {
- // no children, set NULL
- $children[$child] = NULL;
- }
- }
- return $children;
-}
-
-// recursive children check to template
-function checkchildren($locations, $level) {
- global $location_options;
- global $location_names;
- global $location_parent;
-
- foreach ($locations as $parent=>$child) {
- $row = str_repeat("- ", $level) . $location_names[$parent];
- $location_options[$parent] = $row;
- if (isset($child)) {
- checkchildren($child, $level+1);
- }
- }
-}
-
-$tree = location($parents);
-
-// create tree option list
-$location_options = array(0 => '-');
-checkchildren($tree, 0);
-
-$smarty->assign("location_options", $location_options);
-$smarty->assign("location_parent", $location_parent);
-
-$smarty->display("locationadd.tpl");
-
-include("footer.php");
-?>
diff --git a/locationdel.php b/locationdel.php
deleted file mode 100644
index bebea1e..0000000
--- a/locationdel.php
+++ /dev/null
@@ -1,24 +0,0 @@
-prepare($sql);
-$sth->execute([$location_id]);
-$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->display("locationdel.tpl");
-
-include("footer.php");
-?>
diff --git a/locationedit.php b/locationedit.php
deleted file mode 100644
index a9cc492..0000000
--- a/locationedit.php
+++ /dev/null
@@ -1,98 +0,0 @@
-prepare($sql);
-$sth->execute([$location_id]);
-$location = $sth->fetch(PDO::FETCH_OBJ);
-
-$location_parent = $location->parent;
-
-$smarty->assign("location", $location);
-
-/*$smarty->assign("location_id", $location_id);
-$smarty->assign("location_name", $location[0]['location_name']);
-$smarty->assign("location_info", $location[0]['location_info']);
-$smarty->assign("location_sort", $location[0]['location_sort']); */
-
-// parent location
-$sql = "SELECT location_id, location_name, location_parent
- FROM location
- WHERE location_id != ?
- ORDER BY location_name";
-$sth = $dbh->prepare($sql);
-$sth->execute([$location_id]);
-
-$locations = $sth->fetchAll();
-
-$location_counter = count($locations);
-
-$smarty->assign("location_counter", $location_counter);
-
-// any loactions?
-if ($location_counter>0) {
- foreach($locations AS $location) {
- $location_names[$location['location_id']] = $location['location_name'];
- $parents[$location['location_parent']][] = $location['location_id'];
- }
-}
-
-// look for parents
-// function to look for parents and create a new array for every child
-function location($parents, $parent = 0) {
- // loop array to check
- foreach($parents[$parent] as $child) {
- if(isset($parents[$child])) {
- // element has children
- $children[$child] = location($parents, $child);
- } else {
- // no children, set NULL
- $children[$child] = NULL;
- }
- }
-
- // and again...
- return $children;
-}
-
-// recursive children check to template
-function checkchildren($locations, $level) {
- global $location_options;
- global $location_names;
- global $location_parent;
-
- foreach ($locations as $parent=>$child) {
- $row = str_repeat("- ", $level) . $location_names[$parent];
- $location_options[$parent] = $row;
- if(isset($child)) {
- checkchildren($child, $level+1);
- }
- }
-}
-
-$tree = location($parents);
-$location_options = array(0 => '-');
-checkchildren($tree, 0);
-$smarty->assign("location_options", $location_options);
-$smarty->assign("location_parent", $location_parent);
-
-$smarty->display("locationedit.tpl");
-
-include("footer.php");
-?>
diff --git a/locationsubnetadd.php b/locationsubnetadd.php
deleted file mode 100644
index 8e91434..0000000
--- a/locationsubnetadd.php
+++ /dev/null
@@ -1,28 +0,0 @@
-prepare($sql);
-$sth->execute([$location_id]);
-$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->assign("subnet_options", db_get_options_subnet());
-
-$smarty->display("locationsubnetadd.tpl");
-
-include("footer.php");
-?>
diff --git a/locationsubnetdel.php b/locationsubnetdel.php
deleted file mode 100644
index 4d7eb02..0000000
--- a/locationsubnetdel.php
+++ /dev/null
@@ -1,44 +0,0 @@
-prepare($sql);
-$sth->execute([$location_id]);
-$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
-
-
-// subnet
-$sql = "SELECT
- s.subnet_id,
- s.subnet_address,
- s.subnet_mask
- FROM
- subnetlocation AS l LEFT JOIN subnet AS s USING (subnet_id)
- WHERE
- l.location_id=?
- ORDER BY
- INET_ATON(s.subnet_address)";
-$sth = $dbh->prepare($sql);
-$sth->execute([$location_id]);
-
-$smarty->assign($sth->fetchAll());
-
-$smarty->display("locationsubnetdel.tpl");
-
-include("footer.php");
-?>
diff --git a/locationsubnetedit.php b/locationsubnetedit.php
deleted file mode 100644
index 213592e..0000000
--- a/locationsubnetedit.php
+++ /dev/null
@@ -1,26 +0,0 @@
-prepare($sql);
-$sth->execute([$location_id]);
-$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->display("locationsubnetedit.tpl");
-
-include("footer.php");
-?>
diff --git a/locationview.php b/locationview.php
deleted file mode 100644
index 50b1fad..0000000
--- a/locationview.php
+++ /dev/null
@@ -1,67 +0,0 @@
-prepare($sql);
-$sth->execute([$location_id]);
-$location = $sth->fetch(PDO::FETCH_OBJ);
-$smarty->assign("location", $location);
-
-// crumbs
-$crumbs[] = $location;
-$sql = "SELECT location_id AS id, location_name AS name,
- location_parent AS parent_id,
- CONCAT('locationview.php?location_id=', location_id) AS url
- FROM location
- WHERE location_id=?";
-$sth = $dbh->prepare($sql);
-while ($crumbs[0]->parent_id != 0) {
- $sth->execute([$crumbs[0]->parent_id]);
- $result = $sth->fetch(PDO::FETCH_OBJ);
- array_unshift($crumbs, $result);
-}
-$smarty->assign("crumbs", $crumbs);
-
-// sublocations
-$sql = "SELECT location_id AS sublocation_id, location_name AS sublocation_name,
- LEFT(location_info, 40) AS info_short,
- CHAR_LENGTH(location_info) AS info_length
- FROM location
- WHERE location_parent=?
- ORDER BY location_name";
-$sth = $dbh->prepare($sql);
-$sth->execute([$location_id]);
-$smarty->assign("sublocations", $sth->fetchAll());
-
-// subnets
-$sql = "SELECT s.subnet_id, s.subnet_address, s.subnet_mask
- FROM subnet AS s LEFT JOIN subnetlocation AS l USING (subnet_id)
- WHERE l.location_id=?
- ORDER BY INET_ATON(s.subnet_address)";
-$sth = $dbh->prepare($sql);
-$sth->execute([$location_id]);
-$smarty->assign("subnets", $sth->fetchAll());
-
-$smarty->display("locationview.tpl");
-
-include("footer.php");
-?>
diff --git a/nat.php b/nat.php
index b9d8c26..61138e1 100644
--- a/nat.php
+++ b/nat.php
@@ -8,7 +8,50 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
-
+
+if (isset($_REQUEST['id'])) {
+ $id = (int) $_REQUEST['id'] or $id = 0;
+}
+
+// ========== ACTIONS START ===================================================
+switch ($submit = form_get_action()) {
+
+ case NULL: break;
+
+ case 'add': $action = ACT_ADD; break;
+ case 'view': $action = ACT_VIEW; break;
+ case 'edit': $action = ACT_EDIT; break;
+ case 'del': $action = ACT_DELETE; break;
+
+ case 'insert':
+ $node_id_ext = sanitize($_POST['node_id_ext']);
+ $node_id_int = sanitize($_POST['node_id_int']);
+ $nat_type = sanitize($_POST['nat_type']);
+
+ $sql = "INSERT INTO nat (nat_ext, nat_int, nat_type)
+ VALUE (?, ?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$node_id_ext, $node_id_int, $nat_type]);
+
+ header_location("node.php?f=view&id=$node_id_ext");
+ break;
+
+ case 'delete':
+ $node_id_ext = sanitize($_POST['node_id_ext']);
+ $sth = $dbh->prepare("DELETE FROM nat WHERE nat_id=?");
+ $sth->execute([$id]);
+ // TODO
+ // header_location("node.php?f=view&id=" . $node_id_ext);
+ $action = ACT_DEFAULT;
+ break;
+
+ default:
+ $g_error->Add(submit_error($submit));
+ $valid = FALSE;
+}
+
+// ========== ACTIONS END =====================================================
+
include("header.php");
$sql = "SELECT n.nat_id AS id, n.nat_type, n.nat_ext, n.nat_int,
@@ -24,5 +67,121 @@ $smarty->assign("nats", $sth->fetchAll());
$smarty->display("nat.tpl");
-include("footer.php");
+if ($action == ACT_DEFAULT):
+// ========== VARIANT: default behavior =======================================
+
+
+elseif ($action == ACT_ADD):
+// ========== VARIANT: add record =============================================
+
+$node_id = sanitize($_GET['node_id']);
+
+// node_ext
+$sql = "SELECT node_ip AS node_ip_ext
+ FROM node
+ WHERE node_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$node_id]);
+
+$node = $sth->fetch(PDO::FETCH_OBJ);
+
+$smarty->assign("node_id_ext", $node_id);
+$smarty->assign("node_ip_ext", $node->node_ip_ext);
+
+// node_int
+$sql = "SELECT
+ a.asset_name,
+ n.node_id AS node_id_int,
+ n.node_ip AS node_ip_int
+ FROM
+ asset AS a LEFT JOIN node AS n USING (asset_id)
+ WHERE
+ n.node_id NOT IN (
+ SELECT
+ nat_int
+ FROM
+ nat
+ WHERE
+ nat_ext=?
+ )
+ AND n.node_id!=?
+ ORDER BY
+ INET_ATON(n.node_ip)";
+$sth = $dbh->prepare($sql);
+$sth->execute([$node_id, $node_id]);
+
+$nodes = $sth->fetchAll();
+
+foreach ($nodes as $rec) {
+ $node_options[$rec['node_id_int']] = $rec['node_ip_int'] . '/' . $rec['asset_name'];
+}
+$smarty->assign("node_options", $node_options);
+
+$nat_type_options[1] = $lang['lang_nat_type_1'];
+$nat_type_options[2] = $lang['lang_nat_type_2'];
+$nat_type_options[3] = $lang['lang_nat_type_3'];
+$smarty->assign("nat_type_options", $nat_type_options);
+
+$smarty->display("natadd.tpl");
+
+elseif ($action == ACT_VIEW):
+// ========== VARIANT: view single record =====================================
+
+$sql = "SELECT nat_id AS id, nat_type AS type, nat_ext, nat_int FROM nat WHERE nat_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("nat", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->display("natview.tpl");
+
+elseif ($action == ACT_EDIT):
+// ========== VARIANT: edit single record =====================================
+
+$node_id = sanitize($_GET['node_id']);
+
+$sql = "SELECT node_id AS id, node_ip AS ip FROM node WHERE node.node_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$node_id]);
+$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->display("natedit.tpl");
+
+elseif ($action == ACT_DELETE):
+// ========== VARIANT: delete record ==========================================
+
+$node_id = sanitize($_GET['node_id']);
+
+// node_ext
+$sth = $dbh->prepare("SELECT node_id AS id_ext, node_ip AS ip_ext FROM node WHERE node_id=?");
+$sth->execute([$node_id]);
+$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
+
+// options
+$sql = "SELECT x.nat_id, n.node_ip, a.asset_name
+ FROM nat AS x
+ LEFT JOIN node AS n ON (x.nat_int=n.node_id)
+ LEFT JOIN asset AS a USING (asset_id)
+ WHERE x.nat_ext=?
+ ORDER BY INET_ATON(n.node_ip)";
+$sth = $dbh->prepare($sql);
+$sth->execute([$node_id]);
+$nats = $sth->fetchAll();
+
+$options = array();
+foreach ($nats as $rec) {
+ $options[$rec['nat_id']] = $rec['node_ip'] . '/' . $rec['asset_name'];
+}
+$smarty->assign("nat_options", $options);
+
+$smarty->display("natdel.tpl");
+
+else:
+// ========== ERROR UNKNOWN VARIANT ===========================================
+
+echo "Unknown function call: Please report to system development!
\n";
+
+endif; // $action == ...
+// ========== END OF VARIANTS =================================================
+
+$smarty->display('footer.tpl');
?>
diff --git a/natadd.php b/natadd.php
deleted file mode 100644
index 02f480e..0000000
--- a/natadd.php
+++ /dev/null
@@ -1,65 +0,0 @@
-prepare($sql);
-$sth->execute([$node_id]);
-
-$node = $sth->fetch(PDO::FETCH_OBJ);
-
-$smarty->assign("node_id_ext", $node_id);
-$smarty->assign("node_ip_ext", $node->node_ip_ext);
-
-// node_int
-$sql = "SELECT
- a.asset_name,
- n.node_id AS node_id_int,
- n.node_ip AS node_ip_int
- FROM
- asset AS a LEFT JOIN node AS n USING (asset_id)
- WHERE
- n.node_id NOT IN (
- SELECT
- nat_int
- FROM
- nat
- WHERE
- nat_ext=?
- )
- AND n.node_id!=?
- ORDER BY
- INET_ATON(n.node_ip)";
-$sth = $dbh->prepare($sql);
-$sth->execute([$node_id, $node_id]);
-
-$nodes = $sth->fetchAll();
-
-foreach ($nodes as $rec) {
- $node_options[$rec['node_id_int']] = $rec['node_ip_int'] . '/' . $rec['asset_name'];
-}
-$smarty->assign("node_options", $node_options);
-
-$nat_type_options[1] = $lang['lang_nat_type_1'];
-$nat_type_options[2] = $lang['lang_nat_type_2'];
-$nat_type_options[3] = $lang['lang_nat_type_3'];
-$smarty->assign("nat_type_options", $nat_type_options);
-
-$smarty->display("natadd.tpl");
-
-include("footer.php");
-?>
diff --git a/natdel.php b/natdel.php
deleted file mode 100644
index 96a8f80..0000000
--- a/natdel.php
+++ /dev/null
@@ -1,40 +0,0 @@
-prepare("SELECT node_id AS id_ext, node_ip AS ip_ext FROM node WHERE node_id=?");
-$sth->execute([$node_id]);
-$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
-
-// options
-$sql = "SELECT x.nat_id, n.node_ip, a.asset_name
- FROM nat AS x
- LEFT JOIN node AS n ON (x.nat_int=n.node_id)
- LEFT JOIN asset AS a USING (asset_id)
- WHERE x.nat_ext=?
- ORDER BY INET_ATON(n.node_ip)";
-$sth = $dbh->prepare($sql);
-$sth->execute([$node_id]);
-$nats = $sth->fetchAll();
-
-$options = array();
-foreach ($nats as $rec) {
- $options[$rec['nat_id']] = $rec['node_ip'] . '/' . $rec['asset_name'];
-}
-$smarty->assign("nat_options", $options);
-$smarty->display("natdel.tpl");
-
-include("footer.php");
-?>
diff --git a/natedit.php b/natedit.php
deleted file mode 100644
index 63c46b6..0000000
--- a/natedit.php
+++ /dev/null
@@ -1,24 +0,0 @@
-prepare($sql);
-$sth->execute([$node_id]);
-$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->display("natedit.tpl");
-
-include("footer.php");
-?>
diff --git a/node.php b/node.php
index 196b7ce..b7eb48e 100644
--- a/node.php
+++ b/node.php
@@ -8,8 +8,115 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
+
+if (isset($_REQUEST['id'])) {
+ $id = (int) $_REQUEST['id'] or $id = 0;
+}
+
+// ========== ACTIONS START ===================================================
+switch ($submit = form_get_action()) {
+
+ case NULL: break;
+
+ case 'add': $action = ACT_ADD; break;
+ case 'link': $action = ACT_LINK; break;
+ case 'view': $action = ACT_VIEW; break;
+ case 'edit': $action = ACT_EDIT; break;
+ case 'del': $action = ACT_DELETE; break;
+
+ case 'insert':
+ // node with asset or link node to asset
+
+ $asset_name = sanitize($_POST['asset_name']);
+ $asset_hostname = sanitize($_POST['asset_hostname']);
+ $assetclass_id = sanitize($_POST['assetclass_id']);
+ $ip = sanitize($_POST['node_ip']);
+ $mac = strip_mac(sanitize($_POST['node_mac']));
+ if ((!empty($_POST['node_dns1']) && isset($_POST['dns1suffix'])) ? $dns1 = sanitize($_POST['node_dns1']) . $config_dns1suffix : $dns1 = sanitize($_POST['node_dns1']));
+ if ((!empty($_POST['node_dns2']) && isset($_POST['dns2suffix'])) ? $dns2 = sanitize($_POST['node_dns2']) . $config_dns2suffix : $dns2 = sanitize($_POST['node_dns2']));
+ $node_info = sanitize($_POST['node_info']);
+ $subnet_id = $_POST['subnet_id'];
+
+ $sql = "INSERT INTO asset (asset_name, asset_hostname, assetclass_id)
+ VALUE (?, ?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$asset_name, $asset_hostname, $assetclass_id]);
+ $asset_id = $dbh->lastInsertId();
+
+ $sql = "INSERT INTO node (
+ node_ip, node_mac, node_dns1, node_dns2, node_info,
+ subnet_id, asset_id
+ )
+ VALUES (?, ?, ?, ?, ?, ?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$ip, $mac, $dns1, $dns2, $node_info, $subnet_id, $asset_id]);
+
+ $action = ACT_VIEW;
+ break;
+
+ case 'exec-link':
+ $node_ip = sanitize($_POST['node_ip']);
+ $subnet_id = sanitize($_POST['subnet_id']);
+ $asset_id = sanitize($_POST['asset_id']);
+ $node_mac = strip_mac(sanitize($_POST['node_mac']));
+ if ((!empty($_POST['node_dns1']) && isset($_POST['node_dns1suffix'])) ? $node_dns1 = sanitize($_POST['node_dns1']) . $config_dns1suffix : $node_dns1 = sanitize($_POST['node_dns1']));
+ if ((!empty($_POST['node_dns2']) && isset($_POST['node_dns2suffix'])) ? $node_dns2 = sanitize($_POST['node_dns2']) . $config_dns2suffix : $node_dns2 = sanitize($_POST['node_dns2']));
+ $node_info = $_POST['node_info'];
+ $sql = "INSERT INTO node (
+ node_ip, node_mac, node_dns1, node_dns2, node_info,
+ subnet_id, asset_id
+ )
+ VALUES (?, ?, ?, ?, ?, ?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$node_ip, $node_mac, $node_dns1, $node_dns2, $node_info,
+ $subnet_id, $asset_id]);
+ $id = $dbh->lastInsertId();
+ $action = ACT_VIEW;
+ break;
+
+ case 'update':
+ $asset_id = sanitize($_POST['asset_id']);
+ $node_ip = sanitize($_POST['node_ip']);
+ $subnet_id = sanitize($_POST['subnet_id']);
+ $node_mac = strip_mac(sanitize($_POST['node_mac']));
+ $node_dns1 = sanitize($_POST['node_dns1']);
+ $node_dns2 = sanitize($_POST['node_dns2']);
+ $node_info = sanitize($_POST['node_info']);
+ $zone_id = sanitize($_POST['zone_id']);
+
+ $sql = "UPDATE node SET
+ asset_id=?, node_ip=?, subnet_id=?, node_mac=?,
+ node_dns1=?, node_dns2=?, node_info=?, zone_id=?
+ WHERE node_id=?";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$asset_id, $node_ip, $subnet_id, $node_mac,
+ $node_dns1, $node_dns2, $node_info, $zone_id,
+ $id]);
+ $action = ACT_VIEW;
+ break;
+
+ case 'delete':
+ $sth = $dbh->prepare("SELECT node_ip FROM node WHERE node_id=?");
+ $sth->execute([$id]);
+ $node_ip = $sth->fetchColumn();
+ $sth = $dbh->prepare("DELETE FROM node WHERE node_id=?");
+ $sth->execute([$id]);
+ $action = ACT_DEFAULT;
+ $g_message->Add(sprintf(_('Node %s deleted'), $node_ip));
+ break;
+
+ default:
+ $g_error->Add(submit_error($submit));
+ $valid = FALSE;
+}
+
+// ========== ACTIONS END =====================================================
+
include("header.php");
+if ($action == ACT_DEFAULT):
+// ========== VARIANT: default behavior =======================================
+
// filter preparation
$p = array();
$w = array();
@@ -38,8 +145,10 @@ $sql = "SELECT a.asset_id,
CONCAT(LEFT(a.asset_info,30), IF(CHAR_LENGTH(a.asset_info)>30,'...','')) AS asset_info,
REPLACE(a.asset_name, ' ', ' ') AS asset_name,
n.node_id, n.node_ip,
- CONCAT(LEFT(n.node_info,30), IF(CHAR_LENGTH(n.node_info)>30,'...','')) AS node_info
- FROM node AS n LEFT JOIN asset AS a USING (asset_id)";
+ CONCAT(LEFT(n.node_info,30), IF(CHAR_LENGTH(n.node_info)>30,'...','')) AS node_info,
+ c.assetclass_id, c.assetclass_name
+ FROM node AS n LEFT JOIN asset AS a USING (asset_id)
+ LEFT JOIN assetclass AS c USING (assetclass_id)";
if ($where) {
$sql .= ' WHERE ' . $where;
}
@@ -50,5 +159,136 @@ $smarty->assign("nodes", $sth->fetchAll());
$smarty->display("node.tpl");
-include("footer.php");
+elseif ($action == ACT_ADD):
+// ========== VARIANT: add record =============================================
+
+// add node and asset
+
+if ((isset($_GET['node_ip'])) ? $node_ip = sanitize($_GET['node_ip']) : $node_ip = '');
+if ((isset($_GET['subnet_id'])) ? $subnet_id = sanitize($_GET['subnet_id']) : $subnet_id = '');
+
+$smarty->assign("user_dns1suffix", $_SESSION['suser_dns1suffix']);
+$smarty->assign("user_dns2suffix", $_SESSION['suser_dns2suffix']);
+$smarty->assign("node_ip", $node_ip);
+$smarty->assign("subnet_id", $subnet_id);
+
+$smarty->assign("subnet_options", db_get_options_subnet());
+$smarty->assign("assetclass_options", db_get_options_assetclass());
+
+$smarty->display("nodeadd.tpl");
+
+elseif ($action == ACT_LINK):
+// ========== VARIANT: add node with existing asset ===========================
+
+// addnodetoasset
+// same as node add but with existing object
+$asset_id = sanitize($_REQUEST['asset_id']);
+$node_ip = sanitize($_REQUEST['node_ip']);
+$subnet_id = sanitize($_REQUEST['subnet_id']);
+
+$smarty->assign("node_ip", $node_ip);
+$smarty->assign("asset_id", $asset_id);
+$smarty->assign("subnet_id", $subnet_id);
+
+$smarty->assign("asset_options", db_get_options_asset());
+$smarty->assign("subnet_options", db_get_options_subnet());
+
+$smarty->display("assignnodetoasset.tpl");
+
+elseif ($action == ACT_VIEW):
+// ========== VARIANT: view single record =====================================
+
+// node
+$sql = "SELECT n.node_id AS id, n.node_ip AS ip, n.node_mac AS mac,
+ n.node_dns1 AS dns1, n.node_dns2 AS dns2, n.node_info AS info,
+ n.node_type AS type,
+ a.asset_id, a.asset_name,
+ c.assetclass_id, c.assetclass_name,
+ s.subnet_id, s.subnet_address, s.subnet_mask,
+ z.zone_origin
+ FROM node AS n LEFT JOIN asset AS a USING (asset_id)
+ LEFT JOIN assetclass AS c USING (assetclass_id)
+ LEFT JOIN subnet AS s USING (subnet_id)
+ LEFT JOIN zone AS z USING (zone_id)
+ WHERE n.node_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+
+$node = $sth->fetch(PDO::FETCH_OBJ);
+$node->mac = write_mac($node->mac);
+$smarty->assign("node", $node);
+
+// nat
+$sql = "SELECT
+ asset_ext.asset_id AS asset_id_ext,
+ asset_int.asset_id AS asset_id_int,
+ asset_ext.asset_name AS asset_name_ext,
+ asset_int.asset_name AS asset_name_int,
+ nat.nat_id AS nat_id,
+ nat.nat_type AS nat_type,
+ nat.nat_ext AS nat_ext,
+ nat.nat_int AS nat_int,
+ node_ext.node_ip AS node_ip_ext,
+ node_int.node_ip AS node_ip_int,
+ node_int.node_id AS node_id_int,
+ node_ext.node_id AS node_id_ext
+ FROM
+ asset AS asset_ext,
+ asset AS asset_int,
+ nat,
+ node AS node_ext,
+ node AS node_int
+ WHERE
+ (nat.nat_ext=:node_id OR nat.nat_int=:node_id)
+ AND node_ext.node_id=nat.nat_ext
+ AND node_int.node_id=nat.nat_int
+ AND asset_ext.asset_id=node_ext.asset_id
+ AND asset_int.asset_id=node_int.asset_id
+ ORDER BY
+ INET_ATON(node_ext.node_ip),
+ INET_ATON(node_int.node_ip)";
+
+$sth = $dbh->prepare($sql);
+$sth->execute(['node_id' => $id]);
+$smarty->assign("natrules", $sth->fetchAll());
+
+$smarty->display("nodeview.tpl");
+
+elseif ($action == ACT_EDIT):
+// ========== VARIANT: edit single record =====================================
+
+$sql = "SELECT node_id AS id, node_ip AS ip, node_mac AS mac,
+ node_dns1 AS dns1, node_dns2 AS dns2, node_info AS info,
+ zone_id, asset_id, subnet_id
+ FROM node
+ WHERE node_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->assign("asset_options", db_get_options_asset());
+$smarty->assign("subnet_options", db_get_options_subnet());
+$smarty->assign("zone_options", db_get_options_zone('(keine)'));
+
+$smarty->display("nodeedit.tpl");
+
+elseif ($action == ACT_DELETE):
+// ========== VARIANT: delete record ==========================================
+
+$sql = "SELECT node_id AS id, node_ip AS ip, asset_id FROM node WHERE node_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->display("nodedel.tpl");
+
+else:
+// ========== ERROR UNKNOWN VARIANT ===========================================
+
+echo "Unknown function call: Please report to system development!
\n";
+
+endif; // $action == ...
+// ========== END OF VARIANTS =================================================
+
+$smarty->display('footer.tpl');
?>
diff --git a/nodeadd.php b/nodeadd.php
deleted file mode 100644
index 2822677..0000000
--- a/nodeadd.php
+++ /dev/null
@@ -1,27 +0,0 @@
-assign("user_dns1suffix", $_SESSION['suser_dns1suffix']);
-$smarty->assign("user_dns2suffix", $_SESSION['suser_dns2suffix']);
-$smarty->assign("node_ip", $node_ip);
-$smarty->assign("subnet_id", $subnet_id);
-
-$smarty->assign("subnet_options", db_get_options_subnet());
-$smarty->assign("assetclass_options", db_get_options_assetclass());
-$smarty->display("nodeadd.tpl");
-
-include("footer.php");
-?>
diff --git a/nodedel.php b/nodedel.php
deleted file mode 100644
index 5a750ab..0000000
--- a/nodedel.php
+++ /dev/null
@@ -1,24 +0,0 @@
-prepare($sql);
-$sth->execute([$node_id]);
-$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->display("nodedel.tpl");
-
-include("footer.php");
-?>
diff --git a/nodeedit.php b/nodeedit.php
deleted file mode 100644
index c0ff61f..0000000
--- a/nodeedit.php
+++ /dev/null
@@ -1,32 +0,0 @@
-prepare($sql);
-$sth->execute([$node_id]);
-$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->assign("asset_options", db_get_options_asset());
-$smarty->assign("subnet_options", db_get_options_subnet());
-$smarty->assign("zone_options", db_get_options_zone('(keine)'));
-
-$smarty->display("nodeedit.tpl");
-
-include("footer.php");
-?>
diff --git a/nodeview.php b/nodeview.php
deleted file mode 100644
index e240124..0000000
--- a/nodeview.php
+++ /dev/null
@@ -1,89 +0,0 @@
-prepare($sql);
-$sth->execute([$node_id]);
-
-$node = $sth->fetch(PDO::FETCH_OBJ);
-$node->mac = write_mac($node->mac);
-$smarty->assign("node", $node);
-
-// nat
-$sql = "SELECT
- asset_ext.asset_id AS asset_id_ext,
- asset_int.asset_id AS asset_id_int,
- asset_ext.asset_name AS asset_name_ext,
- asset_int.asset_name AS asset_name_int,
- nat.nat_id AS nat_id,
- nat.nat_type AS nat_type,
- nat.nat_ext AS nat_ext,
- nat.nat_int AS nat_int,
- node_ext.node_ip AS node_ip_ext,
- node_int.node_ip AS node_ip_int,
- node_int.node_id AS node_id_int,
- node_ext.node_id AS node_id_ext
- FROM
- asset AS asset_ext,
- asset AS asset_int,
- nat,
- node AS node_ext,
- node AS node_int
- WHERE
- (nat.nat_ext=:node_id OR nat.nat_int=:node_id)
- AND node_ext.node_id=nat.nat_ext
- AND node_int.node_id=nat.nat_int
- AND asset_ext.asset_id=node_ext.asset_id
- AND asset_int.asset_id=node_int.asset_id
- ORDER BY
- INET_ATON(node_ext.node_ip),
- INET_ATON(node_int.node_ip)";
-
-$sth = $dbh->prepare($sql);
-$sth->execute(['node_id' => $node_id]);
-
-$smarty->assign("natrules", $sth->fetchAll());
-
-$smarty->display("nodeview.tpl");
-
-include("footer.php");
-?>
diff --git a/options.php b/options.php
index 769e22c..d8501b0 100644
--- a/options.php
+++ b/options.php
@@ -8,8 +8,119 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
+
+// ========== ACTIONS START ===================================================
+switch ($submit = form_get_action()) {
+
+ case NULL: break;
+
+ case 'edit': $action = ACT_EDIT; break;
+ case 'pass': $action = ACT_PASSWORD; break;
+
+ case 'update':
+ $id = $_SESSION['suser_id'];
+ $language = $_POST['user_language'];
+ $imagesize = sanitize($_POST['user_imagesize']);
+ $imagecount = sanitize($_POST['user_imagecount']);
+ $mac = sanitize($_POST['user_mac']);
+ $dateformat = sanitize($_POST['user_dateformat']);
+ $dns1suffix = sanitize($_POST['user_dns1suffix']);
+ $dns2suffix = sanitize($_POST['user_dns2suffix']);
+ $tooltips = sanitize($_POST['user_tooltips']);
+
+ $menu_assets = sanitize($_POST['user_menu_assets']);
+ $menu_assetclasses = sanitize($_POST['user_menu_assetclasses']);
+ $menu_assetclassgroups = sanitize($_POST['user_menu_assetclassgroups']);
+ $menu_cables = sanitize($_POST['user_menu_cables']);
+ $menu_locations = sanitize($_POST['user_menu_locations']);
+ $menu_nodes = sanitize($_POST['user_menu_nodes']);
+ $menu_subnets = sanitize($_POST['user_menu_subnets']);
+ $menu_vlans = sanitize($_POST['user_menu_vlans']);
+ $menu_zones = sanitize($_POST['user_menu_zones']);
+
+ // construct menu set
+ $menu = array();
+ if ($menu_assets) $menu[] = 'asset';
+ if ($menu_assetclasses) $menu[] = 'class';
+ if ($menu_assetclassgroups) $menu[] = 'group';
+ if ($menu_cables) $menu[] = 'cable';
+ if ($menu_locations) $menu[] = 'location';
+ if ($menu_nodes) $menu[] = 'node';
+ if ($menu_subnets) $menu[] = 'subnet';
+ if ($menu_vlans) $menu[] = 'vlan';
+ if ($menu_zones) $menu[] = 'zone';
+
+ $sql = "UPDATE user SET
+ user_language=?, user_imagesize=?, user_imagecount=?,
+ user_mac=?, user_dateformat=?, user_dns1suffix=?,
+ user_dns2suffix=?, user_tooltips=?, user_menu=?
+ WHERE
+ user_id=?";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$language, $imagesize, $imagecount,
+ $mac, $dateformat, $dns1suffix,
+ $dns2suffix, $tooltips, implode(',', $menu),
+ $id]);
+
+ $_SESSION['suser_language'] = $language;
+ $_SESSION['suser_imagesize'] = $imagesize;
+ $_SESSION['suser_imagecount'] = $imagecount;
+ $_SESSION['suser_mac'] = $mac;
+ $_SESSION['suser_dateformat'] = $dateformat;
+ $_SESSION['suser_dns1suffix'] = $dns1suffix;
+ $_SESSION['suser_dns2suffix'] = $dns2suffix;
+ $_SESSION['suser_menu_assets'] = $menu_assets;
+ $_SESSION['suser_menu_assetclasses'] = $menu_assetclasses;
+ $_SESSION['suser_menu_assetclassgroups'] = $menu_assetclassgroups;
+ $_SESSION['suser_menu_cables'] = $menu_cables;
+ $_SESSION['suser_menu_locations'] = $menu_locations;
+ $_SESSION['suser_menu_nodes'] = $menu_nodes;
+ $_SESSION['suser_menu_subnets'] = $menu_subnets;
+ $_SESSION['suser_menu_vlans'] = $menu_vlans;
+ $_SESSION['suser_menu_zones'] = $menu_zones;
+ $_SESSION['suser_tooltips'] = $tooltips;
+
+ $action = ACT_DEFAULT;
+ break;
+
+ case 'exec-pass':
+ $user_id = $_SESSION['suser_id'];
+ $currentpass = sanitize($_POST['user_currentpass']);
+ $newpass1 = sanitize($_POST['user_newpass1']);
+ $newpass2 = sanitize($_POST['user_newpass2']);
+ $sth = $dbh->prepare("SELECT user_pass FROM user WHERE user_id=?");
+ $sth->execute([$user_id]);
+ $userpass = $sth->fetchColumn();
+ $action = ACT_PASSWORD;
+ if (password_verify($currentpass, $userpass)) {
+ if (strlen($newpass1) >= 5) {
+ if (!strcmp($newpass1, $newpass2)) {
+ $sth = $dbh->prepare("UPDATE user SET user_pass=? WHERE user_id=?");
+ $newhash = password_hash($newpass1, PASSWORD_BCRYPT);
+ $sth->execute([$newhash, $user_id]);
+ $action = ACT_DEFAULT;
+ } else {
+ $g_error->Add('New passwords do not match!');
+ }
+ } else {
+ $g_error->Add('New password is to simple!');
+ }
+ } else {
+ $g_error->Add('Current password wrong!');
+ }
+ break;
+
+ default:
+ $g_error->Add(submit_error($submit));
+ $valid = FALSE;
+}
+
+// ========== ACTIONS END =====================================================
include("header.php");
+if ($action == ACT_DEFAULT):
+// ========== VARIANT: default behavior =======================================
+
$smarty->assign('realm', $_SESSION['suser_realm']);
$smarty->assign('role_add', $_SESSION['suser_role_add']);
$smarty->assign('role_edit', $_SESSION['suser_role_edit']);
@@ -18,5 +129,104 @@ $smarty->assign('role_manage', $_SESSION['suser_role_manage']);
$smarty->assign('role_admin', $_SESSION['suser_role_admin']);
$smarty->display("options.tpl");
-include("footer.php");
+elseif ($action == ACT_EDIT):
+// ========== VARIANT: edit display options ===================================
+
+$smarty->assign("language", $language);
+
+if($_SESSION['suser_menu_assets']=='on') {
+ $user_menu_assets_checked = 'checked';
+} else {
+ $user_menu_assets_checked = '';
+}
+// assetclasses
+if($_SESSION['suser_menu_assetclasses']=='on') {
+ $user_menu_assetclasses_checked = 'checked';
+} else {
+ $user_menu_assetclasses_checked = '';
+}
+// assetclassgroups
+if($_SESSION['suser_menu_assetclassgroups']=='on') {
+ $user_menu_assetclassgroups_checked = 'checked';
+} else {
+ $user_menu_assetclassgroups_checked = '';
+}
+// cables
+if($_SESSION['suser_menu_cables']=='on') {
+ $user_menu_cables_checked = 'checked';
+} else {
+ $user_menu_cables_checked = '';
+}
+// locations
+if($_SESSION['suser_menu_locations']=='on') {
+ $user_menu_locations_checked = 'checked';
+} else {
+ $user_menu_locations_checked = '';
+}
+// nodes
+if($_SESSION['suser_menu_nodes']=='on') {
+ $user_menu_nodes_checked = 'checked';
+} else {
+ $user_menu_nodes_checked = '';
+}
+// subnets
+if($_SESSION['suser_menu_subnets']=='on') {
+ $user_menu_subnets_checked = 'checked';
+} else {
+ $user_menu_subnets_checked = '';
+}
+// vlans
+if($_SESSION['suser_menu_vlans']=='on') {
+ $user_menu_vlans_checked = 'checked';
+} else {
+ $user_menu_vlans_checked = '';
+}
+// zones
+if($_SESSION['suser_menu_zones']=='on') {
+ $user_menu_zones_checked = 'checked';
+} else {
+ $user_menu_zones_checked = '';
+}
+// tooltips
+if($_SESSION['suser_tooltips']=='on') {
+ $user_tooltips_checked = 'checked';
+} else {
+ $user_tooltips_checked = '';
+}
+
+$smarty->assign("user_id", $_SESSION['suser_id']);
+$smarty->assign("user_imagesize", $_SESSION['suser_imagesize']);
+$smarty->assign("user_imagecount", $_SESSION['suser_imagecount']);
+$smarty->assign("user_mac", $_SESSION['suser_mac']);
+$smarty->assign("user_dateformat", $_SESSION['suser_dateformat']);
+$smarty->assign("user_dns1suffix", $_SESSION['suser_dns1suffix']);
+$smarty->assign("user_dns2suffix", $_SESSION['suser_dns2suffix']);
+$smarty->assign("user_language", $_SESSION['suser_language']);
+$smarty->assign("user_menu_assets_checked", $user_menu_assets_checked);
+$smarty->assign("user_menu_assetclasses_checked", $user_menu_assetclasses_checked);
+$smarty->assign("user_menu_assetclassgroups_checked", $user_menu_assetclassgroups_checked);
+$smarty->assign("user_menu_cables_checked", $user_menu_cables_checked);
+$smarty->assign("user_menu_locations_checked", $user_menu_locations_checked);
+$smarty->assign("user_menu_nodes_checked", $user_menu_nodes_checked);
+$smarty->assign("user_menu_subnets_checked", $user_menu_subnets_checked);
+$smarty->assign("user_menu_vlans_checked", $user_menu_vlans_checked);
+$smarty->assign("user_menu_zones_checked", $user_menu_zones_checked);
+$smarty->assign("user_tooltips_checked", $user_tooltips_checked);
+
+$smarty->display("optionseditdisplay.tpl");
+
+elseif ($action == ACT_PASSWORD):
+// ========== VARIANT: password ===============================================
+
+$smarty->display("optionseditpassword.tpl");
+
+else:
+// ========== ERROR UNKNOWN VARIANT ===========================================
+
+echo "Unknown function call: Please report to system development!
\n";
+
+endif; // $action == ...
+// ========== END OF VARIANTS =================================================
+
+$smarty->display('footer.tpl');
?>
diff --git a/optionseditdisplay.php b/optionseditdisplay.php
deleted file mode 100644
index ae868f9..0000000
--- a/optionseditdisplay.php
+++ /dev/null
@@ -1,99 +0,0 @@
-assign("language", $language);
-
-
-if($_SESSION['suser_menu_assets']=='on') {
- $user_menu_assets_checked = 'checked';
-} else {
- $user_menu_assets_checked = '';
-}
-// assetclasses
-if($_SESSION['suser_menu_assetclasses']=='on') {
- $user_menu_assetclasses_checked = 'checked';
-} else {
- $user_menu_assetclasses_checked = '';
-}
-// assetclassgroups
-if($_SESSION['suser_menu_assetclassgroups']=='on') {
- $user_menu_assetclassgroups_checked = 'checked';
-} else {
- $user_menu_assetclassgroups_checked = '';
-}
-// cables
-if($_SESSION['suser_menu_cables']=='on') {
- $user_menu_cables_checked = 'checked';
-} else {
- $user_menu_cables_checked = '';
-}
-// locations
-if($_SESSION['suser_menu_locations']=='on') {
- $user_menu_locations_checked = 'checked';
-} else {
- $user_menu_locations_checked = '';
-}
-// nodes
-if($_SESSION['suser_menu_nodes']=='on') {
- $user_menu_nodes_checked = 'checked';
-} else {
- $user_menu_nodes_checked = '';
-}
-// subnets
-if($_SESSION['suser_menu_subnets']=='on') {
- $user_menu_subnets_checked = 'checked';
-} else {
- $user_menu_subnets_checked = '';
-}
-// vlans
-if($_SESSION['suser_menu_vlans']=='on') {
- $user_menu_vlans_checked = 'checked';
-} else {
- $user_menu_vlans_checked = '';
-}
-// zones
-if($_SESSION['suser_menu_zones']=='on') {
- $user_menu_zones_checked = 'checked';
-} else {
- $user_menu_zones_checked = '';
-}
-// tooltips
-if($_SESSION['suser_tooltips']=='on') {
- $user_tooltips_checked = 'checked';
-} else {
- $user_tooltips_checked = '';
-}
-
-$smarty->assign("user_id", $_SESSION['suser_id']);
-$smarty->assign("user_imagesize", $_SESSION['suser_imagesize']);
-$smarty->assign("user_imagecount", $_SESSION['suser_imagecount']);
-$smarty->assign("user_mac", $_SESSION['suser_mac']);
-$smarty->assign("user_dateformat", $_SESSION['suser_dateformat']);
-$smarty->assign("user_dns1suffix", $_SESSION['suser_dns1suffix']);
-$smarty->assign("user_dns2suffix", $_SESSION['suser_dns2suffix']);
-$smarty->assign("user_language", $_SESSION['suser_language']);
-$smarty->assign("user_menu_assets_checked", $user_menu_assets_checked);
-$smarty->assign("user_menu_assetclasses_checked", $user_menu_assetclasses_checked);
-$smarty->assign("user_menu_assetclassgroups_checked", $user_menu_assetclassgroups_checked);
-$smarty->assign("user_menu_cables_checked", $user_menu_cables_checked);
-$smarty->assign("user_menu_locations_checked", $user_menu_locations_checked);
-$smarty->assign("user_menu_nodes_checked", $user_menu_nodes_checked);
-$smarty->assign("user_menu_subnets_checked", $user_menu_subnets_checked);
-$smarty->assign("user_menu_vlans_checked", $user_menu_vlans_checked);
-$smarty->assign("user_menu_zones_checked", $user_menu_zones_checked);
-$smarty->assign("user_tooltips_checked", $user_tooltips_checked);
-
-$smarty->display("optionseditdisplay.tpl");
-
-include("footer.php");
-?>
diff --git a/optionseditpassword.php b/optionseditpassword.php
deleted file mode 100644
index a949347..0000000
--- a/optionseditpassword.php
+++ /dev/null
@@ -1,16 +0,0 @@
-display("optionseditpassword.tpl");
-
-include("footer.php");
-?>
diff --git a/submit.php b/submit.php
deleted file mode 100644
index 6b40a08..0000000
--- a/submit.php
+++ /dev/null
@@ -1,815 +0,0 @@
-prepare($sql);
- $sth->execute([$name, $hostname, $assetclass_id, $info, $intf, $asset_type]);
-
- header_location("assetview.php?asset_id=" . $dbh->lastInsertId());
- break;
-
- case ("assetclass") :
- $name = sanitize($_POST['assetclass_name']);
- $description = sanitize($_POST['assetclass_description']);
- $group_id = sanitize($_POST['assetclassgroup_id']);
-
- $sql = "INSERT INTO assetclass
- (assetclass_name, assetclass_description, assetclassgroup_id)
- VALUE
- (?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$name, $description, $group_id]);
-
- header_location("assetclassview.php?assetclass_id=" . $dbh->lastInsertId());
- break;
-
- case ("assetclassgroup") :
- $name = sanitize($_POST['acg_name']);
- $color = preg_replace("|[^a-zA-Z0-9]|", "", strtoupper(sanitize($_POST['acg_color'])));
- $desc = sanitize($_POST['acg_description']);
-
- $sql = "INSERT INTO assetclassgroup
- (assetclassgroup_name, assetclassgroup_color, assetclassgroup_description)
- VALUE
- (?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$name, $color, $desc]);
-
- header_location("assetclassgroupview.php?assetclassgroup_id=" . $dbh->lastInsertId());
- break; */
-
- case ("assignnodetoasset") :
- $node_ip = sanitize($_POST['node_ip']);
- $subnet_id = sanitize($_POST['subnet_id']);
- $asset_id = sanitize($_POST['asset_id']);
- $node_mac = strip_mac(sanitize($_POST['node_mac']));
- if ((!empty($_POST['node_dns1']) && isset($_POST['node_dns1suffix'])) ? $node_dns1 = sanitize($_POST['node_dns1']) . $config_dns1suffix : $node_dns1 = sanitize($_POST['node_dns1']));
- if ((!empty($_POST['node_dns2']) && isset($_POST['node_dns2suffix'])) ? $node_dns2 = sanitize($_POST['node_dns2']) . $config_dns2suffix : $node_dns2 = sanitize($_POST['node_dns2']));
- $node_info = $_POST['node_info'];
-
- $sql = "INSERT INTO node (
- node_ip,
- node_mac,
- node_dns1,
- node_dns2,
- subnet_id,
- asset_id,
- node_info)
- VALUE
- (?, ?, ?, ?, ?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$node_ip, $node_mac, $node_dns1, $node_dns2,
- $subnet_id, $asset_id, $node_info]);
-
- header_location("nodeview.php?node_id=" . $dbh->lastInsertId());
- break;
-
- case ("assignlocationtosubnet") :
- $location_id = sanitize($_POST['location_id']);
- $subnet_id = sanitize($_POST['subnet_id']);
-
- $sql = "INSERT INTO subnetlocation (location_id, subnet_id)
- VALUE (?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$location_id, $subnet_id]);
-
- header_location("Location: location.php?location_id=" . $dbh->lastInsertId());
- break;
-
- case ("assignsubnettovlan") :
- $subnet_id = sanitize($_POST['subnet_id']);
- $vlan_id = sanitize($_POST['vlan_id']);
-
- $sql = "UPDATE subnet SET vlan_id=? WHERE subnet_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$vlan_id, $subnet_id]);
-
- header_location("subnetview.php?subnet_id=" . $subnet_id);
- break;
-
-/* case ("location") :
- $name = sanitize($_POST['location_name']);
- $parent = sanitize($_POST['location_parent']);
- $info = sanitize($_POST['location_info']);
-
- $sql = "INSERT INTO location (
- location_name, location_parent, location_info
- )
- VALUE (?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$name, $parent, $info]);
-
- header_location("locationview.php?location_id=" . $dbh->lastInsertId());
- break; */
-
- case ("locationsubnet") :
- $location_id = sanitize($_POST['location_id']);
- $subnet_id = sanitize($_POST['subnet_id']);
-
- $sql = "INSERT INTO subnetlocation (location_id, subnet_id)
- VALUE (?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$location_id, $subnet_id]);
-
- header_location("locationview.php?location_id=" . $location_id);
- break;
-
- case ("nat") :
- $node_id_ext = sanitize($_POST['node_id_ext']);
- $node_id_int = sanitize($_POST['node_id_int']);
- $nat_type = sanitize($_POST['nat_type']);
-
- $sql = "INSERT INTO nat (nat_ext, nat_int, nat_type)
- VALUE (?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$node_id_ext, $node_id_int, $nat_type]);
-
- header_location("nodeview.php?node_id=" . $node_id_ext);
- break;
-
- case ("node") :
- $asset_name = sanitize($_POST['asset_name']);
- $asset_hostname = sanitize($_POST['asset_hostname']);
- $assetclass_id = sanitize($_POST['assetclass_id']);
- $ip = sanitize($_POST['node_ip']);
- $mac = strip_mac(sanitize($_POST['node_mac']));
- if ((!empty($_POST['node_dns1']) && isset($_POST['dns1suffix'])) ? $dns1 = sanitize($_POST['node_dns1']) . $config_dns1suffix : $dns1 = sanitize($_POST['node_dns1']));
- if ((!empty($_POST['node_dns2']) && isset($_POST['dns2suffix'])) ? $dns2 = sanitize($_POST['node_dns2']) . $config_dns2suffix : $dns2 = sanitize($_POST['node_dns2']));
- $node_info = sanitize($_POST['node_info']);
- $subnet_id = $_POST['subnet_id'];
-
- $sql = "INSERT INTO asset (asset_name, asset_hostname, assetclass_id)
- VALUE (?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$asset_name, $asset_hostname, $assetclass_id]);
- $asset_id = $dbh->lastInsertId();
-
- $sql = "INSERT INTO node (
- node_ip, node_mac, node_dns1, node_dns2, node_info,
- subnet_id, asset_id
- )
- VALUE (?, ?, ?, ?, ?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$ip, $mac, $dns1, $dns2, $node_info, $subnet_id, $asset_id]);
-
- header_location("nodeview.php?node_id=" . $dbh->lastInsertId());
- break;
-
- case ("subnet") :
- $subnet_address= sanitize($_POST['subnet_address']);
- $subnet_mask = sanitize($_POST['subnet_mask']);
- $subnet_info = sanitize($_POST['subnet_info']);
-
- $sql = "INSERT INTO subnet (subnet_address, subnet_mask, subnet_info)
- VALUE (?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$subnet_address, $subnet_mask, $subnet_info]);
-
- header_location("subnetview.php?subnet_id=" . $dbh->lastInsertId());
- break;
-
- case ("subnetlocation") :
- $location_id = sanitize($_POST['location_id']);
- $subnet_id = sanitize($_POST['subnet_id']);
-
- $sql = "INSERT INTO subnetlocation (location_id, subnet_id)
- VALUE (?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$location_id, $subnet_id]);
-
- header_location("subnetview.php?subnet_id=" . $subnet_id);
- break;
-
- case ("subnetvlan") :
- $subnet_id = sanitize($_POST['subnet_id']);
- $vlan_id = sanitize($_POST['vlan_id']);
-
- $sql = "INSERT INTO subnetvlan (subnet_id, vlan_id)
- VALUE (?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$subnet_id, $vlan_id]);
-
- header_location("subnetview.php?subnet_id=" . $subnet_id);
- break;
-
-/* case ("user") :
- $user_name = strtolower(sanitize($_POST['user_name']));
- $user_displayname = sanitize($_POST['user_displayname']);
- $user_password = md5(sanitize($_POST['user_password']));
-
- // check if username exists
- $sth = $dbh->prepare("SELECT COUNT(*) FROM user WHERE user_name=?");
- $sth->execute([$user_name]);
-
- if ($sth->fetchColumn() == 0) {
- $sql = "INSERT INTO user (user_name, user_displayname, user_pass)
- VALUE (?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$user_name, $user_displayname, $user_password]);
-
- header_location("userview.php?user_id=" . $dbh->lastInsertId());
- break;
- }
-
- $comments = "usernameinuse";
- break;
-
- case ("vlan") :
- $vlan_name = sanitize($_POST['vlan_name']);
- $vlan_number = sanitize($_POST['vlan_number']);
- $vlan_info = sanitize($_POST['vlan_info']);
- $vlan_color = sanitize($_POST['vlan_color']);
-
- $sql = "INSERT INTO vlan (vlan_name, vlan_number, vlan_color, vlan_info)
- VALUE (?, ?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$vlan_name, $vlan_number, $vlan_color, $vlan_info]);
-
- header_location("vlanview.php?vlan_id=" . $dbh->lastInsertId());
- break; */
-
- case ("vlansubnet") :
- $subnet_id = sanitize($_POST['subnet_id']);
- $vlan_id = sanitize($_POST['vlan_id']);
-
- $sql = "INSERT INTO subnetvlan (subnet_id, vlan_id)
- VALUE (?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$subnet_id, $vlan_id]);
-
- header_location("vlanview.php?vlan_id=" . $vlan_id);
- break;
-
-/* case ("zone") :
- $zone_origin = sanitize($_POST['zone_origin']);
- $zone_ttl_default = sanitize($_POST['zone_ttl_default']);
- $zone_soa = sanitize($_POST['zone_soa']);
- $zone_hostmaster = sanitize($_POST['zone_hostmaster']);
- $zone_refresh = sanitize($_POST['zone_refresh']);
- $zone_retry = sanitize($_POST['zone_retry']);
- $zone_expire = sanitize($_POST['zone_expire']);
- $zone_ttl = sanitize($_POST['zone_ttl']);
- $zone_serial = sanitize($_POST['zone_serial']);
- $zone_ns1 = sanitize($_POST['zone_ns1']);
- $zone_ns2 = sanitize($_POST['zone_ns2']);
- $zone_ns3 = sanitize($_POST['zone_ns3']);
- $zone_mx1 = sanitize($_POST['zone_mx1']);
- $zone_mx2 = sanitize($_POST['zone_mx2']);
- $zone_info = sanitize($_POST['zone_info']);
-
- $sql = "INSERT INTO zone (
- zone_origin, zone_ttl_default, zone_soa, zone_hostmaster,
- zone_refresh, zone_retry, zone_expire, zone_ttl, zone_serial,
- zone_ns1, zone_ns2, zone_ns3, zone_mx1, zone_mx2, zone_info)
- VALUE (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- $sth = $dbh->prepare($sql);
- $sth->execute([$zone_origin, $zone_ttl_default, $zone_soa, $zone_hostmaster,
- $zone_refresh, $zone_retry, $zone_expire, $zone_ttl, $zone_serial,
- $zone_ns1, $zone_ns2, $zone_ns3, $zone_mx1, $zone_mx2, $zone_info]);
-
- header_location("zoneview.php?zone_id=" . $dbh->lastInsertId());
- break; */
- }
-}
-
-if (isset($_POST['del'])) {
- switch ($_POST['del']) {
-/*
- case ("asset") :
- $asset_id = sanitize($_POST['asset_id']);
-
- $sth = $dbh->prepare("DELETE FROM asset WHERE asset_id=?");
- $sth->execute([$asset_id]);
-
- $sth = $dbh->prepare("DELETE FROM node WHERE asset_id=?");
- $sth->execute([$asset_id]);
-
- header_location("asset.php");
- break;
-
- case ("assetclass") :
- $assetclass_id = sanitize($_POST['assetclass_id']);
-
- $sth = $dbh->prepare("DELETE FROM assetclass WHERE assetclass_id=?");
- $sth->execute([$assetclass_id]);
-
- header_location("assetclass.php");
- break;
-
- case ("assetclassgroup") :
- $assetclassgroup_id = sanitize($_POST['assetclassgroup_id']);
-
- $sth = $dbh->prepare("DELETE FROM assetclassgroup WHERE assetclassgroup_id=?");
- $sth->execute([$assetclassgroup_id]);
-
- header_location("assetclassgroup.php");
- break;
-
- case ("location") :
- $location_id = sanitize($_POST['location_id']);
-
- $sth = $dbh->prepare("DELETE FROM location WHERE location_id=?");
- $sth->execute([$location_id]);
-
- header_location("location.php");
- break; */
-
- case ("locationsubnet") :
- $location_id = sanitize($_POST['location_id']);
- $subnet_id = sanitize($_POST['subnet_id']);
-
- $sth = $dbh->prepare("DELETE FROM subnetlocation WHERE location_id=? AND subnet_id=?");
- $sth->execute([$location_id, $subnet_id]);
-
- header_location("locationview.php?location_id=" . $location_id);
- break;
-
- case ("nat") :
- $nat_id = sanitize($_POST['nat_id']);
- $node_id_ext = sanitize($_POST['node_id_ext']);
-
- $sth = $dbh->prepare("DELETE FROM nat WHERE nat_id=?");
- $sth->execute([$nat_id]);
-
- header_location("nodeview.php?node_id=" . $node_id_ext);
- break;
-
- case ("node") :
- $node_id = sanitize($_POST['node_id']);
-
- $sth = $dbh->prepare("DELETE FROM node WHERE node_id=?");
- $sth->execute([$node_id]);
-
- header_location("assetview.php?asset_id=" . $asset_id);
- break;
-
- case ("subnet") :
- $subnet_id = sanitize($_POST['subnet_id']);
-
- $sth = $dbh->prepare("DELETE FROM subnet WHERE subnet_id=?");
- $sth->execute([$subnet_id]);
-
- $sth = $dbh->prepare("DELETE FROM node WHERE subnet_id=?");
- $sth->execute([$subnet_id]);
-
- header_location("subnet.php");
- break;
-
- case ("subnetlocation") :
- $location_id = sanitize($_POST['location_id']);
- $subnet_id = sanitize($_POST['subnet_id']);
-
- $sth = $dbh->prepare("DELETE FROM subnetlocation WHERE location_id=? AND subnet_id=?");
- $sth->execute([$location_id, $subnet_id]);
-
- header_location("subnetview.php?subnet_id=" . $subnet_id);
- break;
-
- case ("subnetvlan") :
- $subnet_id = sanitize($_POST['subnet_id']);
- $vlan_id = sanitize($_POST['vlan_id']);
-
- $sth = $dbh->prepare("DELETE FROM subnetvlan WHERE subnet_id=? AND vlan_id=?");
- $sth->execute([$subnet_id, $vlan_id]);
-
- header_location("subnetview.php?subnet_id=" . $subnet_id);
- break;
-
-/* case ("user") :
- $user_id = sanitize($_POST['user_id']);
-
- $sth = $dbh->prepare("DELETE FROM user WHERE user_id=?");
- $sth->execute([$user_id]);
-
- header_location("user.php");
- break;
-
- case ("vlan") :
- $vlan_id = sanitize($_POST['vlan_id']);
-
- $sth = $dbh->prepare("DELETE FROM vlan WHERE vlan_id=?");
- $sth->execute([$vlan_id]);
-
- header_location("vlan.php");
- break; */
-
- case ("vlansubnet") :
- $subnet_id = sanitize($_POST['subnet_id']);
- $vlan_id = sanitize($_POST['vlan_id']);
-
- $sth = $dbh->prepare("DELETE FROM subnetvlan WHERE subnet_id=? AND vlan_id=?");
- $sth->execute([$subnet_id, $vlan_id]);
-
- header_location("vlanview.php?vlan_id=" . $vlan_id);
- break;
-
-/* case ("zone") :
- $zone_id = sanitize($_POST['zone_id']);
-
- $sth = $dbh->prepare("DELETE FROM zone WHERE zone_id=?");
- $sth->execute([$zone_id]);
-
- header_location("zone.php");
- break; */
- }
-}
-
-if (isset($_POST['edit'])) {
- switch ($_POST['edit']) {
-/*
- case ("asset") :
- $asset_id = sanitize($_POST['asset_id']);
- $asset_name = sanitize($_POST['asset_name']);
- $asset_info = sanitize($_POST['asset_info']);
- $asset_intf = sanitize($_POST['asset_intf']);
- $asset_hostname = sanitize($_POST['asset_hostname']);
- $assetclass_id = sanitize($_POST['assetclass_id']);
- $asset_type = sanitize($_POST['asset_type']);
-
- $sql = "UPDATE asset SET
- asset_name=?, asset_info=?, asset_hostname=?,
- assetclass_id=?, asset_intf=?, asset_type=?
- WHERE asset_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$asset_name, $asset_info, $asset_hostname,
- $assetclass_id, $asset_intf, $asset_type,
- $asset_id]);
-
- header_location("assetview.php?asset_id=" . $asset_id);
-
- case ("assetclass") :
- $id = sanitize($_POST['assetclass_id']);
- $name = sanitize($_POST['assetclass_name']);
- $description = sanitize($_POST['assetclass_description']);
- $group_id = sanitize($_POST['assetclassgroup_id']);
-
- $sql = "UPDATE assetclass SET
- assetclass_name=?, assetclass_description=?,
- assetclassgroup_id=?
- WHERE assetclass_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$name, $description, $group_id, $id]);
-
- header_location("assetclassview.php?assetclass_id=" . $id);
- break;
-
- case ("assetclassgroup") :
- $acg_id = sanitize($_POST['acg_id']);
- $acg_name = sanitize($_POST['acg_name']);
- $acg_desc = sanitize($_POST['acg_description']);
- $acg_color = preg_replace("|[^a-zA-Z0-9]|", "", strtoupper(sanitize($_POST['acg_color'])));
-
- $sql = "UPDATE assetclassgroup SET
- assetclassgroup_name=?, assetclassgroup_color=?, assetclassgroup_description=?
- WHERE assetclassgroup_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$acg_name, $acg_color, $acg_desc, $acg_id]);
-
- header_location("assetclassgroupview.php?assetclassgroup_id=" . $acg_id);
- break;
-
- case ("location") :
- $location_id = sanitize($_POST['location_id']);
- $location_name = sanitize($_POST['location_name']);
- $location_info = sanitize($_POST['location_info']);
- $parentlocation_id = sanitize($_POST['parentlocation_id']);
-
- $sql = "UPDATE location SET
- location_name=?, location_parent=?, location_info=?
- WHERE location_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$location_name, $parentlocation_id, $location_info, $location_id]);
-
- header_location("locationview.php?location_id=" . $location_id);
- break; */
-
- case ("node") :
- $node_id = sanitize($_POST['node_id']);
- $asset_id = sanitize($_POST['asset_id']);
- $node_ip = sanitize($_POST['node_ip']);
- $subnet_id = sanitize($_POST['subnet_id']);
- $node_mac = strip_mac(sanitize($_POST['node_mac']));
- $node_dns1 = sanitize($_POST['node_dns1']);
- $node_dns2 = sanitize($_POST['node_dns2']);
- $node_info = sanitize($_POST['node_info']);
- $zone_id = sanitize($_POST['zone_id']);
-
- $sql = "UPDATE node SET
- asset_id=?, node_ip=?, subnet_id=?, node_mac=?,
- node_dns1=?, node_dns2=?, node_info=?, zone_id=?
- WHERE node_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$asset_id, $node_ip, $subnet_id, $node_mac,
- $node_dns1, $node_dns2, $node_info, $zone_id,
- $node_id]);
-
- header_location("nodeview.php?node_id=" . $node_id);
- break;
-
- case ("optionsdisplay") :
- $id = $_SESSION['suser_id'];
- $language = $_POST['user_language'];
- $imagesize = sanitize($_POST['user_imagesize']);
- $imagecount = sanitize($_POST['user_imagecount']);
- $mac = sanitize($_POST['user_mac']);
- $dateformat = sanitize($_POST['user_dateformat']);
- $dns1suffix = sanitize($_POST['user_dns1suffix']);
- $dns2suffix = sanitize($_POST['user_dns2suffix']);
- $tooltips = sanitize($_POST['user_tooltips']);
-
- $menu_assets = sanitize($_POST['user_menu_assets']);
- $menu_assetclasses = sanitize($_POST['user_menu_assetclasses']);
- $menu_assetclassgroups = sanitize($_POST['user_menu_assetclassgroups']);
- $menu_cables = sanitize($_POST['user_menu_cables']);
- $menu_locations = sanitize($_POST['user_menu_locations']);
- $menu_nodes = sanitize($_POST['user_menu_nodes']);
- $menu_subnets = sanitize($_POST['user_menu_subnets']);
- $menu_vlans = sanitize($_POST['user_menu_vlans']);
- $menu_zones = sanitize($_POST['user_menu_zones']);
-
- // construct menu set
- $menu = array();
- if ($menu_assets) $menu[] = 'asset';
- if ($menu_assetclasses) $menu[] = 'class';
- if ($menu_assetclassgroups) $menu[] = 'group';
- if ($menu_cables) $menu[] = 'cable';
- if ($menu_locations) $menu[] = 'location';
- if ($menu_nodes) $menu[] = 'node';
- if ($menu_subnets) $menu[] = 'subnet';
- if ($menu_vlans) $menu[] = 'vlan';
- if ($menu_zones) $menu[] = 'zone';
-
- $sql = "UPDATE user SET
- user_language=?, user_imagesize=?, user_imagecount=?,
- user_mac=?, user_dateformat=?, user_dns1suffix=?,
- user_dns2suffix=?, user_tooltips=?, user_menu=?
- WHERE
- user_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$language, $imagesize, $imagecount,
- $mac, $dateformat, $dns1suffix,
- $dns2suffix, $tooltips, implode(',', $menu),
- $id]);
-
- $_SESSION['suser_language'] = $language;
- $_SESSION['suser_imagesize'] = $imagesize;
- $_SESSION['suser_imagecount'] = $imagecount;
- $_SESSION['suser_mac'] = $mac;
- $_SESSION['suser_dateformat'] = $dateformat;
- $_SESSION['suser_dns1suffix'] = $dns1suffix;
- $_SESSION['suser_dns2suffix'] = $dns2suffix;
- $_SESSION['suser_menu_assets'] = $menu_assets;
- $_SESSION['suser_menu_assetclasses'] = $menu_assetclasses;
- $_SESSION['suser_menu_assetclassgroups'] = $menu_assetclassgroups;
- $_SESSION['suser_menu_cables'] = $menu_cables;
- $_SESSION['suser_menu_locations'] = $menu_locations;
- $_SESSION['suser_menu_nodes'] = $menu_nodes;
- $_SESSION['suser_menu_subnets'] = $menu_subnets;
- $_SESSION['suser_menu_vlans'] = $menu_vlans;
- $_SESSION['suser_menu_zones'] = $menu_zones;
- $_SESSION['suser_tooltips'] = $tooltips;
-
- header_location("options.php");
- break;
-
- case ("optionspassword") :
- $user_id = $_SESSION['suser_id'];
- $currentpass = sanitize($_POST['user_currentpass']);
- $newpass1 = sanitize($_POST['user_newpass1']);
- $newpass2 = sanitize($_POST['user_newpass2']);
-
- $sth = $dbh->prepare("SELECT user_pass FROM user WHERE user_id=?");
- $sth->execute([$user_id]);
-
- $userpass = $sth->fetchColumn();;
-
- if (password_verify($currentpass, $userpass)) {
- if (!strcmp($newpass1, $newpass2)) {
- $sth = $dbh->prepare("UPDATE user SET user_pass=? WHERE user_id=?");
- $newhash = password_hash($newpass1, PASSWORD_BCRYPT);
- $sth->execute([$newhash, $user_id]);
- header_location("options.php");
- }
- }
- // TODO generate errormessages here
- break;
-
- case ("subnet") :
- $subnet_id = sanitize($_POST['subnet_id']);
- $subnet_address= sanitize($_POST['subnet_address']);
- $subnet_proto_vers = sanitize($_POST['subnet_proto_vers']);
- $subnet_mask = sanitize($_POST['subnet_mask']);
- $subnet_dhcpstart = sanitize($_POST['subnet_dhcpstart']);
- $subnet_dhcpend = sanitize($_POST['subnet_dhcpend']);
- $subnet_ntp_server = sanitize($_POST['subnet_ntp_server']);
- $subnet_info = sanitize($_POST['subnet_info']);
-
- $sql = "UPDATE subnet SET
- subnet_address=?, subnet_mask=?, subnet_dhcp_start=?,
- subnet_dhcp_end=?, subnet_info=?, protocol_version=?,
- ntp_server=?
- WHERE subnet_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$subnet_address, $subnet_mask, $subnet_dhcpstart,
- $subnet_dhcpend, $subnet_info, $subnet_proto_vers,
- $subnet_ntp_server, $subnet_id]);
-
- header_location("subnetview.php?subnet_id=" . $subnet_id);
- break;
-
-/* case ("user") :
- $user_id = sanitize($_POST['user_id']);
- $user_name = sanitize($_POST['user_name']);
- $user_displayname = sanitize($_POST['user_displayname']);
- $user_realm = sanitize($_POST['user_realm']);
- // roles
- $role_add = sanitize($_POST['role_add']);
- $role_edit = sanitize($_POST['role_edit']);
- $role_delete = sanitize($_POST['role_delete']);
- $role_manage = sanitize($_POST['role_manage']);
- $role_admin = sanitize($_POST['role_admin']);
-
- // construct menu set
- $role = array();
- if ($role_add) $role[] = 'add';
- if ($role_edit) $role[] = 'edit';
- if ($role_delete) $role[] = 'delete';
- if ($role_manage) $role[] = 'manage';
- if ($role_admin) $role[] = 'admin';
-
-
- $sql = "UPDATE user SET
- user_name=?, user_displayname=?, user_realm=?,
- user_role=?
- WHERE user_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$user_name ,$user_displayname, $user_realm,
- implode(',', $role), $user_id]);
-
- header_location("userview.php?user_id=" . $user_id);
- break;
-
- case ("vlan") :
- $vlan_id = sanitize($_POST['vlan_id']);
- $vlan_name = sanitize($_POST['vlan_name']);
- $vlan_number = sanitize($_POST['vlan_number']);
- $vlan_info = sanitize($_POST['vlan_info']);
- $vlan_color = sanitize($_POST['vlan_color']);
-
- $sql = "UPDATE vlan SET vlan_name=?, vlan_number=?, vlan_color=?, vlan_info=? WHERE vlan_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$vlan_name, $vlan_number, $vlan_color, $vlan_info, $vlan_id]);
-
- header_location("vlanview.php?vlan_id=" . $vlan_id);
- break;
-
- case ("zone") :
- $id = sanitize($_POST['zone_id']);
- $origin = sanitize($_POST['zone_origin']);
- $ttl_default = sanitize($_POST['zone_ttl_default']);
- $soa = sanitize($_POST['zone_soa']);
- $hostmaster = sanitize($_POST['zone_hostmaster']);
- $refresh = sanitize($_POST['zone_refresh']);
- $retry = sanitize($_POST['zone_retry']);
- $expire = sanitize($_POST['zone_expire']);
- $ttl = sanitize($_POST['zone_ttl']);
- $serial = sanitize($_POST['zone_serial']);
- $ns1 = sanitize($_POST['zone_ns1']);
- $ns2 = sanitize($_POST['zone_ns2']);
- $ns3 = sanitize($_POST['zone_ns3']);
- $mx1 = sanitize($_POST['zone_mx1']);
- $mx2 = sanitize($_POST['zone_mx2']);
- $info = sanitize($_POST['zone_info']);
- $sql = "UPDATE zone SET
- zone_origin=?, zone_ttl_default=?, zone_soa=?, zone_hostmaster=?,
- zone_refresh=?, zone_retry=?, zone_expire=?, zone_ttl=?, zone_serial=?,
- zone_ns1=?, zone_ns2=?, zone_ns3=?, zone_mx1=?, zone_mx2=?, zone_info=?
- WHERE zone_id=?";
- $sth = $dbh->prepare($sql);
- $sth->execute([$origin, $ttl_default, $soa, $hostmaster, $refresh, $retry,
- $expire, $ttl, $serial, $ns1, $ns2, $ns3, $mx1, $mx2, $info,
- $id]);
-
- header_location("zoneview.php?zone_id=" . $zone_id);
- break; */
- }
-}
-
-// still not redirected, check for error
-if(empty($comments)) {
- $comments = "error";
-}
-header_location("comments.php?comments=" . $comments);
-?>
diff --git a/subnet.php b/subnet.php
index 50b418e..dc4596f 100644
--- a/subnet.php
+++ b/subnet.php
@@ -8,8 +8,183 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
+
+if (isset($_REQUEST['id'])) {
+ $id = (int) $_REQUEST['id'] or $id = 0;
+}
+
+// ========== ADDITIONAL ACTION DEFINITIONS ===================================
+
+define ('ACT_LOCATION_EDIT', 100);
+define ('ACT_LOCATION_ADD', 101);
+define ('ACT_LOCATION_DEL', 102);
+
+define ('ACT_VLAN_EDIT', 103);
+define ('ACT_VLAN_ADD', 104);
+define ('ACT_VLAN_DEL', 105);
+
+// ========== ACTIONS START ===================================================
+switch ($submit = form_get_action()) {
+
+ case NULL: break;
+
+ case 'add': $action = ACT_ADD; break;
+ case 'view': $action = ACT_VIEW; break;
+ case 'edit': $action = ACT_EDIT; break;
+ case 'del': $action = ACT_DELETE; break;
+ case 'link': $action = ACT_LINK; break;
+
+ // Location
+ case 'ledit': $action = ACT_LOCATION_EDIT; break;
+ case 'ladd': $action = ACT_LOCATION_ADD; break;
+ case 'ldel': $action = ACT_LOCATION_DEL; break;
+
+ // VLAN
+ case 'vedit': $action = ACT_VLAN_EDIT; break;
+ case 'vadd': $action = ACT_VLAN_ADD; break;
+ case 'vdel': $action = ACT_VLAN_DEL; break;
+
+ case 'exec-ledit':
+ if ($_POST['action'] == 'subnetlocationadd') {
+ $action = ACT_LOCATION_ADD;
+ } elseif ($_POST['action'] == 'subnetlocationdel') {
+ $action = ACT_LOCATION_DEL;
+ } else {
+ $g_warning->Add('Invalid action: '. $_POST['action']);
+ }
+ break;
+
+ case 'exec-ladd':
+ $location_id = sanitize($_POST['location_id']);
+ $sql = "INSERT INTO subnetlocation (location_id, subnet_id) VALUES (?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$location_id, $id]);
+ $action = ACT_VIEW;
+ break;
+
+ case 'exec-ldel':
+ $location_id = sanitize($_POST['location_id']);
+ $sth = $dbh->prepare("DELETE FROM subnetlocation WHERE location_id=? AND subnet_id=?");
+ $sth->execute([$location_id, $id]);
+ $g_message->Add('Removed link to location');
+ $action = ACT_VIEW;
+ break;
+
+ case 'exec-vedit':
+ if ($_POST['action'] == 'subnetvlanadd') {
+ $action = ACT_VLAN_ADD;
+ } elseif ($_POST['action'] == 'subnetvlandel') {
+ $action = ACT_VLAN_DEL;
+ } else {
+ $g_warning->Add('Invalid action: '. $_POST['action']);
+ }
+ break;
+
+ case 'exec-vadd':
+ $vlan_id = sanitize($_POST['vlan_id']);
+ $sql = "INSERT INTO subnetvlan (subnet_id, vlan_id) VALUES (?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$id, $vlan_id]);
+ $action = ACT_VIEW;
+ break;
+
+ case 'exec-vdel':
+ $vlan_id = sanitize($_POST['vlan_id']);
+ $sth = $dbh->prepare("DELETE FROM subnetvlan WHERE subnet_id=? AND vlan_id=?");
+ $sth->execute([$id, $vlan_id]);
+ $g_message->Add('Removed link to vlan');
+ $action = ACT_VIEW;
+ break;
+
+ case 'insert':
+ $address= sanitize($_POST['subnet_address']);
+ $mask = sanitize($_POST['subnet_mask']);
+ $info = sanitize($_POST['subnet_info']);
+ $dhcp_start = sanitize($_POST['dhcp_start']);
+ $dhcp_end = sanitize($_POST['dhcp_end']);
+ $sql = "INSERT INTO subnet (
+ subnet_address, subnet_mask, subnet_info,
+ subnet_dhcp_start, subnet_dhcp_end
+ ) VALUES (
+ :address, :mask, :info,
+ :dhcp_start, :dhcp_end
+ )";
+ $sth = $dbh->prepare($sql);
+ $sth->bindValue(':address', $address, PDO::PARAM_STR);
+ $sth->bindValue(':mask', $mask, PDO::PARAM_INT);
+ $sth->bindValue(':info', $info, PDO::PARAM_STR);
+ $sth->bindValue(':dhcp_start', $dhcp_start, PDO::PARAM_STR);
+ $sth->bindValue(':dhcp_end', $dhcp_end, PDO::PARAM_STR);
+ $sth->execute();
+ $id = $dbh->lastInsertId();
+ // vlan if selected
+ $vlan_id = intval(sanitize($_POST['vlan_id']));
+ if ($vlan_id > 0) {
+ $sql = "INSERT INTO subnetvlan (subnet_id, vlan_id) VALUES (?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$id, $vlan_id]);
+ }
+ $action = ACT_VIEW;
+ break;
+
+ case 'update':
+ $subnet_address= sanitize($_POST['subnet_address']);
+ $subnet_proto_vers = sanitize($_POST['subnet_proto_vers']);
+ $subnet_mask = sanitize($_POST['subnet_mask']);
+ $subnet_dhcpstart = sanitize($_POST['subnet_dhcpstart']);
+ $subnet_dhcpend = sanitize($_POST['subnet_dhcpend']);
+ $subnet_ntp_server = sanitize($_POST['subnet_ntp_server']);
+ $subnet_info = sanitize($_POST['subnet_info']);
+
+ $sql = "UPDATE subnet SET
+ subnet_address=?, subnet_mask=?, subnet_dhcp_start=?,
+ subnet_dhcp_end=?, subnet_info=?, protocol_version=?,
+ ntp_server=?
+ WHERE subnet_id=?";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$subnet_address, $subnet_mask, $subnet_dhcpstart,
+ $subnet_dhcpend, $subnet_info, $subnet_proto_vers,
+ $subnet_ntp_server, $id]);
+ $action = ACT_VIEW;
+ break;
+
+ case 'delete':
+ // TODO delete NAT
+ $sth = $dbh->prepare("DELETE FROM node WHERE subnet_id=?");
+ $sth->execute([$id]);
+ $count = $sth->rowCount();
+ $g_message->Add('Deleted $count nodes');
+
+ $sth = $dbh->prepare("DELETE FROM subnetlocation WHERE subnet_id=?");
+ $sth->execute([$id]);
+ $count = $sth->rowCount();
+ $g_message->Add('Deleted $count location links');
+
+ $sth = $dbh->prepare("DELETE FROM subnetvlan WHERE subnet_id=?");
+ $sth->execute([$id]);
+ $count = $sth->rowCount();
+ $g_message->Add('Deleted $count vlan links');
+
+ $sth = $dbh->prepare("DELETE FROM subnet WHERE subnet_id=?");
+ $sth->execute([$id]);
+ $g_message->Add('Deleted subnet');
+
+ $action = ACT_DEFAULT;
+ break;
+
+ default:
+ $g_error->Add(submit_error($submit));
+ $valid = FALSE;
+}
+
+// ========== ACTIONS END =====================================================
+
+$smarty->assign("scripts",'changetext.js');
include("header.php");
+if ($action == ACT_DEFAULT):
+// ========== VARIANT: default behavior =======================================
+
$sql = "SELECT s.subnet_id, s.subnet_address, s.subnet_mask,
s.ntp_server,
CONCAT(LEFT(s.subnet_info, 50), IF(CHAR_LENGTH(s.subnet_info)>50,'...','')) AS subnet_info,
@@ -23,5 +198,554 @@ $smarty->assign("subnets", $sth->fetchAll());
$smarty->display("subnet.tpl");
-include("footer.php");
+elseif ($action == ACT_ADD):
+// ========== VARIANT: add record =============================================
+
+if((isset($_GET['vlan_id'])) ? $vlan_id = sanitize($_GET['vlan_id']) : $vlan_id = "");
+$smarty->assign("vlan_id", $vlan_id);
+$smarty->assign("vlan_options", db_get_options_vlan($lang['lang_option_none']));
+
+$smarty->display("subnetadd.tpl");
+
+elseif ($action == ACT_VIEW):
+// ========== VARIANT: view single record =====================================
+
+if(isset($_GET['page'])) {
+ $page = sanitize($_GET['page']);
+}
+
+// subnet
+$sql = "SELECT
+ s.subnet_id AS id,
+ s.subnet_address AS address,
+ s.subnet_mask AS mask,
+ s.subnet_dhcp_start AS dhcp_start,
+ s.subnet_dhcp_end AS dhcp_end,
+ s.subnet_info AS info,
+ s.protocol_version AS proto_vers,
+ s.ntp_server,
+ COUNT(node.subnet_id) AS node_counter
+ FROM
+ subnet AS s LEFT JOIN node USING (subnet_id)
+ WHERE
+ s.subnet_id=?
+ GROUP BY
+ s.subnet_id";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+
+$subnet = $sth->fetch(PDO::FETCH_OBJ);
+
+$smarty->assign("subnet", $subnet);
+
+// set counters
+$host_counter = pow(2, (32-$subnet->mask));
+$node_counter = $subnet->node_counter;
+$subnet_usedpercentage = round((($node_counter/($host_counter-2))*100), 1);
+
+$smarty->assign("node_counter", $node_counter);
+$smarty->assign("subnet_usedpercentage", $subnet_usedpercentage);
+$smarty->assign("config_color_unused", $config_color_unused);
+$smarty->assign("host_counter", $host_counter-2);
+$smarty->assign("free_counter", (($host_counter-2)-$node_counter));
+
+// subnet
+
+// split up the range
+$iprange = explode('.', $subnet->address);
+$iprange1 = $iprange[0];
+$iprange2 = $iprange[1];
+$iprange3 = $iprange[2];
+$iprange4 = $iprange[3];
+
+// create empty subnet-array
+$subnetdata = array();
+
+// determine range (Class A/B/C)
+if ($subnet->mask >= 24) {
+ // Class C
+ // fill subnet-array with addresses we want to see
+ for($i=0; $i<$host_counter; $i++) {
+ // build ip
+ $ip = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i);
+
+ // fill subnet-array
+ $subnetdata[$ip] = array();
+ }
+
+ // calculate broadcast address
+ $broadcast_address = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i-1);
+
+ // to tpl
+ $smarty->assign("iprange1", $iprange1);
+ $smarty->assign("iprange2", $iprange2);
+ $smarty->assign("iprange3", $iprange3);
+ $smarty->assign("iprange4", $iprange4);
+ $smarty->assign("subnetmask1", 255);
+ $smarty->assign("subnetmask2", 255);
+ $smarty->assign("subnetmask3", 255);
+ $smarty->assign("subnetmask4", 256-$host_counter);
+
+ // no pagination needed
+ $smarty->assign("noselect", TRUE);
+ $smarty->assign("one_select", FALSE);
+ $smarty->assign("two_select", FALSE);
+
+ // set displayed nodes
+ $nodes_displayed = $host_counter;
+
+} else if ($subnet->mask >= 16) {
+ // Class B
+ // which part do we want to see?
+ if ((empty($page)) ? $page = $subnet->address : $page = $page);
+ $page = explode('.', $page);
+ $page2 = $page[2];
+
+ // fill subnet-array with addresses we want to see
+ for($i=0; $i<256; $i++) {
+ // build ip
+ $ip = $iprange1 . '.' . $iprange2 . '.' . $page2 . '.' . $i;
+
+ // fill subnet-array
+ $subnetdata[$ip] = array();
+ }
+
+ // calculate broadcast address
+ $broadcast_address = $iprange1 . '.' . $iprange2 . '.' . ($iprange3+$i-1) . '.255';
+
+ // to tpl
+ $smarty->assign("iprange1", $iprange1);
+ $smarty->assign("iprange2", $iprange2);
+
+ // loop addresses in range3
+ for ($i=$iprange3; $i<(pow(2,(32-$subnet->mask))/256); $i++) {
+ // send to tpl
+ $smarty->assign("iprange3", $i);
+ $smarty->assign("iprange4", 0);
+
+ // set select box
+ if ($i == $page2) {
+ $smarty->assign("row_selected", "selected");
+
+ } else {
+ $smarty->assign("row_selected", "");
+ }
+
+ }
+
+ $smarty->assign("subnetmask1", 255);
+ $smarty->assign("subnetmask2", 255);
+ $smarty->assign("subnetmask3", 256-($host_counter/256));
+ $smarty->assign("subnetmask4", 0);
+
+ // one select box
+ $smarty->assign("noselect", FALSE);
+ $smarty->assign("one_select", TRUE);
+ $smarty->assign("two_select", FALSE);
+
+ // set displayed nodes
+ $nodes_displayed = 256;
+} else {
+ // Class A
+ // which part do we want to see?
+ if ((empty($page)) ? $page = $subnet->address : $page = $page);
+ $page = explode('.', $page);
+ $page2 = $page[1];
+ $page3 = $page[2];
+
+ // fill subnet-array with addresses we want to see
+ for($i=0; $i<256; $i++) {
+ // build ip
+ $ip = $iprange1 . '.' . $page2 . '.' . $page3 . '.' . $i;
+
+ // fill subnet-array
+ $subnetdata[$ip] = array();
+ }
+
+ // calculate broadcast address
+ $broadcast_address = $iprange1 . '.' . ($iprange2+$i-1) . '.255.255';
+
+ // to tpl
+ $smarty->assign("iprange1", $iprange1);
+ $smarty->assign("iprange2", $iprange2);
+
+ // loop addresses in range 2
+ for ($i=$iprange2; $i<(pow(2,(24-$subnet->mask))/256); $i++) {
+ // send to tpl
+ $smarty->assign("iprange1", $iprange1);
+ $smarty->assign("iprange2", $i);
+ $smarty->assign("iprange3", $page3);
+ $smarty->assign("iprange4", $iprange4);
+
+ // set select box
+ if($i == $page2) {
+ $smarty->assign("row1_selected", "selected");
+
+ } else {
+ $smarty->assign("row1_selected", "");
+ }
+
+ }
+
+ // loop addresses in range 3
+ for ($i=0; $i<256; $i++) {
+ // send to tpl
+ $smarty->assign("iprange1", $iprange1);
+ $smarty->assign("iprange2", $page2);
+ $smarty->assign("iprange3", $i);
+ $smarty->assign("iprange4", $iprange4);
+
+ // set select box
+ if($i==$page3) {
+ $smarty->assign("row2_selected", "selected");
+
+ } else {
+ $smarty->assign("row2_selected", "");
+ }
+
+ }
+
+ $smarty->assign("subnetmask1", 255);
+ $smarty->assign("subnetmask2", 256-($host_counter/65536));
+ $smarty->assign("subnetmask3", 0);
+ $smarty->assign("subnetmask4", 0);
+
+ // one select box
+ $smarty->assign("noselect", FALSE);
+ $smarty->assign("one_select", FALSE);
+ $smarty->assign("two_select", TRUE);
+
+ // set displayed nodes
+ $nodes_displayed = 256;
+}
+
+// get nodes for this subnetview and implement the values into the array
+
+// TODO this is very bad SQL
+/*$sql = "SELECT a.asset_name, g.assetclassgroup_color, n.node_id, n.node_ip
+ FROM
+ asset AS a,
+ assetclass AS c,
+ assetclassgroup AS g,
+ node AS n
+ WHERE
+ n.node_ip IN ('".implode("','",array_keys($subnetdata))."')
+ AND n.subnet_id=?
+ AND a.asset_id=n.asset_id
+ AND c.assetclass_id=a.assetclass_id
+ AND g.assetclassgroup_id=c.assetclassgroup_id"; */
+$sql = "SELECT
+ a.asset_name, g.assetclassgroup_color, n.node_id, n.node_ip
+ FROM node AS n
+ LEFT JOIN asset AS a USING (asset_id)
+ LEFT JOIN assetclass AS c USING (assetclass_id)
+ LEFT JOIN assetclassgroup AS g USING (assetclassgroup_id)
+ WHERE n.subnet_id=:subnet_id
+ AND INET_ATON(n.node_ip) BETWEEN :ipfrom AND :ipto";
+// Debug $smarty->assign("sql",array_key_first($subnetdata) . " - " . array_key_last($subnetdata) );
+$sth = $dbh->prepare($sql);
+$sth->bindValue(':ipfrom', ip2long(array_key_first($subnetdata)), PDO::PARAM_INT);
+$sth->bindValue(':ipto', ip2long(array_key_last($subnetdata)), PDO::PARAM_INT);
+$sth->bindValue(':subnet_id', $id, PDO::PARAM_INT);
+$sth->execute();
+
+$nodes = $sth->fetchAll();
+$smarty->assign("nodes", $nodes);
+
+if (count($nodes) > 0) {
+ foreach ($nodes AS $node) {
+ $subnetdata[$node['node_ip']] = $node;
+ }
+}
+
+// replace ip's in subnet-array (if necessary)
+// check for subnet address
+if (array_key_exists($subnet->address, $subnetdata)) {
+ // replace
+ $subnetdata[$subnet->address] = array("subnet_address");
+}
+
+// check for broadcast address
+if (array_key_exists($broadcast_address, $subnetdata)) {
+ // replace
+ $subnetdata[$broadcast_address] = array("broadcast_address");
+}
+
+$dhcpstart = 0;
+if ($subnet->dhcp_start && $subnet->dhcp_end) {
+ $dhcpstart = ip2long($subnet->dhcp_start);
+ $dhcpend = ip2long($subnet->dhcp_end);
+}
+
+ // loop subnet-array and send to template
+ // start counter
+// $i=1;
+ // loop subnet-array
+foreach ($subnetdata AS $node_ip => $node) {
+
+// make new line?
+// if(($i%$_SESSION['suser_imagecount']==0 && $i!=$nodes_displayed) ? $tr="" : $tr="");
+
+ // check if node-ip in DHCP-area
+ $subnetdata[$node_ip]["dynamic"] = false;
+ if ($dhcpstart > 0) {
+ $ipval = ip2long($node_ip);
+ if (($ipval >= $dhcpstart) and ($ipval <= $dhcpend)) {
+ $subnetdata[$node_ip]["dynamic"] = true;
+ }
+ }
+
+ // check node
+ if (empty($node)) {
+ // empty node to tpl
+ $subnetdata[$node_ip]["url"] = 'subnet.php?f=link&id=' . $id . '&node_ip='. $node_ip;
+ $subnetdata[$node_ip]["remotetext"] = $node_ip;
+ if ($subnetdata[$node_ip]["dynamic"]) {
+ $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_dynamic;
+ } else {
+ $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_unused;
+ }
+ } else if (array_key_exists(0, $node) && $node[0]=="subnet_address") {
+ // subnet address to tpl
+ $subnetdata[$node_ip]["url"] = "";
+ $subnetdata[$node_ip]["remotetext"] = $node_ip . ' ' . $lang['lang_subnet_subnetaddress'];
+ $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_blocked;
+ } else if (array_key_exists(0, $node) && $node[0]=="broadcast_address") {
+ // broadcast address to tpl
+ $subnetdata[$node_ip]["url"] = "";
+ $subnetdata[$node_ip]["remotetext"] = $node_ip . ' ' . $lang['lang_subnet_broadcastaddress'];
+ $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_blocked;
+ } else {
+ // node to tpl
+ $subnetdata[$node_ip]["url"] = 'node.php?f=view&id=' . $node['node_id'];
+ $subnetdata[$node_ip]["remotetext"] = $node_ip . ' ' . $node['asset_name'];
+ $subnetdata[$node_ip]["assetclassgroup_color"] = $node['assetclassgroup_color'];
+ }
+
+ // update counter
+ // $i++;
+
+} // foreach
+
+$smarty->assign("subnetdata", $subnetdata);
+$smarty->assign("imagewrap", $_SESSION['suser_imagecount']);
+
+// vlans
+$sql = "SELECT v.vlan_id AS id, v.vlan_name AS name,
+ v.vlan_number AS number
+ FROM subnetvlan AS s JOIN vlan AS v USING (vlan_id)
+ WHERE s.subnet_id=?
+ ORDER BY v.vlan_name";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("vlans", $sth->fetchAll());
+
+// locations
+$sql = "SELECT l.location_id, l.location_name
+ FROM location AS l LEFT JOIN subnetlocation AS s USING (location_id)
+ WHERE s.subnet_id=?
+ ORDER BY l.location_name";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("locations", $sth->fetchAll());
+
+// assetclasses with color from assetclassgroup
+$sql = "SELECT assetclass_id AS id, assetclass_name AS name,
+ assetclassgroup_color AS color, COUNT(node_id) AS counter
+ FROM node LEFT JOIN asset USING (asset_id)
+ LEFT JOIN assetclass USING (assetclass_id)
+ LEFT JOIN assetclassgroup USING (assetclassgroup_id)
+ WHERE subnet_id=?
+ GROUP BY assetclass_id
+ ORDER BY assetclass_name";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("assetclasses", $sth->fetchAll());
+
+$smarty->display("subnetview.tpl");
+
+elseif ($action == ACT_EDIT):
+// ========== VARIANT: edit single record =====================================
+
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask,
+ protocol_version AS proto_vers, subnet_dhcp_start AS dhcp_start,
+ subnet_dhcp_end AS dhcp_end, ntp_server, subnet_info AS info
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->display("subnetedit.tpl");
+
+elseif ($action == ACT_DELETE):
+// ========== VARIANT: delete record ==========================================
+
+// subnet
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+
+// node
+$sql = "SELECT node_id AS id, node_ip AS ip
+ FROM node
+ WHERE subnet_id=?
+ ORDER BY INET_ATON(node_ip)";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("nodes", $sth->fetchAll());
+
+$smarty->display("subnetdel.tpl");
+
+elseif ($action == ACT_LINK):
+// ========== VARIANT: link IP to node ========================================
+
+// assigniptonode
+$node_ip = sanitize($_GET['node_ip']);
+
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+$smarty->assign("node_ip", $node_ip);
+
+$smarty->display("assigniptonode.tpl");
+
+elseif ($action == ACT_LOCATION_EDIT):
+// ========== VARIANT: subnet to location =====================================
+
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->display("subnetlocationedit.tpl");
+
+elseif ($action == ACT_LOCATION_ADD):
+// ========== VARIANT: subnet to location =====================================
+
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->assign("location_options", db_get_options_location());
+
+$smarty->display("subnetlocationadd.tpl");
+
+elseif ($action == ACT_LOCATION_DEL):
+// ========== VARIANT: subnet to location =====================================
+
+// subnet
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+
+// locations for subnet
+$sql = "SELECT l.location_id, l.location_name
+ FROM subnetlocation AS s LEFT JOIN location AS l USING (location_id)
+ WHERE s.subnet_id=?
+ ORDER BY l.location_name";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$records = $sth->fetchAll();
+
+$locations = array();
+foreach ($records as $rec) {
+ $locations[$rec['location_id']] = $rec['location_name'];
+}
+$smarty->assign("location_options", $locations);
+
+$smarty->display("subnetlocationdel.tpl");
+
+elseif ($action == ACT_VLAN_EDIT):
+// ========== VARIANT: subnet to vlan =========================================
+
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->display("subnetvlanedit.tpl");
+
+elseif ($action == ACT_VLAN_ADD):
+// ========== VARIANT: subnet to vlan =========================================
+
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+
+// vlan
+$sql = "SELECT vlan_id, vlan_number, vlan_name
+ FROM vlan
+ WHERE vlan_id NOT IN (
+ SELECT vlan_id FROM subnetvlan WHERE subnet_id=?
+ )
+ ORDER BY vlan_number";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+
+$vlans = $sth->fetchAll();
+foreach ($vlans as $vlan) {
+ $vlan_options[$vlan['vlan_id']] = $vlan['vlan_name'] . ' (' . $vlan['vlan_number']. ')';
+}
+$smarty->assign("vlan_options", $vlan_options);
+
+$smarty->display("subnetvlanadd.tpl");
+
+elseif ($action == ACT_VLAN_DEL):
+// ========== VARIANT: subnet to vlan =========================================
+
+// subnet
+$sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
+ FROM subnet
+ WHERE subnet_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
+
+// vlan
+$sql = "SELECT v.vlan_id, v.vlan_number, v.vlan_name
+ FROM subnetvlan AS s LEFT JOIN vlan AS v USING (vlan_id)
+ WHERE s.subnet_id=?
+ ORDER BY v.vlan_number";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$vlans = $sth->fetchAll();
+foreach ($vlans as $vlan) {
+ $vlan_options[$vlan['vlan_id']] = $vlan['vlan_name'] . ' (' . $vlan['vlan_number']. ')';
+}
+$smarty->assign("vlan_options", $vlan_options);
+
+$smarty->display("subnetvlandel.tpl");
+
+else:
+// ========== ERROR UNKNOWN VARIANT ===========================================
+
+echo "Unknown function call: Please report to system development!
\n";
+
+endif; // $action == ...
+// ========== END OF VARIANTS =================================================
+
+$smarty->display('footer.tpl');
?>
diff --git a/subnetadd.php b/subnetadd.php
deleted file mode 100644
index 8f434fb..0000000
--- a/subnetadd.php
+++ /dev/null
@@ -1,21 +0,0 @@
-assign("vlan_options", db_get_options_vlan($lang['lang_option_none']));
-
-$smarty->display("subnetadd.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetdel.php b/subnetdel.php
deleted file mode 100644
index 4e470f2..0000000
--- a/subnetdel.php
+++ /dev/null
@@ -1,36 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-
-// node
-$sql = "SELECT node_id AS id, node_ip AS ip
- FROM node
- WHERE subnet_id=?
- ORDER BY INET_ATON(node_ip)";
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("nodes", $sth->fetchAll());
-
-$smarty->display("subnetdel.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetedit.php b/subnetedit.php
deleted file mode 100644
index ed1b51a..0000000
--- a/subnetedit.php
+++ /dev/null
@@ -1,29 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->display("subnetedit.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetlocationadd.php b/subnetlocationadd.php
deleted file mode 100644
index 5bf181f..0000000
--- a/subnetlocationadd.php
+++ /dev/null
@@ -1,28 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->assign("location_options", db_get_options_location());
-
-$smarty->display("subnetlocationadd.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetlocationdel.php b/subnetlocationdel.php
deleted file mode 100644
index 8761d9b..0000000
--- a/subnetlocationdel.php
+++ /dev/null
@@ -1,42 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-
-// locations for subnet
-$sql = "SELECT l.location_id, l.location_name
- FROM subnetlocation AS s LEFT JOIN location USING (location_id)
- WHERE s.subnet_id=?
- ORDER BY l.location_name";
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]
-$records = $sth->fetchAll();
-
-$locations = array();
-foreach ($records as $rec) {
- $locations[$rec['location_id']] = $rec['location_name'];
-}
-$smarty->assign("location_options", $locations);
-
-$smarty->display("subnetlocationdel.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetlocationedit.php b/subnetlocationedit.php
deleted file mode 100644
index 80544df..0000000
--- a/subnetlocationedit.php
+++ /dev/null
@@ -1,27 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->display("subnetlocationedit.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetview.php b/subnetview.php
deleted file mode 100644
index 1471b1b..0000000
--- a/subnetview.php
+++ /dev/null
@@ -1,364 +0,0 @@
-assign("scripts",'changetext.js');
-include("header.php");
-
-// subnet
-$sql = "SELECT
- s.subnet_id AS id,
- s.subnet_address AS address,
- s.subnet_mask AS mask,
- s.subnet_dhcp_start AS dhcp_start,
- s.subnet_dhcp_end AS dhcp_end,
- s.subnet_info AS info,
- s.protocol_version AS proto_vers,
- s.ntp_server,
- COUNT(node.subnet_id) AS node_counter
- FROM
- subnet AS s LEFT JOIN node USING (subnet_id)
- WHERE
- s.subnet_id=?
- GROUP BY
- s.subnet_id";
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]);
-
-$subnet = $sth->fetch(PDO::FETCH_OBJ);
-
-$smarty->assign("subnet", $subnet);
-
-// set counters
-$host_counter = pow(2, (32-$subnet->mask));
-$node_counter = $subnet->node_counter;
-$subnet_usedpercentage = round((($node_counter/($host_counter-2))*100), 1);
-
-$smarty->assign("node_counter", $node_counter);
-$smarty->assign("subnet_usedpercentage", $subnet_usedpercentage);
-$smarty->assign("config_color_unused", $config_color_unused);
-$smarty->assign("host_counter", $host_counter-2);
-$smarty->assign("free_counter", (($host_counter-2)-$node_counter));
-
-// subnet
-
-// split up the range
-$iprange = explode('.', $subnet->address);
-$iprange1 = $iprange[0];
-$iprange2 = $iprange[1];
-$iprange3 = $iprange[2];
-$iprange4 = $iprange[3];
-
-// create empty subnet-array
-$subnetdata = array();
-
-// determine range (Class A/B/C)
-if ($subnet->mask >= 24) {
- // Class C
- // fill subnet-array with addresses we want to see
- for($i=0; $i<$host_counter; $i++) {
- // build ip
- $ip = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i);
-
- // fill subnet-array
- $subnetdata[$ip] = array();
- }
-
- // calculate broadcast address
- $broadcast_address = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i-1);
-
- // to tpl
- $smarty->assign("iprange1", $iprange1);
- $smarty->assign("iprange2", $iprange2);
- $smarty->assign("iprange3", $iprange3);
- $smarty->assign("iprange4", $iprange4);
- $smarty->assign("subnetmask1", 255);
- $smarty->assign("subnetmask2", 255);
- $smarty->assign("subnetmask3", 255);
- $smarty->assign("subnetmask4", 256-$host_counter);
-
- // no pagination needed
- $smarty->assign("noselect", TRUE);
- $smarty->assign("one_select", FALSE);
- $smarty->assign("two_select", FALSE);
-
- // set displayed nodes
- $nodes_displayed = $host_counter;
-
-} else if ($subnet->mask >= 16) {
- // Class B
- // which part do we want to see?
- if ((empty($page)) ? $page = $subnet->address : $page = $page);
- $page = explode('.', $page);
- $page2 = $page[2];
-
- // fill subnet-array with addresses we want to see
- for($i=0; $i<256; $i++) {
- // build ip
- $ip = $iprange1 . '.' . $iprange2 . '.' . $page2 . '.' . $i;
-
- // fill subnet-array
- $subnetdata[$ip] = array();
- }
-
- // calculate broadcast address
- $broadcast_address = $iprange1 . '.' . $iprange2 . '.' . ($iprange3+$i-1) . '.255';
-
- // to tpl
- $smarty->assign("iprange1", $iprange1);
- $smarty->assign("iprange2", $iprange2);
-
- // loop addresses in range3
- for ($i=$iprange3; $i<(pow(2,(32-$subnet->mask))/256); $i++) {
- // send to tpl
- $smarty->assign("iprange3", $i);
- $smarty->assign("iprange4", 0);
-
- // set select box
- if ($i == $page2) {
- $smarty->assign("row_selected", "selected");
-
- } else {
- $smarty->assign("row_selected", "");
- }
-
- }
-
- $smarty->assign("subnetmask1", 255);
- $smarty->assign("subnetmask2", 255);
- $smarty->assign("subnetmask3", 256-($host_counter/256));
- $smarty->assign("subnetmask4", 0);
-
- // one select box
- $smarty->assign("noselect", FALSE);
- $smarty->assign("one_select", TRUE);
- $smarty->assign("two_select", FALSE);
-
- // set displayed nodes
- $nodes_displayed = 256;
-} else {
- // Class A
- // which part do we want to see?
- if ((empty($page)) ? $page = $subnet->address : $page = $page);
- $page = explode('.', $page);
- $page2 = $page[1];
- $page3 = $page[2];
-
- // fill subnet-array with addresses we want to see
- for($i=0; $i<256; $i++) {
- // build ip
- $ip = $iprange1 . '.' . $page2 . '.' . $page3 . '.' . $i;
-
- // fill subnet-array
- $subnetdata[$ip] = array();
- }
-
- // calculate broadcast address
- $broadcast_address = $iprange1 . '.' . ($iprange2+$i-1) . '.255.255';
-
- // to tpl
- $smarty->assign("iprange1", $iprange1);
- $smarty->assign("iprange2", $iprange2);
-
- // loop addresses in range 2
- for ($i=$iprange2; $i<(pow(2,(24-$subnet->mask))/256); $i++) {
- // send to tpl
- $smarty->assign("iprange1", $iprange1);
- $smarty->assign("iprange2", $i);
- $smarty->assign("iprange3", $page3);
- $smarty->assign("iprange4", $iprange4);
-
- // set select box
- if($i == $page2) {
- $smarty->assign("row1_selected", "selected");
-
- } else {
- $smarty->assign("row1_selected", "");
- }
-
- }
-
- // loop addresses in range 3
- for ($i=0; $i<256; $i++) {
- // send to tpl
- $smarty->assign("iprange1", $iprange1);
- $smarty->assign("iprange2", $page2);
- $smarty->assign("iprange3", $i);
- $smarty->assign("iprange4", $iprange4);
-
- // set select box
- if($i==$page3) {
- $smarty->assign("row2_selected", "selected");
-
- } else {
- $smarty->assign("row2_selected", "");
- }
-
- }
-
- $smarty->assign("subnetmask1", 255);
- $smarty->assign("subnetmask2", 256-($host_counter/65536));
- $smarty->assign("subnetmask3", 0);
- $smarty->assign("subnetmask4", 0);
-
- // one select box
- $smarty->assign("noselect", FALSE);
- $smarty->assign("one_select", FALSE);
- $smarty->assign("two_select", TRUE);
-
- // set displayed nodes
- $nodes_displayed = 256;
-}
-
-// get nodes for this subnetview and implement the values into the array
-$sql = "SELECT a.asset_name, g.assetclassgroup_color, n.node_id, n.node_ip
- FROM
- asset AS a,
- assetclass AS c,
- assetclassgroup AS g,
- node AS n
- WHERE
- n.node_ip IN ('".implode("','",array_keys($subnetdata))."')
- AND n.subnet_id=?
- AND a.asset_id=n.asset_id
- AND c.assetclass_id=a.assetclass_id
- AND g.assetclassgroup_id=c.assetclassgroup_id";
-
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]);
-
-$nodes = $sth->fetchAll();
-$smarty->assign("nodes", $nodes);
-
-if (count($nodes) > 0) {
- foreach ($nodes AS $node) {
- $subnetdata[$node['node_ip']] = $node;
- }
-}
-
-// replace ip's in subnet-array (if necessary)
-// check for subnet address
-if (array_key_exists($subnet->address, $subnet)) {
- // replace
- $subnetdata[$subnet->address] = array("subnet_address");
-}
-
-// check for broadcast address
-if (array_key_exists($broadcast_address, $subnet)) {
- // replace
- $subnetdata[$broadcast_address] = array("broadcast_address");
-}
-
-$dhcpstart = 0;
-if ($subnet->dhcp_start && $subnet->dhcp_end) {
- $dhcpstart = ip2long($subnet->dhcp_start);
- $dhcpend = ip2long($subnet->dhcp_end);
-}
-
- // loop subnet-array and send to template
- // start counter
-// $i=1;
- // loop subnet-array
-foreach ($subnetdata AS $node_ip => $node) {
-
-// make new line?
-// if(($i%$_SESSION['suser_imagecount']==0 && $i!=$nodes_displayed) ? $tr="
" : $tr="");
-
- // check if node-ip in DHCP-area
- $subnetdata[$node_ip]["dynamic"] = false;
- if ($dhcpstart > 0) {
- $ipval = ip2long($node_ip);
- if (($ipval >= $dhcpstart) and ($ipval <= $dhcpend)) {
- $subnetdata[$node_ip]["dynamic"] = true;
- }
- }
-
- // check node
- if (empty($node)) {
- // empty node to tpl
- $subnetdata[$node_ip]["url"] = 'assigniptonode.php?subnet_id=' . $subnet_id . '&node_ip='. $node_ip;
- $subnetdata[$node_ip]["remotetext"] = $node_ip;
- if ($subnetdata[$node_ip]["dynamic"]) {
- $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_dynamic;
- } else {
- $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_unused;
- }
- } else if (array_key_exists(0, $node) && $node[0]=="subnet_address") {
- // subnet address to tpl
- $subnetdata[$node_ip]["url"] = "";
- $subnetdata[$node_ip]["remotetext"] = $node_ip . ' ' . $lang['lang_subnet_subnetaddress'];
- $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_blocked;
- } else if (array_key_exists(0, $node) && $node[0]=="broadcast_address") {
- // broadcast address to tpl
- $subnetdata[$node_ip]["url"] = "";
- $subnetdata[$node_ip]["remotetext"] = $node_ip . ' ' . $lang['lang_subnet_broadcastaddress'];
- $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_blocked;
- } else {
- // node to tpl
- $subnetdata[$node_ip]["url"] = 'nodeview.php?node_id=' . $node['node_id'];
- $subnetdata[$node_ip]["remotetext"] = $node_ip . ' ' . $node['asset_name'];
- $subnetdata[$node_ip]["assetclassgroup_color"] = $node['assetclassgroup_color'];
- }
-
- // update counter
- // $i++;
-
-} // foreach
-
-$smarty->assign("subnetdata", $subnetdata);
-$smarty->assign("imagewrap", $_SESSION['suser_imagecount']);
-
-// vlans
-$sql = "SELECT v.vlan_id AS id, v.vlan_name AS name,
- v.vlan_number AS number
- FROM subnetvlan AS s JOIN vlan AS v USING (vlan_id)
- WHERE s.subnet_id=?
- ORDER BY v.vlan_name";
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("vlans", $sth->fetchAll());
-
-// locations
-$sql = "SELECT l.location_id, l.location_name
- FROM location AS l LEFT JOIN subnetlocation AS s USING (location_id)
- WHERE s.subnet_id=?
- ORDER BY l.location_name";
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("locations", $sth->fetchAll());
-
-// assetclassgroups
-$sql = "SELECT
- assetclassgroup_id AS id,
- assetclassgroup_name AS name,
- assetclassgroup_color AS color,
- COUNT(assetclass_id) AS counter
- FROM subnet
- LEFT JOIN node USING (subnet_id)
- LEFT JOIN asset USING (asset_id)
- LEFT JOIN assetclass USING (assetclass_id)
- LEFT JOIN assetclassgroup USING (assetclassgroup_id)
- WHERE subnet_id=?
- GROUP BY assetclass_id
- ORDER BY counter DESC";
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("assetclassgroups", $sth->fetchAll());
-
-$smarty->display("subnetview.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetvlanadd.php b/subnetvlanadd.php
deleted file mode 100644
index 181d49f..0000000
--- a/subnetvlanadd.php
+++ /dev/null
@@ -1,43 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-
-// vlan
-$sql = "SELECT vlan_id, vlan_number, vlan_name
- FROM vlan
- WHERE vlan_id NOT IN (
- SELECT vlan_id FROM subnetvlan WHERE subnet_id=?
- )
- ORDER BY vlan_number";
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]);
-
-$vlans = $sth->fetchAll();
-foreach ($vlans as $vlan) {
- $vlan_options[$vlan['vlan_id']] = $vlan['vlan_name'] . ' (' . $vlan['vlan_number']. ')';
-}
-$smarty->assign("vlan_options", $vlan_options);
-
-$smarty->display("subnetvlanadd.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetvlandel.php b/subnetvlandel.php
deleted file mode 100644
index d544177..0000000
--- a/subnetvlandel.php
+++ /dev/null
@@ -1,36 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-
-// vlan
-$sql = "SELECT v.vlan_id, v.vlan_number, v.vlan_name
- FROM subnetvlan AS s LEFT JOIN vlan AS v USING (vlan_id)
- WHERE s.subnet_id=?
- ORDER BY v.vlan_number";
-$sth = $dbh->prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("vlans", $sth->fetchAll());
-
-$smarty->display("subnetvlandel.tpl");
-
-include("footer.php");
-?>
diff --git a/subnetvlanedit.php b/subnetvlanedit.php
deleted file mode 100644
index 4bf5d0e..0000000
--- a/subnetvlanedit.php
+++ /dev/null
@@ -1,26 +0,0 @@
-prepare($sql);
-$sth->execute([$subnet_id]);
-$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->display("subnetvlanedit.tpl");
-
-include("footer.php");
-?>
diff --git a/tpl/asset.tpl b/tpl/asset.tpl
index 498289c..0722efe 100644
--- a/tpl/asset.tpl
+++ b/tpl/asset.tpl
@@ -6,7 +6,7 @@
{if $suser_add}
-
+
{/if}
|
@@ -37,7 +37,7 @@
{foreach item=asset from=$assets}
- {$asset.asset_name}
+ {$asset.asset_name}
|
{$asset.assetclass_name}
diff --git a/tpl/assetclassview.tpl b/tpl/assetclassview.tpl
index 778ddbf..e04a011 100644
--- a/tpl/assetclassview.tpl
+++ b/tpl/assetclassview.tpl
@@ -6,7 +6,7 @@
|
{if $suser_add}
-
+
{/if}
{if $suser_edit}
@@ -82,7 +82,7 @@
|
{foreach item=asset from=$assets}
- {$asset.asset_name}
+ {$asset.asset_name}
{$asset.asset_info}
{/foreach}
diff --git a/tpl/assetedit.tpl b/tpl/assetedit.tpl
index e2696ee..f85ec43 100644
--- a/tpl/assetedit.tpl
+++ b/tpl/assetedit.tpl
@@ -84,4 +84,24 @@
|
+{if $zabbix}
+
+{/if}
diff --git a/tpl/assetview.tpl b/tpl/assetview.tpl
index ccace93..a599e89 100644
--- a/tpl/assetview.tpl
+++ b/tpl/assetview.tpl
@@ -96,7 +96,7 @@
@@ -106,7 +106,7 @@
{foreach item=node from=$nodes}
- {if $node.node_ip}{$node.node_ip}{else}(leer){/if}
+ {if $node.node_ip}{$node.node_ip}{else}(leer){/if}
{if $node.node_info}{$node.node_info}{/if}
{/foreach}
|
diff --git a/tpl/assigniptonode.tpl b/tpl/assigniptonode.tpl
index c36546c..9ba7580 100644
--- a/tpl/assigniptonode.tpl
+++ b/tpl/assigniptonode.tpl
@@ -1,5 +1,4 @@
-
-
+
diff --git a/tpl/natedit.tpl b/tpl/natedit.tpl
index 68a1d13..1f6da13 100644
--- a/tpl/natedit.tpl
+++ b/tpl/natedit.tpl
@@ -1,5 +1,4 @@
-
-
+
@@ -41,12 +40,12 @@
- {$lang_nat_add}
+
|
- {$lang_nat_del}
+
|
diff --git a/tpl/node.tpl b/tpl/node.tpl
index 6ca28fb..4612dca 100644
--- a/tpl/node.tpl
+++ b/tpl/node.tpl
@@ -6,7 +6,7 @@
{if $suser_add || $suser_admin}
-
+
{/if}
|
@@ -22,6 +22,9 @@
+
@@ -29,13 +32,16 @@
{foreach item=node from=$nodes}
- {if $node.node_ip}{$node.node_ip}{else}(leer){/if}
+ {if $node.node_ip}{$node.node_ip}{else}(leer){/if}
|
{$node.node_info}
|
- {$node.asset_name}
+ {$node.asset_name}
+ |
+
+ {$node.assetclass_name}
|
{$node.asset_info}
@@ -43,7 +49,7 @@
|
{foreachelse}
-
+ |
{$lang_node_none}
|
diff --git a/tpl/nodeadd.tpl b/tpl/nodeadd.tpl
index 460464e..53ed570 100644
--- a/tpl/nodeadd.tpl
+++ b/tpl/nodeadd.tpl
@@ -1,5 +1,4 @@
-
-
+
@@ -28,7 +27,7 @@
{$lang_ip}
-
+
|
diff --git a/tpl/nodedel.tpl b/tpl/nodedel.tpl
index 3bdc020..c65ceba 100644
--- a/tpl/nodedel.tpl
+++ b/tpl/nodedel.tpl
@@ -1,7 +1,5 @@
-
-
-
-
+
+
@@ -30,7 +28,7 @@
{$lang_ip}
- {$node->ip}
+ {$node->ip}
|
diff --git a/tpl/nodeedit.tpl b/tpl/nodeedit.tpl
index d7afbda..d212c50 100644
--- a/tpl/nodeedit.tpl
+++ b/tpl/nodeedit.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
diff --git a/tpl/nodeview.tpl b/tpl/nodeview.tpl
index 8f67f27..c7aa8f8 100644
--- a/tpl/nodeview.tpl
+++ b/tpl/nodeview.tpl
@@ -6,10 +6,10 @@
{if $suser_edit}
-
+
{/if}
{if $suser_delete}
-
+
{/if}
|
@@ -29,7 +29,7 @@
{$lang_ip}
- {$node->ip}
+ {$node->ip}
|
@@ -96,7 +96,15 @@
{$lang_asset_name}
- {$node->asset_name}
+ {$node->asset_name}
+ |
+
+
+
+ {$lang_assetclass}
+ |
+
+ {$node->assetclass_name}
|
@@ -115,7 +123,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask}
- {$node->subnet_address}/{$node->subnet_mask}
+ {$node->subnet_address}/{$node->subnet_mask}
|
@@ -126,7 +134,7 @@
{$lang_nat}
@@ -137,10 +145,10 @@
{foreach item=rule from=$natrules}
{if $rule.node_id_int eq $node->id}
- {$rule.node_ip_ext}/{$rule.asset_name_ext} ({$rule.nat_type})
+ {$rule.node_ip_ext}/{$rule.asset_name_ext} ({$rule.nat_type})
{else}
- {$rule.node_ip_int}/{$rule.asset_name_int} ({$rule.nat_type})
+ {$rule.node_ip_int}/{$rule.asset_name_int} ({$rule.nat_type})
{/if}
{/foreach}
diff --git a/tpl/options.tpl b/tpl/options.tpl
index e14f417..1baa709 100644
--- a/tpl/options.tpl
+++ b/tpl/options.tpl
@@ -18,12 +18,12 @@
- {$lang_options_password}
+ {$lang_options_password}
|
- {$lang_options_display}
+ {$lang_options_display}
|
{if $suser_admin || $suser_manage}
diff --git a/tpl/optionseditdisplay.tpl b/tpl/optionseditdisplay.tpl
index a5102f5..138dd8b 100644
--- a/tpl/optionseditdisplay.tpl
+++ b/tpl/optionseditdisplay.tpl
@@ -1,5 +1,4 @@
-
-
+
diff --git a/tpl/optionseditpassword.tpl b/tpl/optionseditpassword.tpl
index 04cdff8..f1b7a1d 100644
--- a/tpl/optionseditpassword.tpl
+++ b/tpl/optionseditpassword.tpl
@@ -1,5 +1,4 @@
-
-
+
@@ -37,6 +36,7 @@
+ (minimum length 5 chars)
|
diff --git a/tpl/style.css b/tpl/style.css
index 1a2ecf6..bd73ac7 100644
--- a/tpl/style.css
+++ b/tpl/style.css
@@ -207,7 +207,9 @@ table.subnetview td {
div.error, div.warning, div.info, div.note {
padding: 0 1em 0 36px;
margin: 1em 0 0 0;
- -moz-border-radius: 12px;
+ border-radius: 12px;
+ width: 750px;
+ animation: fadeout 5s 2s forwards;
}
div.error {
border: 1px solid #8b0000;
@@ -239,3 +241,7 @@ div.info p,
div.note p {
margin: 0.5em 0.5em 0.5em 0;
}
+@keyframes fadeout {
+ from { opacity: 1; }
+ to { opacity: 0; height: 0; }
+}
diff --git a/tpl/subnet.tpl b/tpl/subnet.tpl
index ea1ac02..92da345 100644
--- a/tpl/subnet.tpl
+++ b/tpl/subnet.tpl
@@ -6,7 +6,7 @@
{if $suser_add || $suser_admin}
-
+
{/if}
|
@@ -27,7 +27,7 @@
{foreach item=subnet from=$subnets}
- {$subnet.subnet_address}/{$subnet.subnet_mask}
+ {$subnet.subnet_address}/{$subnet.subnet_mask}
|
{$subnet.node_counter}
diff --git a/tpl/subnetadd.tpl b/tpl/subnetadd.tpl
index 8e4fdd4..fd6d989 100644
--- a/tpl/subnetadd.tpl
+++ b/tpl/subnetadd.tpl
@@ -1,5 +1,4 @@
-
-
+
diff --git a/tpl/subnetdel.tpl b/tpl/subnetdel.tpl
index bd9a997..2d98146 100644
--- a/tpl/subnetdel.tpl
+++ b/tpl/subnetdel.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -25,7 +24,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask}
|
- {$subnet->address}/{$subnet->mask}
+ {$subnet->address}/{$subnet->mask}
|
@@ -43,7 +42,7 @@
{$lang_ip}
- {$node.ip}
+ {$node.ip}
|
{/foreach}
diff --git a/tpl/subnetedit.tpl b/tpl/subnetedit.tpl
index 6537b01..d168d10 100644
--- a/tpl/subnetedit.tpl
+++ b/tpl/subnetedit.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -53,7 +52,7 @@
{$lang_subnet_dhcpstart}
-
+
|
@@ -61,7 +60,7 @@
{$lang_subnet_dhcpend}
-
+
|
@@ -69,7 +68,7 @@
NTP Server
-
+
|
diff --git a/tpl/subnetlocationadd.tpl b/tpl/subnetlocationadd.tpl
index 84760dd..3b59ceb 100644
--- a/tpl/subnetlocationadd.tpl
+++ b/tpl/subnetlocationadd.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -30,7 +29,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask}
- {$subnet->address}/{$subnet->mask}
+ {$subnet->address}/{$subnet->mask}
|
diff --git a/tpl/subnetlocationdel.tpl b/tpl/subnetlocationdel.tpl
index 9c38246..738dd1c 100644
--- a/tpl/subnetlocationdel.tpl
+++ b/tpl/subnetlocationdel.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
diff --git a/tpl/subnetlocationedit.tpl b/tpl/subnetlocationedit.tpl
index 81ee80c..ee61eec 100644
--- a/tpl/subnetlocationedit.tpl
+++ b/tpl/subnetlocationedit.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -28,7 +27,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask}
- {$subnet->address}/{$subnet->mask}
+ {$subnet->address}/{$subnet->mask}
|
@@ -47,8 +46,8 @@
{$lang_options}
- {$lang_location_add}
- {$lang_location_del}
+
+
|
diff --git a/tpl/subnetview.tpl b/tpl/subnetview.tpl
index b62d3cc..58c8b22 100644
--- a/tpl/subnetview.tpl
+++ b/tpl/subnetview.tpl
@@ -6,10 +6,10 @@
{if $suser_edit}
-
+
{/if}
{if $suser_delete}
-
+
{/if}
|
@@ -53,7 +53,7 @@
{if $subnet->proto_vers eq 4}
- {$subnet->address}
+ {$subnet->address}
{else}
{$subnet->address} / {$subnet->mask}
{/if}
@@ -138,13 +138,13 @@
|
{/if}
-{foreach item=assetclassgroup from=$assetclassgroups}
+{foreach item=assetclass from=$assetclasses}
- {$assetclassgroup.name}
+ {$assetclass.name}
|
- {$assetclassgroup.counter}
+ {$assetclass.counter}
|
{/foreach}
@@ -157,7 +157,7 @@
@@ -167,7 +167,7 @@
{foreach item=vlan from=$vlans}
- {$vlan.name} ({$vlan.number})
+ {$vlan.name} ({$vlan.number})
{/foreach}
|
@@ -180,7 +180,7 @@
@@ -190,7 +190,7 @@
{foreach item=location from=$locations}
- {$location.location_name}
+ {$location.location_name}
{/foreach}
|
diff --git a/tpl/subnetvlanadd.tpl b/tpl/subnetvlanadd.tpl
index 3543f2d..ee2b805 100644
--- a/tpl/subnetvlanadd.tpl
+++ b/tpl/subnetvlanadd.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -28,7 +27,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask}
- {$subnet->address}/{$subnet->mask}
+ {$subnet->address}/{$subnet->mask}
|
diff --git a/tpl/subnetvlandel.tpl b/tpl/subnetvlandel.tpl
index 142e11b..c3d2f02 100644
--- a/tpl/subnetvlandel.tpl
+++ b/tpl/subnetvlandel.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -28,7 +27,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask}
- {$subnet_address}/{$subnet_mask}
+ {$subnet->address}/{$subnet->mask}
|
diff --git a/tpl/subnetvlanedit.tpl b/tpl/subnetvlanedit.tpl
index f8af0da..fb89bbf 100644
--- a/tpl/subnetvlanedit.tpl
+++ b/tpl/subnetvlanedit.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -28,7 +27,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask}
- {$subnet->address}/{$subnet->mask}
+ {$subnet->address}/{$subnet->mask}
|
diff --git a/tpl/vlansubnetadd.tpl b/tpl/vlansubnetadd.tpl
index 0dcd68c..5fc1bfc 100644
--- a/tpl/vlansubnetadd.tpl
+++ b/tpl/vlansubnetadd.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -28,7 +27,7 @@
{$lang_vlan_name} ({$lang_vlan_number})
- {$vlan->name} ({$vlan->number})
+ {$vlan->name} ({$vlan->number})
|
diff --git a/tpl/vlansubnetdel.tpl b/tpl/vlansubnetdel.tpl
index ce36e57..1bb5b46 100644
--- a/tpl/vlansubnetdel.tpl
+++ b/tpl/vlansubnetdel.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -28,7 +27,7 @@
{$lang_vlan_name} ({$lang_vlan_number})
- {$vlan_name} ({$vlan_number})
+ {$vlan->name} ({$vlan->number})
|
diff --git a/tpl/vlansubnetedit.tpl b/tpl/vlansubnetedit.tpl
index ff6af0d..c834537 100644
--- a/tpl/vlansubnetedit.tpl
+++ b/tpl/vlansubnetedit.tpl
@@ -1,6 +1,5 @@
-
-
-
+
+
@@ -28,7 +27,7 @@
{$lang_vlan_name} ({$lang_vlan_number})
- {$vlan->name} ({$vlan->number})
+ {$vlan->name} ({$vlan->number})
|
diff --git a/tpl/vlanview.tpl b/tpl/vlanview.tpl
index 1e0a2e9..cd1faf3 100644
--- a/tpl/vlanview.tpl
+++ b/tpl/vlanview.tpl
@@ -69,7 +69,7 @@
@@ -79,7 +79,7 @@
{foreach item=subnet from=$subnets}
- {$subnet.subnet_address}/{$subnet.subnet_mask}
+ {$subnet.subnet_address}/{$subnet.subnet_mask}
{$subnet.subnet_info}
{/foreach}
diff --git a/tpl/zoneedit.tpl b/tpl/zoneedit.tpl
index b3341c7..3930376 100644
--- a/tpl/zoneedit.tpl
+++ b/tpl/zoneedit.tpl
@@ -29,6 +29,7 @@
|
+ (example.com.)
|
@@ -37,6 +38,7 @@
+ (3D)
|
@@ -45,6 +47,7 @@
+ (server.example.com.)
|
@@ -53,6 +56,7 @@
+ (hostmaster.example.com.)
|
@@ -61,6 +65,7 @@
+ (jjjjmmttnn)
|
@@ -69,6 +74,7 @@
+ (8H)
|
@@ -77,6 +83,7 @@
+ (2H)
|
@@ -85,6 +92,7 @@
+ (4W)
|
@@ -93,6 +101,7 @@
+ (1D)
|
@@ -101,6 +110,7 @@
+ (ns1.example.com.)
|
@@ -125,6 +135,7 @@
+ (50 mx.example.com.)
|
diff --git a/user.php b/user.php
index 03449d3..a4a3b0f 100644
--- a/user.php
+++ b/user.php
@@ -10,7 +10,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php");
if (($_SESSION['suser_role_admin'] == 0) and ($_SESSION['suser_role_manage'] == 0)) {
- header_location('comments.php?comments=accessdenied');
+ $g_error->add('Access denied!');
+ $action = ACT_ERR_DENIED;
}
if (isset($_REQUEST['id'])) {
@@ -170,6 +171,14 @@ $smarty->assign("user", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("userdel.tpl");
+elseif ($action == ACT_ERR_DENIED):
+// ========== ERROR ACCESS TO PAGE DENIED =====================================
+
+if (isset($_SERVER['HTTP_REFERER'])) {
+ echo '', "Back to last page
\n";
+}
+echo "";
+
else:
// ========== ERROR UNKNOWN VARIANT ===========================================
diff --git a/vlan.php b/vlan.php
index 75a8f94..0ef99b5 100644
--- a/vlan.php
+++ b/vlan.php
@@ -13,6 +13,12 @@ if (isset($_REQUEST['id'])) {
$id = (int) $_REQUEST['id'] or $id = 0;
}
+// ========== ADDITIONAL ACTION DEFINITIONS ===================================
+
+define ('ACT_SUBNET_EDIT', 100);
+define ('ACT_SUBNET_ADD', 101);
+define ('ACT_SUBNET_DEL', 102);
+
// ========== ACTIONS START ===================================================
switch ($submit = form_get_action()) {
@@ -23,6 +29,37 @@ switch ($submit = form_get_action()) {
case 'edit': $action = ACT_EDIT; break;
case 'del': $action = ACT_DELETE; break;
+ // Subnet
+ case 'sedit': $action = ACT_SUBNET_EDIT; break;
+ case 'sadd': $action = ACT_SUBNET_ADD; break;
+ case 'sdel': $action = ACT_SUBNET_DEL; break;
+
+ case 'exec-sedit':
+ if ($_POST['action'] == 'vlansubnetadd') {
+ $action = ACT_SUBNET_ADD;
+ } elseif ($_POST['action'] == 'vlansubnetdel') {
+ $action = ACT_SUBNET_DEL;
+ } else {
+ $g_warning->Add('Invalid action: '. $_POST['action']);
+ }
+ break;
+
+ case 'exec-sadd':
+ $subnet_id = sanitize($_POST['subnet_id']);
+ $sql = "INSERT INTO subnetvlan (subnet_id, vlan_id) VALUES (?, ?)";
+ $sth = $dbh->prepare($sql);
+ $sth->execute([$subnet_id, $id]);
+ $action = ACT_VIEW;
+ break;
+
+ case 'exec-sdel':
+ $subnet_id = sanitize($_POST['subnet_id']);
+ $sth = $dbh->prepare("DELETE FROM subnetvlan WHERE subnet_id=? AND vlan_id=?");
+ $sth->execute([$subnet_id, $id]);
+ $g_message->Add('Removed link to subnet');
+ $action = ACT_VIEW;
+ break;
+
case 'insert':
$vlan_name = sanitize($_POST['vlan_name']);
$vlan_number = sanitize($_POST['vlan_number']);
@@ -30,7 +67,7 @@ switch ($submit = form_get_action()) {
$vlan_color = sanitize($_POST['vlan_color']);
$sql = "INSERT INTO vlan (vlan_name, vlan_number, vlan_color, vlan_info)
- VALUE (?, ?, ?, ?)";
+ VALUES (?, ?, ?, ?)";
$sth = $dbh->prepare($sql);
$sth->execute([$vlan_name, $vlan_number, $vlan_color, $vlan_info]);
@@ -132,6 +169,60 @@ $smarty->assign("vlan", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("vlandel.tpl");
+elseif ($action == ACT_SUBNET_EDIT):
+// ========== VARIANT: subnet to vlan =========================================
+
+$sql = "SELECT vlan_id AS id, vlan_name AS name, vlan_number AS number FROM vlan WHERE vlan_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+
+$smarty->assign("vlan", $sth->fetch(PDO::FETCH_OBJ));
+
+$smarty->display("vlansubnetedit.tpl");
+
+elseif ($action == ACT_SUBNET_ADD):
+// ========== VARIANT: subnet to vlan =========================================
+
+$sql = "SELECT vlan_id AS id, vlan_name AS name, vlan_number AS number
+ FROM vlan
+ WHERE vlan_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("vlan", $sth->fetch(PDO::FETCH_OBJ));
+
+// possible subnets to add to vlan
+// - exclude already assingned subnets from selection
+$sql = "SELECT subnet_id, subnet_address, subnet_mask
+ FROM subnet
+ WHERE subnet_id NOT IN (SELECT subnet_id FROM subnetvlan WHERE vlan_id=?)
+ ORDER BY INET_ATON(subnet_address)";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+
+$subnets = $sth->fetchAll();
+
+foreach ($subnets as $subnet) {
+ $subnet_options[$subnet['subnet_id']] = $subnet['subnet_address'].'/'.$subnet['subnet_mask'];
+}
+$smarty->assign("subnet_options", $subnet_options);
+
+$smarty->display("vlansubnetadd.tpl");
+
+elseif ($action == ACT_SUBNET_DEL):
+// ========== VARIANT: subnet to vlan =========================================
+
+$sql = "SELECT vlan_id AS id, vlan_name AS name, vlan_number AS number
+ FROM vlan
+ WHERE vlan_id=?";
+$sth = $dbh->prepare($sql);
+$sth->execute([$id]);
+$smarty->assign("vlan", $sth->fetch(PDO::FETCH_OBJ));
+
+// TODO only linked subnets!
+$smarty->assign("subnet_options", db_get_options_subnet());
+
+$smarty->display("vlansubnetdel.tpl");
+
else:
// ========== ERROR UNKNOWN VARIANT ===========================================
diff --git a/vlansubnetadd.php b/vlansubnetadd.php
deleted file mode 100644
index bc47df3..0000000
--- a/vlansubnetadd.php
+++ /dev/null
@@ -1,43 +0,0 @@
-prepare($sql);
-$sth->execute([$vlan_id]);
-$smarty->assign("vlan", $sth->fetch(PDO::FETCH_OBJ));
-
-
-// possible subnets to add to vlan
-// - exclude already assingned subnets from selection
-$sql = "SELECT subnet_id, subnet_address, subnet_mask
- FROM subnet
- WHERE subnet_id NOT IN (SELECT subnet_id FROM subnetvlan WHERE vlan_id=?)
- ORDER BY INET_ATON(subnet_address)";
-$sth = $dbh->prepare($sql);
-$sth->execute([$vlan_id]);
-
-$subnets = $sth->fetchAll();
-
-foreach ($subnets as $subnet) {
- $subnet_options[$subnet['subnet_id']] = $subnet['subnet_address'].'/'.$subnet['subnet_mask'];
-}
-$smarty->assign("subnet_options", $subnet_options);
-
-$smarty->display("vlansubnetadd.tpl");
-
-include("footer.php");
-?>
diff --git a/vlansubnetdel.php b/vlansubnetdel.php
deleted file mode 100644
index 0434f75..0000000
--- a/vlansubnetdel.php
+++ /dev/null
@@ -1,27 +0,0 @@
-prepare($sql);
-$sth->execute([$vlan_id]);
-$smarty->assign("vlan", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->assign("subnet_options", db_get_options_subnet());
-
-$smarty->display("vlansubnetdel.tpl");
-
-include("footer.php");
-?>
diff --git a/vlansubnetedit.php b/vlansubnetedit.php
deleted file mode 100644
index 7feabd9..0000000
--- a/vlansubnetedit.php
+++ /dev/null
@@ -1,25 +0,0 @@
-prepare($sql);
-$sth->execute([$vlan_id]);
-
-$smarty->assign("vlan", $sth->fetch(PDO::FETCH_OBJ));
-
-$smarty->display("vlansubnetedit.tpl");
-
-include("footer.php");
-?>