Refactored, no more redirects. Improved error messaging system

master
Thomas Hooge 2 years ago
parent 7cfcaeb9d7
commit 78b97c5094
  1. 2
      about.php
  2. 34
      asset.php
  3. 29
      assigniptonode.php
  4. 28
      assignnodetoasset.php
  5. 35
      cable.php
  6. 22
      comments.php
  7. 2
      index.php
  8. 2
      lib.php
  9. 94
      location.php
  10. 75
      locationadd.php
  11. 24
      locationdel.php
  12. 98
      locationedit.php
  13. 28
      locationsubnetadd.php
  14. 44
      locationsubnetdel.php
  15. 26
      locationsubnetedit.php
  16. 67
      locationview.php
  17. 161
      nat.php
  18. 65
      natadd.php
  19. 40
      natdel.php
  20. 24
      natedit.php
  21. 246
      node.php
  22. 27
      nodeadd.php
  23. 24
      nodedel.php
  24. 32
      nodeedit.php
  25. 89
      nodeview.php
  26. 212
      options.php
  27. 99
      optionseditdisplay.php
  28. 16
      optionseditpassword.php
  29. 815
      submit.php
  30. 726
      subnet.php
  31. 21
      subnetadd.php
  32. 36
      subnetdel.php
  33. 29
      subnetedit.php
  34. 28
      subnetlocationadd.php
  35. 42
      subnetlocationdel.php
  36. 27
      subnetlocationedit.php
  37. 364
      subnetview.php
  38. 43
      subnetvlanadd.php
  39. 36
      subnetvlandel.php
  40. 26
      subnetvlanedit.php
  41. 4
      tpl/asset.tpl
  42. 4
      tpl/assetclassview.tpl
  43. 20
      tpl/assetedit.tpl
  44. 4
      tpl/assetview.tpl
  45. 11
      tpl/assigniptonode.tpl
  46. 5
      tpl/assignnodetoasset.tpl
  47. 10
      tpl/cableadd.tpl
  48. 23
      tpl/comments.tpl
  49. 2
      tpl/header.tpl
  50. 11
      tpl/locationsubnetadd.tpl
  51. 12
      tpl/locationsubnetdel.tpl
  52. 8
      tpl/locationsubnetedit.tpl
  53. 4
      tpl/locationview.tpl
  54. 4
      tpl/nat.tpl
  55. 7
      tpl/natadd.tpl
  56. 7
      tpl/natdel.tpl
  57. 9
      tpl/natedit.tpl
  58. 14
      tpl/node.tpl
  59. 7
      tpl/nodeadd.tpl
  60. 10
      tpl/nodedel.tpl
  61. 7
      tpl/nodeedit.tpl
  62. 24
      tpl/nodeview.tpl
  63. 4
      tpl/options.tpl
  64. 5
      tpl/optionseditdisplay.tpl
  65. 6
      tpl/optionseditpassword.tpl
  66. 8
      tpl/style.css
  67. 4
      tpl/subnet.tpl
  68. 5
      tpl/subnetadd.tpl
  69. 11
      tpl/subnetdel.tpl
  70. 11
      tpl/subnetedit.tpl
  71. 9
      tpl/subnetlocationadd.tpl
  72. 7
      tpl/subnetlocationdel.tpl
  73. 13
      tpl/subnetlocationedit.tpl
  74. 20
      tpl/subnetview.tpl
  75. 9
      tpl/subnetvlanadd.tpl
  76. 9
      tpl/subnetvlandel.tpl
  77. 9
      tpl/subnetvlanedit.tpl
  78. 9
      tpl/vlansubnetadd.tpl
  79. 9
      tpl/vlansubnetdel.tpl
  80. 9
      tpl/vlansubnetedit.tpl
  81. 4
      tpl/vlanview.tpl
  82. 11
      tpl/zoneedit.tpl
  83. 11
      user.php
  84. 93
      vlan.php
  85. 43
      vlansubnetadd.php
  86. 27
      vlansubnetdel.php
  87. 25
      vlansubnetedit.php

@ -12,5 +12,5 @@ include("header.php");
$smarty->display("about.tpl"); $smarty->display("about.tpl");
include("footer.php"); $smarty->display("footer.tpl");
?> ?>

@ -58,6 +58,24 @@ switch ($submit = form_get_action()) {
$sth->execute([$asset_name, $asset_info, $asset_hostname, $sth->execute([$asset_name, $asset_info, $asset_hostname,
$assetclass_id, $asset_intf, $asset_type, $assetclass_id, $asset_intf, $asset_type,
$id]); $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; $action = ACT_VIEW;
break; break;
@ -165,7 +183,19 @@ $smarty->assign("nodes", $sth->fetchAll(PDO::FETCH_ASSOC));
// ID: extlink_refid int // ID: extlink_refid int
// extlink_uid string // 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"); $smarty->display("assetview.tpl");
@ -186,6 +216,8 @@ $smarty->assign("type_names", ['Active', 'Passive']);
$smarty->assign("assetclass_options", db_get_options_assetclass()); $smarty->assign("assetclass_options", db_get_options_assetclass());
$smarty->display("assetedit.tpl"); $smarty->display("assetedit.tpl");
elseif ($action == ACT_DELETE): elseif ($action == ACT_DELETE):

@ -1,29 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$node_ip = sanitize($_GET['node_ip']);
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
$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([$subnet_id]);
$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
$smarty->assign("node_ip", $node_ip);
$smarty->display("assigniptonode.tpl");
include("footer.php");
?>

@ -1,28 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$asset_id = sanitize($_GET['asset_id']);
$node_ip = sanitize($_GET['node_ip']);
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
$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");
include("footer.php");
?>

@ -10,7 +10,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php"); include("includes.php");
if ($_SESSION['suser_role_admin'] == 0) { 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'])) { if (isset($_REQUEST['id'])) {
@ -33,16 +34,21 @@ switch ($submit = form_get_action()) {
case 'insert': case 'insert':
$description = sanitize($_POST['description']); $description = sanitize($_POST['description']);
$length = sanitize($_POST['length']);
$color = sanitize($_POST['color']); $color = sanitize($_POST['color']);
$type = sanitize($_POST['cable_type']); $type = sanitize($_POST['cable_type']);
$links = sanitize($_POST['links']); $links = sanitize($_POST['links']);
$info = sanitize($_POST['info']); $info = sanitize($_POST['info']);
$sql = "INSERT INTO cable $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 VALUES
(:description, :color, :type, :links, :info)"; (:description, :color, :type, :links,
:length, :info)";
$sth = $dbh->prepare($sql); $sth = $dbh->prepare($sql);
try {
$sth->bindValue(':description', $description, PDO::PARAM_STR); $sth->bindValue(':description', $description, PDO::PARAM_STR);
$sth->bindValue(':length', $length, PDO::PARAM_INT);
$sth->bindValue(':color', $color, PDO::PARAM_STR); $sth->bindValue(':color', $color, PDO::PARAM_STR);
$sth->bindValue(':type', $type, PDO::PARAM_STR); $sth->bindValue(':type', $type, PDO::PARAM_STR);
$sth->bindValue(':links', $info, PDO::PARAM_INT); $sth->bindValue(':links', $info, PDO::PARAM_INT);
@ -50,6 +56,21 @@ switch ($submit = form_get_action()) {
$sth->execute(); $sth->execute();
$id = $dbh->lastInsertId(); $id = $dbh->lastInsertId();
$action = ACT_VIEW; $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; break;
case 'update': case 'update':
@ -156,6 +177,14 @@ $smarty->assign('description', $sth->fetchColumn());
$smarty->display('cabledel.tpl'); $smarty->display('cabledel.tpl');
elseif ($action == ACT_ERR_DENIED):
// ========== ERROR ACCESS TO PAGE DENIED =====================================
if (isset($_SERVER['HTTP_REFERER'])) {
echo '<p"><a href="', $_SERVER['HTTP_REFERER'], '">', "Back to last page</a></p>\n";
}
echo "<p></p>";
else: else:
// ========== ERROR UNKNOWN VARIANT =========================================== // ========== ERROR UNKNOWN VARIANT ===========================================

@ -1,22 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
include("header.php");
$comments = sanitize($_GET['comments']);
$smarty->assign("comments", $lang['lang_comments_' . $comments]);
$smarty->display("comments.tpl");
include("footer.php");
?>

@ -55,5 +55,5 @@ $smarty->assign("cable_counter", $sth->fetchColumn());
$smarty->display("index.tpl"); $smarty->display("index.tpl");
include("footer.php"); $smarty->display("footer.tpl");
?> ?>

@ -10,6 +10,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
// ========== CONSTANT DEFINITIONS ============================================ // ========== CONSTANT DEFINITIONS ============================================
// page actions // page actions
define ('ACT_ERR_DENIED', -1);
define ('ACT_DEFAULT', 0); define ('ACT_DEFAULT', 0);
define ('ACT_ADD', 1); define ('ACT_ADD', 1);
define ('ACT_VIEW', 2); define ('ACT_VIEW', 2);
@ -24,6 +25,7 @@ define ('ACT_LINK', 10);
define ('ACT_UNLINK', 11); define ('ACT_UNLINK', 11);
define ('ACT_MAIL', 12); define ('ACT_MAIL', 12);
define ('ACT_VIEW_LIST', 13); define ('ACT_VIEW_LIST', 13);
define ('ACT_PASSWORD', 14);
// ========== GLOBAL PAGE START CODE ========================================== // ========== GLOBAL PAGE START CODE ==========================================

@ -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 =================================================== // ========== ACTIONS START ===================================================
switch ($submit = form_get_action()) { switch ($submit = form_get_action()) {
@ -55,6 +61,17 @@ switch ($submit = form_get_action()) {
case 'view': $action = ACT_VIEW; break; case 'view': $action = ACT_VIEW; break;
case 'edit': $action = ACT_EDIT; break; case 'edit': $action = ACT_EDIT; break;
case 'del': $action = ACT_DELETE; 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': case 'insert':
$name = sanitize($_POST['location_name']); $name = sanitize($_POST['location_name']);
@ -84,6 +101,22 @@ switch ($submit = form_get_action()) {
$action = ACT_VIEW; $action = ACT_VIEW;
break; 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': case 'delete':
$sth = $dbh->prepare("DELETE FROM location WHERE location_id=?"); $sth = $dbh->prepare("DELETE FROM location WHERE location_id=?");
$sth->execute([$id]); $sth->execute([$id]);
@ -118,7 +151,7 @@ function build_tree($parent_id, $level) {
unset($location['parent_id']); unset($location['parent_id']);
$location['children'] = build_tree($location['id'], $level+1); $location['children'] = build_tree($location['id'], $level+1);
$location['level'] = $level; $location['level'] = $level;
$location['href'] = 'locationview.php?location_id=' . $location['id']; $location['href'] = 'location.php?f=view&id=' . $location['id'];
$children[] = $location; $children[] = $location;
} }
} }
@ -166,7 +199,7 @@ elseif ($action == ACT_VIEW):
// base location // base location
$sql = "SELECT location_id AS id, location_name AS name, $sql = "SELECT location_id AS id, location_name AS name,
location_parent AS parent_id, location_info AS info, 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 FROM location
WHERE location_id=?"; WHERE location_id=?";
$sth = $dbh->prepare($sql); $sth = $dbh->prepare($sql);
@ -178,7 +211,7 @@ $smarty->assign("location", $location);
$crumbs[] = $location; $crumbs[] = $location;
$sql = "SELECT location_id AS id, location_name AS name, $sql = "SELECT location_id AS id, location_name AS name,
location_parent AS parent_id, 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 FROM location
WHERE location_id=?"; WHERE location_id=?";
$sth = $dbh->prepare($sql); $sth = $dbh->prepare($sql);
@ -243,7 +276,7 @@ $location_counter = count($locations);
$smarty->assign("location_counter", $location_counter); $smarty->assign("location_counter", $location_counter);
// any loactions? // any locations?
if ($location_counter>0) { if ($location_counter>0) {
foreach($locations AS $location) { foreach($locations AS $location) {
$location_names[$location['location_id']] = $location['location_name']; $location_names[$location['location_id']] = $location['location_name'];
@ -259,6 +292,59 @@ $smarty->assign("location_parent", $location_parent);
$smarty->display("locationedit.tpl"); $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): elseif ($action == ACT_DELETE):
// ========== VARIANT: delete record ========================================== // ========== VARIANT: delete record ==========================================

@ -1,75 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$location_parent = sanitize($_GET['location_parent']);
include("header.php");
// ************* <option value="0">{$lang_option_none}</option>
$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("-&nbsp;&nbsp;", $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");
?>

@ -1,24 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$location_id = sanitize($_GET['location_id']);
include("header.php");
$sql = "SELECT location_id AS id, location_name AS name FROM location WHERE location_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$location_id]);
$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("locationdel.tpl");
include("footer.php");
?>

@ -1,98 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$location_id = sanitize($_GET['location_id']);
include("header.php");
// location
$sql = "SELECT location_id AS id, location_name AS name, location_parent AS parent,
location_info AS info, location_sort AS sort
FROM location
WHERE location_id=?";
$sth = $dbh->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("-&nbsp;&nbsp;", $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");
?>

@ -1,28 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$location_id = sanitize($_GET['location_id']);
include("header.php");
$sql = "SELECT location_id AS id, location_name AS name
FROM location
WHERE location_id=?";
$sth = $dbh->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");
?>

@ -1,44 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$location_id = sanitize($_GET['location_id']);
include("header.php");
// location
$sql = "SELECT location_id AS id, location_name AS name
FROM location
WHERE location_id=?";
$sth = $dbh->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");
?>

@ -1,26 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$location_id = sanitize($_GET['location_id']);
include("header.php");
$sql = "SELECT location_id AS id, location_name AS name
FROM location
WHERE location_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$location_id]);
$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("locationsubnetedit.tpl");
include("footer.php");
?>

@ -1,67 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$location_id = sanitize($_GET['location_id']);
if ((isset($_GET['id'])) ? $id = sanitize($_GET['id']) : $id = '');
include("header.php");
// 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
FROM location
WHERE location_id=?";
$sth = $dbh->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");
?>

@ -9,6 +9,49 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php"); 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"); include("header.php");
$sql = "SELECT n.nat_id AS id, n.nat_type, n.nat_ext, n.nat_int, $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"); $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 "<p>Unknown function call: Please report to system development!</p>\n";
endif; // $action == ...
// ========== END OF VARIANTS =================================================
$smarty->display('footer.tpl');
?> ?>

@ -1,65 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$node_id = sanitize($_GET['node_id']);
include("header.php");
// 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");
include("footer.php");
?>

@ -1,40 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$node_id = sanitize($_GET['node_id']);
include("header.php");
// 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");
include("footer.php");
?>

@ -1,24 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$node_id = sanitize($_GET['node_id']);
include("header.php");
$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");
include("footer.php");
?>

@ -8,8 +8,115 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/ *****************************************************************************/
include("includes.php"); 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"); include("header.php");
if ($action == ACT_DEFAULT):
// ========== VARIANT: default behavior =======================================
// filter preparation // filter preparation
$p = array(); $p = array();
$w = 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, CONCAT(LEFT(a.asset_info,30), IF(CHAR_LENGTH(a.asset_info)>30,'...','')) AS asset_info,
REPLACE(a.asset_name, ' ', '&nbsp;') AS asset_name, REPLACE(a.asset_name, ' ', '&nbsp;') AS asset_name,
n.node_id, n.node_ip, n.node_id, n.node_ip,
CONCAT(LEFT(n.node_info,30), IF(CHAR_LENGTH(n.node_info)>30,'...','')) AS node_info 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)"; 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) { if ($where) {
$sql .= ' WHERE ' . $where; $sql .= ' WHERE ' . $where;
} }
@ -50,5 +159,136 @@ $smarty->assign("nodes", $sth->fetchAll());
$smarty->display("node.tpl"); $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 "<p>Unknown function call: Please report to system development!</p>\n";
endif; // $action == ...
// ========== END OF VARIANTS =================================================
$smarty->display('footer.tpl');
?> ?>

@ -1,27 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
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 = '');
include("header.php");
$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");
include("footer.php");
?>

@ -1,24 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$node_id = sanitize($_GET['node_id']);
include("header.php");
$sql = "SELECT node_id AS id, node_ip AS ip, asset_id FROM node WHERE node_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$node_id]);
$smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("nodedel.tpl");
include("footer.php");
?>

@ -1,32 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$node_id = sanitize($_GET['node_id']);
include("header.php");
$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([$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");
?>

@ -1,89 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
if (isset($_GET['node_id']) && (!empty($_GET['node_id']))) {
$node_id = sanitize($_GET['node_id']);
} else {
// redirect to error page
header_location("comments.php?comments=error");
exit;
}
include("header.php");
// node
$sql = "SELECT
asset.asset_id,
asset.asset_name,
node.node_id AS id,
node.node_ip AS ip,
node.node_mac AS mac,
node.node_dns1 AS dns1,
node.node_dns2 AS dns2,
node.node_info AS info,
node.node_type AS type,
subnet.subnet_id,
subnet.subnet_address,
subnet.subnet_mask,
zone.zone_origin
FROM
node
LEFT JOIN asset USING (asset_id)
LEFT JOIN subnet USING (subnet_id)
LEFT JOIN zone USING (zone_id)
WHERE
node.node_id=?";
$sth = $dbh->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");
?>

@ -8,8 +8,119 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/ *****************************************************************************/
include("includes.php"); 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"); include("header.php");
if ($action == ACT_DEFAULT):
// ========== VARIANT: default behavior =======================================
$smarty->assign('realm', $_SESSION['suser_realm']); $smarty->assign('realm', $_SESSION['suser_realm']);
$smarty->assign('role_add', $_SESSION['suser_role_add']); $smarty->assign('role_add', $_SESSION['suser_role_add']);
$smarty->assign('role_edit', $_SESSION['suser_role_edit']); $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->assign('role_admin', $_SESSION['suser_role_admin']);
$smarty->display("options.tpl"); $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 "<p>Unknown function call: Please report to system development!</p>\n";
endif; // $action == ...
// ========== END OF VARIANTS =================================================
$smarty->display('footer.tpl');
?> ?>

@ -1,99 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
include("header.php");
$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");
include("footer.php");
?>

@ -1,16 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
include("header.php");
$smarty->display("optionseditpassword.tpl");
include("footer.php");
?>

@ -1,815 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
if ($_SERVER['REQUEST_METHOD'] != "POST") {
header_location("comments.php?comments=" . $comments);
exit;
}
if (isset($_POST['redirect'])) {
switch ($_POST['redirect']) {
case ("assigniptonode") :
$node_ip = sanitize($_POST['node_ip']);
$subnet_id = sanitize($_POST['subnet_id']);
switch ($_POST['action']) {
case ("assignnodetoasset") :
header_location("assignnodetoasset.php?subnet_id=" . $subnet_id . "&node_ip=" . $node_ip);
break;
case ("nodeadd") :
header_location("nodeadd.php?subnet_id=" . $subnet_id . "&node_ip=" . $node_ip);
break;
}
break;
case ("locationsubnet") :
$location_id = sanitize($_POST['location_id']);
switch ($_POST['action']) {
case ("locationsubnetadd") :
header_location("locationsubnetadd.php?location_id=" . $location_id);
break;
case ("locationsubnetdel") :
header_location("locationsubnetdel.php?location_id=" . $location_id);
break;
}
break;
case ("nat") :
$node_id = sanitize($_POST['node_id']);
switch ($_POST['action']) {
case ("natadd") :
header_location("natadd.php?node_id=" . $node_id);
break;
case ("natdel") :
header_location("natdel.php?node_id=" . $node_id);
break;
}
break;
case ("subnetlocation") :
$subnet_id = sanitize($_POST['subnet_id']);
switch ($_POST['action']) {
case ("subnetlocationadd") :
header_location("subnetlocationadd.php?subnet_id=" . $subnet_id);
break;
case ("subnetlocationdel") :
header_location("subnetlocationdel.php?subnet_id=" . $subnet_id);
break;
}
break;
case ("subnetvlan") :
$subnet_id = sanitize($_POST['subnet_id']);
switch ($_POST['action']) {
case ("subnetvlanadd") :
header_location("subnetvlanadd.php?subnet_id=" . $subnet_id);
break;
case ("subnetvlandel") :
header_location("subnetvlandel.php?subnet_id=" . $subnet_id);
break;
}
break;
case ("vlansubnet") :
$vlan_id = sanitize($_POST['vlan_id']);
switch ($_POST['action']) {
case ("vlansubnetadd") :
header_location("vlansubnetadd.php?vlan_id=" . $vlan_id);
break;
case ("vlansubnetdel") :
header_location("vlansubnetdel.php?vlan_id=" . $vlan_id);
break;
}
break;
}
}
if (isset($_POST['add'])) {
switch ($_POST['add']) {
/* case ("asset") :
$name = sanitize($_POST['asset_name']);
$hostname = sanitize($_POST['asset_hostname']);
$assetclass_id = sanitize($_POST['assetclass_id']);
$info = sanitize($_POST['asset_info']);
$intf = sanitize($_POST['asset_intf']);
$asset_type = sanitize($_POST['asset_type']);
$sql = "INSERT INTO asset
(asset_name, asset_hostname, assetclass_id, asset_info,
asset_intf, asset_type)
VALUE
(?, ?, ?, ?, ?, ?)";
$sth = $dbh->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);
?>

@ -8,8 +8,183 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/ *****************************************************************************/
include("includes.php"); 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"); include("header.php");
if ($action == ACT_DEFAULT):
// ========== VARIANT: default behavior =======================================
$sql = "SELECT s.subnet_id, s.subnet_address, s.subnet_mask, $sql = "SELECT s.subnet_id, s.subnet_address, s.subnet_mask,
s.ntp_server, s.ntp_server,
CONCAT(LEFT(s.subnet_info, 50), IF(CHAR_LENGTH(s.subnet_info)>50,'...','')) AS subnet_info, 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"); $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><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 . '&amp;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 . '&nbsp;' . $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 . '&nbsp;' . $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 . '&nbsp;' . $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 "<p>Unknown function call: Please report to system development!</p>\n";
endif; // $action == ...
// ========== END OF VARIANTS =================================================
$smarty->display('footer.tpl');
?> ?>

@ -1,21 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
if((isset($_GET['vlan_id'])) ? $vlan_id = sanitize($_GET['vlan_id']) : $vlan_id = "");
include("header.php");
$smarty->assign("vlan_options", db_get_options_vlan($lang['lang_option_none']));
$smarty->display("subnetadd.tpl");
include("footer.php");
?>

@ -1,36 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
// 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([$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");
?>

@ -1,29 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
$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([$subnet_id]);
$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("subnetedit.tpl");
include("footer.php");
?>

@ -1,28 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
$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([$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");
?>

@ -1,42 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
// 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([$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");
?>

@ -1,27 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
$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([$subnet_id]);
$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("subnetlocationedit.tpl");
include("footer.php");
?>

@ -1,364 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
if(isset($_GET['page'])) {
$page = sanitize($_GET['page']);
}
$smarty->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><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 . '&amp;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 . '&nbsp;' . $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 . '&nbsp;' . $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 . '&nbsp;' . $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");
?>

@ -1,43 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
$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([$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");
?>

@ -1,36 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
// 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([$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");
?>

@ -1,26 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$subnet_id = sanitize($_GET['subnet_id']);
include("header.php");
$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([$subnet_id]);
$smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("subnetvlanedit.tpl");
include("footer.php");
?>

@ -6,7 +6,7 @@
</td> </td>
<td align="right"> <td align="right">
{if $suser_add} {if $suser_add}
<a href="assetadd.php"><img src="image.php?icon=add" alt="{$lang_asset_add}" {if $suser_tooltips}title="{$lang_asset_add}" {/if}/></a> <a href="asset.php?f=add"><img src="image.php?icon=add" alt="{$lang_asset_add}" {if $suser_tooltips}title="{$lang_asset_add}" {/if}/></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -37,7 +37,7 @@
{foreach item=asset from=$assets} {foreach item=asset from=$assets}
<tr> <tr>
<td class="label"> <td class="label">
<a href="assetview.php?asset_id={$asset.asset_id}">{$asset.asset_name}</a> <a href="asset.php?f=view&id={$asset.asset_id}">{$asset.asset_name}</a>
</td> </td>
<td class="value"> <td class="value">
<a href="assetclass.php?f=view&id={$asset.assetclass_id}">{$asset.assetclass_name}</a> <a href="assetclass.php?f=view&id={$asset.assetclass_id}">{$asset.assetclass_name}</a>

@ -6,7 +6,7 @@
</td> </td>
<td align="right"> <td align="right">
{if $suser_add} {if $suser_add}
<a href="assetadd.php?assetclass_id={$assetclass->assetclass_id}"><img src="image.php?icon=add" alt="{$lang_asset_add}" {if $suser_tooltips}title="{$lang_asset_add}" {/if}/></a> <a href="asset.php?f=add&assetclass_id={$assetclass->assetclass_id}"><img src="image.php?icon=add" alt="{$lang_asset_add}" {if $suser_tooltips}title="{$lang_asset_add}" {/if}/></a>
{/if} {/if}
{if $suser_edit} {if $suser_edit}
<a href="assetclass.php?f=edit&id={$assetclass->assetclass_id}"><img src="image.php?icon=edit" alt="{$lang_assetclass_edit}" {if $suser_tooltips}title="{$lang_asset_edit}" {/if}/></a> <a href="assetclass.php?f=edit&id={$assetclass->assetclass_id}"><img src="image.php?icon=edit" alt="{$lang_assetclass_edit}" {if $suser_tooltips}title="{$lang_asset_edit}" {/if}/></a>
@ -82,7 +82,7 @@
</td> </td>
<td class="value"> <td class="value">
{foreach item=asset from=$assets} {foreach item=asset from=$assets}
<a href="assetview.php?asset_id={$asset.asset_id}">{$asset.asset_name}</a> <a href="asset.php?f=view&id={$asset.asset_id}">{$asset.asset_name}</a>
{$asset.asset_info} {$asset.asset_info}
<br> <br>
{/foreach} {/foreach}

@ -84,4 +84,24 @@
</tr> </tr>
</table> </table>
{if $zabbix}
<table class="info">
<tr>
<td class="header">
Zabbix
</td>
<td class="header_right">
&nbsp;
</td>
</tr>
<tr>
<td class="label">
Host ID
</td>
<td class="value">
<input type="text" size="8" name="x_zbx_host" value="{$refid}">
</td>
</tr>
</table>
{/if}
</form> </form>

@ -96,7 +96,7 @@
</td> </td>
<td class="header_right"> <td class="header_right">
{if $suser_edit} {if $suser_edit}
<a href="assignnodetoasset.php?asset_id={$asset->asset_id}"><img src="image.php?icon=edit" alt="{$lang_assignnodetoasset}"></a> <a href="node.php?f=link&asset_id={$asset->asset_id}"><img src="image.php?icon=edit" alt="{$lang_assignnodetoasset}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -106,7 +106,7 @@
</td> </td>
<td class="value"> <td class="value">
{foreach item=node from=$nodes} {foreach item=node from=$nodes}
<a href="nodeview.php?node_id={$node.node_id}">{if $node.node_ip}{$node.node_ip}{else}(leer){/if}</a> <a href="node.php?f=view&id={$node.node_id}">{if $node.node_ip}{$node.node_ip}{else}(leer){/if}</a>
{if $node.node_info}{$node.node_info}{/if}<br> {if $node.node_info}{$node.node_info}{/if}<br>
{/foreach} {/foreach}
</td> </td>

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="node.php">
<input type="hidden" name="redirect" value="assigniptonode">
<input type="hidden" name="node_ip" value="{$node_ip}"> <input type="hidden" name="node_ip" value="{$node_ip}">
<input type="hidden" name="subnet_id" value="{$subnet->id}"> <input type="hidden" name="subnet_id" value="{$subnet->id}">
@ -10,7 +9,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=next" alt="{$lang_submit}"> <input type="image" name="submit[link]" src="image.php?icon=next" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -37,7 +36,7 @@
{$lang_subnet} {$lang_subnet}
</td> </td>
<td class="value"> <td class="value">
<a href="subnetview.php?subnet_id={$subnet->id}&page={$node_ip}">{$subnet->address}/{$subnet->mask}</a> <a href="subnet.php?f=view&id={$subnet->id}&page={$node_ip}">{$subnet->address}/{$subnet->mask}</a>
</td> </td>
</tr> </tr>
</table> </table>
@ -50,12 +49,12 @@
</tr> </tr>
<tr> <tr>
<td class="value"> <td class="value">
<input type="radio" name="action" value="assignnodetoasset" checked>&nbsp;{$lang_assignnodetoasset_existing} <input type="radio" id="opt1" name="action" value="assignnodetoasset" checked>&nbsp;<label for="opt1">{$lang_assignnodetoasset_existing}</label>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="value"> <td class="value">
<input type="radio" name="action" value="nodeadd">&nbsp;{$lang_assignnodetoasset_new} <input type="radio" id="opt2" name="action" value="nodeadd">&nbsp;<label for="opt2">{$lang_assignnodetoasset_new}</label>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="node.php">
<input type="hidden" name="add" value="assignnodetoasset">
<table class="title"> <table class="title">
<tr> <tr>
@ -8,7 +7,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[exec-link]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>

@ -47,7 +47,7 @@
{$lang_length} {$lang_length}
</td> </td>
<td class="value"> <td class="value">
<input type="text" size="10" name="length" maxlength="80"> m <input type="text" size="10" name="length" maxlength="10" value="{$length}"> m
</td> </td>
</tr> </tr>
<tr> <tr>
@ -55,7 +55,7 @@
Type Type
</td> </td>
<td class="value"> <td class="value">
{html_options name=cable_type options=$type_options selected=$cable->cable_type} {html_options name=cable_type options=$type_options selected=$type}
</td> </td>
</tr> </tr>
<tr> <tr>
@ -63,7 +63,7 @@
# Links # Links
</td> </td>
<td class="value"> <td class="value">
<input type="text" size="4" name="links" maxlength="4"> <input type="text" size="4" name="links" maxlength="4" value="{$links}">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -71,7 +71,7 @@
{$lang_color} {$lang_color}
</td> </td>
<td class="value"> <td class="value">
#<input type="text" {literal}class="color {pickerPosition:'right'}"{/literal} name="color" size="6" maxlength="6" value="{$cable->color}"> #<input type="text" {literal}class="color {pickerPosition:'right'}"{/literal} name="color" size="6" maxlength="6" value="{$color}">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -79,7 +79,7 @@
{$lang_info} {$lang_info}
</td> </td>
<td class="value"> <td class="value">
<textarea name="info" cols="30" rows="10"></textarea> <textarea name="info" cols="30" rows="10">{$info}</textarea>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,23 +0,0 @@
<table class="title">
<tr>
<td class="header">
{$lang_comments}
</td>
<td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
</td>
</tr>
</table>
<table class="info">
<tr>
<td class="header">
{$lang_comments}
</td>
</tr>
<tr>
<td class="value">
{$comments}
</td>
</tr>
</table>

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>{$lang_ipreg}</title> <title>{$lang_ipreg}</title>

@ -1,15 +1,14 @@
<form method="POST" action="submit.php"> <form method="POST" action="location.php">
<input type="hidden" name="add" value="locationsubnet"> <input type="hidden" name="id" value="{$location->id}">
<input type="hidden" name="location_id" value="{$location->id}">
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{$lang_locationsubnet} {$lang_locationsubnet} ADD
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[subnetlink]" src="images/page_save.png" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_location_name} {$lang_location_name}
</td> </td>
<td class="value"> <td class="value">
<a href="locationview.php?location_id={$location->id}">{$location->name}</a> <a href="location.php?f=view&id={$location->id}">{$location->name}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,15 +1,15 @@
<form method="POST" action="submit.php"> <form method="POST" action="location.php">
<input type="hidden" name="del" value="locationsubnet"> <input type="hidden" name="id" value="{$location->id}">
<input type="hidden" name="location_id" value="{$location_id}">
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{lang_locationsubnet} {$lang_locationsubnet} DEL
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> {* TODO link und unlink icons! *}
<input type="image" name="submit[subnetunlink]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +28,7 @@
{$lang_location_name} {$lang_location_name}
</td> </td>
<td class="value"> <td class="value">
<a href="locationview.php?location_id={$location_id}">{$location_name}</a> <a href="location.php?f=view&id={$location->id}">{$location->name}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,6 @@
<form method="POST" action="submit.php"> <form method="POST" action="location.php">
<input type="hidden" name="redirect" value="locationsubnet"> <input type="hidden" name="redirect" value="locationsubnet">
<input type="hidden" name="location_id" value="{$location->id}"> <input type="hidden" name="id" value="{$location->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +9,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=next" alt="{$lang_submit}"> <input type="image" name="submit[exec-link]" src="image.php?icon=next" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +28,7 @@
{$lang_location_name} {$lang_location_name}
</td> </td>
<td class="value"> <td class="value">
<a href="locationview.php?location_id={$location->id}">{$location->name}</a> <a href="location.php?f=view&id={$location->id}">{$location->name}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -79,7 +79,7 @@
</td> </td>
<td class="header_right"> <td class="header_right">
{if $suser_edit} {if $suser_edit}
<a href="locationsubnetedit.php?location_id={$location->id}"><img src="image.php?icon=edit" alt="{$lang_locationsubnet_edit}"></a> <a href="location.php?f=link&id={$location->id}"><img src="image.php?icon=edit" alt="{$lang_locationsubnet_edit}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -89,7 +89,7 @@
</td> </td>
<td class="value"> <td class="value">
{foreach item=subnet from=$subnets} {foreach item=subnet from=$subnets}
<a href="subnetview.php?subnet_id={$subnet.subnet_id}">{$subnet.subnet_address}/{$subnet.subnet_mask}</a><br> <a href="subnet.php?f=view&id={$subnet.subnet_id}">{$subnet.subnet_address}/{$subnet.subnet_mask}</a><br>
{/foreach} {/foreach}
</td> </td>
</tr> </tr>

@ -30,10 +30,10 @@
Rule #{$nat.id} {$nat.description} Rule #{$nat.id} {$nat.description}
</td> </td>
<td class="label"> <td class="label">
<a href="nodeview.php?node_id={$nat.nat_ext}">{$nat.node_ip_ext}</a> <a href="node.php?f=view&id={$nat.nat_ext}">{$nat.node_ip_ext}</a>
{if $nat.port_ext}:{$nat.port_ext}{/if} {if $nat.port_ext}:{$nat.port_ext}{/if}
<td class="label"> <td class="label">
<a href="nodeview.php?node_id={$nat.nat_int}">{$nat.node_ip_int}</a> <a href="node.php?f=view&id={$nat.nat_int}">{$nat.node_ip_int}</a>
{if $nat.port_int}:{$nat.port_int}{/if} {if $nat.port_int}:{$nat.port_int}{/if}
</td> </td>
<td class="value"> <td class="value">

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="nat.php">
<input type="hidden" name="add" value="nat">
<input type="hidden" name="node_id_ext" value="{$node_id_ext}"> <input type="hidden" name="node_id_ext" value="{$node_id_ext}">
<table class="title"> <table class="title">
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[insert]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_ip} {$lang_ip}
</td> </td>
<td class="value"> <td class="value">
<a href="nodeview.php?node_id={$node_id_ext}">{$node_ip_ext}</a> <a href="node.php?f=view&id={$node_id_ext}">{$node_ip_ext}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="nat.php">
<input type="hidden" name="del" value="nat">
<input type="hidden" name="node_id_ext" value="{$node->id_ext}"> <input type="hidden" name="node_id_ext" value="{$node->id_ext}">
<table class="title"> <table class="title">
@ -10,7 +9,7 @@
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
{if $nat_options} {if $nat_options}
<input type="image" src="image.php?icon=delete" alt="{$lang_submit}"> <input type="image" name="submit[delete]" src="image.php?icon=delete" alt="{$lang_submit}">
{/if} {/if}
</td> </td>
</tr> </tr>
@ -30,7 +29,7 @@
{$lang_ip} {$lang_ip}
</td> </td>
<td class="value"> <td class="value">
<a href="nodeview.php?node_id={$node->id_ext}">{$node->ip_ext}</a> <a href="node.php?f=view&id={$node->id_ext}">{$node->ip_ext}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="nat.php">
<input type="hidden" name="redirect" value="nat">
<input type="hidden" name="node_id" value="{$node->id}"> <input type="hidden" name="node_id" value="{$node->id}">
<table class="title"> <table class="title">
@ -28,7 +27,7 @@
{$lang_ip} {$lang_ip}
</td> </td>
<td class="value"> <td class="value">
<a href="nodeview.php?node_id={$node->id}">{$node->ip}</a> <a href="node.php?f=view&id={$node->id}">{$node->ip}</a>
</td> </td>
</tr> </tr>
</table> </table>
@ -41,12 +40,12 @@
</tr> </tr>
<tr> <tr>
<td class="value"> <td class="value">
<input type="radio" name="action" value="natadd" checked>&nbsp;{$lang_nat_add} <input type="radio" name="action" id="opt1" value="natadd" checked>&nbsp;<label for="opt2">{$lang_nat_add}</label>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="value"> <td class="value">
<input type="radio" name="action" value="natdel">&nbsp;{$lang_nat_del} <input type="radio" name="action" id="opt2" value="natdel">&nbsp;<label for="opt2">{$lang_nat_del}</label>
</td> </td>
</tr> </tr>
</table> </table>

@ -6,7 +6,7 @@
</td> </td>
<td align="right"> <td align="right">
{if $suser_add || $suser_admin} {if $suser_add || $suser_admin}
<a href="nodeadd.php?subnet_id={$subnet_id}"><img src="image.php?icon=add" alt="{$lang_node_add}"></a> <a href="node.php?f=add&subnet_id={$subnet_id}"><img src="image.php?icon=add" alt="{$lang_node_add}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -22,6 +22,9 @@
<td class="header"> <td class="header">
{$lang_asset_name} {$lang_asset_name}
</td> </td>
<td class="header">
{$lang_assetclass}
</td>
<td class="header"> <td class="header">
{$lang_asset_info} {$lang_asset_info}
</td> </td>
@ -29,13 +32,16 @@
{foreach item=node from=$nodes} {foreach item=node from=$nodes}
<tr> <tr>
<td class="label"> <td class="label">
<a href="nodeview.php?node_id={$node.node_id}">{if $node.node_ip}{$node.node_ip}{else}(leer){/if}</a> <a href="node.php?f=view&id={$node.node_id}">{if $node.node_ip}{$node.node_ip}{else}(leer){/if}</a>
</td> </td>
<td class="value"> <td class="value">
{$node.node_info} {$node.node_info}
</td> </td>
<td class="value"> <td class="value">
<a href="assetview.php?asset_id={$node.asset_id}">{$node.asset_name}</a> <a href="asset.php?f=view&id={$node.asset_id}">{$node.asset_name}</a>
</td>
<td class="value">
{$node.assetclass_name}
</td> </td>
<td class="value"> <td class="value">
{$node.asset_info} {$node.asset_info}
@ -43,7 +49,7 @@
</tr> </tr>
{foreachelse} {foreachelse}
<tr> <tr>
<td colspan="3"> <td colspan="4">
{$lang_node_none} {$lang_node_none}
</td> </td>
</tr> </tr>

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="node.php">
<input type="hidden" name="add" value="node">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[insert]" src="images/page_save.png" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_ip} {$lang_ip}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="node_ip" value="{$node_ip}"> <input type="text" name="node_ip" value="{$node_ip}" autofocus>
</td> </td>
</tr> </tr>
<tr> <tr>

@ -1,7 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="node.php">
<input type="hidden" name="del" value="node"> <input type="hidden" name="id" value="{$node->id}">
<input type="hidden" name="node_id" value="{$node->id}">
<input type="hidden" name="asset_id" value="{$node->asset_id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -11,7 +9,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=delete" alt="{$lang_submit}"> <input type="image" name="submit[delete]" src="image.php?icon=delete" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -30,7 +28,7 @@
{$lang_ip} {$lang_ip}
</td> </td>
<td class="value"> <td class="value">
<a href="nodeview.php?node_id={$node->id}">{$node->ip}</a> <a href="node.php?f=view&id={$node->id}">{$node->ip}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="node.php">
<input type="hidden" name="edit" value="node"> <input type="hidden" name="id" value="{$node->id}">
<input type="hidden" name="node_id" value="{$node->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -10,7 +9,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[update]" src="images/page_save.png" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>

@ -6,10 +6,10 @@
</td> </td>
<td align="right"> <td align="right">
{if $suser_edit} {if $suser_edit}
<a href="nodeedit.php?node_id={$node->id}"><img src="image.php?icon=edit" alt="{$lang_node_edit}"></a> <a href="node.php?f=edit&id={$node->id}"><img src="image.php?icon=edit" alt="{$lang_node_edit}"></a>
{/if} {/if}
{if $suser_delete} {if $suser_delete}
<a href="nodedel.php?node_id={$node->id}"><img src="image.php?icon=delete" alt="{$lang_node_del}"></a> <a href="node.php?f=del&id={$node->id}"><img src="image.php?icon=delete" alt="{$lang_node_del}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -29,7 +29,7 @@
{$lang_ip} {$lang_ip}
</td> </td>
<td class="value"> <td class="value">
<a href="nodeview.php?node_id={$node->id}">{$node->ip}</a> <a href="node.php?f=view&id={$node->id}">{$node->ip}</a>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -96,7 +96,15 @@
{$lang_asset_name} {$lang_asset_name}
</td> </td>
<td class="value"> <td class="value">
<a href="assetview.php?asset_id={$node->asset_id}">{$node->asset_name}</a> <a href="asset.php?f=view&id={$node->asset_id}">{$node->asset_name}</a>
</td>
</tr>
<tr>
<td class="label">
{$lang_assetclass}
</td>
<td class="value">
<a href="assetclass.php?f=view&id={$node->assetclass_id}">{$node->assetclass_name}</a>
</td> </td>
</tr> </tr>
</table> </table>
@ -115,7 +123,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask} {$lang_subnet_subnetaddress}/{$lang_subnet_mask}
</td> </td>
<td class="value"> <td class="value">
<a href="subnetview.php?subnet_id={$node->subnet_id}&page={$node->ip}">{$node->subnet_address}/{$node->subnet_mask}</a> <a href="subnet.php?f=view&id={$node->subnet_id}&page={$node->ip}">{$node->subnet_address}/{$node->subnet_mask}</a>
</td> </td>
</tr> </tr>
</table> </table>
@ -126,7 +134,7 @@
{$lang_nat} {$lang_nat}
</td> </td>
<td class="header_right"> <td class="header_right">
<a href="natedit.php?node_id={$node->id}"><img src="image.php?icon=edit" alt="{$lang_nat_edit}"></a> <a href="nat.php?f=edit&node_id={$node->id}"><img src="image.php?icon=edit" alt="{$lang_nat_edit}"></a>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -137,10 +145,10 @@
{foreach item=rule from=$natrules} {foreach item=rule from=$natrules}
{if $rule.node_id_int eq $node->id} {if $rule.node_id_int eq $node->id}
<img src="images/arrow_left.png" alt="incoming" title="coming from"> <img src="images/arrow_left.png" alt="incoming" title="coming from">
<a href="nodeview.php?node_id={$rule.node_id_ext}">{$rule.node_ip_ext}</a>/<a href="assetview.php?asset_id={$rule.asset_id_ext}">{$rule.asset_name_ext}</a> ({$rule.nat_type})<br /> <a href="node.php?f=view&id={$rule.node_id_ext}">{$rule.node_ip_ext}</a>/<a href="asset.php?f=view&id={$rule.asset_id_ext}">{$rule.asset_name_ext}</a> ({$rule.nat_type})<br />
{else} {else}
<img src="images/arrow_right.png" alt="outgoing" title="forwarding to"> <img src="images/arrow_right.png" alt="outgoing" title="forwarding to">
<a href="nodeview.php?node_id={$rule.node_id_int}">{$rule.node_ip_int}</a>/<a href="assetview.php?asset_id={$rule.asset_id_int}">{$rule.asset_name_int}</a> ({$rule.nat_type})<br /> <a href="node.php?f=view&id={$rule.node_id_int}">{$rule.node_ip_int}</a>/<a href="asset.php?f=view&id={$rule.asset_id_int}">{$rule.asset_name_int}</a> ({$rule.nat_type})<br />
{/if} {/if}
{/foreach} {/foreach}
</td> </td>

@ -18,12 +18,12 @@
</tr> </tr>
<tr> <tr>
<td class="label"> <td class="label">
<a href="optionseditpassword.php">{$lang_options_password}</a> <a href="options.php?f=pass">{$lang_options_password}</a>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="label"> <td class="label">
<a href="optionseditdisplay.php">{$lang_options_display}</a> <a href="options.php?f=edit">{$lang_options_display}</a>
</td> </td>
</tr> </tr>
{if $suser_admin || $suser_manage} {if $suser_admin || $suser_manage}

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="options.php">
<input type="hidden" name="edit" value="optionsdisplay">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[update]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="options.php">
<input type="hidden" name="edit" value="optionspassword">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[exec-pass]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -37,6 +36,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="password" name="user_newpass1"> <input type="password" name="user_newpass1">
(minimum length 5 chars)
</td> </td>
</tr> </tr>
<tr> <tr>

@ -207,7 +207,9 @@ table.subnetview td {
div.error, div.warning, div.info, div.note { div.error, div.warning, div.info, div.note {
padding: 0 1em 0 36px; padding: 0 1em 0 36px;
margin: 1em 0 0 0; margin: 1em 0 0 0;
-moz-border-radius: 12px; border-radius: 12px;
width: 750px;
animation: fadeout 5s 2s forwards;
} }
div.error { div.error {
border: 1px solid #8b0000; border: 1px solid #8b0000;
@ -239,3 +241,7 @@ div.info p,
div.note p { div.note p {
margin: 0.5em 0.5em 0.5em 0; margin: 0.5em 0.5em 0.5em 0;
} }
@keyframes fadeout {
from { opacity: 1; }
to { opacity: 0; height: 0; }
}

@ -6,7 +6,7 @@
</td> </td>
<td align="right"> <td align="right">
{if $suser_add || $suser_admin} {if $suser_add || $suser_admin}
<a href="subnetadd.php"><img src="image.php?icon=add" alt="{$lang_subnet_add}"></a> <a href="subnet.php?f=add"><img src="image.php?icon=add" alt="{$lang_subnet_add}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -27,7 +27,7 @@
{foreach item=subnet from=$subnets} {foreach item=subnet from=$subnets}
<tr> <tr>
<td class="label"> <td class="label">
<a href="subnetview.php?subnet_id={$subnet.subnet_id}">{$subnet.subnet_address}/{$subnet.subnet_mask}</a> <a href="subnet.php?f=view&id={$subnet.subnet_id}">{$subnet.subnet_address}/{$subnet.subnet_mask}</a>
</td> </td>
<td class="value"> <td class="value">
<a href="node.php?subnet_id={$subnet.subnet_id}">{$subnet.node_counter}</a> <a href="node.php?subnet_id={$subnet.subnet_id}">{$subnet.node_counter}</a>

@ -1,5 +1,4 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="add" value="subnet">
<table class="title"> <table class="title">
<tr> <tr>
@ -8,7 +7,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[insert]" src="images/page_save.png" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="del" value="subnet"> <input type="hidden" name="id" value="{$subnet->id}">
<input type="hidden" name="subnet_id" value="{$subnet->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=delete" alt="{$lang_submit}"> <input type="image" name="submit[delete]" src="image.php?icon=delete" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -25,7 +24,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask} {$lang_subnet_subnetaddress}/{$lang_subnet_mask}
</td> </td>
<td class="value"> <td class="value">
<a href="subnetview.php?subnet_id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a> <a href="subnet.php?f=view&id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a>
</td> </td>
</tr> </tr>
</table> </table>
@ -43,7 +42,7 @@
{$lang_ip} {$lang_ip}
</td> </td>
<td class="value"> <td class="value">
<a href="nodeview.php?node_id={$node.id}">{$node.ip}</a> <a href="node.php?f=view&id={$node.id}">{$node.ip}</a>
</td> </td>
</tr> </tr>
{/foreach} {/foreach}

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="edit" value="subnet"> <input type="hidden" name="id" value="{$subnet->id}">
<input type="hidden" name="subnet_id" value="{$subnet->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -53,7 +52,7 @@
{$lang_subnet_dhcpstart} {$lang_subnet_dhcpstart}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="subnet_dhcpstart" size="15" value="{$subnet->dhcp_start}"> <input type="text" name="dhcp_start" size="15" value="{$subnet->dhcp_start}">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -61,7 +60,7 @@
{$lang_subnet_dhcpend} {$lang_subnet_dhcpend}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="subnet_dhcpend" size="15" value="{$subnet->dhcp_end}"> <input type="text" name="dhcp_end" size="15" value="{$subnet->dhcp_end}">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -69,7 +68,7 @@
NTP Server NTP Server
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="subnet_ntp_server" size="45" value="{$subnet->ntp_server}"> <input type="text" name="ntp_server" size="45" value="{$subnet->ntp_server}">
</td> </td>
</tr> </tr>
<tr> <tr>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="add" value="subnetlocation"> <input type="hidden" name="id" value="{$subnet->id}">
<input type="hidden" name="subnet_id" value="{$subnet->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[exec-ladd]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -30,7 +29,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask} {$lang_subnet_subnetaddress}/{$lang_subnet_mask}
</td> </td>
<td class="value"> <td class="value">
<a href="subnetview.php?subnet_id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a> <a href="subnet.php?f=view&id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="del" value="subnetlocation"> <input type="hidden" name="id" value="{$subnet->id}">
<input type="hidden" name="subnet_id" value="{$subnet->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[exec-ldel]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="redirect" value="subnetlocation"> <input type="hidden" name="id" value="{$subnet->id}">
<input type="hidden" name="subnet_id" value="{$subnet->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=next" alt="{$lang_submit}"> <input type="image" name="submit[exec-ledit]" src="image.php?icon=next" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask} {$lang_subnet_subnetaddress}/{$lang_subnet_mask}
</td> </td>
<td class="value"> <td class="value">
<a href="subnetview.php?subnet_id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a> <a href="subnet.php?f=view&id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a>
</td> </td>
</tr> </tr>
</table> </table>
@ -47,8 +46,8 @@
{$lang_options} {$lang_options}
</td> </td>
<td class="value"> <td class="value">
<input type="radio" name="action" value="subnetlocationadd" checked>&nbsp;{$lang_location_add}<br> <input type="radio" name="action" id="opt1" value="subnetlocationadd" checked>&nbsp;<label for="opt1">{$lang_location_add}</label><br>
<input type="radio" name="action" value="subnetlocationdel">&nbsp;{$lang_location_del} <input type="radio" name="action" id="opt2" value="subnetlocationdel">&nbsp;<label for="opt2">{$lang_location_del}</label>
</td> </td>
</tr> </tr>
</table> </table>

@ -6,10 +6,10 @@
</td> </td>
<td align="right"> <td align="right">
{if $suser_edit} {if $suser_edit}
<a href="subnetedit.php?subnet_id={$subnet->id}"><img src="image.php?icon=edit" alt="{$lang_subnet_edit}"></a> <a href="subnet.php?f=edit&id={$subnet->id}"><img src="image.php?icon=edit" alt="{$lang_subnet_edit}"></a>
{/if} {/if}
{if $suser_delete} {if $suser_delete}
<a href="subnetdel.php?subnet_id={$subnet->id}"><img src="image.php?icon=delete" alt="{$lang_subnet_del}"></a> <a href="subnet.php?f=del&id={$subnet->id}"><img src="image.php?icon=delete" alt="{$lang_subnet_del}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -53,7 +53,7 @@
</td> </td>
<td class="value"> <td class="value">
{if $subnet->proto_vers eq 4} {if $subnet->proto_vers eq 4}
<a href="subnetview.php?subnet_id={$subnet->id}">{$subnet->address}</a> <a href="subnet.php?f=view&id={$subnet->id}">{$subnet->address}</a>
{else} {else}
{$subnet->address}&nbsp;/&nbsp;{$subnet->mask} {$subnet->address}&nbsp;/&nbsp;{$subnet->mask}
{/if} {/if}
@ -138,13 +138,13 @@
</td> </td>
</tr> </tr>
{/if} {/if}
{foreach item=assetclassgroup from=$assetclassgroups} {foreach item=assetclass from=$assetclasses}
<tr> <tr>
<td class="label"> <td class="label">
<img src="image.php?color={$assetclassgroup.color}" alt="{$assetclassgroup.name}">&nbsp;<a href="assetclassgroupview.php?assetclassgroup_id={$assetclassgroup.id}">{$assetclassgroup.name}</a> <img src="image.php?color={$assetclass.color}" alt="{$assetclass.name}">&nbsp;<a href="assetclass.php?f=view&id={$assetclass.id}">{$assetclass.name}</a>
</td> </td>
<td> <td>
{$assetclassgroup.counter} {$assetclass.counter}
</td> </td>
</tr> </tr>
{/foreach} {/foreach}
@ -157,7 +157,7 @@
</td> </td>
<td class="header_right"> <td class="header_right">
{if $suser_edit} {if $suser_edit}
<a href="subnetvlanedit.php?subnet_id={$subnet->id}"><img src="image.php?icon=edit" alt="{$lang_subnetvlan_edit}"></a> <a href="subnet.php?f=vedit&id={$subnet->id}"><img src="image.php?icon=edit" alt="{$lang_subnetvlan_edit}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -167,7 +167,7 @@
</td> </td>
<td class="value"> <td class="value">
{foreach item=vlan from=$vlans} {foreach item=vlan from=$vlans}
<a href="vlanview.php?vlan_id={$vlan.id}">{$vlan.name} ({$vlan.number})</a><br> <a href="vlan.php?f=view&id={$vlan.id}">{$vlan.name} ({$vlan.number})</a><br>
{/foreach} {/foreach}
</td> </td>
</tr> </tr>
@ -180,7 +180,7 @@
</td> </td>
<td class="header" align="right"> <td class="header" align="right">
{if $suser_edit} {if $suser_edit}
<a href="subnetlocationedit.php?subnet_id={$subnet->id}"><img src="image.php?icon=edit" alt="{$lang_location_edit}"></a> <a href="subnet.php?f=ledit&id={$subnet->id}"><img src="image.php?icon=edit" alt="{$lang_location_edit}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -190,7 +190,7 @@
</td> </td>
<td class="value"> <td class="value">
{foreach item=location from=$locations} {foreach item=location from=$locations}
<a href="locationview.php?location_id={$location.location_id}">{$location.location_name}</a><br> <a href="location.php?f=view&id={$location.location_id}">{$location.location_name}</a><br>
{/foreach} {/foreach}
</td> </td>
</tr> </tr>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="add" value="subnetvlan"> <input type="hidden" name="id" value="{$subnet->id}">
<input type="hidden" name="subnet_id" value="{$subnet->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[exec-vadd]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask} {$lang_subnet_subnetaddress}/{$lang_subnet_mask}
</td> </td>
<td class="value"> <td class="value">
<a href="subnetview.php?subnet_id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a> <a href="subnet.php?f=view&id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="del" value="subnetvlan"> <input type="hidden" name="id" value="{$subnet->id}">
<input type="hidden" name="subnet_id" value="{$subnet_id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[exec-vdel]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask} {$lang_subnet_subnetaddress}/{$lang_subnet_mask}
</td> </td>
<td class="value"> <td class="value">
<a href="subnetview.php?subnet_id={$subnet_id}">{$subnet_address}/{$subnet_mask}</a> <a href="subnet.php?f=view&id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="subnet.php">
<input type="hidden" name="redirect" value="subnetvlan"> <input type="hidden" name="id" value="{$subnet->id}">
<input type="hidden" name="subnet_id" value="{$subnet->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=next" alt="{$lang_submit}"> <input type="image" name="submit[exec-vedit]" src="image.php?icon=next" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask} {$lang_subnet_subnetaddress}/{$lang_subnet_mask}
</td> </td>
<td class="value"> <td class="value">
<a href="subnetview.php?subnet_id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a> <a href="subnet.php?f=view&id={$subnet->id}">{$subnet->address}/{$subnet->mask}</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="vlan.php">
<input type="hidden" name="add" value="vlansubnet"> <input type="hidden" name="id" value="{$vlan->id}">
<input type="hidden" name="vlan_id" value="{$vlan->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[exec-sadd]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_vlan_name} ({$lang_vlan_number}) {$lang_vlan_name} ({$lang_vlan_number})
</td> </td>
<td class="value"> <td class="value">
<a href="vlanview.php?vlan_id={$vlan->id}">{$vlan->name} ({$vlan->number})</a> <a href="vlan.php?f=view&id={$vlan->id}">{$vlan->name} ({$vlan->number})</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="vlan.php">
<input type="hidden" name="del" value="vlansubnet"> <input type="hidden" name="id" value="{$vlan->id}">
<input type="hidden" name="vlan_id" value="{$vlan_id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=save" alt="{$lang_submit}"> <input type="image" name="submit[exec-sdel]" src="image.php?icon=save" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_vlan_name} ({$lang_vlan_number}) {$lang_vlan_name} ({$lang_vlan_number})
</td> </td>
<td class="value"> <td class="value">
<a href="vlanview.php?vlan_id={$vlan_id}">{$vlan_name} ({$vlan_number})</a> <a href="vlan.php?f=view&id={$vlan->id}">{$vlan->name} ({$vlan->number})</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -1,6 +1,5 @@
<form method="POST" action="submit.php"> <form method="POST" action="vlan.php">
<input type="hidden" name="redirect" value="vlansubnet"> <input type="hidden" name="id" value="{$vlan->id}">
<input type="hidden" name="vlan_id" value="{$vlan->id}">
<table class="title"> <table class="title">
<tr> <tr>
@ -9,7 +8,7 @@
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}"></a>
<input type="image" src="image.php?icon=next" alt="{$lang_submit}"> <input type="image" name="submit[exec-sedit]" src="image.php?icon=next" alt="{$lang_submit}">
</td> </td>
</tr> </tr>
</table> </table>
@ -28,7 +27,7 @@
{$lang_vlan_name} ({$lang_vlan_number}) {$lang_vlan_name} ({$lang_vlan_number})
</td> </td>
<td class="value"> <td class="value">
<a href="vlanview.php?vlan_id={$vlan->id}">{$vlan->name} ({$vlan->number})</a> <a href="vlan.php?f=view&id={$vlan->id}">{$vlan->name} ({$vlan->number})</a>
</td> </td>
</tr> </tr>
</table> </table>

@ -69,7 +69,7 @@
</td> </td>
<td class="header" align="right"> <td class="header" align="right">
{if $suser_edit} {if $suser_edit}
<a href="vlansubnetedit.php?vlan_id={$vlan->id}"><img src="image.php?icon=edit" alt="{$lang_subnetvlan_edit}"></a> <a href="vlan.php?f=sedit&id={$vlan->id}"><img src="image.php?icon=edit" alt="{$lang_subnetvlan_edit}"></a>
{/if} {/if}
</td> </td>
</tr> </tr>
@ -79,7 +79,7 @@
</td> </td>
<td class="value"> <td class="value">
{foreach item=subnet from=$subnets} {foreach item=subnet from=$subnets}
<a href="subnetview.php?subnet_id={$subnet.subnet_id}">{$subnet.subnet_address}/{$subnet.subnet_mask}</a> <a href="subnet.php?f=wiew&id={$subnet.subnet_id}">{$subnet.subnet_address}/{$subnet.subnet_mask}</a>
{$subnet.subnet_info} {$subnet.subnet_info}
<br> <br>
{/foreach} {/foreach}

@ -29,6 +29,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_origin" size="40" value="{$zone->zone_origin}"> <input type="text" name="zone_origin" size="40" value="{$zone->zone_origin}">
(example.com.)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -37,6 +38,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_ttl_default" size="40" value="{$zone->zone_ttl_default}"> <input type="text" name="zone_ttl_default" size="40" value="{$zone->zone_ttl_default}">
(3D)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -45,6 +47,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_soa" size="40" value="{$zone->zone_soa}"> <input type="text" name="zone_soa" size="40" value="{$zone->zone_soa}">
(server.example.com.)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -53,6 +56,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_hostmaster" size="40" value="{$zone->zone_hostmaster}" /> <input type="text" name="zone_hostmaster" size="40" value="{$zone->zone_hostmaster}" />
(hostmaster.example.com.)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -61,6 +65,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_serial" size="10" maxlength="10" value="{$zone->zone_serial}" /> <input type="text" name="zone_serial" size="10" maxlength="10" value="{$zone->zone_serial}" />
(jjjjmmttnn)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -69,6 +74,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_refresh" size="6" maxlength="10" value="{$zone->zone_refresh}" /> <input type="text" name="zone_refresh" size="6" maxlength="10" value="{$zone->zone_refresh}" />
(8H)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -77,6 +83,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_retry" size="6" maxlength="10" value="{$zone->zone_retry}" /> <input type="text" name="zone_retry" size="6" maxlength="10" value="{$zone->zone_retry}" />
(2H)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -85,6 +92,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_expire" size="6" maxlength="10" value="{$zone->zone_expire}" /> <input type="text" name="zone_expire" size="6" maxlength="10" value="{$zone->zone_expire}" />
(4W)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -93,6 +101,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_ttl" size="6" maxlength="10" value="{$zone->zone_ttl}" /> <input type="text" name="zone_ttl" size="6" maxlength="10" value="{$zone->zone_ttl}" />
(1D)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -101,6 +110,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_ns1" size="40" maxlength="40" value="{$zone->zone_ns1}" /> <input type="text" name="zone_ns1" size="40" maxlength="40" value="{$zone->zone_ns1}" />
(ns1.example.com.)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -125,6 +135,7 @@
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="zone_mx1" size="40" maxlength="40" value="{$zone->zone_mx1}" /> <input type="text" name="zone_mx1" size="40" maxlength="40" value="{$zone->zone_mx1}" />
(50 mx.example.com.)
</td> </td>
</tr> </tr>
<tr> <tr>

@ -10,7 +10,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php"); include("includes.php");
if (($_SESSION['suser_role_admin'] == 0) and ($_SESSION['suser_role_manage'] == 0)) { 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'])) { if (isset($_REQUEST['id'])) {
@ -170,6 +171,14 @@ $smarty->assign("user", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("userdel.tpl"); $smarty->display("userdel.tpl");
elseif ($action == ACT_ERR_DENIED):
// ========== ERROR ACCESS TO PAGE DENIED =====================================
if (isset($_SERVER['HTTP_REFERER'])) {
echo '<p"><a href="', $_SERVER['HTTP_REFERER'], '">', "Back to last page</a></p>\n";
}
echo "<p></p>";
else: else:
// ========== ERROR UNKNOWN VARIANT =========================================== // ========== ERROR UNKNOWN VARIANT ===========================================

@ -13,6 +13,12 @@ if (isset($_REQUEST['id'])) {
$id = (int) $_REQUEST['id'] or $id = 0; $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 =================================================== // ========== ACTIONS START ===================================================
switch ($submit = form_get_action()) { switch ($submit = form_get_action()) {
@ -23,6 +29,37 @@ switch ($submit = form_get_action()) {
case 'edit': $action = ACT_EDIT; break; case 'edit': $action = ACT_EDIT; break;
case 'del': $action = ACT_DELETE; 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': case 'insert':
$vlan_name = sanitize($_POST['vlan_name']); $vlan_name = sanitize($_POST['vlan_name']);
$vlan_number = sanitize($_POST['vlan_number']); $vlan_number = sanitize($_POST['vlan_number']);
@ -30,7 +67,7 @@ switch ($submit = form_get_action()) {
$vlan_color = sanitize($_POST['vlan_color']); $vlan_color = sanitize($_POST['vlan_color']);
$sql = "INSERT INTO vlan (vlan_name, vlan_number, vlan_color, vlan_info) $sql = "INSERT INTO vlan (vlan_name, vlan_number, vlan_color, vlan_info)
VALUE (?, ?, ?, ?)"; VALUES (?, ?, ?, ?)";
$sth = $dbh->prepare($sql); $sth = $dbh->prepare($sql);
$sth->execute([$vlan_name, $vlan_number, $vlan_color, $vlan_info]); $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"); $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: else:
// ========== ERROR UNKNOWN VARIANT =========================================== // ========== ERROR UNKNOWN VARIANT ===========================================

@ -1,43 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$vlan_id = sanitize($_GET['vlan_id']);
include("header.php");
$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([$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");
?>

@ -1,27 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$vlan_id = sanitize($_GET['vlan_id']);
include("header.php");
// vlan
$sql = "SELECT vlan_name, vlan_number FROM vlan WHERE vlan_id=?";
$sth = $dbh->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");
?>

@ -1,25 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/
include("includes.php");
$vlan_id = sanitize($_GET['vlan_id']);
include("header.php");
$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([$vlan_id]);
$smarty->assign("vlan", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("vlansubnetedit.tpl");
include("footer.php");
?>