19 Commits
v0.8 ... v0.9

Author SHA1 Message Date
42a964c4b8 Added symbol for options 2023-03-01 15:52:04 +01:00
f0d187b4c3 More restrictions due to authorization system 2023-03-01 15:12:09 +01:00
0b2da1f00f Added missing imagelinks in views 2023-03-01 10:10:36 +01:00
ac074eb944 Bumped version to 0.9 2023-03-01 10:02:42 +01:00
db26ffa611 Features LDAP, Rights, Cables, Menu improvements and bug fixing 2023-02-28 19:21:42 +01:00
26e9c89405 Assettype field for active/passive network-components 2023-02-24 15:20:25 +01:00
42e327776c Interface count for asset 2023-02-24 14:46:24 +01:00
6c9a169600 Some more small fixes in user admin code 2023-02-24 14:21:28 +01:00
02b3cfd23f Fix bugs in location code 2023-02-24 13:39:05 +01:00
0696a16030 Merge branch 'pdo' 2023-02-24 12:59:23 +01:00
e74bde2d14 Subsequent fixes after major changes for PDO 2023-02-24 12:16:25 +01:00
b144555e46 Added LDAP auth 2023-02-24 09:29:18 +01:00
7d6450706f Fix password change code 2023-02-23 12:30:11 +01:00
cb7f8ef649 Updated databasescript for new hashing algorithm 2023-02-23 10:56:00 +01:00
08c6d42b3c Implemented better password hashing algorithm 2023-02-23 10:50:48 +01:00
c13c7494bf Preselect subnet in options if defined 2023-02-22 10:55:49 +01:00
7c300e0a8f Changed database access to PDO using prepared statements 2023-02-22 10:50:24 +01:00
a4ecd1bff7 Fix PHP warnings and notices 2023-02-18 08:34:32 +01:00
be9610cd98 Fix styles and scripts in header 2023-02-18 07:49:25 +01:00
174 changed files with 7014 additions and 6682 deletions

View File

@@ -13,41 +13,33 @@ include("header.php");
// create letter links // create letter links
$query = "SELECT $sql = "SELECT DISTINCT SUBSTRING(UPPER(asset_name),1,1) AS asset_letter
SUBSTRING(UPPER(asset.asset_name),1,1) AS asset_letter FROM asset
FROM ORDER BY asset_letter";
asset $sth = $dbh->query($sql);
GROUP BY
asset_letter
ORDER BY
asset_letter";
$alphabet = $db->db_select($query); $alphabet = $sth->fetchAll();
$smarty->assign("alphabet", $alphabet); $smarty->assign("alphabet", $alphabet);
// setup current letter // total asset count
if(isset($_GET['asset_letter'])) { $sth = $dbh->query("SELECT COUNT(*) FROM asset");
$asset_letter = sanitize($_GET['asset_letter']); $smarty->assign("assetcount", $sth->fetchColumn());
// assets for current letter
if (isset($_GET['asset_letter'])) {
$asset_letter = sanitize($_GET['asset_letter']);
} else { } else {
$asset_letter = $alphabet[0]['asset_letter']; $asset_letter = $alphabet[0]['asset_letter'];
} }
$query = "SELECT $sql = "SELECT a.asset_id, IF(LENGTH(a.asset_name)>0, a.asset_name, '...') AS asset_name,
a.asset_id, a.asset_info, c.assetclass_id, c.assetclass_name
IF(LENGTH(a.asset_name)>0, a.asset_name, '...') AS asset_name, FROM asset AS a LEFT OUTER JOIN assetclass AS c USING (assetclass_id)
a.asset_info, WHERE SUBSTRING(a.asset_name,1,1)=?
c.assetclass_id, ORDER BY a.asset_name";
c.assetclass_name $sth = $dbh->prepare($sql);
FROM $sth->execute([$asset_letter]);
asset AS a LEFT OUTER JOIN assetclass AS c USING (assetclass_id) $smarty->assign("assets", $sth->fetchAll());
WHERE
SUBSTRING(a.asset_name,1,1) = '" . $asset_letter . "'
ORDER BY
a.asset_name";
$assets = $db->db_select($query);
$smarty->assign("assets", $assets);
$smarty->display("asset.tpl"); $smarty->display("asset.tpl");

View File

@@ -13,17 +13,20 @@ if((isset($_GET['assetclass_id'])) ? $assetclass_id = sanitize($_GET['assetclass
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT assetclass_id, assetclass_name
assetclass_id, FROM assetclass
assetclass_name ORDER BY assetclass_name";
FROM $sth = $dbh->query($sql);
assetclass
ORDER BY
assetclass_name";
$assetclasses = $db->db_select($query); $types = db_load_enum('asset','asset_type');
foreach ($assetclasses as $assetclass) {
$assetclass_options[$assetclass['assetclass_id']] = $assetclass['assetclass_name']; $smarty->assign("type_ids", $types);
$smarty->assign("type_names", $types);
$smarty->assign("type_selected", $types[0]);
$assetclass_options = array();
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$assetclass_options[$rec[0]] = $rec[1];
} }
$smarty->assign("assetclass_options", $assetclass_options); $smarty->assign("assetclass_options", $assetclass_options);

View File

@@ -10,20 +10,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php"); include("includes.php");
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT a.assetclass_id, a.assetclass_name, g.assetclassgroup_id,
a.assetclass_id, g.assetclassgroup_name, g.assetclassgroup_color
a.assetclass_name, FROM assetclass AS a LEFT OUTER JOIN assetclassgroup AS g USING (assetclassgroup_id)
g.assetclassgroup_id, ORDER BY a.assetclass_name";
g.assetclassgroup_name, $sth = $dbh->query($sql);
g.assetclassgroup_color $smarty->assign("assetclasses", $sth->fetchAll(PDO::FETCH_ASSOC));
FROM
assetclass AS a LEFT OUTER JOIN assetclassgroup AS g USING (assetclassgroup_id)
ORDER BY
a.assetclass_name";
$assetclasses = $db->db_select($query);
$smarty->assign("assetclasses", $assetclasses);
$smarty->display("assetclass.tpl"); $smarty->display("assetclass.tpl");
include("footer.php"); include("footer.php");

View File

@@ -13,7 +13,7 @@ if((isset($_GET['assetclassgroup_id'])) ? $assetclassgroup_id = sanitize($_GET['
include("header.php"); include("header.php");
$smarty->assign("assetclassgroup_options", $db->options_assetclassgroup()); $smarty->assign("assetclassgroup_options", db_get_options_assetclassgroup());
$smarty->display("assetclassadd.tpl"); $smarty->display("assetclassadd.tpl");
include("footer.php"); include("footer.php");

View File

@@ -13,18 +13,12 @@ $assetclass_id = sanitize($_GET['assetclass_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT assetclass_id AS id, assetclass_name AS name
assetclass_id, FROM assetclass
assetclass_name WHERE assetclass_id=?";
FROM $sth = $dbh->prepare($sql);
assetclass $sth->execute([$assetclass_id]);
WHERE $smarty->assign("assetclass", $sth->fetch(PDO::FETCH_OBJ));
assetclass_id=" . $assetclass_id;
$assetclass = $db->db_select($query);
$smarty->assign("assetclass_id", $assetclass[0]['assetclass_id']);
$smarty->assign("assetclass_name", $assetclass[0]['assetclass_name']);
$smarty->display("assetclassdel.tpl"); $smarty->display("assetclassdel.tpl");

View File

@@ -12,22 +12,16 @@ include("includes.php");
$assetclass_id = sanitize($_GET['assetclass_id']); $assetclass_id = sanitize($_GET['assetclass_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT assetclass_id AS id, assetclass_name AS name,
assetclass_id, assetclassgroup_id AS group_id
assetclass_name, FROM assetclass
assetclassgroup_id WHERE assetclass_id=?";
FROM $sth = $dbh->prepare($sql);
assetclass $sth->execute([$assetclass_id]);
WHERE
assetclass_id=" . $assetclass_id;
$assetclass = $db->db_select($query); $smarty->assign("assetclass", $sth->fetch(PDO::FETCH_OBJ));
$smarty->assign("assetclass_id", $assetclass[0]['assetclass_id']); $smarty->assign("assetclassgroup_options", db_get_options_assetclass());
$smarty->assign("assetclass_name", $assetclass[0]['assetclass_name']);
$smarty->assign("assetclassgroup_id", $assetclass[0]['assetclassgroup_id']);
$smarty->assign("assetclassgroup_options", $db->options_assetclassgroup());
$smarty->display("assetclassedit.tpl"); $smarty->display("assetclassedit.tpl");

View File

@@ -8,21 +8,15 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/ *****************************************************************************/
include("includes.php"); include("includes.php");
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT assetclassgroup_id AS id, assetclassgroup_name AS name,
assetclassgroup_id, assetclassgroup_color AS color, assetclassgroup_description AS description
assetclassgroup_name, FROM assetclassgroup
assetclassgroup_color ORDER BY assetclassgroup_name";
FROM $sth = $dbh->query($sql);
assetclassgroup $smarty->assign('assetclassgroups', $sth->fetchAll(PDO::FETCH_ASSOC));
ORDER BY
assetclassgroup_name";
$assetclassgroups = $db->db_select($query);
$smarty->assign("assetclassgroups", $assetclassgroups);
$smarty->display("assetclassgroup.tpl"); $smarty->display("assetclassgroup.tpl");
include("footer.php"); include("footer.php");

View File

@@ -8,6 +8,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/ *****************************************************************************/
include("includes.php"); include("includes.php");
$smarty->assign("scripts", 'jscolor.js');
include("header.php"); include("header.php");
$smarty->display("assetclassgroupadd.tpl"); $smarty->display("assetclassgroupadd.tpl");

View File

@@ -13,20 +13,12 @@ $assetclassgroup_id = sanitize($_GET['assetclassgroup_id']);
include("header.php"); include("header.php");
$smarty->assign($lang); $sql = "SELECT assetclassgroup_id AS id, assetclassgroup_name AS name
FROM assetclassgroup
$query = "SELECT WHERE assetclassgroup_id=?";
assetclassgroup_id, $sth = $dbh->prepare($sql);
assetclassgroup_name $sth->execute([$assetclassgroup_id]);
FROM $smarty->assign("assetclassgroup", $sth->fetch(PDO::FETCH_OBJ));
assetclassgroup
WHERE
assetclassgroup_id=" . $assetclassgroup_id;
$assetclassgroup = $db->db_select($query);
$smarty->assign("assetclassgroup_id", $assetclassgroup[0]['assetclassgroup_id']);
$smarty->assign("assetclassgroup_name", $assetclassgroup[0]['assetclassgroup_name']);
$smarty->display("assetclassgroupdel.tpl"); $smarty->display("assetclassgroupdel.tpl");

View File

@@ -14,22 +14,15 @@ $assetclassgroup_id = sanitize($_GET['assetclassgroup_id']);
$smarty->assign("scripts", 'jscolor.js'); $smarty->assign("scripts", 'jscolor.js');
include("header.php"); include("header.php");
$smarty->assign($lang); $sql = "SELECT assetclassgroup_id AS id, assetclassgroup_name AS name,
assetclassgroup_color AS color,
assetclassgroup_description AS description
FROM assetclassgroup
WHERE assetclassgroup_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$assetclassgroup_id]);
$query = "SELECT $smarty->assign("assetclassgroup", $sth->fetch(PDO::FETCH_OBJ));
assetclassgroup_id,
assetclassgroup_name,
assetclassgroup_color
FROM
assetclassgroup
WHERE
assetclassgroup_id=" . $assetclassgroup_id;
$assetclassgroup = $db->db_select($query);
$smarty->assign("assetclassgroup_id", $assetclassgroup[0]['assetclassgroup_id']);
$smarty->assign("assetclassgroup_name", $assetclassgroup[0]['assetclassgroup_name']);
$smarty->assign("assetclassgroup_color", $assetclassgroup[0]['assetclassgroup_color']);
$smarty->display("assetclassgroupedit.tpl"); $smarty->display("assetclassgroupedit.tpl");

View File

@@ -13,33 +13,23 @@ $assetclassgroup_id = sanitize($_GET['assetclassgroup_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT assetclassgroup_id AS id,
assetclassgroup_id, assetclassgroup_name AS name,
assetclassgroup_name, assetclassgroup_color AS color,
assetclassgroup_color assetclassgroup_description AS description
FROM FROM assetclassgroup
assetclassgroup WHERE assetclassgroup_id=?";
WHERE $sth = $dbh->prepare($sql);
assetclassgroup_id=" . $assetclassgroup_id; $sth->execute([$assetclassgroup_id]);
$smarty->assign("assetclassgroup", $sth->fetch(PDO::FETCH_OBJ));
$assetclassgroup = $db->db_select($query); $sql = "SELECT assetclass_id, assetclass_name
FROM assetclass
$smarty->assign("assetclassgroup_id", $assetclassgroup[0]['assetclassgroup_id']); WHERE assetclassgroup_id=?
$smarty->assign("assetclassgroup_name", $assetclassgroup[0]['assetclassgroup_name']); ORDER BY assetclass_name";
$smarty->assign("assetclassgroup_color", $assetclassgroup[0]['assetclassgroup_color']); $sth = $dbh->prepare($sql);
$sth->execute([$assetclassgroup_id]);
$query = "SELECT $smarty->assign("assetclasses", $sth->fetchAll(PDO::FETCH_ASSOC));
assetclass_id,
assetclass_name
FROM
assetclass
WHERE
assetclassgroup_id=" . $assetclassgroup_id . "
ORDER BY
assetclass_name";
$assetclasses = $db->db_select($query);
$smarty->assign("assetclasses", $assetclasses);
$smarty->display("assetclassgroupview.tpl"); $smarty->display("assetclassgroupview.tpl");

View File

@@ -13,37 +13,22 @@ $assetclass_id = sanitize($_GET['assetclass_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT a.assetclass_id, a.assetclass_name, g.assetclassgroup_id,
a.assetclass_id, a.assetclass_name, g.assetclassgroup_name, g.assetclassgroup_color
g.assetclassgroup_id, g.assetclassgroup_name, g.assetclassgroup_color FROM assetclass AS a LEFT OUTER JOIN assetclassgroup AS g USING (assetclassgroup_id)
FROM WHERE a.assetclass_id=?";
assetclass AS a LEFT OUTER JOIN assetclassgroup AS g USING (assetclassgroup_id) $sth = $dbh->prepare($sql);
WHERE $sth->execute([$assetclass_id]);
a.assetclass_id=" . $assetclass_id; $smarty->assign("assetclass", $sth->fetch(PDO::FETCH_OBJ));
$assetclass = $db->db_select($query); $sql = "SELECT asset_id, asset_name,
CONCAT(LEFT(asset_info, 80), IF(CHAR_LENGTH(asset_info)>80,'...','')) AS asset_info
$smarty->assign("assetclass_id", $assetclass[0]['assetclass_id']); FROM asset
$smarty->assign("assetclass_name", $assetclass[0]['assetclass_name']); WHERE assetclass_id=?
$smarty->assign("assetclass_selected", ""); ORDER BY asset_name";
$sth = $dbh->prepare($sql);
$smarty->assign("assetclassgroup_id", $assetclass[0]['assetclassgroup_id']); $sth->execute([$assetclass_id]);
$smarty->assign("assetclassgroup_name", $assetclass[0]['assetclassgroup_name']); $smarty->assign("assets", $sth->fetchAll(PDO::FETCH_ASSOC));
$smarty->assign("assetclassgroup_color", $assetclass[0]['assetclassgroup_color']);
$query = "SELECT
asset_id,
asset_name,
CONCAT(LEFT(asset_info, 80), IF(CHAR_LENGTH(asset_info)>80,'...','')) AS asset_info
FROM
asset
WHERE
assetclass_id='" . $assetclass_id . "'
ORDER BY
asset_name";
$assets = $db->db_select($query);
$smarty->assign("assets", $assets);
$smarty->display("assetclassview.tpl"); $smarty->display("assetclassview.tpl");

View File

@@ -13,30 +13,17 @@ $asset_id = sanitize($_GET['asset_id']);
include("header.php"); include("header.php");
$query = "SELECT // asset to delete
asset_name $sth = $dbh->prepare("SELECT asset_name FROM asset WHERE asset_id=?");
FROM $sth->execute([$asset_id]);
asset
WHERE
asset_id=" . $asset_id;
$asset = $db->db_select($query);
$smarty->assign("asset_id", $asset_id); $smarty->assign("asset_id", $asset_id);
$smarty->assign("asset_name", $asset[0]['asset_name']); $smarty->assign("asset_name", $sth->fetchColumn());
$query = "SELECT // nodes to delete
node_id, $sql = "SELECT node_id, node_ip FROM node WHERE asset_id=? ORDER BY INET_ATON(node_ip)";
node_ip $sth = $dbh->prepare($sql);
FROM $sth->execute([$asset_id]);
node $smarty->assign("nodes", $sth->fetchAll(PDO::FETCH_ASSOC));
WHERE
asset_id=" . $asset_id . "
ORDER BY
INET_ATON(node_ip)";
$nodes = $db->db_select($query);
$smarty->assign("nodes", $nodes);
$smarty->display("assetdel.tpl"); $smarty->display("assetdel.tpl");

View File

@@ -13,21 +13,19 @@ $asset_id = sanitize($_GET['asset_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT asset_id, asset_name, asset_hostname, asset_info, asset_intf,
asset_id, assetclass_id, asset_type
asset_name, FROM asset
asset_hostname, WHERE asset_id=?";
asset_info, $sth = $dbh->prepare($sql);
assetclass_id $sth->execute([$asset_id]);
FROM $smarty->assign("asset", $sth->fetch(PDO::FETCH_OBJ));
asset
WHERE
asset_id=" . $asset_id;
$asset = $db->db_select($query); // Type selection
$smarty->assign("asset", $asset[0]); $smarty->assign("type_ids", ['active', 'passive']);
$smarty->assign("type_names", ['Active', 'Passive']);
$smarty->assign("assetclass_options", $db->options_assetclass()); $smarty->assign("assetclass_options", db_get_options_assetclass());
$smarty->display("assetedit.tpl"); $smarty->display("assetedit.tpl");

View File

@@ -13,40 +13,22 @@ $asset_id = sanitize($_GET['asset_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT a.asset_id, a.asset_name, a.asset_hostname, a.asset_info,
a.asset_name, a.asset_intf, a.asset_type, c.assetclass_id, c.assetclass_name
a.asset_hostname, FROM asset AS a LEFT OUTER JOIN assetclass AS c USING (assetclass_id)
a.asset_info, WHERE a.asset_id=?";
c.assetclass_id, $sth = $dbh->prepare($sql);
c.assetclass_name $sth->execute([$asset_id]);
FROM $asset = $sth->fetch(PDO::FETCH_OBJ);
asset AS a LEFT OUTER JOIN assetclass AS c USING (assetclass_id) $smarty->assign("asset", $asset);
WHERE
a.asset_id=" . $asset_id;
$asset = $db->db_select($query); $sql = "SELECT node_id, node_ip, LEFT(node_info, 40) as node_info
FROM node
$smarty->assign("asset_id", $asset_id); WHERE asset_id=?
$smarty->assign("asset_name", $asset[0]['asset_name']); ORDER BY INET_ATON(node_ip)";
$smarty->assign("asset_hostname", $asset[0]['asset_hostname']); $sth = $dbh->prepare($sql);
$smarty->assign("asset_info", nl2br($asset[0]['asset_info'])); $sth->execute([$asset_id]);
$smarty->assign("nodes", $sth->fetchAll(PDO::FETCH_ASSOC));
$smarty->assign("assetclass_id", $asset[0]['assetclass_id']);
$smarty->assign("assetclass_name", $asset[0]['assetclass_name']);
$query = "SELECT
node_id,
node_ip,
LEFT(node_info, 40) as node_info
FROM
node
WHERE
asset_id=" . $asset_id . "
ORDER BY
INET_ATON(node_ip)";
$nodes = $db->db_select($query);
$smarty->assign("nodes", $nodes);
$smarty->display("assetview.tpl"); $smarty->display("assetview.tpl");

View File

@@ -14,19 +14,13 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
subnet_address, FROM subnet
subnet_mask WHERE subnet_id=?";
FROM $sth = $dbh->prepare($sql);
subnet $sth->execute([$subnet_id]);
WHERE
subnet_id=" . $subnet_id;
$subnet = $db->db_select($query); $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
$smarty->assign("node_ip", $node_ip); $smarty->assign("node_ip", $node_ip);
$smarty->display("assigniptonode.tpl"); $smarty->display("assigniptonode.tpl");

View File

@@ -17,31 +17,10 @@ include("header.php");
$smarty->assign("node_ip", $node_ip); $smarty->assign("node_ip", $node_ip);
$smarty->assign("asset_id", $asset_id); $smarty->assign("asset_id", $asset_id);
$smarty->assign("subnet_id", $subnet_id);
$query = "SELECT $smarty->assign("asset_options", db_get_options_asset());
asset_id, $smarty->assign("subnet_options", db_get_options_subnet());
asset_name
FROM
asset
ORDER BY
asset_name";
$assets = $db->db_select($query);
foreach ($assets as $asset) {
$asset_options[$asset['asset_id']] = $asset['asset_name'];
}
$smarty->assign("asset_options", $asset_options);
$query = "SELECT subnet_id,
CONCAT_WS('/', subnet_address, subnet_mask) AS subnet_name
FROM subnet
ORDER BY INET_ATON(subnet_address)";
$subnets = $db->db_select($query);
foreach ($subnets as $subnet) {
$subnet_options[$subnet['subnet_id']] = $subnet['subnet_name'];
}
$smarty->assign("subnet_options", $subnet_options);
$smarty->display("assignnodetoasset.tpl"); $smarty->display("assignnodetoasset.tpl");

161
cable.php Normal file
View File

@@ -0,0 +1,161 @@
<?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 ($_SESSION['suser_role_admin'] == 0) {
header_location('comments.php?comments=accessdenied');
}
if (isset($_REQUEST['id'])) {
$id = (int) $_REQUEST['id'] or $id = 0;
}
$ctypes = array('copper' => 'Copper', 'fibre' => 'Fibre',
'laser' => 'Laserlink', 'radio' => 'Radiolink');
// ========== 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':
$description = sanitize($_POST['description']);
$color = sanitize($_POST['color']);
$info = sanitize($_POST['info']);
$sql = "INSERT INTO cable
(cable_description, cable_color, cable_info)
VALUES
(:description, :color, :info)";
$sth = $dbh->prepare($sql);
$sth->bindValue(':description', $description, PDO::PARAM_STR);
$sth->bindValue(':color', $color, PDO::PARAM_STR);
$sth->bindValue(':info', $info, PDO::PARAM_STR);
$sth->execute();
$id = $dbh->lastInsertId();
$action = ACT_VIEW;
break;
case 'update':
$description = sanitize($_POST['description']);
$color = sanitize($_POST['color']);
$length = sanitize($_POST['length']);
$type = sanitize($_POST['cable_type']);
$info = sanitize($_POST['info']);
$sql = "UPDATE cable
SET cable_description=:desc,
cable_color=:color,
cable_length=:length,
cable_type=:type,
cable_info=:info
WHERE cable_id=:id";
$sth = $dbh->prepare($sql);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->bindValue(':desc', $description, PDO::PARAM_STR);
$sth->bindValue(':length', $length, PDO::PARAM_INT);
$sth->bindValue(':color', $color, PDO::PARAM_STR);
$sth->bindValue(':type', $type, PDO::PARAM_STR);
$sth->bindValue(':info', $info, PDO::PARAM_STR);
$sth->execute();
$action = ACT_VIEW;
break;
case 'delete':
$sth = $dbh->prepare("DELETE FROM cable WHERE cable_id=?");
$sth->execute([$id]);
$action = ACT_DEFAULT;
break;
default:
$g_error->Add(submit_error($submit));
$valid = FALSE;
}
// ========== ACTIONS END =====================================================
$smarty->assign("scripts", 'jscolor.js');
include("header.php");
// ========== PAGE CONTENT ====================================================
if ($action == ACT_DEFAULT):
// ========== VARIANT: default behavior =======================================
$sql = "SELECT cable_id AS id, cable_description AS description,
cable_from_id, cable_to_id, cable_length, cable_links,
cable_type, cable_color,
CONCAT(LEFT(cable_info, 60), IF(CHAR_LENGTH(cable_info)>60,'...','')) AS info
FROM cable
ORDER BY cable_description";
$sth = $dbh->query($sql);
$smarty->assign("cables", $sth->fetchAll());
$smarty->display("cable.tpl");
elseif ($action == ACT_ADD):
// ========== VARIANT: add record =============================================
$smarty->assign('type_options', $ctypes);
$smarty->display('cableadd.tpl');
elseif ($action == ACT_VIEW):
// ========== VARIANT: view single record =====================================
$sql = "SELECT cable_id AS id, cable_description AS description,
cable_from_id, cable_to_id, cable_length, cable_links,
cable_type, cable_color AS color, cable_info AS info
FROM cable
WHERE cable_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$id]);
$smarty->assign('cable', $sth->fetch(PDO::FETCH_OBJ));
$smarty->display('cableview.tpl');
elseif ($action == ACT_EDIT):
// ========== VARIANT: edit single record =====================================
$sql = "SELECT cable_id AS id, cable_description AS description,
cable_from_id, cable_to_id, cable_length, cable_links,
cable_type, cable_color AS color, cable_info AS info
FROM cable
WHERE cable_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$id]);
$smarty->assign('cable', $sth->fetch(PDO::FETCH_OBJ));
$smarty->assign('type_options', $ctypes);
$smarty->display('cableedit.tpl');
elseif ($action == ACT_DELETE):
// ========== VARIANT: delete record ==========================================
$sth = $dbh->prepare("SELECT cable_description FROM cable WHERE cable_id=?");
$sth->execute([$id]);
$smarty->assign('id', $id);
$smarty->assign('description', $sth->fetchColumn());
$smarty->display('cabledel.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');
?>

View File

@@ -21,4 +21,16 @@ $config_color_dynamic = 'e0e0e0';
// language // language
$config_lang_default = 'en'; $config_lang_default = 'en';
// auth
$config_auth_ldap = false;
$config_ldap_host = array('localhost', 'otherhost.example.com');
$config_ldap_port = 389;
$config_ldap_v3 = true;
$config_ldap_base_dn = 'ou=organizationalunit,dc=example,dc=com';
$config_ldap_login_attr = 'uid';
// ldap search user
$config_ldap_bind_dn = 'cn=dummy,ou=organizationalunit,dc=example,dc=com';
$config_ldap_bind_pass = 'secret';
?> ?>

View File

@@ -1,13 +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
*****************************************************************************/
$dblink = mysqli_connect($config_mysql_host,$config_mysql_username,$config_mysql_password);
mysqli_select_db($dblink, $config_mysql_dbname);
?>

View File

@@ -27,15 +27,35 @@ $smarty->assign("suser_name", $_SESSION['suser_displayname']);
$smarty->assign("search", $search); $smarty->assign("search", $search);
// menu // menu
$smarty->assign("menu_assets", $_SESSION['suser_menu_assets']=='on'); $menu = array();
$smarty->assign("menu_assetclasses", $_SESSION['suser_menu_assetclasses']=='on'); if ($_SESSION['suser_menu_assets']) {
$smarty->assign("menu_assetclassgroups", $_SESSION['suser_menu_assetclassgroups']=='on'); $menu[] = '<a href="asset.php">' . $lang['lang_assets'] . "</a>\n";
$smarty->assign("menu_locations", $_SESSION['suser_menu_locations']=='on'); }
$smarty->assign("menu_nodes", $_SESSION['suser_menu_nodes']=='on'); if ($_SESSION['suser_menu_assetclasses']) {
$smarty->assign("menu_subnets", $_SESSION['suser_menu_subnets']=='on'); $menu[] = '<a href="assetclass.php">' . $lang['lang_assetclasses'] . "</a>\n";
$smarty->assign("menu_users", $_SESSION['suser_menu_users']=='on'); }
$smarty->assign("menu_vlans", $_SESSION['suser_menu_vlans']=='on'); if ($_SESSION['suser_menu_assetclassgroups']) {
$smarty->assign("menu_zones", $_SESSION['suser_menu_zones']=='on'); $menu[] = '<a href="assetclassgroup.php">' . $lang['lang_assetclassgroups'] . "</a>\n";
}
if ($_SESSION['suser_menu_locations']) {
$menu[] = '<a href="location.php">' . $lang['lang_locations'] . "</a>\n";
}
if ($_SESSION['suser_menu_nodes']) {
$menu[] = '<a href="node.php">' . $lang['lang_nodes'] . "</a>\n";
}
if ($_SESSION['suser_menu_subnets']) {
$menu[] = '<a href="subnet.php">' . $lang['lang_subnets'] . "</a>\n";
}
if ($_SESSION['suser_menu_vlans']) {
$menu[] = '<a href="vlan.php">' . $lang['lang_vlans'] . "</a>\n";
}
if ($_SESSION['suser_menu_cables']) {
$menu[] = '<a href="cable.php">' . $lang['lang_cables'] . "</a>\n";
}
if ($_SESSION['suser_menu_zones']) {
$menu[] = '<a href="zone.php">' . $lang['lang_zones'] . "</a>\n";
}
$smarty->assign("menu", implode(' | ', $menu));
$smarty->display("header.tpl"); $smarty->display("header.tpl");
?> ?>

BIN
images/admin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

BIN
images/asset.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

BIN
images/brick.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

BIN
images/bricks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

BIN
images/cancel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

BIN
images/disconnect.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

BIN
images/information.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

BIN
images/manage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

BIN
images/note.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
images/plugin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

BIN
images/settings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

BIN
images/tag-blue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

View File

@@ -11,13 +11,18 @@ session_name('ipreg');
session_start(); session_start();
// check for user_id, if unnkown, redirect to login // check for user_id, if unnkown, redirect to login
if(empty($_SESSION['suser_id'])) { if (empty($_SESSION['suser_id'])) {
header("Location: login.php"); $_SESSION['prelogin'] = $_SERVER['REQUEST_URI'];
exit; header("Location: login.php");
exit;
} }
include("config.php"); include("config.php");
include("dbconnect.php");
// connect to database
$dbh = new PDO("mysql:host=$config_mysql_host;dbname=$config_mysql_dbname;charset=utf8", $config_mysql_username, $config_mysql_password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
include("lib.php"); include("lib.php");

View File

@@ -11,57 +11,31 @@ include("includes.php");
include("header.php"); include("header.php");
// asset // Statistics
$query = "SELECT
COUNT(asset_id) AS asset_counter
FROM
asset";
$assets = $db->db_select($query); // asset
$smarty->assign("asset_counter", $assets[0]['asset_counter']); $sth = $dbh->query("SELECT COUNT(asset_id) AS asset_counter FROM asset");
$smarty->assign("asset_counter", $sth->fetchColumn());
// location // location
$query = "SELECT $sth = $dbh->query("SELECT COUNT(location_id) AS location_counter FROM location");
COUNT(location_id) AS location_counter $smarty->assign("location_counter", $sth->fetchColumn());
FROM
location";
$locations = $db->db_select($query);
$smarty->assign("location_counter", $locations[0]['location_counter']);
// node // node
$query = "SELECT $sth = $dbh->query("SELECT COUNT(node_id) AS node_counter FROM node");
COUNT(node_id) AS node_counter $smarty->assign("node_counter", $sth->fetchColumn());
FROM
node";
$nodes = $db->db_select($query);
$smarty->assign("node_counter", $nodes[0]['node_counter']);
// subnet // subnet
$query = "SELECT $sth = $dbh->query("SELECT COUNT(subnet_id) AS subnet_counter FROM subnet");
COUNT(subnet_id) AS subnet_counter $smarty->assign("subnet_counter", $sth->fetchColumn());
FROM
subnet";
$subnets = $db->db_select($query);
$smarty->assign("subnet_counter", $subnets[0]['subnet_counter']);
// vlan // vlan
$query = "SELECT $sth = $dbh->query("SELECT COUNT(vlan_id) AS vlan_counter FROM vlan");
COUNT(vlan_id) AS vlan_counter $smarty->assign("vlan_counter", $sth->fetchColumn());
FROM
vlan";
$vlans = $db->db_select($query);
$smarty->assign("vlan_counter", $vlans[0]['vlan_counter']);
// zone // zone
$query = "SELECT $sth = $dbh->query("SELECT COUNT(zone_id) AS zone_counter FROM zone");
COUNT(zone_id) AS zone_counter $smarty->assign("zone_counter", $sth->fetchColumn());
FROM
zone";
$zones = $db->db_select($query);
$smarty->assign("zone_counter", $zones[0]['zone_counter']);
$smarty->display("index.tpl"); $smarty->display("index.tpl");

View File

@@ -1,6 +1,8 @@
IP Reg Installation IP Reg Installation
1. Install requirements 1. Install requirements
Minimum PHP version is 7.4, we are using arrow functions introduced
in that version.
IP Reg version 0.6 and up depends on smarty template engine. IP Reg version 0.6 and up depends on smarty template engine.
In Debian install it with: "apt-get install smarty3". In Debian install it with: "apt-get install smarty3".
The PHP-GD module is also required: "apt-get install php-gd". The PHP-GD module is also required: "apt-get install php-gd".

View File

@@ -4,6 +4,9 @@ CREATE TABLE asset (
asset_hostname varchar(100) DEFAULT NULL, asset_hostname varchar(100) DEFAULT NULL,
assetclass_id int(10) NOT NULL, assetclass_id int(10) NOT NULL,
asset_info text DEFAULT NULL, asset_info text DEFAULT NULL,
asset_intf smallint(5) UNSIGNED NOT NULL DEFAULT 1,
asset_location int(10) DEFAULT NULL,
asset_type enum ('active','passive') NOT NULL DEFAULT 'active',
PRIMARY KEY (asset_id), PRIMARY KEY (asset_id),
INDEX ix_asset_name (asset_name) INDEX ix_asset_name (asset_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@@ -19,17 +22,54 @@ CREATE TABLE assetclass (
CREATE TABLE assetclassgroup ( CREATE TABLE assetclassgroup (
assetclassgroup_id int(10) NOT NULL AUTO_INCREMENT, assetclassgroup_id int(10) NOT NULL AUTO_INCREMENT,
assetclassgroup_name varchar(100) NOT NULL, assetclassgroup_name varchar(100) NOT NULL,
assetclassgroup_color varchar(6) NOT NULL DEFAULT '000000', assetclassgroup_color char(6) NOT NULL DEFAULT '000000',
assetclassgroup_description varchar(100) DEFAULT NULL,
PRIMARY KEY (assetclassgroup_id), PRIMARY KEY (assetclassgroup_id),
INDEX ix_assetclassgroup_name (assetclassgroup_name) INDEX ix_assetclassgroup_name (assetclassgroup_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- WIP
CREATE TABLE cable (
cable_id int(10) NOT NULL AUTO_INCREMENT,
cable_description varchar(100) NOT NULL,
cable_from_id int(10) DEFAULT NULL,
cable_to_id int(10) DEFAULT NULL,
cable_length smallint(5) UNSIGNED DEFAULT NULL,
cable_links smallint(5) UNSIGNED DEFAULT 1,
cable_type enum('copper','fibre','laser','radio') DEFAULT NULL,
cable_color char(6) NOT NULL DEFAULT '000000',
cable_info text DEFAULT NULL,
PRIMARY KEY (cable_id),
UNIQUE INDEX ix_cable_description (cable_description)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- WIP
CREATE TABLE cablevlan (
cablevlan_id int(10) NOT NULL AUTO_INCREMENT,
cable_id int(10) NOT NULL,
vlan_id int(10) NOT NULL,
PRIMARY KEY (cablevlan_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- WIP
-- Reference to external systems
CREATE TABLE extlink (
extlink_id int(10) NOT NULL AUTO_INCREMENT,
asset_id int(10) NOT NULL,
extlink_type enum('cdb','zabbix', 'topdesk') NOT NULL DEFAULT 'cdb',
extlink_refid int(10) DEFAULT NULL,
extlink_uid varchar(65) DEFAULT NULL,
PRIMARY KEY (extlink_id),
INDEX ix_extlink_asset_id (asset_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE location ( CREATE TABLE location (
location_id int(10) NOT NULL AUTO_INCREMENT, location_id int(10) NOT NULL AUTO_INCREMENT,
location_name varchar(100) NOT NULL, location_name varchar(100) NOT NULL,
location_parent int(10) NOT NULL DEFAULT 0, location_parent int(10) NOT NULL DEFAULT 0,
location_info text DEFAULT NULL, location_info text DEFAULT NULL,
location_sort int(11) NOT NULL DEFAULT 0, location_type enum('location', 'building','room','rack') NOT NULL DEFAULT 'location',
location_sort smallint(6) NOT NULL DEFAULT 0,
PRIMARY KEY (location_id), PRIMARY KEY (location_id),
INDEX ix_location_sort (location_sort), INDEX ix_location_sort (location_sort),
INDEX ix_location_name (location_name) INDEX ix_location_name (location_name)
@@ -40,6 +80,9 @@ CREATE TABLE nat (
nat_type int(1) NOT NULL, nat_type int(1) NOT NULL,
nat_ext int(10) NOT NULL, nat_ext int(10) NOT NULL,
nat_int int(10) NOT NULL, nat_int int(10) NOT NULL,
nat_ext_port smallint(5) UNSIGNED DEFAULT NULL,
nat_int_port smallint(5) UNSIGNED DEFAULT NULL,
nat_description varchar(100) DEFAULT NULL,
PRIMARY KEY (nat_id) PRIMARY KEY (nat_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@@ -54,7 +97,9 @@ CREATE TABLE node (
zone_id int(10) DEFAULT NULL, zone_id int(10) DEFAULT NULL,
node_info text DEFAULT NULL, node_info text DEFAULT NULL,
node_type enum('v4','v6') NOT NULL DEFAULT 'v4', node_type enum('v4','v6') NOT NULL DEFAULT 'v4',
PRIMARY KEY (node_id) PRIMARY KEY (node_id),
INDEX ix_ip (node_ip),
INDEX ix_mac (node_mac)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE subnet ( CREATE TABLE subnet (
@@ -66,7 +111,8 @@ CREATE TABLE subnet (
subnet_info text DEFAULT NULL, subnet_info text DEFAULT NULL,
protocol_version tinyint(1) NOT NULL DEFAULT 4, protocol_version tinyint(1) NOT NULL DEFAULT 4,
ntp_server varchar(45) DEFAULT NULL, ntp_server varchar(45) DEFAULT NULL,
PRIMARY KEY (subnet_id) PRIMARY KEY (subnet_id),
UNIQUE INDEX ix_subnet (subnet_address, subnet_mask)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE subnetlocation ( CREATE TABLE subnetlocation (
@@ -85,8 +131,9 @@ CREATE TABLE subnetvlan (
CREATE TABLE user ( CREATE TABLE user (
user_id int(10) NOT NULL AUTO_INCREMENT, user_id int(10) NOT NULL AUTO_INCREMENT,
user_realm enum ('local','ldap') NOT NULL DEFAULT 'local',
user_name varchar(100) NOT NULL, user_name varchar(100) NOT NULL,
user_pass varchar(32) NOT NULL, user_pass binary(60) NOT NULL,
user_displayname varchar(100) NOT NULL, user_displayname varchar(100) NOT NULL,
user_language char(2) NOT NULL DEFAULT 'en', user_language char(2) NOT NULL DEFAULT 'en',
user_imagesize int(3) NOT NULL DEFAULT 6, user_imagesize int(3) NOT NULL DEFAULT 6,
@@ -95,47 +142,44 @@ CREATE TABLE user (
user_dateformat varchar(10) NOT NULL DEFAULT 'd M Y H:i', user_dateformat varchar(10) NOT NULL DEFAULT 'd M Y H:i',
user_dns1suffix varchar(100) DEFAULT NULL, user_dns1suffix varchar(100) DEFAULT NULL,
user_dns2suffix varchar(100) DEFAULT NULL, user_dns2suffix varchar(100) DEFAULT NULL,
user_menu_assets varchar(2) NOT NULL DEFAULT 'on',
user_menu_assetclasses varchar(2) NOT NULL DEFAULT 'on',
user_menu_assetclassgroups varchar(2) NOT NULL DEFAULT 'on',
user_menu_locations varchar(2) NOT NULL DEFAULT 'on',
user_menu_nodes varchar(2) NOT NULL DEFAULT 'on',
user_menu_subnets varchar(2) NOT NULL DEFAULT 'on',
user_menu_users varchar(2) NOT NULL DEFAULT 'on',
user_menu_vlans varchar(2) NOT NULL DEFAULT 'on',
user_menu_zones varchar(2) NOT NULL DEFAULT 'on',
user_tooltips varchar(2) NOT NULL DEFAULT 'on', user_tooltips varchar(2) NOT NULL DEFAULT 'on',
user_menu set('asset','cable','class','group','location','nat','node',
'subnet','vlan','zone') NOT NULL DEFAULT 'asset,class,group,location,node,subnet,vlan',
user_role set('add','edit','delete','manage','admin') DEFAULT NULL,
user_flags set('deleted','locked'),
PRIMARY KEY (user_id), PRIMARY KEY (user_id),
UNIQUE INDEX ix_username (user_name) UNIQUE INDEX ix_username (user_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO user (user_name, user_pass, user_displayname) VALUES INSERT INTO user (user_name, user_pass, user_displayname, user_role) VALUES
('admin', '21232f297a57a5a743894a0e4a801fc3', 'administrator'); ('admin', '$2y$10$HTs0lSaFrfr.q4Gmy5zWfeDg3jhYZkqEGZEnDkMiHZ641nso38mt6', 'Administrator', 'admin');
CREATE TABLE vlan ( CREATE TABLE vlan (
vlan_id int(10) NOT NULL AUTO_INCREMENT, vlan_id int(10) NOT NULL AUTO_INCREMENT,
vlan_number int(3) NOT NULL, vlan_number int(3) NOT NULL,
vlan_name varchar(100) NOT NULL, vlan_name varchar(100) NOT NULL,
vlan_color char(6) NOT NULL DEFAULT '000000',
vlan_info text DEFAULT NULL, vlan_info text DEFAULT NULL,
PRIMARY KEY (vlan_id) PRIMARY KEY (vlan_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE zone ( CREATE TABLE zone (
zone_id int(10) NOT NULL AUTO_INCREMENT, zone_id int(10) NOT NULL AUTO_INCREMENT,
zone_soa varchar(40) CHARACTER SET utf8 NOT NULL, zone_soa varchar(40) NOT NULL,
zone_hostmaster varchar(40) CHARACTER SET utf8 NOT NULL, zone_hostmaster varchar(40) NOT NULL,
zone_origin varchar(40) CHARACTER SET utf8 NOT NULL, zone_origin varchar(40) NOT NULL,
zone_ttl_default varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '3D', zone_ttl_default varchar(10) NOT NULL DEFAULT '3D',
zone_refresh varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '8H', zone_refresh varchar(10) NOT NULL DEFAULT '8H',
zone_retry varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '2H', zone_retry varchar(10) NOT NULL DEFAULT '2H',
zone_expire varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '4W', zone_expire varchar(10) NOT NULL DEFAULT '4W',
zone_ttl varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '1D', zone_ttl varchar(10) NOT NULL DEFAULT '1D',
zone_serial int(10) unsigned NOT NULL, zone_serial int(10) unsigned NOT NULL,
zone_ns1 varchar(20) CHARACTER SET utf8 NOT NULL, zone_ns1 varchar(20) NOT NULL,
zone_ns2 varchar(20) CHARACTER SET utf8 DEFAULT NULL, zone_ns2 varchar(20) DEFAULT NULL,
zone_ns3 varchar(20) CHARACTER SET utf8 DEFAULT NULL, zone_ns3 varchar(20) DEFAULT NULL,
zone_mx1 varchar(20) CHARACTER SET utf8 DEFAULT NULL, zone_mx1 varchar(20) DEFAULT NULL,
zone_mx2 varchar(20) CHARACTER SET utf8 DEFAULT NULL, zone_mx2 varchar(20) DEFAULT NULL,
zone_info text CHARACTER SET utf8 DEFAULT NULL, zone_info text DEFAULT NULL,
PRIMARY KEY (zone_id) PRIMARY KEY (zone_id),
UNIQUE INDEX ix_zone_origin (zone_origin)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

View File

@@ -49,8 +49,12 @@ INSERT INTO subnetlocation (subnet_id, location_id) VALUES
INSERT INTO subnetvlan (subnet_id, vlan_id) VALUES INSERT INTO subnetvlan (subnet_id, vlan_id) VALUES
(1, 1); (1, 1);
INSERT INTO user (user_name, user_pass, user_displayname) VALUES
('alice', '$2y$10$CTq04qodeKZBgeuShC3E..cEzfh.SDlaoOEUWcCXXHPDvXJ51nGdq', 'Alice'),
('bob', '$2y$10$hl4NN4lOyuz7KN0ZjLHbOuCqGi08GVaTvl/RiMcL1mbFqGmtzDN76', 'Bob');
INSERT INTO vlan (vlan_number, vlan_name) VALUES INSERT INTO vlan (vlan_number, vlan_name) VALUES
(1, 'DEFAULT_VLAN'); (1, 'DEFAULT_VLAN');
INSERT INTO zone (zone_soa, zone_origin, zone_hostmaster, zone_serial, zone_ns1) VALUES INSERT INTO zone (zone_soa, zone_origin, zone_hostmaster, zone_serial, zone_ns1) VALUES
('ns1.example.com.', 'example.com.', 'hostmaster@example.com', '2023021301', 'ns1.example.com'); ('ns1.example.com.', 'example.com.', 'hostmaster.example.com.', '2023021301', 'ns1.example.com');

24
install/upgrade.txt Normal file
View File

@@ -0,0 +1,24 @@
IP Reg Upgrading
This version has still not reached version 1.0 (feature complete).
As such, there may be changes at any time.
There is no database upgrade logic so the database structure has
to be compared manually.
1. Check and upgrade database schema
Compare current database schema with the contents of the database
creation script "mysql.sql".
Create missing objects in your current database.
2. Install new version
Install the new application in a new location.
Copy the configuration file "config.php" to new installation.
Compare the configuration to the sample config.
There may be additional settings that you want to customize.
3. Switch to new version
Rename the old and new directory.
4. Done
If everything works fine you could remove the old directory.

View File

@@ -9,6 +9,8 @@ $lang = array(
'lang_assetclasses' => 'Objektklassen', 'lang_assetclasses' => 'Objektklassen',
'lang_assetclassgroup' => 'Objektklassengruppe', 'lang_assetclassgroup' => 'Objektklassengruppe',
'lang_assetclassgroups' => 'Objektklassengruppen', 'lang_assetclassgroups' => 'Objektklassengruppen',
'lang_cable' => 'Kabel',
'lang_cables' => 'Kabel',
'lang_location' => 'Standort', 'lang_location' => 'Standort',
'lang_locations' => 'Standorte', 'lang_locations' => 'Standorte',
'lang_menu' => 'Menü', 'lang_menu' => 'Menü',
@@ -27,7 +29,7 @@ $lang = array(
'lang_vlans' => 'VLANs', 'lang_vlans' => 'VLANs',
'lang_about' => 'Über', 'lang_about' => 'Über',
'lang_all' => 'Allw', 'lang_all' => 'Alle',
'lang_cancel' => 'Abbruch', 'lang_cancel' => 'Abbruch',
'lang_color' => 'Farbe', 'lang_color' => 'Farbe',
'lang_error' => 'Fehler', 'lang_error' => 'Fehler',
@@ -44,6 +46,11 @@ $lang = array(
'lang_submit' => 'Absenden', 'lang_submit' => 'Absenden',
'lang_unassigned' => 'Nicht zugeordnet', 'lang_unassigned' => 'Nicht zugeordnet',
'lang_warning' => 'Warnung', 'lang_warning' => 'Warnung',
'lang_description' => 'Beschreibung',
'lang_empty' => 'leer',
'lang_source' => 'Quelle',
'lang_target' => 'Ziel',
'lang_length' => 'L&auml;nge',
'lang_asset_add' => 'Objekt hinzufügen', 'lang_asset_add' => 'Objekt hinzufügen',
'lang_asset_del' => 'Objekt löschen', 'lang_asset_del' => 'Objekt löschen',
@@ -52,6 +59,8 @@ $lang = array(
'lang_asset_name' => 'Objektname', 'lang_asset_name' => 'Objektname',
'lang_asset_hostname' => 'Hostname', 'lang_asset_hostname' => 'Hostname',
'lang_asset_none' => 'Es sind keine Objekte vorhanden', 'lang_asset_none' => 'Es sind keine Objekte vorhanden',
'lang_asset_intf' => 'Anzahl Schnittstellen',
'lang_asset_type' => 'Objekttyp',
'lang_assetclass_add' => 'Objektklasse hinzufügen', 'lang_assetclass_add' => 'Objektklasse hinzufügen',
'lang_assetclass_del' => 'Objektklasse löschen', 'lang_assetclass_del' => 'Objektklasse löschen',
@@ -93,6 +102,10 @@ $lang = array(
'lang_locationsubnet' => 'Standort/Subnetz', 'lang_locationsubnet' => 'Standort/Subnetz',
'lang_locationsubnet_edit' => 'Standort/Subnetz bearbeiten', 'lang_locationsubnet_edit' => 'Standort/Subnetz bearbeiten',
'lang_cable_info' => 'Kabelinfo',
'lang_cable_type' => 'Kabeltyp',
'lang_cable_none' => 'Es sind keine Kabel vorhanden',
'lang_node_add' => 'Knoten hinzufügen', 'lang_node_add' => 'Knoten hinzufügen',
'lang_node_del' => 'Knoten löschen', 'lang_node_del' => 'Knoten löschen',
'lang_node_edit' => 'Knoten ändern', 'lang_node_edit' => 'Knoten ändern',
@@ -144,6 +157,13 @@ $lang = array(
'lang_user_name' => 'Benutzername', 'lang_user_name' => 'Benutzername',
'lang_user_password' => 'Kennwort', 'lang_user_password' => 'Kennwort',
'lang_user_language' => 'Sprache', 'lang_user_language' => 'Sprache',
'lang_user_realm' => 'Realm',
'lang_user_roles' => 'Rechte',
'lang_user_role_add' => 'Anlegen',
'lang_user_role_edit' => 'Bearbeiten',
'lang_user_role_delete' => 'Löschen',
'lang_user_role_manage' => 'Konfigurieren',
'lang_user_role_admin' => 'Adminstration',
'lang_zone_add' => 'Zone hinzufügen', 'lang_zone_add' => 'Zone hinzufügen',
'lang_zone_del' => 'Zone löschen', 'lang_zone_del' => 'Zone löschen',
@@ -171,8 +191,10 @@ $lang = array(
'lang_comments_usernameinuse' => 'Benutzername wird bereits verwendet', 'lang_comments_usernameinuse' => 'Benutzername wird bereits verwendet',
'lang_comments_invalidpass' => 'Das Kennwort ist falsch', 'lang_comments_invalidpass' => 'Das Kennwort ist falsch',
'lang_comments_invalidnewpass' => 'Das neue Kennwort wurde nicht korrekt eingegeben', 'lang_comments_invalidnewpass' => 'Das neue Kennwort wurde nicht korrekt eingegeben',
'lang_comments_accessdenied' => 'Zugriff verweigert. Keine Berechtigung.',
'lang_options_ipreg' => 'IP Reg Optionen', 'lang_options_ipreg' => 'IP Reg Optionen',
'lang_options_profile' => 'Aktuelles Benutzerprofil',
'lang_options_display' => 'Anzeigeeinstellungen', 'lang_options_display' => 'Anzeigeeinstellungen',
'lang_options_password' => 'Kennwort ändern', 'lang_options_password' => 'Kennwort ändern',
'lang_options_imagesize' => 'Bildgröße', 'lang_options_imagesize' => 'Bildgröße',
@@ -185,9 +207,9 @@ $lang = array(
'lang_options_dateformat' => 'Datumsformat', 'lang_options_dateformat' => 'Datumsformat',
'lang_options_dateformat_help' => 'Format in which dates are displayed using the php-date-format (see http://www.php.net/date for more info)', 'lang_options_dateformat_help' => 'Format in which dates are displayed using the php-date-format (see http://www.php.net/date for more info)',
'lang_options_dns1suffix' => 'DNS Name suffix', 'lang_options_dns1suffix' => 'DNS Name suffix',
'lang_options_dns1suffix_help' => 'Default DNS Name suffix für neue Knoten', 'lang_options_dns1suffix_help' => 'Standard DNS Name Suffix für neue Knoten',
'lang_options_dns2suffix' => 'DNS Alias suffix', 'lang_options_dns2suffix' => 'DNS Alias suffix',
'lang_options_dns2suffix_help' => 'Default DNS Alias suffix für neue Knoten', 'lang_options_dns2suffix_help' => 'Standard DNS Alias Suffix für neue Knoten',
'lang_options_currentpassword' => 'Aktuelles Kennwort', 'lang_options_currentpassword' => 'Aktuelles Kennwort',
'lang_options_currentpassword_help' => 'Bitte geben Sie hier Ihr bisheriges Kennwort ein', 'lang_options_currentpassword_help' => 'Bitte geben Sie hier Ihr bisheriges Kennwort ein',
'lang_options_newpassword1' => 'Neues Kennwort', 'lang_options_newpassword1' => 'Neues Kennwort',
@@ -207,12 +229,14 @@ $lang = array(
'lang_about_license_ext' => 'Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)<br>Copyright (C) 2011-2023 Thomas Hooge<p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p> You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.', 'lang_about_license_ext' => 'Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)<br>Copyright (C) 2011-2023 Thomas Hooge<p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p> You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.',
'lang_about_changelog' => 'Changelog (major changes only)', 'lang_about_changelog' => 'Changelog (major changes only)',
'lang_about_changelog_v09' => 'v0.9 (mar 2023)',
'lang_about_changelog_v09_ext' => '- Changed database interface to PDO / prepared statements<br>- LDAP authentication<br>- User rights<br>- Improved internal menu system',
'lang_about_changelog_v08' => 'v0.8 (feb 2023)', 'lang_about_changelog_v08' => 'v0.8 (feb 2023)',
'lang_about_changelog_v08_ext' => '- Some small improvements and bugfixing<br>- Code simplification as preparation for big refactoring', 'lang_about_changelog_v08_ext' => '- Some small improvements and bugfixing<br>- Code simplification as preparation for big refactoring',
'lang_about_changelog_v07' => 'v0.7 (oct 2018)', 'lang_about_changelog_v07' => 'v0.7 (oct 2018)',
'lang_about_changelog_v07_ext' => '- Added support for PHP7, switched to mysqli', 'lang_about_changelog_v07_ext' => '- Added support for PHP7, switched to mysqli',
'lang_about_changelog_v06' => 'v0.6 (may 2011)', 'lang_about_changelog_v06' => 'v0.6 (may 2011)',
'lang_about_changelog_v06_ext' => '- Moved towards smarty template engine<br />- language support finalized<br>- added german language<br>- some small bug fixes', 'lang_about_changelog_v06_ext' => '- Moved towards smarty template engine<br />- Language support finalized<br>- Added german language<br>- Some small bug fixes',
'lang_about_changelog_v05' => 'v0.5 (dec 2009)', 'lang_about_changelog_v05' => 'v0.5 (dec 2009)',
'lang_about_changelog_v05_ext' => '- Complete code rewrite<br>- Input sanitation<br>- Background image<br>- Added multiple counters<br>- HTML is now 100% W3C valid<br>- More user options', 'lang_about_changelog_v05_ext' => '- Complete code rewrite<br>- Input sanitation<br>- Background image<br>- Added multiple counters<br>- HTML is now 100% W3C valid<br>- More user options',
'lang_about_changelog_v04' => 'v0.4 (jun 2008)', 'lang_about_changelog_v04' => 'v0.4 (jun 2008)',

View File

@@ -9,6 +9,8 @@ $lang = array(
'lang_assetclasses' => 'Assetclasses', 'lang_assetclasses' => 'Assetclasses',
'lang_assetclassgroup' => 'Assetclassgroup', 'lang_assetclassgroup' => 'Assetclassgroup',
'lang_assetclassgroups' => 'Assetclassgroups', 'lang_assetclassgroups' => 'Assetclassgroups',
'lang_cable' => 'Cable',
'lang_cables' => 'Cables',
'lang_location' => 'Location', 'lang_location' => 'Location',
'lang_locations' => 'Locations', 'lang_locations' => 'Locations',
'lang_menu' => 'Menu', 'lang_menu' => 'Menu',
@@ -44,6 +46,11 @@ $lang = array(
'lang_submit' => 'Submit', 'lang_submit' => 'Submit',
'lang_unassigned' => 'Unassigned', 'lang_unassigned' => 'Unassigned',
'lang_warning' => 'Warning', 'lang_warning' => 'Warning',
'lang_description' => 'Description',
'lang_empty' => 'empty',
'lang_source' => 'Source',
'lang_target' => 'Target',
'lang_length' => 'Length',
'lang_asset_add' => 'Add asset', 'lang_asset_add' => 'Add asset',
'lang_asset_del' => 'Delete asset', 'lang_asset_del' => 'Delete asset',
@@ -52,6 +59,8 @@ $lang = array(
'lang_asset_name' => 'Asset name', 'lang_asset_name' => 'Asset name',
'lang_asset_hostname' => 'Hostname', 'lang_asset_hostname' => 'Hostname',
'lang_asset_none' => 'There are no assets defined', 'lang_asset_none' => 'There are no assets defined',
'lang_asset_intf' => 'Number of interfaces',
'lang_asset_type' => 'Asset type',
'lang_assetclass_add' => 'Add assetclass', 'lang_assetclass_add' => 'Add assetclass',
'lang_assetclass_del' => 'Delete assetclass', 'lang_assetclass_del' => 'Delete assetclass',
@@ -62,7 +71,7 @@ $lang = array(
'lang_assetclassgroup_add' => 'Add assetclassgroup', 'lang_assetclassgroup_add' => 'Add assetclassgroup',
'lang_assetclassgroup_del' => 'Delete assetclassgroup', 'lang_assetclassgroup_del' => 'Delete assetclassgroup',
'lang_assetclassgroup_edit' => 'Modify assetclassgroup', 'lang_assetclassgroup_edit' => 'Modify assetclassgroup',
'lang_assetclassgroup_name' => 'Assetclass Groupname', 'lang_assetclassgroup_name' => 'Assetclassgroup Name',
'lang_assetclassgroup_none' => 'There are no assetclassegroups defined', 'lang_assetclassgroup_none' => 'There are no assetclassegroups defined',
'lang_assignnodetoasset' => 'Assign node to asset', 'lang_assignnodetoasset' => 'Assign node to asset',
@@ -93,6 +102,10 @@ $lang = array(
'lang_locationsubnet' => 'Location/Subnet', 'lang_locationsubnet' => 'Location/Subnet',
'lang_locationsubnet_edit' => 'Edit Location/Subnet', 'lang_locationsubnet_edit' => 'Edit Location/Subnet',
'lang_cable_info' => 'Cable info',
'lang_cable_type' => 'Cable type',
'lang_cable_none' => 'There are no cables defined',
'lang_node_add' => 'Add node', 'lang_node_add' => 'Add node',
'lang_node_del' => 'Delete node', 'lang_node_del' => 'Delete node',
'lang_node_edit' => 'Modify node', 'lang_node_edit' => 'Modify node',
@@ -143,6 +156,14 @@ $lang = array(
'lang_user_edit' => 'Mofidy user', 'lang_user_edit' => 'Mofidy user',
'lang_user_name' => 'Username', 'lang_user_name' => 'Username',
'lang_user_password' => 'Password', 'lang_user_password' => 'Password',
'lang_user_language' => 'Language',
'lang_user_realm' => 'Realm',
'lang_user_roles' => 'Roles',
'lang_user_role_add' => 'Add',
'lang_user_role_edit' => 'Edit',
'lang_user_role_delete' => 'Delete',
'lang_user_role_manage' => 'Manage',
'lang_user_role_admin' => 'Adminstration',
'lang_zone_add' => 'Add zone', 'lang_zone_add' => 'Add zone',
'lang_zone_del' => 'Delete zone', 'lang_zone_del' => 'Delete zone',
@@ -157,7 +178,6 @@ $lang = array(
'lang_vlan_new' => 'VLAN info', 'lang_vlan_new' => 'VLAN info',
'lang_vlan_name' => 'VLAN name', 'lang_vlan_name' => 'VLAN name',
'lang_vlan_none' => 'There are no VLANs defined', 'lang_vlan_none' => 'There are no VLANs defined',
'lang_user_language' => 'Language',
'lang_vlansubnet' => 'VLAN/Subnet', 'lang_vlansubnet' => 'VLAN/Subnet',
'lang_vlansubnet_edit' => 'Edit VLAN/Subnet', 'lang_vlansubnet_edit' => 'Edit VLAN/Subnet',
@@ -171,8 +191,10 @@ $lang = array(
'lang_comments_usernameinuse' => 'Username in use', 'lang_comments_usernameinuse' => 'Username in use',
'lang_comments_invalidpass' => 'Invalid password', 'lang_comments_invalidpass' => 'Invalid password',
'lang_comments_invalidnewpass' => 'Invalid new password', 'lang_comments_invalidnewpass' => 'Invalid new password',
'lang_comments_accessdenied' => 'Access denied',
'lang_options_ipreg' => 'IP Reg options', 'lang_options_ipreg' => 'IP Reg options',
'lang_options_profile' => 'Current user profile',
'lang_options_display' => 'Display options', 'lang_options_display' => 'Display options',
'lang_options_password' => 'Change password', 'lang_options_password' => 'Change password',
'lang_options_imagesize' => 'Imagesize', 'lang_options_imagesize' => 'Imagesize',
@@ -207,12 +229,14 @@ $lang = array(
'lang_about_license_ext' => 'Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)<br>Copyright (C) 2011-2023 Thomas Hooge<p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p> You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.', 'lang_about_license_ext' => 'Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)<br>Copyright (C) 2011-2023 Thomas Hooge<p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p> You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.',
'lang_about_changelog' => 'Changelog (major changes only)', 'lang_about_changelog' => 'Changelog (major changes only)',
'lang_about_changelog_v09' => 'v0.9 (mar 2023)',
'lang_about_changelog_v09_ext' => '- Changed database interface to PDO / prepared statements<br>- LDAP authentication<br>- User rights<br>- Improved internal menu system',
'lang_about_changelog_v08' => 'v0.8 (feb 2023)', 'lang_about_changelog_v08' => 'v0.8 (feb 2023)',
'lang_about_changelog_v08_ext' => '- Some small improvements and bugfixing<br>- Code simplification as preparation for big refactoring', 'lang_about_changelog_v08_ext' => '- Some small improvements and bugfixing<br>- Code simplification as preparation for big refactoring',
'lang_about_changelog_v07' => 'v0.7 (oct 2018)', 'lang_about_changelog_v07' => 'v0.7 (oct 2018)',
'lang_about_changelog_v07_ext' => '- Added support for PHP7, switched to mysqli', 'lang_about_changelog_v07_ext' => '- Added support for PHP7, switched to mysqli',
'lang_about_changelog_v06' => 'v0.6 (may 2011)', 'lang_about_changelog_v06' => 'v0.6 (may 2011)',
'lang_about_changelog_v06_ext' => '- Moved towards smarty template engine<br />- language support finalized<br>- added german language<br>- some small bug fixes', 'lang_about_changelog_v06_ext' => '- Moved towards smarty template engine<br />- Language support finalized<br>- Added german language<br>- Some small bug fixes',
'lang_about_changelog_v05' => 'v0.5 (dec 2009)', 'lang_about_changelog_v05' => 'v0.5 (dec 2009)',
'lang_about_changelog_v05_ext' => '- Complete code rewrite<br>- Input sanitation<br>- Background image<br>- Added multiple counters<br>- HTML is now 100% W3C valid<br>- More user options', 'lang_about_changelog_v05_ext' => '- Complete code rewrite<br>- Input sanitation<br>- Background image<br>- Added multiple counters<br>- HTML is now 100% W3C valid<br>- More user options',
'lang_about_changelog_v04' => 'v0.4 (jun 2008)', 'lang_about_changelog_v04' => 'v0.4 (jun 2008)',

244
lib.php
View File

@@ -7,25 +7,253 @@ Copyright (C) 2011-2023 Thomas Hooge
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
*****************************************************************************/ *****************************************************************************/
// ========== CONSTANT DEFINITIONS ============================================
// page actions
define ('ACT_DEFAULT', 0);
define ('ACT_ADD', 1);
define ('ACT_VIEW', 2);
define ('ACT_EDIT', 3);
define ('ACT_DELETE', 4);
define ('ACT_COPY', 5);
define ('ACT_JOIN', 6);
define ('ACT_LEAVE', 7);
define ('ACT_EDIT_DETAIL', 8);
define ('ACT_DEL_DETAIL', 9);
define ('ACT_LINK', 10);
define ('ACT_UNLINK', 11);
define ('ACT_MAIL', 12);
define ('ACT_VIEW_LIST', 13);
// ========== GLOBAL PAGE START CODE ==========================================
// global version string // global version string
$config_version = 'v0.8'; $config_version = 'v0.9';
// available languages // available languages
$config_lang = array('de', 'en'); $config_lang = array('de', 'en');
include("lib/functions.php"); include("lib/functions.php");
require("lib/db.class.php");
$db = new Db($dblink);
require("lib/user.class.php");
$user = new User();
require_once('smarty3/Smarty.class.php'); require_once('smarty3/Smarty.class.php');
$smarty = new Smarty(); $smarty = new Smarty();
$smarty->template_dir = 'tpl'; $smarty->template_dir = 'tpl';
$smarty->compile_dir = 'tpl_c'; $smarty->compile_dir = 'tpl_c';
$smarty->registerPlugin('function', 'treelist', 'print_tree'); $smarty->registerPlugin('function', 'treelist', 'print_tree');
$smarty->assign("suser_tooltips", $_SESSION['suser_tooltips']); $smarty->registerPlugin('function', 'msgout', 'msgout');
$smarty->assign("suser_name", $_SESSION['suser_displayname']);
$smarty->assign("suser_tooltips", $_SESSION['suser_tooltips'] ?? 'off');
$smarty->assign("suser_add", $_SESSION['suser_role_add']);
$smarty->assign("suser_edit", $_SESSION['suser_role_edit']);
$smarty->assign("suser_delete", $_SESSION['suser_role_delete']);
$smarty->assign("suser_manage", $_SESSION['suser_role_manage']);
$smarty->assign("suser_admin", $_SESSION['suser_role_admin']);
// prepare global message system
$g_message = new Message;
$g_warning = new MessageWarning;
$g_error = new MessageError;
$action = ACT_DEFAULT;
// ========== FEEDBACK FUNCTIONS ==============================================
class Message {
var $count = 0;
var $text = array();
var $caption;
function Message() {
$this->caption = 'Information';
}
function SetCaption($str) {
$this->caption = $str;
}
function Add($msg) {
$this->count++;
$this->text[$this->count] = $msg;
}
function GetCount() {
return $this->count;
}
function PrintOut() {
if ($this->count > 0) {
echo '<div class="info">', "\n";
echo '<h3>', $this->caption, "</h3>\n";
echo "<ul>\n";
for ($i=1; $i<=$this->count; $i++) {
echo "\t<li>", $this->text[$i],"</li>\n";
}
echo "</ul>\n";
echo "</div>\n";
}
}
}
class MessageWarning extends Message {
function MessageWarning() {
$this->caption = 'Warning';
}
function PrintOut() {
if ($this->count > 0) {
echo '<div class="warning">', "\n";
echo '<h3>', $this->caption, "</h3>\n";
echo "<ul>\n";
for ($i=1; $i<=$this->count; $i++) {
echo "\t<li>", $this->text[$i],"</li>\n";
}
echo "</ul>\n";
echo "</div>\n";
}
}
}
class MessageError extends Message {
function MessageError() {
$this->caption = 'Error';
}
function PrintOut() {
if ($this->count > 0) {
echo '<div class="error">', "\n";
echo '<h3>', $this->caption, "</h3>\n";
echo "<ul>\n";
for ($i=1; $i<=$this->count; $i++) {
echo "\t<li>", $this->text[$i],"</li>\n";
}
echo "</ul>\n";
echo "</div>\n";
}
}
}
// ========== FORM FUNCTIONS ==================================================
function form_get_action() {
if (!isset($_POST['submit'])) {
if (isset($_GET['f'])) {
$submit = $_GET['f'];
} else {
$submit = NULL;
}
} else {
$submit = $_POST['submit'];
}
if (is_array($submit)) {
$submit = key($submit);
}
return strtolower($submit);
}
function submit_error($action) {
/* Submit buttons that return an unknown value end up in this
function by default. An exit() is conscious here *not* installed,
since it could be that despite such an error the program
execution should be continued. */
return sprintf('The action "%s" is unknown. It is probably a program error.<br /> Please inform your administrator of the exact circumstances of how this situation came about.', strtoupper($action));
}
// ========== DATABASE FUCTIONS ===============================================
function db_load_enum($table, $column) {
// returns array of enum-values as defined in database
global $dbh;
$sql = "SELECT TRIM(TRAILING ')' FROM SUBSTRING(column_type,6))
FROM information_schema.columns
WHERE table_name=? AND column_name=?";
$sth = $dbh->prepare($sql);
$sth->execute([$table, $column]);
return array_map(fn($x) => trim($x, "'"), explode(',', $sth->fetchColumn()));
}
function db_get_options_asset() {
global $dbh;
$sql = "SELECT asset_id, asset_name FROM asset ORDER BY asset_name";
$sth = $dbh->query($sql);
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$options[$rec[0]] = $rec[1];
}
return $options;
}
function db_get_options_assetclass() {
global $dbh;
$sql = "SELECT assetclass_id, assetclass_name FROM assetclass ORDER BY assetclass_name";
$sth = $dbh->query($sql);
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$options[$rec[0]] = $rec[1];
}
return $options;
}
function db_get_options_assetclassgroup() {
global $dbh;
$sql = "SELECT assetclassgroup_id, assetclassgroup_name FROM assetclassgroup ORDER BY assetclassgroup_name";
$sth = $dbh->query($sql);
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$options[$rec[0]] = $rec[1];
}
return $options;
}
function db_get_options_location($default = NULL) {
global $dbh;
$options = array();
if ($default != NULL) {
$options[0] = $default;
}
$sql = "SELECT location_id, location_name FROM location ORDER BY location_name";
$sth = $dbh->query($sql);
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$options[$rec[0]] = $rec[1];
}
return $options;
}
function db_get_options_subnet() {
global $dbh;
$sql = "SELECT subnet_id,
CONCAT_WS('/', subnet_address, subnet_mask) AS subnet_name
FROM subnet
ORDER BY INET_ATON(subnet_address)";
$sth = $dbh->query($sql);
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$options[$rec[0]] = $rec[1];
}
return $options;
}
function db_get_options_vlan($default = NULL) {
global $dbh;
$options = array();
if ($default != NULL) {
$options[0] = $default;
}
$sql = "SELECT vlan_id, vlan_name FROM vlan ORDER BY vlan_name";
$sth = $dbh->query($sql);
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$options[$rec[0]] = $rec[1];
}
return $options;
}
function db_get_options_zone($default = NULL) {
global $dbh;
$options = array();
if ($default != NULL) {
$options[0] = $default;
}
$sql = "SELECT zone_id, zone_origin FROM zone ORDER BY zone_origin";
$sth = $dbh->query($sql);
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$options[$rec[0]] = $rec[1];
}
return $options;
}
?> ?>

View File

@@ -1,173 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
For more information, visit http://sourceforge.net/projects/ipreg,
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/
class Db {
protected $dblink;
public function __construct ($dblink) {
$this->dblink = $dblink;
}
function db_delete($query) {
// run query
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink));
}
function db_insert($query) {
// run query
echo "<pre>$query</pre>";
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink));
// return result
return mysqli_insert_id($this->dblink);
}
function db_select($query) {
// run query
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink));
// loop results
$result = array();
while($record = mysqli_fetch_assoc($sql)) {
$result[] = $record;
}
// return array
return $result;
}
function db_update($query) {
// run query
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink));
}
function options_asset($null_value=NULL) {
$options = array();
if (isset($null_value)) {
$options[0] = $null_value;
}
$sql = "SELECT asset_id, asset_name
FROM asset
ORDER BY asset_name";
$records = $this->db_select($sql);
foreach ($records as $rec) {
$options[$rec['asset_id']] = $rec['asset_name'];
}
return $options;
}
function options_assetclass($null_value=NULL) {
$options = array();
if (isset($null_value)) {
$options[0] = $null_value;
}
$sql = "SELECT assetclass_id, assetclass_name
FROM assetclass
ORDER BY assetclass_name";
$records = $this->db_select($sql);
foreach ($records as $rec) {
$options[$rec['assetclass_id']] = $rec['assetclass_name'];
}
return $options;
}
function options_assetclassgroup($null_value=NULL) {
$options = array();
if (isset($null_value)) {
$options[0] = $null_value;
}
$sql = "SELECT assetclassgroup_id, assetclassgroup_name
FROM assetclassgroup
ORDER BY assetclassgroup_name";
$records = $this->db_select($sql);
foreach ($records as $rec) {
$options[$rec['assetclassgroup_id']] = $rec['assetclassgroup_name'];
}
return $options;
}
function options_location($null_value=NULL) {
$options = array();
if (isset($null_value)) {
$options[0] = $null_value;
}
$sql = "SELECT location_id,
location_name
FROM location
ORDER BY location_name";
$records = $this->db_select($sql);
foreach ($records as $rec) {
$options[$rec['location_id']] = $rec['location_name'];
}
return $options;
}
function options_subnet($null_value=NULL) {
$options = array();
if (isset($null_value)) {
$options[0] = $null_value;
}
$sql = "SELECT subnet_id,
CONCAT_WS('/', subnet_address, subnet_mask) AS subnet_name
FROM subnet
ORDER BY INET_ATON(subnet_address)";
$records = $this->db_select($sql);
foreach ($records as $rec) {
$options[$rec['subnet_id']] = $rec['subnet_name'];
}
return $options;
}
function options_vlan($null_value=NULL) {
$options = array();
if (isset($null_value)) {
$options[0] = $null_value;
}
$sql = "SELECT vlan_id,
CONCAT_WS(' - ', vlan_number, vlan_name) AS vlan_option
FROM vlan
ORDER BY vlan_number";
$records = $this->db_select($sql);
foreach ($records as $rec) {
$options[$rec['vlan_id']] = $rec['vlan_option'];
}
return $options;
}
function options_zone($null_value=NULL) {
$options = array();
if (isset($null_value)) {
$options[0] = $null_value;
}
$sql = "SELECT zone_id, zone_origin
FROM zone
ORDER BY zone_origin";
$records = $this->db_select($sql);
foreach ($records as $rec) {
$options[$rec['zone_id']] = $rec['zone_origin'];
}
return $options;
}
}
?>

View File

@@ -1,170 +1,163 @@
<?php <?php
/***************************************************************************** /*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff Copyright (C) 2007-2009 Wietse Warendorff (up to v0.5)
Copyright (C) 2011-2023 Thomas Hooge
This program is free software: you can redistribute it and/or modify SPDX-License-Identifier: GPL-3.0-or-later
it under the terms of the GNU General Public License as published by *****************************************************************************/
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, // strip mac address to 12 char string
but WITHOUT ANY WARRANTY; without even the implied warranty of function strip_mac($mac) {
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // strip chars we don't need
GNU General Public License for more details. $mac = preg_replace("|[^a-fA-F0-9]|", "", $mac);
You should have received a copy of the GNU General Public License // capitalize (just because it looks better eh)
along with this program. If not, see <http://www.gnu.org/licenses/>. $mac = strtoupper($mac);
For more information, visit http://sourceforge.net/projects/ipreg, // and return
or contact me at wietsew@users.sourceforge.net return ($mac);
*****************************************************************************/ }
// strip mac address to 12 char string // rebuild mac address
function strip_mac($mac) { function write_mac($mac) {
// strip chars we don't need // check string length
$mac = preg_replace("|[^a-fA-F0-9]|", "", $mac); if (strlen($mac)!=12) {
// if the MAC is empty, or for whatever reason incorrect, just return
// capitalize (just because it looks better eh) return $mac;
$mac = strtoupper($mac); } else {
// count to 12...
// and return for ($i=0; $i<12; $i++) {
return ($mac); // ... and strip mac to pieces
} ${"mac".$i} = $mac{$i};
// rebuild mac address
function write_mac($mac) {
// check string length
if (strlen($mac)!=12) {
// if the MAC is empty, or for whatever reason incorrect, just return
return $mac;
} else {
// count to 12...
for($i=0;$i<12;$i++) {
// ... and strip mac to pieces
${"mac".$i} = $mac{$i};
}
// get user preference
$user_mac = $_SESSION['suser_mac'];
// count to 12 again...
for($i=0;$i<12;$i++) {
// ... and replace user preference with pieces
$user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1);
}
// and return
return $user_mac;
}
}
// redirect page
function header_location($location) {
// send header
header("location: " . $location);
// exit to be sure
exit;
}
// sanitize input
function sanitize($input) {
global $dblink;
// trim whitespaces
$input = @trim($input);
// magic quotes enabled?
if(get_magic_quotes_gpc()) {
// strip slashes
$input = stripslashes($input);
} }
// convert to utf-8 // get user preference
iconv("UTF-8", "UTF-8", $input); $user_mac = $_SESSION['suser_mac'];
// convert special chars // count to 12 again...
$input = htmlentities($input,ENT_QUOTES,'UTF-8'); for($i=0; $i<12; $i++) {
// ... and replace user preference with pieces
// make sql ready $user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1);
$input = mysqli_real_escape_string($dblink, $input); }
// and return // and return
return $user_mac;
}
}
// redirect page
function header_location($location) {
// send header
header("location: " . $location);
// exit to be sure
exit;
}
// sanitize input
function sanitize($input) {
global $dblink;
// trim whitespaces
$input = @trim($input);
// magic quotes enabled?
if(get_magic_quotes_gpc()) {
// strip slashes
$input = stripslashes($input);
}
// convert to utf-8
iconv("UTF-8", "UTF-8", $input);
// convert special chars
$input = htmlentities($input,ENT_QUOTES,'UTF-8');
// and return
return $input;
}
function mysql_nullstring($input) {
if (isset($input)) {
return $input; return $input;
} else {
return '';
} }
}
function mysql_nullstring($input) { function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) {
if (isset($input)) { if ($lang_variable === null) {
return $input; $lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
}
if (empty($lang_variable)) {
return $default_language;
}
$accepted_languages = preg_split('/,\s*/', $lang_variable);
$current_lang = $default_language;
$current_q = 0;
foreach ($accepted_languages as $accepted_language) {
$res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
$accepted_language, $matches);
if (!$res) {
continue;
}
$lang_code = explode ('-', $matches[1]);
if (isset($matches[2])) {
$lang_quality = (float)$matches[2];
} else { } else {
return ''; $lang_quality = 1.0;
} }
} while (count ($lang_code)) {
if (in_array (strtolower (join ('-', $lang_code)), $allowed_languages)) {
function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) { if ($lang_quality > $current_q) {
if ($lang_variable === null) { $current_lang = strtolower (join ('-', $lang_code));
$lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $current_q = $lang_quality;
}
if (empty($lang_variable)) {
return $default_language;
}
$accepted_languages = preg_split('/,\s*/', $lang_variable);
$current_lang = $default_language;
$current_q = 0;
foreach ($accepted_languages as $accepted_language) {
$res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
$accepted_language, $matches);
if (!$res) {
continue;
}
$lang_code = explode ('-', $matches[1]);
if (isset($matches[2])) {
$lang_quality = (float)$matches[2];
} else {
$lang_quality = 1.0;
}
while (count ($lang_code)) {
if (in_array (strtolower (join ('-', $lang_code)), $allowed_languages)) {
if ($lang_quality > $current_q) {
$current_lang = strtolower (join ('-', $lang_code));
$current_q = $lang_quality;
break;
}
}
if ($strict_mode) {
break; break;
} }
array_pop ($lang_code);
} }
} if ($strict_mode) {
return $current_lang; break;
}
function print_tree_rec($tree, $level) {
$output = '<ul class="treelvl' . $level. '">' . "\n";
foreach ($tree as $node) {
$output .= '<li><a href="' . $node['href'] . '">' . $node['value'] . '</a>';
if ($node['children']) {
$output .= "\n" . print_tree_rec($node['children'], $level+1);
} }
$output .= "</li>\n"; array_pop ($lang_code);
} }
$output .= "</ul>\n";
return $output;
} }
return $current_lang;
}
function print_tree ($params, &$smarty) { function print_tree_rec($tree, $level) {
if (empty($params['level'])) { $output = '<ul class="treelvl' . $level. '">' . "\n";
$level = 0; foreach ($tree as $node) {
} else { $output .= '<li><a href="' . $node['href'] . '">' . $node['value'] . '</a>';
$level = $params['level']; if ($node['children']) {
} $output .= "\n" . print_tree_rec($node['children'], $level+1);
if (empty($params['tree'])) {
return '';
} else {
return print_tree_rec($params['tree'], $level);
} }
$output .= "</li>\n";
} }
$output .= "</ul>\n";
return $output;
}
//function print_tree($params, &$smarty) {
function print_tree($params, Smarty_Internal_Template $template) {
if (empty($params['level'])) {
$level = 0;
} else {
$level = $params['level'];
}
if (empty($params['tree'])) {
return '';
} else {
return print_tree_rec($params['tree'], $level);
}
}
function msgout(array $parameters, Smarty_Internal_Template $smarty)
{
// This is just a quick hack around missing {php} in Smarty3
$GLOBALS['g_error']->PrintOut();
$GLOBALS['g_warning']->PrintOut();
$GLOBALS['g_message']->PrintOut();
}
?> ?>

View File

@@ -1,122 +0,0 @@
<?php
/*****************************************************************************
IP Reg, a PHP/MySQL IPAM tool
Copyright (C) 2007-2009 Wietse Warendorff
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
For more information, visit http://sourceforge.net/projects/ipreg,
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/
class User {
function check_strlen($string) {
// check length
if(strlen($string)<1) {
return FALSE;
} else {
return TRUE;
}
}
function user_login($user_name, $user_pass) {
global $dblink;
// check user_name length
if($this->check_strlen($user_name)==FALSE) {
return FALSE;
}
// check user_pass length
if($this->check_strlen($user_pass)==FALSE) {
return FALSE;
}
// get user data
// initiate class
$db = new Db($dblink);
// build query
$query = "SELECT
user.user_id,
user.user_pass,
user.user_displayname,
user.user_language,
user.user_imagesize,
user.user_imagecount,
user.user_mac,
user.user_dateformat,
user.user_dns1suffix,
user.user_dns2suffix,
user.user_menu_assets,
user.user_menu_assetclasses,
user.user_menu_assetclassgroups,
user.user_menu_locations,
user.user_menu_nodes,
user.user_menu_subnets,
user.user_menu_users,
user.user_menu_vlans,
user.user_menu_zones,
user.user_tooltips
FROM
user
WHERE
user.user_name='" . $user_name . "'";
// run query
$users = $db->db_select($query);
// count results
$user_counter = count($users);
// any users?
if ($user_counter>0) {
// compare passwords
if(!strcmp(md5($user_pass), $users[0]['user_pass'])) {
// all ok: user is logged in, register session data
$_SESSION['suser_id'] = $users[0]['user_id'];
$_SESSION['suser_displayname'] = $users[0]['user_displayname'];
$_SESSION['suser_language'] = $users[0]['user_language'];
$_SESSION['suser_imagesize'] = $users[0]['user_imagesize'];
$_SESSION['suser_imagecount'] = $users[0]['user_imagecount'];
$_SESSION['suser_mac'] = $users[0]['user_mac'];
$_SESSION['suser_dateformat'] = $users[0]['user_dateformat'];
$_SESSION['suser_dns1suffix'] = $users[0]['user_dns1suffix'];
$_SESSION['suser_dns2suffix'] = $users[0]['user_dns2suffix'];
$_SESSION['suser_menu_assets'] = $users[0]['user_menu_assets'];
$_SESSION['suser_menu_assetclasses'] = $users[0]['user_menu_assetclasses'];
$_SESSION['suser_menu_assetclassgroups'] = $users[0]['user_menu_assetclassgroups'];
$_SESSION['suser_menu_locations'] = $users[0]['user_menu_locations'];
$_SESSION['suser_menu_nodes'] = $users[0]['user_menu_nodes'];
$_SESSION['suser_menu_subnets'] = $users[0]['user_menu_subnets'];
$_SESSION['suser_menu_users'] = $users[0]['user_menu_users'];
$_SESSION['suser_menu_vlans'] = $users[0]['user_menu_vlans'];
$_SESSION['suser_menu_zones'] = $users[0]['user_menu_zones'];
$_SESSION['suser_tooltips'] = $users[0]['user_tooltips'];
} else {
return FALSE;
}
} else {
return FALSE;
}
// no errors found, return
return TRUE;
}
function user_logout() {
// clear and destroy session
$_SESSION = array();
}
}
?>

View File

@@ -11,15 +11,11 @@ include("includes.php");
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT location_id AS id, location_name AS value, location_parent AS parent_id
location_id AS id, FROM location
location_name AS value, ORDER BY location_parent, location_sort, location_name";
location_parent AS parent_id $sth = $dbh->query($sql);
FROM $locations = $sth->fetchAll();
location
ORDER BY location_parent, location_sort, location_name";
$locations = $db->db_select($query);
// function for recursion // function for recursion
function build_tree($parent_id, $level) { function build_tree($parent_id, $level) {

View File

@@ -16,39 +16,33 @@ include("header.php");
// ************* <option value="0">{$lang_option_none}</option> // ************* <option value="0">{$lang_option_none}</option>
$query = "SELECT location_id, location_name, location_parent, location_sort $sql = "SELECT location_id AS id, location_name AS name,
FROM location location_parent AS parent, location_sort AS sort
ORDER BY location_parent, location_sort, location_name"; FROM location
ORDER BY location_parent, location_sort, location_name";
$sth = $dbh->query($sql);
$locations = $sth->fetchAll();
$locations = $db->db_select($query); if (count($locations) > 0) {
foreach ($locations AS $location) {
$location_counter = count($locations); $location_names[$location['id']] = $location['name'];
$parents[$location['parent']][] = $location['id'];
if ($location_counter>0) { }
// get objects
foreach ($locations AS $location) {
// create arrays
$location_names[$location['location_id']] = $location['location_name'];
$parents[$location['location_parent']][] = $location['location_id'];
}
} }
// look for parents // look for parents
// function to look for parents and create a new array for every child // function to look for parents and create a new array for every child
function location($parents, $parent = 0) { function location($parents, $parent = 0) {
// loop array to check foreach ($parents[$parent] as $child) {
foreach ($parents[$parent] as $child) { if (isset($parents[$child])) {
if (isset($parents[$child])) { // element has children
// element has children $children[$child] = location($parents, $child);
$children[$child] = location($parents, $child); } else {
} else { // no children, set NULL
// no children, set NULL $children[$child] = NULL;
$children[$child] = NULL; }
} }
} return $children;
// and again...
return $children;
} }
// recursive children check to template // recursive children check to template
@@ -67,8 +61,11 @@ function checkchildren($locations, $level) {
} }
$tree = location($parents); $tree = location($parents);
// create tree option list
$location_options = array(0 => '-'); $location_options = array(0 => '-');
checkchildren($tree, 0); checkchildren($tree, 0);
$smarty->assign("location_options", $location_options); $smarty->assign("location_options", $location_options);
$smarty->assign("location_parent", $location_parent); $smarty->assign("location_parent", $location_parent);

View File

@@ -13,17 +13,10 @@ $location_id = sanitize($_GET['location_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT location_id AS id, location_name AS name FROM location WHERE location_id=?";
location_name $sth = $dbh->prepare($sql);
FROM $sth->execute([$location_id]);
location $smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
WHERE
location_id=" . $location_id;
$location = $db->db_select($query);
$smarty->assign("location_id", $location_id);
$smarty->assign("location_name", $location[0]['location_name']);
$smarty->display("locationdel.tpl"); $smarty->display("locationdel.tpl");

View File

@@ -14,38 +14,32 @@ $location_id = sanitize($_GET['location_id']);
include("header.php"); include("header.php");
// location // location
$query = "SELECT $sql = "SELECT location_id AS id, location_name AS name, location_parent AS parent,
location_name, location_info AS info, location_sort AS sort
location_parent, FROM location
location_info, WHERE location_id=?";
location_sort $sth = $dbh->prepare($sql);
FROM $sth->execute([$location_id]);
location $location = $sth->fetch(PDO::FETCH_OBJ);
WHERE
location_id=" . $location_id;
$location = $db->db_select($query); $location_parent = $location->parent;
$location_parent = $location[0]['location_parent']; $smarty->assign("location", $location);
$smarty->assign("location_id", $location_id); /*$smarty->assign("location_id", $location_id);
$smarty->assign("location_name", $location[0]['location_name']); $smarty->assign("location_name", $location[0]['location_name']);
$smarty->assign("location_info", $location[0]['location_info']); $smarty->assign("location_info", $location[0]['location_info']);
$smarty->assign("location_sort", $location[0]['location_sort']); $smarty->assign("location_sort", $location[0]['location_sort']); */
// parent location // parent location
$query = "SELECT $sql = "SELECT location_id, location_name, location_parent
location_id, FROM location
location_name, WHERE location_id != ?
location_parent ORDER BY location_name";
FROM $sth = $dbh->prepare($sql);
location $sth->execute([$location_id]);
WHERE
location_id != " . $location_id . "
ORDER BY
location_name";
$locations = $db->db_select($query); $locations = $sth->fetchAll();
$location_counter = count($locations); $location_counter = count($locations);

View File

@@ -13,18 +13,15 @@ $location_id = sanitize($_GET['location_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT location_id AS id, location_name AS name
location_name FROM location
FROM WHERE location_id=?";
location $sth = $dbh->prepare($sql);
WHERE $sth->execute([$location_id]);
location_id=" . $location_id; $smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
$location = $db->db_select($query); $smarty->assign("subnet_options", db_get_options_subnet());
$smarty->assign("location_id", $location_id);
$smarty->assign("location_name", $location[0]['location_name']);
$smarty->assign("subnet_options", $db->options_subnet());
$smarty->display("locationsubnetadd.tpl"); $smarty->display("locationsubnetadd.tpl");
include("footer.php"); include("footer.php");

View File

@@ -14,32 +14,29 @@ $location_id = sanitize($_GET['location_id']);
include("header.php"); include("header.php");
// location // location
$query = "SELECT $sql = "SELECT location_id AS id, location_name AS name
location_name FROM location
FROM WHERE location_id=?";
location $sth = $dbh->prepare($sql);
WHERE $sth->execute([$location_id]);
location_id=" . $location_id; $smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
$location = $db->db_select($query);
$smarty->assign("location_id", $location_id);
$smarty->assign("location_name", $location[0]['location_name']);
// subnet // subnet
$query = "SELECT $sql = "SELECT
s.subnet_id, s.subnet_id,
s.subnet_address, s.subnet_address,
s.subnet_mask s.subnet_mask
FROM FROM
subnetlocation AS l LEFT JOIN subnet AS s USING (subnet_id) subnetlocation AS l LEFT JOIN subnet AS s USING (subnet_id)
WHERE WHERE
l.location_id=" . $location_id . " l.location_id=?
ORDER BY ORDER BY
INET_ATON(s.subnet_address)"; INET_ATON(s.subnet_address)";
$sth = $dbh->prepare($sql);
$sth->execute([$location_id]);
$subnets = $db->db_select($query); $smarty->assign($sth->fetchAll());
$smarty->assign($subnets);
$smarty->display("locationsubnetdel.tpl"); $smarty->display("locationsubnetdel.tpl");

View File

@@ -12,18 +12,13 @@ include("includes.php");
$location_id = sanitize($_GET['location_id']); $location_id = sanitize($_GET['location_id']);
include("header.php"); include("header.php");
// location
$query = "SELECT
location_name
FROM
location
WHERE
location_id=" . $location_id;
$location = $db->db_select($query); $sql = "SELECT location_id AS id, location_name AS name
FROM location
$smarty->assign("location_id", $location_id); WHERE location_id=?";
$smarty->assign("location_name", $location[0]['location_name']); $sth = $dbh->prepare($sql);
$sth->execute([$location_id]);
$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("locationsubnetedit.tpl"); $smarty->display("locationsubnetedit.tpl");

View File

@@ -10,69 +10,56 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php"); include("includes.php");
$location_id = sanitize($_GET['location_id']); $location_id = sanitize($_GET['location_id']);
if ((isset($_GET['id'])) ? $id = sanitize($_GET['id']) : $id = '');
include("header.php"); include("header.php");
// locationcrumb // base location
$sql = "SELECT location_id AS id, location_name AS name,
$query = "SELECT location_id AS id, location_parent AS parent_id, location_info AS info,
location_name AS name, CONCAT('locationview.php?location_id=', location_id) AS url
location_parent AS parent_id,
location_info
FROM location
WHERE location_id=" . $location_id;
$location = $db->db_select($query);
$location[0]['url'] = 'locationview.php?location_id=' . $location[0]['id'];
$crumbs[] = $location[0];
$level = 1;
while ($crumbs[0]['parent_id'] != 0) {
$query = "SELECT location_id AS id,
location_name AS name,
location_parent AS parent_id
FROM location FROM location
WHERE location_id=" . $crumbs[0]['parent_id']; WHERE location_id=?";
$result = $db->db_select($query); $sth = $dbh->prepare($sql);
$result[0]['url'] = 'locationview.php?location_id=' . $result[0]['id']; $sth->execute([$location_id]);
array_unshift($crumbs, $result[0]); $location = $sth->fetch(PDO::FETCH_OBJ);
$level++; $smarty->assign("location", $location);
}
$smarty->assign("location_id", $location_id); // crumbs
$smarty->assign("location_info", nl2br($location[0]['location_info'])); $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); $smarty->assign("crumbs", $crumbs);
// sublocations // sublocations
$query = "SELECT $sql = "SELECT location_id AS sublocation_id, location_name AS sublocation_name,
location_id AS sublocation_id, LEFT(location_info, 40) AS info_short,
location_name AS sublocation_name, CHAR_LENGTH(location_info) AS info_length
LEFT(location_info, 40) AS info_short, FROM location
CHAR_LENGTH(location_info) AS info_length WHERE location_parent=?
FROM ORDER BY location_name";
location $sth = $dbh->prepare($sql);
WHERE $sth->execute([$location_id]);
location_parent=" . $location_id . " $smarty->assign("sublocations", $sth->fetchAll());
ORDER BY
location_name";
$sublocations = $db->db_select($query);
$smarty->assign("sublocations", $sublocations);
// subnets // subnets
$query = "SELECT $sql = "SELECT s.subnet_id, s.subnet_address, s.subnet_mask
s.subnet_id, FROM subnet AS s LEFT JOIN subnetlocation AS l USING (subnet_id)
s.subnet_address, WHERE l.location_id=?
s.subnet_mask ORDER BY INET_ATON(s.subnet_address)";
FROM $sth = $dbh->prepare($sql);
subnet AS s LEFT JOIN subnetlocation USING (subnet_id) $sth->execute([$location_id]);
WHERE $smarty->assign("subnets", $sth->fetchAll());
subnetlocation.location_id=" . $location_id . "
ORDER BY
INET_ATON(s.subnet_address)";
$subnets = $db->db_select($query);
$smarty->assign("subnets", $subnets);
$smarty->display("locationview.tpl"); $smarty->display("locationview.tpl");

113
login.php
View File

@@ -10,37 +10,110 @@ SPDX-License-Identifier: GPL-3.0-or-later
session_name('ipreg'); session_name('ipreg');
session_start(); session_start();
include("config.php"); if (! include("config.php")) {
include("dbconnect.php"); echo "<!DOCTYPE html><html><head><title>IP Reg</title></head><body><h1>IP Reg</h1><h2>No configuration</h2><p>Error loading configuration. Please check your installation.</p></body></html>\n";
exit(1);
}
include("lib.php"); // connect to database
$dbh = new PDO("mysql:host=$config_mysql_host;dbname=$config_mysql_dbname;charset=utf8", $config_mysql_username, $config_mysql_password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
include("lib.php"); // only for get_language from browser. TODO: simplify
function user_login ($user_name, $user_pass) {
global $dbh;
if (strlen($user_name) < 1) {
return FALSE;
}
if (strlen($user_pass) < 1) {
return FALSE;
}
$sql = "SELECT user_id, user_pass, user_displayname, user_language,
user_imagesize, user_imagecount, user_mac, user_dateformat,
user_dns1suffix, user_dns2suffix, user_tooltips,
user_menu, user_role, user_flags
FROM user
WHERE user_name=?";
$sth = $dbh->prepare($sql);
$sth->execute([$user_name]);
if (!$user = $sth->fetch(PDO::FETCH_OBJ)) {
// no user record found
return FALSE;
}
if (strcmp(md5($user_pass), rtrim($user->user_pass)) != 0) {
// password does not match with md5, check if new hash matches
// For future expansion: $pwd_peppered = hash_hmac('sha256', $user_pass, $config_pepper);
if (! password_verify($user_pass, $user->user_pass)) {
return FALSE;
}
} else {
// md5 match but outdated. rewrite with new algo
$sth = $dbh->prepare("UPDATE user SET user_pass=? WHERE user_id=?");
$newhash = password_hash($user_pass, PASSWORD_BCRYPT);
$sth->execute([$newhash, $user->user_id]);
}
// all ok: user is logged in, register session data
$_SESSION['suser_id'] = $user->user_id;
$_SESSION['suser_displayname'] = $user->user_displayname;
$_SESSION['suser_language'] = $user->user_language;
$_SESSION['suser_imagesize'] = $user->user_imagesize;
$_SESSION['suser_imagecount'] = $user->user_imagecount;
$_SESSION['suser_mac'] = $user->user_mac;
$_SESSION['suser_dateformat'] = $user->user_dateformat;
$_SESSION['suser_dns1suffix'] = $user->user_dns1suffix;
$_SESSION['suser_dns2suffix'] = $user->user_dns2suffix;
$_SESSION['suser_tooltips'] = $user->user_tooltips;
$roles = explode(',', $user->user_role);
$_SESSION['suser_role_add'] = in_array('add', $roles);
$_SESSION['suser_role_edit'] = in_array('edit', $roles);
$_SESSION['suser_role_delete'] = in_array('delete', $roles);
$_SESSION['suser_role_manage'] = in_array('manage', $roles);
$_SESSION['suser_role_admin'] = in_array('admin', $roles);
$menu = explode(',', $user->user_menu);
$_SESSION['suser_menu_assets'] = in_array('asset', $menu);
$_SESSION['suser_menu_assetclasses'] = in_array('class', $menu);
$_SESSION['suser_menu_assetclassgroups'] = in_array('group', $menu);
$_SESSION['suser_menu_cables'] = in_array('cable', $menu);
$_SESSION['suser_menu_locations'] = in_array('location', $menu);
$_SESSION['suser_menu_nodes'] = in_array('node', $menu);
$_SESSION['suser_menu_subnets'] = in_array('subnet', $menu);
$_SESSION['suser_menu_vlans'] = in_array('vlan', $menu);
$_SESSION['suser_menu_zones'] = in_array('zone', $menu);
return TRUE;
}
// No header included, this page has no menu
// include language file
$language = lang_getfrombrowser($config_lang, $config_lang_default, null, false); $language = lang_getfrombrowser($config_lang, $config_lang_default, null, false);
include('lang/' . $language . '.php'); include('lang/' . $language . '.php');
// check for submit if ($_SERVER['REQUEST_METHOD'] == "POST" ) {
if ($_SERVER['REQUEST_METHOD']=="POST" ) {
/// get post info
$user_name = sanitize($_POST['user_name']);
$user_pass = sanitize($_POST['user_pass']);
// login $user_name = sanitize($_POST['user_name']);
$login = $user->user_login($user_name, $user_pass); $user_pass = sanitize($_POST['user_pass']);
if($login==TRUE) { if (user_login($user_name, $user_pass) == TRUE) {
// redirect header_location($_SESSION['prelogin'] ?? 'index.php');
header_location("index.php"); } else {
} else { $_SESSION = array();
// not ok, break session session_destroy();
$_SESSION = array(); }
session_destroy();
}
} }
$smarty->assign("config_version", $config_version); $smarty->assign("config_version", $config_version);
$smarty->assign($lang); $smarty->assign($lang);
$smarty->display("login.tpl"); $smarty->display("login.tpl");
include("footer.php"); include("footer.php");

28
nat.php Normal file
View File

@@ -0,0 +1,28 @@
<?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");
$sql = "SELECT n.nat_id AS id, n.nat_type, n.nat_ext, n.nat_int,
n.nat_ext_port AS port_ext, n.nat_int_port AS port_int,
n.nat_description AS description,
n1.node_ip AS node_ip_int, n2.node_ip AS node_ip_ext
FROM nat AS n
LEFT JOIN node AS n1 ON (n.nat_int=n1.node_id)
LEFT JOIN node AS n2 ON (n.nat_ext=n2.node_id)
ORDER BY INET_ATON(nat_ext)";
$sth = $dbh->query($sql);
$smarty->assign("nats", $sth->fetchAll());
$smarty->display("nat.tpl");
include("footer.php");
?>

View File

@@ -14,20 +14,19 @@ $node_id = sanitize($_GET['node_id']);
include("header.php"); include("header.php");
// node_ext // node_ext
$query = "SELECT $sql = "SELECT node_ip AS node_ip_ext
node_ip AS node_ip_ext FROM node
FROM WHERE node_id=?";
node $sth = $dbh->prepare($sql);
WHERE $sth->execute([$node_id]);
node_id=" . $node_id;
$node = $db->db_select($query); $node = $sth->fetch(PDO::FETCH_OBJ);
$smarty->assign("node_id_ext", $node_id); $smarty->assign("node_id_ext", $node_id);
$smarty->assign("node_ip_ext", $node[0]['node_ip_ext']); $smarty->assign("node_ip_ext", $node->node_ip_ext);
// node_int // node_int
$query = "SELECT $sql = "SELECT
a.asset_name, a.asset_name,
n.node_id AS node_id_int, n.node_id AS node_id_int,
n.node_ip AS node_ip_int n.node_ip AS node_ip_int
@@ -40,13 +39,16 @@ $query = "SELECT
FROM FROM
nat nat
WHERE WHERE
nat_ext=" . $node_id . " nat_ext=?
) )
AND n.node_id!=" . $node_id . " AND n.node_id!=?
ORDER BY ORDER BY
INET_ATON(n.node_ip)"; INET_ATON(n.node_ip)";
$sth = $dbh->prepare($sql);
$sth->execute([$node_id, $node_id]);
$nodes = $sth->fetchAll();
$nodes = $db->db_select($query);
foreach ($nodes as $rec) { foreach ($nodes as $rec) {
$node_options[$rec['node_id_int']] = $rec['node_ip_int'] . '/' . $rec['asset_name']; $node_options[$rec['node_id_int']] = $rec['node_ip_int'] . '/' . $rec['asset_name'];
} }

View File

@@ -14,39 +14,24 @@ $node_id = sanitize($_GET['node_id']);
include("header.php"); include("header.php");
// node_ext // node_ext
$query = "SELECT $sth = $dbh->prepare("SELECT node_id AS id_ext, node_ip AS ip_ext FROM node WHERE node_id=?");
node_ip AS node_ip_ext $sth->execute([$node_id]);
FROM $smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
node
WHERE
node_id=" . $node_id;
$node = $db->db_select($query);
$smarty->assign("node_id_ext", $node_id);
$smarty->assign("node_ip_ext", $node[0]['node_ip_ext']);
// options // options
$query = "SELECT $sql = "SELECT x.nat_id, n.node_ip, a.asset_name
a.asset_name, FROM nat AS x
n.node_ip, LEFT JOIN node AS n ON (x.nat_int=n.node_id)
x.nat_ext LEFT JOIN asset AS a USING (asset_id)
FROM WHERE x.nat_ext=?
asset AS a, ORDER BY INET_ATON(n.node_ip)";
nat AS x, $sth = $dbh->prepare($sql);
node AS n $sth->execute([$node_id]);
WHERE $nats = $sth->fetchAll();
x.nat_ext=" . $node_id . "
AND n.node_id=x.nat_int
AND a.asset_id=n.asset_id
ORDER BY
INET_ATON(n.node_ip)";
$nodes = $db->db_select($query);
$options = array(); $options = array();
foreach ($nodes as $rec) { foreach ($nats as $rec) {
$options[$rec['nat_ext']] = $rec['node_ip'] . '/' . $rec['asset_name']; $options[$rec['nat_id']] = $rec['node_ip'] . '/' . $rec['asset_name'];
} }
$smarty->assign("nat_options", $options); $smarty->assign("nat_options", $options);
$smarty->display("natdel.tpl"); $smarty->display("natdel.tpl");

View File

@@ -13,17 +13,10 @@ $node_id = sanitize($_GET['node_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT node_id AS id, node_ip AS ip FROM node WHERE node.node_id=?";
node_ip $sth = $dbh->prepare($sql);
FROM $sth->execute([$node_id]);
node $smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
WHERE
node.node_id=" . $node_id;
$node = $db->db_select($query);
$smarty->assign("node_id", $node_id);
$smarty->assign("node_ip", $node[0]['node_ip']);
$smarty->display("natedit.tpl"); $smarty->display("natedit.tpl");

View File

@@ -10,30 +10,42 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php"); include("includes.php");
include("header.php"); include("header.php");
// filter preparation
$p = array();
$w = array();
if(isset($_GET['subnet_id'])) { if(isset($_GET['subnet_id'])) {
$subnet_id = sanitize($_GET['subnet_id']); $subnet_id = sanitize($_GET['subnet_id']);
$subnet_view = "WHERE node.subnet_id=" . $subnet_id; $w[] = "n.subnet_id=?";
$p[] = $subnet_id;
$smarty->assign("subnet_id", $subnet_id); $smarty->assign("subnet_id", $subnet_id);
// get subnet details for title
$sql = "SELECT CONCAT_WS('/',subnet_address,subnet_mask) AS subnet
FROM subnet
WHERE subnet_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$subnet_id]);
$smarty->assign("subnet", $sth->fetchColumn());
} else { } else {
$smarty->assign("subnet_id", ""); $smarty->assign("subnet_id", '');
} }
$query = "SELECT // create sql with optional filter
asset.asset_id, $where = join(' AND ', $w);
REPLACE(asset.asset_name, ' ', '&nbsp;') AS asset_name,
asset.asset_info, $sql = "SELECT a.asset_id, a.asset_info,
node.node_id, REPLACE(a.asset_name, ' ', '&nbsp;') AS asset_name,
node.node_ip n.node_id, n.node_ip
FROM FROM node AS n LEFT JOIN asset AS a USING (asset_id)";
asset LEFT JOIN node USING (asset_id) if ($where) {
" . $subnet_view . " $sql .= ' WHERE ' . $where;
GROUP BY }
node.node_id $sql .= "GROUP BY n.node_id ORDER BY INET_ATON(n.node_ip)";
ORDER BY $sth = $dbh->prepare($sql);
INET_ATON(node.node_ip)"; $sth->execute($p);
$smarty->assign("nodes", $sth->fetchAll());
$nodes = $db->db_select($query);
$smarty->assign("nodes", $nodes);
$smarty->display("node.tpl"); $smarty->display("node.tpl");
include("footer.php"); include("footer.php");

View File

@@ -17,9 +17,10 @@ include("header.php");
$smarty->assign("user_dns1suffix", $_SESSION['suser_dns1suffix']); $smarty->assign("user_dns1suffix", $_SESSION['suser_dns1suffix']);
$smarty->assign("user_dns2suffix", $_SESSION['suser_dns2suffix']); $smarty->assign("user_dns2suffix", $_SESSION['suser_dns2suffix']);
$smarty->assign("node_ip", $node_ip); $smarty->assign("node_ip", $node_ip);
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_options", $db->options_subnet()); $smarty->assign("subnet_options", db_get_options_subnet());
$smarty->assign("assetclass_options", $db->options_assetclass()); $smarty->assign("assetclass_options", db_get_options_assetclass());
$smarty->display("nodeadd.tpl"); $smarty->display("nodeadd.tpl");
include("footer.php"); include("footer.php");

View File

@@ -13,21 +13,10 @@ $node_id = sanitize($_GET['node_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT node_id AS id, node_ip AS ip, asset_id FROM node WHERE node_id=?";
asset_id, $sth = $dbh->prepare($sql);
node_ip $sth->execute([$node_id]);
FROM $smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
node
WHERE
node_id=" . $node_id;
// run query
$node = $db->db_select($query);
// send to tpl
$smarty->assign("node_id", $node_id);
$smarty->assign("asset_id", $node[0]['asset_id']);
$smarty->assign("node_ip", $node[0]['node_ip']);
$smarty->display("nodedel.tpl"); $smarty->display("nodedel.tpl");

View File

@@ -13,40 +13,18 @@ $node_id = sanitize($_GET['node_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT node_id AS id, node_ip AS ip, node_mac AS mac,
a.asset_id, node_dns1 AS dns1, node_dns2 AS dns2, node_info AS info,
n.node_id, zone_id, asset_id, subnet_id
n.node_ip, FROM node
n.node_mac, WHERE node_id=?";
n.node_dns1, $sth = $dbh->prepare($sql);
n.node_dns2, $sth->execute([$node_id]);
n.node_info, $smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
s.subnet_id,
n.zone_id
FROM
asset AS a,
node AS n,
subnet AS s
WHERE
a.asset_id=n.asset_id
AND n.node_id=" . $node_id . "
AND s.subnet_id=n.subnet_id";
$node = $db->db_select($query); $smarty->assign("asset_options", db_get_options_asset());
$smarty->assign("subnet_options", db_get_options_subnet());
$smarty->assign("node_id", $node[0]['node_id']); $smarty->assign("zone_options", db_get_options_zone('(keine)'));
$smarty->assign("node_ip", $node[0]['node_ip']);
$smarty->assign("node_mac", write_mac($node[0]['node_mac']));
$smarty->assign("node_dns1", $node[0]['node_dns1']);
$smarty->assign("node_dns2", $node[0]['node_dns2']);
$smarty->assign("node_info", $node[0]['node_info']);
$smarty->assign("asset_id", $node[0]['asset_id']);
$smarty->assign("subnet_id", $node[0]['subnet_id']);
$smarty->assign("zone_id", $node[0]['zone_id']);
$smarty->assign("asset_options", $db->options_asset());
$smarty->assign("subnet_options", $db->options_subnet());
$smarty->assign("zone_options", $db->options_zone("(keine)"));
$smarty->display("nodeedit.tpl"); $smarty->display("nodeedit.tpl");

View File

@@ -18,66 +18,70 @@ if (isset($_GET['node_id']) && (!empty($_GET['node_id']))) {
} }
include("header.php"); include("header.php");
// node
$query = "SELECT
asset.asset_id,
asset.asset_name,
node.node_id,
node.node_ip,
node.node_mac,
node.node_dns1,
node.node_dns2,
node.node_info,
node.node_type,
subnet.subnet_id,
subnet.subnet_address,
subnet.subnet_mask,
zone.zone_origin
FROM
node
JOIN asset USING (asset_id)
JOIN subnet USING (subnet_id)
LEFT JOIN zone USING (zone_id)
WHERE
node.node_id=" . $node_id;
$node = $db->db_select($query); // node
$node[0]['node_mac'] = write_mac($node[0]['node_mac']); $sql = "SELECT
$smarty->assign("node", $node[0]); 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
JOIN asset USING (asset_id)
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 // nat
$query = "SELECT $sql = "SELECT
asset_ext.asset_id AS asset_id_ext, asset_ext.asset_id AS asset_id_ext,
asset_int.asset_id AS asset_id_int, asset_int.asset_id AS asset_id_int,
asset_ext.asset_name AS asset_name_ext, asset_ext.asset_name AS asset_name_ext,
asset_int.asset_name AS asset_name_int, asset_int.asset_name AS asset_name_int,
nat.nat_id AS nat_id, nat.nat_id AS nat_id,
nat.nat_type AS nat_type, nat.nat_type AS nat_type,
nat.nat_ext AS nat_ext, nat.nat_ext AS nat_ext,
nat.nat_int AS nat_int, nat.nat_int AS nat_int,
node_ext.node_ip AS node_ip_ext, node_ext.node_ip AS node_ip_ext,
node_int.node_ip AS node_ip_int, node_int.node_ip AS node_ip_int,
node_int.node_id AS node_id_int, node_int.node_id AS node_id_int,
node_ext.node_id AS node_id_ext node_ext.node_id AS node_id_ext
FROM FROM
asset AS asset_ext, asset AS asset_ext,
asset AS asset_int, asset AS asset_int,
nat, nat,
node AS node_ext, node AS node_ext,
node AS node_int node AS node_int
WHERE WHERE
(nat.nat_ext=" . $node_id . " (nat.nat_ext=:node_id OR nat.nat_int=:node_id)
OR nat.nat_int=" . $node_id . ") AND node_ext.node_id=nat.nat_ext
AND node_ext.node_id=nat.nat_ext AND node_int.node_id=nat.nat_int
AND node_int.node_id=nat.nat_int AND asset_ext.asset_id=node_ext.asset_id
AND asset_ext.asset_id=node_ext.asset_id AND asset_int.asset_id=node_int.asset_id
AND asset_int.asset_id=node_int.asset_id ORDER BY
ORDER BY INET_ATON(node_ext.node_ip),
INET_ATON(node_ext.node_ip), INET_ATON(node_int.node_ip)";
INET_ATON(node_int.node_ip)";
$natrules = $db->db_select($query); $sth = $dbh->prepare($sql);
$smarty->assign("natrules", $natrules); $sth->execute(['node_id' => $node_id]);
$smarty->assign("natrules", $sth->fetchAll());
$smarty->display("nodeview.tpl"); $smarty->display("nodeview.tpl");

View File

@@ -10,6 +10,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php"); include("includes.php");
include("header.php"); include("header.php");
$smarty->assign('role_add', $_SESSION['suser_role_add']);
$smarty->assign('role_edit', $_SESSION['suser_role_edit']);
$smarty->assign('role_delete', $_SESSION['suser_role_delete']);
$smarty->assign('role_manage', $_SESSION['suser_role_manage']);
$smarty->assign('role_admin', $_SESSION['suser_role_admin']);
$smarty->display("options.tpl"); $smarty->display("options.tpl");
include("footer.php"); include("footer.php");

View File

@@ -31,6 +31,12 @@ if($_SESSION['suser_menu_assetclassgroups']=='on') {
} else { } else {
$user_menu_assetclassgroups_checked = ''; $user_menu_assetclassgroups_checked = '';
} }
// cables
if($_SESSION['suser_menu_cables']=='on') {
$user_menu_cables_checked = 'checked';
} else {
$user_menu_cables_checked = '';
}
// locations // locations
if($_SESSION['suser_menu_locations']=='on') { if($_SESSION['suser_menu_locations']=='on') {
$user_menu_locations_checked = 'checked'; $user_menu_locations_checked = 'checked';
@@ -49,12 +55,6 @@ if($_SESSION['suser_menu_subnets']=='on') {
} else { } else {
$user_menu_subnets_checked = ''; $user_menu_subnets_checked = '';
} }
// users
if($_SESSION['suser_menu_users']=='on') {
$user_menu_users_checked = 'checked';
} else {
$user_menu_users_checked = '';
}
// vlans // vlans
if($_SESSION['suser_menu_vlans']=='on') { if($_SESSION['suser_menu_vlans']=='on') {
$user_menu_vlans_checked = 'checked'; $user_menu_vlans_checked = 'checked';
@@ -85,10 +85,10 @@ $smarty->assign("user_language", $_SESSION['suser_language']);
$smarty->assign("user_menu_assets_checked", $user_menu_assets_checked); $smarty->assign("user_menu_assets_checked", $user_menu_assets_checked);
$smarty->assign("user_menu_assetclasses_checked", $user_menu_assetclasses_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_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_locations_checked", $user_menu_locations_checked);
$smarty->assign("user_menu_nodes_checked", $user_menu_nodes_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_subnets_checked", $user_menu_subnets_checked);
$smarty->assign("user_menu_users_checked", $user_menu_users_checked);
$smarty->assign("user_menu_vlans_checked", $user_menu_vlans_checked); $smarty->assign("user_menu_vlans_checked", $user_menu_vlans_checked);
$smarty->assign("user_menu_zones_checked", $user_menu_zones_checked); $smarty->assign("user_menu_zones_checked", $user_menu_zones_checked);
$smarty->assign("user_tooltips_checked", $user_tooltips_checked); $smarty->assign("user_tooltips_checked", $user_tooltips_checked);

View File

@@ -15,130 +15,100 @@ include("header.php");
if (empty($search)) { if (empty($search)) {
// parse nosearch box // parse nosearch box
$smarty->assign("nosearch", TRUE); $smarty->assign("nosearch", TRUE);
} else { $smarty->display("search.tpl");
// hide nosearch box include("footer.php");
$smarty->assign("nosearch", FALSE); exit;
$smarty->assign("search", $search);
// set needle
$needle = '%' . $search . '%';
// set counter
$resultcounter = 0;
// asset
$query = "SELECT
asset_id AS id,
asset_name AS name,
asset_info AS description
FROM
asset
WHERE
asset_name LIKE '" . $needle . "'
OR asset_hostname LIKE '" . $needle . "'
OR asset_info LIKE '" . $needle . "'
ORDER BY
asset_name";
$assets = $db->db_select($query);
$resultcounter += count($assets);
$smarty->assign("assets", $assets);
// location
$query = "SELECT
location_id AS id,
location_name AS name
FROM
location
WHERE
location_name LIKE '" . $needle . "'
OR location_info LIKE '" . $needle . "'
ORDER BY
location_name";
$locations = $db->db_select($query);
$resultcounter += count($locations);
$smarty->assign("locations", $locations);
// node
$query = "SELECT
node_id AS id,
node_ip AS ip
FROM
node
WHERE
node_ip LIKE '" . $needle . "'
OR node_mac LIKE '" . $needle . "'
OR node_dns1 LIKE '" . $needle . "'
OR node_dns2 LIKE '" . $needle . "'
OR node_info LIKE '" . $needle . "'
ORDER BY
node_ip";
$nodes = $db->db_select($query);
$resultcounter += count($nodes);
$smarty->assign("nodes", $nodes);
// subnet
$query = "SELECT
subnet_id AS id,
subnet_address AS address
FROM
subnet
WHERE
subnet_address LIKE '" . $needle . "'
OR subnet_info LIKE '" . $needle . "'
ORDER BY
subnet_address";
// run query
$subnets = $db->db_select($query);
$resultcounter += count($subnets);
$smarty->assign("subnets", $subnets);
// vlan
$query = "SELECT
vlan_id AS id,
vlan_name AS name
FROM
vlan
WHERE
vlan_name LIKE '" . $needle . "'
OR vlan_info LIKE '" . $needle . "'
ORDER BY
vlan_name";
$vlans = $db->db_select($query);
$resultcounter += count($vlans);
$smarty->assign("vlans", $vlans);
// setup zone
$query = "SELECT
zone_id AS id,
zone_origin AS origin
FROM
zone
WHERE
zone_origin LIKE '" . $needle . "'
OR zone_soa LIKE '" . $needle . "'
OR zone_hostmaster LIKE '" . $needle . "'
OR zone_ns1 LIKE '" . $needle . "'
OR zone_ns2 LIKE '" . $needle . "'
OR zone_ns3 LIKE '" . $needle . "'
OR zone_mx1 LIKE '" . $needle . "'
OR zone_mx2 LIKE '" . $needle . "'
OR zone_info LIKE '" . $needle . "'
ORDER BY
zone_origin";
$zones = $db->db_select($query);
$resultcounter += count($zones);
$smarty->assign("zones", $zones);
// grand totals
$smarty->assign("resultcounter", $resultcounter);
} }
// hide nosearch box
$smarty->assign("nosearch", FALSE);
$smarty->assign("search", $search);
$needle = '%' . $search . '%';
$resultcounter = 0;
// asset
$sql = "SELECT asset_id AS id, asset_name AS name, asset_info AS description
FROM asset
WHERE asset_name LIKE :needle OR asset_hostname LIKE :needle
OR asset_info LIKE :needle
ORDER BY asset_name";
$sth = $dbh->prepare($sql);
$sth->execute(['needle' => $needle]);
$assets = $sth->fetchAll();
$resultcounter += count($assets);
$smarty->assign("assets", $assets);
// location
$sql = "SELECT location_id AS id, location_name AS name
FROM location
WHERE location_name LIKE :needle OR location_info LIKE :needle
ORDER BY location_name";
$sth = $dbh->prepare($sql);
$sth->execute(['needle' => $needle]);
$locations = $sth->fetchAll();
$resultcounter += count($locations);
$smarty->assign("locations", $locations);
// node
$sql = "SELECT node_id AS id, node_ip AS ip
FROM node
WHERE node_ip LIKE :needle OR node_mac LIKE :needle
OR node_dns1 LIKE :needle OR node_dns2 LIKE :needle
OR node_info LIKE :needle
ORDER BY node_ip";
$sth = $dbh->prepare($sql);
$sth->execute(['needle' => $needle]);
$nodes = $sth->fetchAll();
$resultcounter += count($nodes);
$smarty->assign("nodes", $nodes);
// subnet
$sql = "SELECT subnet_id AS id, subnet_address AS address
FROM subnet
WHERE subnet_address LIKE :needle OR subnet_info LIKE :needle
ORDER BY subnet_address";
$sth = $dbh->prepare($sql);
$sth->execute(['needle' => $needle]);
$subnets = $sth->fetchAll();
$resultcounter += count($subnets);
$smarty->assign("subnets", $subnets);
// vlan
$sql = "SELECT vlan_id AS id, vlan_name AS name
FROM vlan
WHERE vlan_name LIKE :needle OR vlan_info LIKE :needle
ORDER BY vlan_name";
$sth = $dbh->prepare($sql);
$sth->execute(['needle' => $needle]);
$vlans = $sth->fetchAll();
$resultcounter += count($vlans);
$smarty->assign("vlans", $vlans);
// setup zone
$sql = "SELECT zone_id AS id, zone_origin AS origin
FROM zone
WHERE zone_origin LIKE :needle OR zone_soa LIKE :needle
OR zone_hostmaster LIKE :needle OR zone_ns1 LIKE :needle
OR zone_ns2 LIKE :needle OR zone_ns3 LIKE :needle
OR zone_mx1 LIKE :needle OR zone_mx2 LIKE :needle
OR zone_info LIKE :needle
ORDER BY zone_origin";
$sth = $dbh->prepare($sql);
$sth->execute(['needle' => $needle]);
$zones = $sth->fetchAll();
$resultcounter += count($zones);
$smarty->assign("zones", $zones);
// grand totals
$smarty->assign("resultcounter", $resultcounter);
$smarty->display("search.tpl"); $smarty->display("search.tpl");
include("footer.php"); include("footer.php");

1096
submit.php

File diff suppressed because it is too large Load Diff

View File

@@ -10,24 +10,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
include("includes.php"); include("includes.php");
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT s.subnet_id, s.subnet_address, s.subnet_mask,
s.subnet_id, s.ntp_server, LEFT(s.subnet_info, 40) AS subnet_info,
s.subnet_address,
s.subnet_mask,
s.ntp_server,
LEFT(s.subnet_info, 40) AS subnet_info,
CHAR_LENGTH(s.subnet_info) AS subnet_length, CHAR_LENGTH(s.subnet_info) AS subnet_length,
COUNT(node.subnet_id) AS node_counter COUNT(node.subnet_id) AS node_counter
FROM FROM subnet AS s LEFT JOIN node USING (subnet_id)
subnet AS s LEFT JOIN node USING (subnet_id) GROUP BY s.subnet_id
GROUP BY ORDER BY INET_ATON(s.subnet_address)";
s.subnet_id $sth = $dbh->query($sql);
ORDER BY
INET_ATON(s.subnet_address)";
$subnets = $db->db_select($query); $smarty->assign("subnets", $sth->fetchAll());
$smarty->assign("subnets", $subnets);
$smarty->display("subnet.tpl"); $smarty->display("subnet.tpl");
include("footer.php"); include("footer.php");

View File

@@ -13,21 +13,7 @@ if((isset($_GET['vlan_id'])) ? $vlan_id = sanitize($_GET['vlan_id']) : $vlan_id
include("header.php"); include("header.php");
$query = "SELECT $smarty->assign("vlan_options", db_get_options_vlan($lang['lang_option_none']));
vlan_id,
vlan_number,
vlan_name
FROM
vlan
ORDER BY
vlan_name";
$vlans = $db->db_select($query);
$vlan_options[0] = $lang['lang_option_none'];
foreach ($vlans as $vlan) {
$vlan_options[$vlan['vlan_id']] = $vlan['vlan_name'];
}
$smarty->assign("vlan_options", $vlan_options);
$smarty->display("subnetadd.tpl"); $smarty->display("subnetadd.tpl");

View File

@@ -14,34 +14,22 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); include("header.php");
// subnet // subnet
$query = "SELECT $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
subnet_address, FROM subnet
subnet_mask WHERE subnet_id=?";
FROM $sth = $dbh->prepare($sql);
subnet $sth->execute([$subnet_id]);
WHERE $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
subnet_id=" . $subnet_id;
$subnet = $db->db_select($query);
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
// node // node
$query = "SELECT $sql = "SELECT node_id AS id, node_ip AS ip
node_id, FROM node
node_ip WHERE subnet_id=?
FROM ORDER BY INET_ATON(node_ip)";
node $sth = $dbh->prepare($sql);
WHERE $sth->execute([$subnet_id]);
subnet_id=" . $subnet_id . " $smarty->assign("nodes", $sth->fetchAll());
ORDER BY
INET_ATON(node_ip)";
$nodes = $db->db_select($query);
$smarty->assign("nodes", $nodes);
$smarty->display("subnetdel.tpl"); $smarty->display("subnetdel.tpl");
include("footer.php"); include("footer.php");

View File

@@ -13,29 +13,15 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask,
subnet_address, protocol_version AS proto_vers, subnet_dhcp_start AS dhcp_start,
subnet_mask, subnet_dhcp_end AS dhcp_end, ntp_server, subnet_info AS info
protocol_version, FROM subnet
subnet_dhcp_start, WHERE subnet_id=?";
subnet_dhcp_end, $sth = $dbh->prepare($sql);
ntp_server, $sth->execute([$subnet_id]);
subnet_info AS subnet_info
FROM
subnet
WHERE
subnet_id=" . $subnet_id;
$subnet = $db->db_select($query); $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
$smarty->assign("subnet_proto_vers", $subnet[0]['protocol_version']);
$smarty->assign("subnet_dhcpstart", $subnet[0]['subnet_dhcp_start']);
$smarty->assign("subnet_dhcpend", $subnet[0]['subnet_dhcp_end']);
$smarty->assign("subnet_ntp_server", $subnet[0]['ntp_server']);
$smarty->assign("subnet_info", $subnet[0]['subnet_info']);
$smarty->display("subnetedit.tpl"); $smarty->display("subnetedit.tpl");

View File

@@ -13,21 +13,15 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
subnet_address, FROM subnet
subnet_mask WHERE subnet_id=?";
FROM $sth = $dbh->prepare($sql);
subnet $sth->execute([$subnet_id]);
WHERE $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
subnet_id=" . $subnet_id;
$subnet = $db->db_select($query); $smarty->assign("location_options", db_get_options_location());
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
$smarty->assign("location_options", $db->options_location());
$smarty->display("subnetlocationadd.tpl"); $smarty->display("subnetlocationadd.tpl");
include("footer.php"); include("footer.php");

View File

@@ -14,34 +14,22 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); include("header.php");
// subnet // subnet
$query = "SELECT $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
subnet_address, FROM subnet
subnet_mask WHERE subnet_id=?";
FROM $sth = $dbh->prepare($sql);
subnet $sth->execute([$subnet_id]);
WHERE $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
subnet_id=" . $subnet_id;
// run query // locations for subnet
$subnet = $db->db_select($query); $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();
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
// location
$query = "SELECT
l.location_id,
l.location_name
FROM
subnetlocation AS s LEFT JOIN location USING (location_id)
WHERE
s.subnet_id=" . $subnet_id . "
ORDER BY
l.location_name";
// run query
$records = $db->db_select($query);
$locations = array(); $locations = array();
foreach ($records as $rec) { foreach ($records as $rec) {
$locations[$rec['location_id']] = $rec['location_name']; $locations[$rec['location_id']] = $rec['location_name'];

View File

@@ -13,20 +13,13 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
subnet_address, FROM subnet
subnet_mask WHERE subnet_id=?";
FROM $sth = $dbh->prepare($sql);
subnet $sth->execute([$subnet_id]);
WHERE
subnet_id=" . $subnet_id;
// run query $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
$subnet = $db->db_select($query);
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
$smarty->display("subnetlocationedit.tpl"); $smarty->display("subnetlocationedit.tpl");

View File

@@ -19,45 +19,34 @@ $smarty->assign("scripts",'changetext.js');
include("header.php"); include("header.php");
// subnet // subnet
$query = "SELECT $sql = "SELECT
s.subnet_address, s.subnet_id AS id,
s.subnet_mask, s.subnet_address AS address,
s.subnet_dhcp_start, s.subnet_mask AS mask,
s.subnet_dhcp_end, s.subnet_dhcp_start AS dhcp_start,
s.subnet_info, s.subnet_dhcp_end AS dhcp_end,
s.protocol_version, s.subnet_info AS info,
s.ntp_server, s.protocol_version AS proto_vers,
COUNT(node.subnet_id) AS node_counter s.ntp_server,
FROM COUNT(node.subnet_id) AS node_counter
subnet AS s LEFT JOIN node USING (subnet_id) FROM
WHERE subnet AS s LEFT JOIN node USING (subnet_id)
s.subnet_id=" . $subnet_id . " WHERE
GROUP BY s.subnet_id=?
s.subnet_id"; GROUP BY
s.subnet_id";
$sth = $dbh->prepare($sql);
$sth->execute([$subnet_id]);
$subnet = $db->db_select($query); $subnet = $sth->fetch(PDO::FETCH_OBJ);
// set needed variables $smarty->assign("subnet", $subnet);
$subnet_address = $subnet[0]['subnet_address'];
$subnet_mask = $subnet[0]['subnet_mask'];
$subnet_dhcpstart = $subnet[0]['subnet_dhcp_start'];
$subnet_dhcpend = $subnet[0]['subnet_dhcp_end'];
$subnet_proto_vers = $subnet[0]['protocol_version'];
$subnet_ntp_server = $subnet[0]['ntp_server'];
// set counters // set counters
$host_counter = pow(2,(32-$subnet_mask)); $host_counter = pow(2, (32-$subnet->mask));
$node_counter = $subnet[0]['node_counter']; $node_counter = $subnet->node_counter;
$subnet_usedpercentage = round((($node_counter/($host_counter-2))*100), 1); $subnet_usedpercentage = round((($node_counter/($host_counter-2))*100), 1);
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet_address);
$smarty->assign("subnet_mask", $subnet_mask);
$smarty->assign("subnet_dhcpstart", $subnet_dhcpstart);
$smarty->assign("subnet_dhcpend", $subnet_dhcpend);
$smarty->assign("subnet_info", nl2br($subnet[0]['subnet_info']));
$smarty->assign("subnet_proto_vers", $subnet_proto_vers);
$smarty->assign("subnet_ntp_server", $subnet_ntp_server);
$smarty->assign("node_counter", $node_counter); $smarty->assign("node_counter", $node_counter);
$smarty->assign("subnet_usedpercentage", $subnet_usedpercentage); $smarty->assign("subnet_usedpercentage", $subnet_usedpercentage);
$smarty->assign("config_color_unused", $config_color_unused); $smarty->assign("config_color_unused", $config_color_unused);
@@ -67,25 +56,25 @@ $smarty->assign("free_counter", (($host_counter-2)-$node_counter));
// subnet // subnet
// split up the range // split up the range
$iprange = explode('.', $subnet_address); $iprange = explode('.', $subnet->address);
$iprange1 = $iprange[0]; $iprange1 = $iprange[0];
$iprange2 = $iprange[1]; $iprange2 = $iprange[1];
$iprange3 = $iprange[2]; $iprange3 = $iprange[2];
$iprange4 = $iprange[3]; $iprange4 = $iprange[3];
// create empty subnet-array // create empty subnet-array
$subnet = array(); $subnetdata = array();
// determine range (Class A/B/C) // determine range (Class A/B/C)
if ($subnet_mask>=24) { if ($subnet->mask >= 24) {
// Class C // Class C
// fill subnet-array with addresses we want to see // fill subnet-array with addresses we want to see
for($i=0;$i<$host_counter;$i++) { for($i=0; $i<$host_counter; $i++) {
// build ip // build ip
$ip = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i); $ip = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i);
// fill subnet-array // fill subnet-array
$subnet[$ip] = array(); $subnetdata[$ip] = array();
} }
// calculate broadcast address // calculate broadcast address
@@ -108,20 +97,21 @@ if ($subnet_mask>=24) {
// set displayed nodes // set displayed nodes
$nodes_displayed = $host_counter; $nodes_displayed = $host_counter;
} else if ($subnet_mask>=16) {
} else if ($subnet->mask >= 16) {
// Class B // Class B
// which part do we want to see? // which part do we want to see?
if((empty($page)) ? $page=$subnet_address : $page=$page); if ((empty($page)) ? $page = $subnet->address : $page = $page);
$page = explode('.', $page); $page = explode('.', $page);
$page2 = $page[2]; $page2 = $page[2];
// fill subnet-array with addresses we want to see // fill subnet-array with addresses we want to see
for($i=0;$i<256;$i++) { for($i=0; $i<256; $i++) {
// build ip // build ip
$ip = $iprange1 . '.' . $iprange2 . '.' . $page2 . '.' . $i; $ip = $iprange1 . '.' . $iprange2 . '.' . $page2 . '.' . $i;
// fill subnet-array // fill subnet-array
$subnet[$ip] = array(); $subnetdata[$ip] = array();
} }
// calculate broadcast address // calculate broadcast address
@@ -132,13 +122,13 @@ if ($subnet_mask>=24) {
$smarty->assign("iprange2", $iprange2); $smarty->assign("iprange2", $iprange2);
// loop addresses in range3 // loop addresses in range3
for($i=$iprange3;$i<(pow(2,(32-$subnet_mask))/256);$i++) { for ($i=$iprange3; $i<(pow(2,(32-$subnet->mask))/256); $i++) {
// send to tpl // send to tpl
$smarty->assign("iprange3", $i); $smarty->assign("iprange3", $i);
$smarty->assign("iprange4", 0); $smarty->assign("iprange4", 0);
// set select box // set select box
if($i==$page2) { if ($i == $page2) {
$smarty->assign("row_selected", "selected"); $smarty->assign("row_selected", "selected");
} else { } else {
@@ -162,18 +152,18 @@ if ($subnet_mask>=24) {
} else { } else {
// Class A // Class A
// which part do we want to see? // which part do we want to see?
if((empty($page)) ? $page=$subnet_address : $page=$page); if ((empty($page)) ? $page = $subnet->address : $page = $page);
$page = explode('.', $page); $page = explode('.', $page);
$page2 = $page[1]; $page2 = $page[1];
$page3 = $page[2]; $page3 = $page[2];
// fill subnet-array with addresses we want to see // fill subnet-array with addresses we want to see
for($i=0;$i<256;$i++) { for($i=0; $i<256; $i++) {
// build ip // build ip
$ip = $iprange1 . '.' . $page2 . '.' . $page3 . '.' . $i; $ip = $iprange1 . '.' . $page2 . '.' . $page3 . '.' . $i;
// fill subnet-array // fill subnet-array
$subnet[$ip] = array(); $subnetdata[$ip] = array();
} }
// calculate broadcast address // calculate broadcast address
@@ -184,7 +174,7 @@ if ($subnet_mask>=24) {
$smarty->assign("iprange2", $iprange2); $smarty->assign("iprange2", $iprange2);
// loop addresses in range 2 // loop addresses in range 2
for ($i=$iprange2; $i<(pow(2,(24-$subnet_mask))/256); $i++) { for ($i=$iprange2; $i<(pow(2,(24-$subnet->mask))/256); $i++) {
// send to tpl // send to tpl
$smarty->assign("iprange1", $iprange1); $smarty->assign("iprange1", $iprange1);
$smarty->assign("iprange2", $i); $smarty->assign("iprange2", $i);
@@ -192,19 +182,17 @@ if ($subnet_mask>=24) {
$smarty->assign("iprange4", $iprange4); $smarty->assign("iprange4", $iprange4);
// set select box // set select box
if($i==$page2) { if($i == $page2) {
$smarty->assign("row1_selected", "selected"); $smarty->assign("row1_selected", "selected");
} else { } else {
$smarty->assign("row1_selected", ""); $smarty->assign("row1_selected", "");
} }
// parse block
$tp->parse("two_select_row1");
} }
// loop addresses in range 3 // loop addresses in range 3
for($i=0;$i<256;$i++) { for ($i=0; $i<256; $i++) {
// send to tpl // send to tpl
$smarty->assign("iprange1", $iprange1); $smarty->assign("iprange1", $iprange1);
$smarty->assign("iprange2", $page2); $smarty->assign("iprange2", $page2);
@@ -219,8 +207,6 @@ if ($subnet_mask>=24) {
$smarty->assign("row2_selected", ""); $smarty->assign("row2_selected", "");
} }
// parse block
$tp->parse("two_select_row2");
} }
$smarty->assign("subnetmask1", 255); $smarty->assign("subnetmask1", 255);
@@ -238,96 +224,93 @@ if ($subnet_mask>=24) {
} }
// get nodes for this subnetview and implement the values into the array // get nodes for this subnetview and implement the values into the array
$query = "SELECT $sql = "SELECT a.asset_name, g.assetclassgroup_color, n.node_id, n.node_ip
asset.asset_name, FROM
assetclassgroup.assetclassgroup_color, asset AS a,
node.node_id, assetclass AS c,
node.node_ip assetclassgroup AS g,
FROM node AS n
asset,
assetclass,
assetclassgroup,
node
WHERE WHERE
node.node_ip IN ('".implode("','",array_keys($subnet))."') n.node_ip IN ('".implode("','",array_keys($subnetdata))."')
AND node.subnet_id='$subnet_id' AND n.subnet_id=?
AND asset.asset_id=node.asset_id AND a.asset_id=n.asset_id
AND assetclass.assetclass_id=asset.assetclass_id AND c.assetclass_id=a.assetclass_id
AND assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id"; AND g.assetclassgroup_id=c.assetclassgroup_id";
$nodes = $db->db_select($query); $sth = $dbh->prepare($sql);
$sth->execute([$subnet_id]);
$node_counter = count($nodes); $nodes = $sth->fetchAll();
if ($node_counter>0) { $smarty->assign("nodes", $nodes);
// get objects
foreach($nodes AS $node) { if (count($nodes) > 0) {
// add node-values to ip in subnet-array foreach ($nodes AS $node) {
$subnet[$node['node_ip']] = $node; $subnetdata[$node['node_ip']] = $node;
} }
} }
// replace ip's in subnet-array (if necessary) // replace ip's in subnet-array (if necessary)
// check for subnet address // check for subnet address
if(array_key_exists($subnet_address, $subnet)) { if (array_key_exists($subnet->address, $subnet)) {
// replace // replace
$subnet[$subnet_address] = array("subnet_address"); $subnetdata[$subnet->address] = array("subnet_address");
} }
// check for broadcast address // check for broadcast address
if(array_key_exists($broadcast_address, $subnet)) { if (array_key_exists($broadcast_address, $subnet)) {
// replace // replace
$subnet[$broadcast_address] = array("broadcast_address"); $subnetdata[$broadcast_address] = array("broadcast_address");
} }
$dhcpstart = 0; $dhcpstart = 0;
if ($subnet_dhcpstart && $subnet_dhcpend) { if ($subnet->dhcp_start && $subnet->dhcp_end) {
$dhcpstart = ip2long($subnet_dhcpstart); $dhcpstart = ip2long($subnet->dhcp_start);
$dhcpend = ip2long($subnet_dhcpend); $dhcpend = ip2long($subnet->dhcp_end);
} }
// loop subnet-array and send to template // loop subnet-array and send to template
// start counter // start counter
// $i=1; // $i=1;
// loop subnet-array // loop subnet-array
foreach ($subnet AS $node_ip => $node) { foreach ($subnetdata AS $node_ip => $node) {
// make new line? // make new line?
// if(($i%$_SESSION['suser_imagecount']==0 && $i!=$nodes_displayed) ? $tr="</tr><tr>" : $tr=""); // if(($i%$_SESSION['suser_imagecount']==0 && $i!=$nodes_displayed) ? $tr="</tr><tr>" : $tr="");
// check if node-ip in DHCP-area // check if node-ip in DHCP-area
$subnet[$node_ip]["dynamic"] = false; $subnetdata[$node_ip]["dynamic"] = false;
if ($dhcpstart > 0) { if ($dhcpstart > 0) {
$ipval = ip2long($node_ip); $ipval = ip2long($node_ip);
if (($ipval >= $dhcpstart) and ($ipval <= $dhcpend)) { if (($ipval >= $dhcpstart) and ($ipval <= $dhcpend)) {
$subnet[$node_ip]["dynamic"] = true; $subnetdata[$node_ip]["dynamic"] = true;
} }
} }
// check node // check node
if (empty($node)) { if (empty($node)) {
// empty node to tpl // empty node to tpl
$subnet[$node_ip]["url"] = 'assigniptonode.php?subnet_id=' . $subnet_id . '&amp;node_ip='. $node_ip; $subnetdata[$node_ip]["url"] = 'assigniptonode.php?subnet_id=' . $subnet_id . '&amp;node_ip='. $node_ip;
$subnet[$node_ip]["remotetext"] = $node_ip; $subnetdata[$node_ip]["remotetext"] = $node_ip;
if ($subnet[$node_ip]["dynamic"]) { if ($subnetdata[$node_ip]["dynamic"]) {
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_dynamic; $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_dynamic;
} else { } else {
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_unused; $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_unused;
} }
} else if (array_key_exists(0, $node) && $node[0]=="subnet_address") { } else if (array_key_exists(0, $node) && $node[0]=="subnet_address") {
// subnet address to tpl // subnet address to tpl
$subnet[$node_ip]["url"] = ""; $subnetdata[$node_ip]["url"] = "";
$subnet[$node_ip]["remotetext"] = $node_ip . '&nbsp;' . $lang['lang_subnet_subnetaddress']; $subnetdata[$node_ip]["remotetext"] = $node_ip . '&nbsp;' . $lang['lang_subnet_subnetaddress'];
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_blocked; $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_blocked;
} else if (array_key_exists(0, $node) && $node[0]=="broadcast_address") { } else if (array_key_exists(0, $node) && $node[0]=="broadcast_address") {
// broadcast address to tpl // broadcast address to tpl
$subnet[$node_ip]["url"] = ""; $subnetdata[$node_ip]["url"] = "";
$subnet[$node_ip]["remotetext"] = $node_ip . '&nbsp;' . $lang['lang_subnet_broadcastaddress']; $subnetdata[$node_ip]["remotetext"] = $node_ip . '&nbsp;' . $lang['lang_subnet_broadcastaddress'];
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_blocked; $subnetdata[$node_ip]["assetclassgroup_color"] = $config_color_blocked;
} else { } else {
// node to tpl // node to tpl
$subnet[$node_ip]["url"] = 'nodeview.php?node_id=' . $node['node_id']; $subnetdata[$node_ip]["url"] = 'nodeview.php?node_id=' . $node['node_id'];
$subnet[$node_ip]["remotetext"] = $node_ip . '&nbsp;' . $node['asset_name']; $subnetdata[$node_ip]["remotetext"] = $node_ip . '&nbsp;' . $node['asset_name'];
$subnet[$node_ip]["assetclassgroup_color"] = $node['assetclassgroup_color']; $subnetdata[$node_ip]["assetclassgroup_color"] = $node['assetclassgroup_color'];
} }
// update counter // update counter
@@ -335,43 +318,30 @@ foreach ($subnet AS $node_ip => $node) {
} // foreach } // foreach
$smarty->assign("subnet", $subnet); $smarty->assign("subnetdata", $subnetdata);
$smarty->assign("imagewrap", $_SESSION['suser_imagecount']); $smarty->assign("imagewrap", $_SESSION['suser_imagecount']);
// vlan // vlans
$query = "SELECT $sql = "SELECT v.vlan_id AS id, v.vlan_name AS name,
vlan.vlan_id AS vlan_id, v.vlan_number AS number
vlan.vlan_name AS vlan_name, FROM subnetvlan AS s JOIN vlan AS v USING (vlan_id)
vlan.vlan_number AS vlan_number WHERE s.subnet_id=?
FROM ORDER BY v.vlan_name";
subnetvlan, $sth = $dbh->prepare($sql);
vlan $sth->execute([$subnet_id]);
WHERE $smarty->assign("vlans", $sth->fetchAll());
subnetvlan.subnet_id=" . $subnet_id . "
AND vlan.vlan_id=subnetvlan.vlan_id
ORDER BY
vlan.vlan_name";
// run query // locations
$vlans = $db->db_select($query); $sql = "SELECT l.location_id, l.location_name
$smarty->assign("vlans", $vlans); 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());
// location // assetclassgroups
$query = "SELECT $sql = "SELECT
l.location_id,
l.location_name
FROM
location AS l LEFT JOIN subnetlocation AS s USING (location_id)
WHERE
s.subnet_id=". $subnet_id . "
ORDER BY
l.location_name";
$locations = $db->db_select($query);
$smarty->assign("locations", $locations);
// assetclassgroup
$query = "SELECT
assetclassgroup_id AS id, assetclassgroup_id AS id,
assetclassgroup_name AS name, assetclassgroup_name AS name,
assetclassgroup_color AS color, assetclassgroup_color AS color,
@@ -381,13 +351,12 @@ $query = "SELECT
LEFT JOIN asset USING (asset_id) LEFT JOIN asset USING (asset_id)
LEFT JOIN assetclass USING (assetclass_id) LEFT JOIN assetclass USING (assetclass_id)
LEFT JOIN assetclassgroup USING (assetclassgroup_id) LEFT JOIN assetclassgroup USING (assetclassgroup_id)
WHERE subnet_id=" . $subnet_id . " WHERE subnet_id=?
GROUP BY assetclass_id GROUP BY assetclass_id
ORDER BY counter DESC"; ORDER BY counter DESC";
$sth = $dbh->prepare($sql);
// run query $sth->execute([$subnet_id]);
$assetclassgroups = $db->db_select($query); $smarty->assign("assetclassgroups", $sth->fetchAll());
$smarty->assign("assetclassgroups", $assetclassgroups);
$smarty->display("subnetview.tpl"); $smarty->display("subnetview.tpl");

View File

@@ -13,46 +13,27 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); 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]);
// subnet $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
// build query
$query = "SELECT
subnet_address,
subnet_mask
FROM
subnet
WHERE
subnet_id=" . $subnet_id;
// run query
$subnet = $db->db_select($query);
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
// vlan // vlan
$query = " SELECT $sql = "SELECT vlan_id, vlan_number, vlan_name
vlan_id, FROM vlan
vlan_number, WHERE vlan_id NOT IN (
vlan_name SELECT vlan_id FROM subnetvlan WHERE subnet_id=?
FROM )
vlan ORDER BY vlan_number";
WHERE $sth = $dbh->prepare($sql);
vlan_id NOT IN ( $sth->execute([$subnet_id]);
SELECT
vlan_id
FROM
subnetvlan
WHERE
subnet_id=" . $subnet_id . "
)
ORDER BY
vlan_number";
$vlans = $db->db_select($query); $vlans = $sth->fetchAll();
foreach ($vlans as $vlan) { foreach ($vlans as $vlan) {
$vlan_options[$vlan['vlan_id']] = $vlan['vlan_name']; $vlan_options[$vlan['vlan_id']] = $vlan['vlan_name'] . ' (' . $vlan['vlan_number']. ')';
} }
$smarty->assign("vlan_options", $vlan_options); $smarty->assign("vlan_options", $vlan_options);

View File

@@ -14,36 +14,21 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); include("header.php");
// subnet // subnet
$query = "SELECT $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
subnet_address, FROM subnet
subnet_mask WHERE subnet_id=?";
FROM $sth = $dbh->prepare($sql);
subnet $sth->execute([$subnet_id]);
WHERE $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
subnet_id=" . $subnet_id;
// run query
$subnet = $db->db_select($query);
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
// vlan // vlan
$query = "SELECT $sql = "SELECT v.vlan_id, v.vlan_number, v.vlan_name
v.vlan_id, FROM subnetvlan AS s LEFT JOIN vlan AS v USING (vlan_id)
v.vlan_number, WHERE s.subnet_id=?
v.vlan_name ORDER BY v.vlan_number";
FROM $sth = $dbh->prepare($sql);
subnetvlan AS s LEFT JOIN vlan AS v USING (vlan_id) $sth->execute([$subnet_id]);
WHERE $smarty->assign("vlans", $sth->fetchAll());
s.subnet_id=" . $subnet_id . "
ORDER BY
v.vlan_number";
// run query
$vlans = $db->db_select($query);
$smarty->assign("vlans", $vlans);
$smarty->display("subnetvlandel.tpl"); $smarty->display("subnetvlandel.tpl");

View File

@@ -13,19 +13,12 @@ $subnet_id = sanitize($_GET['subnet_id']);
include("header.php"); include("header.php");
$query = "SELECT $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
subnet_address, FROM subnet
subnet_mask WHERE subnet_id=?";
FROM $sth = $dbh->prepare($sql);
subnet $sth->execute([$subnet_id]);
WHERE $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
subnet_id=" . $subnet_id;
$subnet = $db->db_select($query);
$smarty->assign("subnet_id", $subnet_id);
$smarty->assign("subnet_address", $subnet[0]['subnet_address']);
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']);
$smarty->display("subnetvlanedit.tpl"); $smarty->display("subnetvlanedit.tpl");

View File

@@ -83,6 +83,14 @@
&nbsp; &nbsp;
</td> </td>
</tr> </tr>
<tr>
<td class="label">
{$lang_about_changelog_v09}
</td>
<td class="value">
{$lang_about_changelog_v09_ext}
</td>
</tr>
<tr> <tr>
<td class="label"> <td class="label">
{$lang_about_changelog_v08} {$lang_about_changelog_v08}

View File

@@ -1,10 +1,13 @@
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{$lang_assets} ({$assets|@count}) <img class="icon" src="images/asset.png" alt="" />
{$lang_assets} ({$assets|@count} / {$assetcount})
</td> </td>
<td align="right"> <td align="right">
{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="assetadd.php"><img src="image.php?icon=add" alt="{$lang_asset_add}" {if $suser_tooltips}title="{$lang_asset_add}" {/if}/></a>
{/if}
</td> </td>
</tr> </tr>
</table> </table>
@@ -34,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="assetview.php?asset_id={$asset.asset_id}">{$asset.asset_name}</a>
</td> </td>
<td class="value"> <td class="value">
<a href="assetclassview.php?assetclass_id={$asset.assetclass_id}">{$asset.assetclass_name}</a> <a href="assetclassview.php?assetclass_id={$asset.assetclass_id}">{$asset.assetclass_name}</a>

View File

@@ -46,6 +46,22 @@
<textarea name="asset_info" cols="30" rows="10"></textarea> <textarea name="asset_info" cols="30" rows="10"></textarea>
</td> </td>
</tr> </tr>
<tr>
<td class="label">
{$lang_asset_intf}
</td>
<td class="value">
<input type="text" size="6" maxlength="6" name="asset_intf" value="1">
</td>
</tr>
<tr>
<td class="label">
{$lang_asset_type}
</td>
<td class="value">
{html_radios name=asset_type values=$type_ids output=$type_names selected=$type_selected}
</td>
</tr>
</table> </table>
<table class="info"> <table class="info">

View File

@@ -1,10 +1,13 @@
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
<img class="icon" src="images/brick.png" alt="" />
{$lang_assetclasses} ({$assetclasses|@count}) {$lang_assetclasses} ({$assetclasses|@count})
</td> </td>
<td align="right"> <td align="right">
{if $suser_add || $suser_admin}
<a href="assetclassadd.php"><img src="image.php?icon=add" alt="{$lang_assetclass_add}" {if $suser_tooltips}title="{$lang_assetclass_add}" {/if}/></a> <a href="assetclassadd.php"><img src="image.php?icon=add" alt="{$lang_assetclass_add}" {if $suser_tooltips}title="{$lang_assetclass_add}" {/if}/></a>
{/if}
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,6 +1,6 @@
<form method="POST" action="submit.php"> <form method="POST" action="submit.php">
<input type="hidden" name="del" value="assetclass"> <input type="hidden" name="del" value="assetclass">
<input type="hidden" name="assetclass_id" value="{$assetclass_id}"> <input type="hidden" name="assetclass_id" value="{$assetclass->id}">
<table class="title"> <table class="title">
<tr> <tr>
@@ -28,7 +28,7 @@
{$lang_assetclass_name} {$lang_assetclass_name}
</td> </td>
<td class="value"> <td class="value">
<a href="assetclassview.php?assetclass_id={$assetclass_id}">{$assetclass_name}</a> <a href="assetclassview.php?assetclass_id={$assetclass->id}">{$assetclass->name}</a>
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,11 +1,11 @@
<form method="POST" action="submit.php"> <form method="POST" action="submit.php">
<input type="hidden" name="edit" value="assetclass"> <input type="hidden" name="edit" value="assetclass">
<input type="hidden" name="assetclass_id" value="{$assetclass_id}"> <input type="hidden" name="assetclass_id" value="{$assetclass->id}">
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{$assetclass_name} {$assetclass->name}
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}" {if $suser_tooltips}title="{$lang_cancel}" {/if}/></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}" {if $suser_tooltips}title="{$lang_cancel}" {/if}/></a>
@@ -28,7 +28,7 @@
{$lang_assetclass_name} {$lang_assetclass_name}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="assetclass_name" value="{$assetclass_name}"> <input type="text" name="assetclass_name" value="{$assetclass->name}">
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,10 +1,13 @@
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
<img class="icon" src="images/bricks.png" alt="" />
{$lang_assetclassgroups} ({$assetclassgroups|@count}) {$lang_assetclassgroups} ({$assetclassgroups|@count})
</td> </td>
<td align="right"> <td align="right">
{if $suser_add || $suser_admin}
<a href="assetclassgroupadd.php"><img src="image.php?icon=add" alt="{$lang_assetclassgroup_add}" {if $suser_tooltips}title="{$lang_assetclassgroup_add}" {/if}/></a> <a href="assetclassgroupadd.php"><img src="image.php?icon=add" alt="{$lang_assetclassgroup_add}" {if $suser_tooltips}title="{$lang_assetclassgroup_add}" {/if}/></a>
{/if}
</td> </td>
</tr> </tr>
</table> </table>
@@ -14,17 +17,23 @@
<td class="header"> <td class="header">
{$lang_assetclassgroup_name} {$lang_assetclassgroup_name}
</td> </td>
<td class="header">
{$lang_description}
</td>
</tr> </tr>
{foreach item=assetclassgroup from=$assetclassgroups} {foreach item=acg from=$assetclassgroups}
<tr> <tr>
<td class="label"> <td class="label">
<img src="image.php?color={$assetclassgroup.assetclassgroup_color}" alt="#{$assetclassgroup.assetclassgroup_color}"> <img src="image.php?color={$acg.color}" alt="#{$acg.color}">
<a href="assetclassgroupview.php?assetclassgroup_id={$assetclassgroup.assetclassgroup_id}">{$assetclassgroup.assetclassgroup_name}</a> <a href="assetclassgroupview.php?assetclassgroup_id={$acg.id}">{$acg.name}</a>
</td>
<td>
{$acg.description}
</td> </td>
</tr> </tr>
{foreachelse} {foreachelse}
<tr> <tr>
<td> <td colspan="2">
{$lang_assetclassgroup_none} {$lang_assetclassgroup_none}
</td> </td>
</tr> </tr>

View File

@@ -27,7 +27,15 @@
{$lang_assetclassgroup_name} {$lang_assetclassgroup_name}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="assetclassgroup_name"> <input type="text" name="acg_name">
</td>
</tr>
<tr>
<td class="label">
{$lang_description}
</td>
<td class="value">
<input type="text" name="acg_description" size="80" maxlength="100">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -35,7 +43,7 @@
{$lang_color} {$lang_color}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="assetclassgroup_color"> #<input type="text" {literal}class="color {pickerPosition:'right'}"{/literal} name="acg_color" size="6" maxlength="6" value="{$assetclassgroup->color}">
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,11 +1,11 @@
<form method="POST" action="submit.php"> <form method="POST" action="submit.php">
<input type="hidden" name="del" value="assetclassgroup"> <input type="hidden" name="del" value="assetclassgroup">
<input type="hidden" name="assetclassgroup_id" value="{$assetclassgroup_id}"> <input type="hidden" name="assetclassgroup_id" value="{$assetclassgroup->id}">
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{$assetclassgroup_name} {$assetclassgroup->name}
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}" {if $suser_tooltips}title="{$lang_cancel}" {/if}/></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}" {if $suser_tooltips}title="{$lang_cancel}" {/if}/></a>
@@ -30,7 +30,7 @@
{$lang_assetclassgroup_name} {$lang_assetclassgroup_name}
</td> </td>
<td class="value"> <td class="value">
<a href="assetclassgroupview.php?assetclassgroup_id={$assetclassgroup_id}">{$assetclassgroup_name}</a> <a href="assetclassgroupview.php?assetclassgroup_id={$assetclassgroup->id}">{$assetclassgroup->name}</a>
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,11 +1,11 @@
<form method="POST" action="submit.php"> <form method="POST" action="submit.php">
<input type="hidden" name="edit" value="assetclassgroup"> <input type="hidden" name="edit" value="assetclassgroup">
<input type="hidden" name="assetclassgroup_id" value="{$assetclassgroup_id}"> <input type="hidden" name="acg_id" value="{$assetclassgroup->id}">
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{$assetclassgroup_name} {$assetclassgroup->name}
</td> </td>
<td align="right"> <td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}" {if $suser_tooltips}title="{$lang_cancel}" {/if}/></a> <a href="#" onClick="history.go(-1)"><img src="image.php?icon=back" alt="{$lang_cancel}" {if $suser_tooltips}title="{$lang_cancel}" {/if}/></a>
@@ -28,7 +28,15 @@
{$lang_assetclassgroup_name} {$lang_assetclassgroup_name}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="assetclassgroup_name" value="{$assetclassgroup_name}"> <input type="text" name="acg_name" value="{$assetclassgroup->name}">
</td>
</tr>
<tr>
<td class="label">
{$lang_description}
</td>
<td class="value">
<input type="text" name="acg_description" size="80" maxlength="100" value="{$assetclassgroup->description}">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -36,7 +44,7 @@
{$lang_color} {$lang_color}
</td> </td>
<td class="value"> <td class="value">
#<input type="text" {literal}class="color {pickerPosition:'right'}"{/literal} name="assetclassgroup_color" size="6" maxlength="6" value="{$assetclassgroup_color}"> #<input type="text" {literal}class="color {pickerPosition:'right'}"{/literal} name="acg_color" size="6" maxlength="6" value="{$assetclassgroup->color}">
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,12 +1,19 @@
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{$assetclassgroup_name} <img class="icon" src="images/bricks.png" alt="" />
{$assetclassgroup->name}
</td> </td>
<td align="right"> <td align="right">
<a href="assetclassgroupadd.php?assetclassgroup_id={$assetclassgroup_id}"><img src="image.php?icon=add" alt="{$lang_assetclassgroup_add}" {if $suser_tooltips}title="{$lang_assetclassgroup_add}" {/if}/></a> {if $suser_add}
<a href="assetclassgroupedit.php?assetclassgroup_id={$assetclassgroup_id}"><img src="image.php?icon=edit" alt="{$lang_assetclassgroup_edit}" {if $suser_tooltips}title="{$lang_assetclassgroup_edit}" {/if}/></a> <a href="assetclassgroupadd.php?assetclassgroup_id={$assetclassgroup->id}"><img src="image.php?icon=add" alt="{$lang_assetclassgroup_add}" {if $suser_tooltips}title="{$lang_assetclassgroup_add}" {/if}/></a>
<a href="assetclassgroupdel.php?assetclassgroup_id={$assetclassgroup_id}"><img src="image.php?icon=delete" alt="{$lang_assetclassgroup_del}" {if $suser_tooltips}title="{$lang_assetclassgroup_del}" {/if}/></a> {/if}
{if $suser_edit}
<a href="assetclassgroupedit.php?assetclassgroup_id={$assetclassgroup->id}"><img src="image.php?icon=edit" alt="{$lang_assetclassgroup_edit}" {if $suser_tooltips}title="{$lang_assetclassgroup_edit}" {/if}/></a>
{/if}
{if $suser_del}
<a href="assetclassgroupdel.php?assetclassgroup_id={$assetclassgroup->id}"><img src="image.php?icon=delete" alt="{$lang_assetclassgroup_del}" {if $suser_tooltips}title="{$lang_assetclassgroup_del}" {/if}/></a>
{/if}
</td> </td>
</tr> </tr>
</table> </table>
@@ -25,7 +32,15 @@
{$lang_assetclassgroup_name} {$lang_assetclassgroup_name}
</td> </td>
<td class="value"> <td class="value">
<a href="assetclassgroupview.php?assetclassgroup_id={$assetclassgroup_id}">{$assetclassgroup_name}</a> <a href="assetclassgroupview.php?assetclassgroup_id={$assetclassgroup->id}">{$assetclassgroup->name}</a>
</td>
</tr>
<tr>
<td class="label">
{$lang_description}
</td>
<td class="value">
{$assetclassgroup->description}
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -33,7 +48,8 @@
{$lang_color} {$lang_color}
</td> </td>
<td class="value"> <td class="value">
<img src="image.php?color={$assetclassgroup_color}" alt="{$assetclassgroup_color}"> <img src="image.php?color={$assetclassgroup->color}" alt="{$assetclassgroup->color}">
#{$assetclassgroup->color}
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,12 +1,19 @@
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{$assetclass_name} <img class="icon" src="images/brick.png" alt="" />
{$assetclass->assetclass_name}
</td> </td>
<td align="right"> <td align="right">
<a href="assetadd.php?assetclass_id={$assetclass_id}"><img src="image.php?icon=add" alt="{$lang_asset_add}" {if $suser_tooltips}title="{$lang_asset_add}" {/if}/></a> {if $suser_add}
<a href="assetclassedit.php?assetclass_id={$assetclass_id}"><img src="image.php?icon=edit" alt="{$lang_assetclass_edit}" {if $suser_tooltips}title="{$lang_asset_edit}" {/if}/></a> <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="assetclassdel.php?assetclass_id={$assetclass_id}"><img src="image.php?icon=delete" alt="{$lang_assetclass_add}" {if $suser_tooltips}title="{$lang_asset_delete}" {/if}/></a> {/if}
{if $suser_edit}
<a href="assetclassedit.php?assetclass_id={$assetclass->assetclass_id}"><img src="image.php?icon=edit" alt="{$lang_assetclass_edit}" {if $suser_tooltips}title="{$lang_asset_edit}" {/if}/></a>
{/if}
{if $suser_del}
<a href="assetclassdel.php?assetclass_id={$assetclass->assetclass_id}"><img src="image.php?icon=delete" alt="{$lang_assetclass_add}" {if $suser_tooltips}title="{$lang_asset_delete}" {/if}/></a>
{/if}
</td> </td>
</tr> </tr>
</table> </table>
@@ -25,7 +32,9 @@
{$lang_assetclass_name} {$lang_assetclass_name}
</td> </td>
<td class="value"> <td class="value">
<a href="assetclassview.php?assetclass_id={$assetclass_id}">{$assetclass_name}</a> {if $suser_edit}
<a href="assetclassview.php?assetclass_id={$assetclass->assetclass_id}">{$assetclass->assetclass_name}</a>
{/if}
</td> </td>
</tr> </tr>
</table> </table>
@@ -44,8 +53,8 @@
{$lang_assetclassgroup_name} {$lang_assetclassgroup_name}
</td> </td>
<td class="value"> <td class="value">
<img src="image.php?color={$assetclassgroup_color}" alt="#{$assetclassgroup_color}"> <img src="image.php?color={$assetclass->assetclassgroup_color}" alt="#{$assetclass->assetclassgroup_color}">
<a href="assetclassgroupview.php?assetclassgroup_id={$assetclassgroup_id}">{$assetclassgroup_name}</a><br> <a href="assetclassgroupview.php?assetclassgroup_id={$assetclass->assetclassgroup_id}">{$assetclass->assetclassgroup_name}</a><br>
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,7 +1,7 @@
<form method="POST" action="submit.php"> <form method="POST" action="submit.php">
<input type="hidden" name="edit" value="asset"> <input type="hidden" name="edit" value="asset">
<input type="hidden" name="asset_id" value="{$asset.asset_id}"> <input type="hidden" name="asset_id" value="{$asset->asset_id}">
<input type="hidden" name="assetclass_id" value="{$asset.assetclass_id}"> <input type="hidden" name="assetclass_id" value="{$asset->assetclass_id}">
<table class="title"> <table class="title">
<tr> <tr>
@@ -29,7 +29,7 @@
{$lang_asset_name} {$lang_asset_name}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="asset_name" value="{$asset.asset_name}"> <input type="text" name="asset_name" value="{$asset->asset_name}">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -37,7 +37,7 @@
{$lang_asset_hostname} {$lang_asset_hostname}
</td> </td>
<td class="value"> <td class="value">
<input type="text" name="asset_hostname" value="{$asset.asset_hostname}"> <input type="text" name="asset_hostname" value="{$asset->asset_hostname}">
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -45,7 +45,23 @@
{$lang_asset_info} {$lang_asset_info}
</td> </td>
<td class="value"> <td class="value">
<textarea name="asset_info" cols="30" rows="10">{$asset.asset_info}</textarea> <textarea name="asset_info" cols="30" rows="10">{$asset->asset_info}</textarea>
</td>
</tr>
<tr>
<td class="label">
{$lang_asset_intf}
</td>
<td class="value">
<input type="text" size="6" maxlength="6" name="asset_intf" value="{$asset->asset_intf}">
</td>
</tr>
<tr>
<td class="label">
{$lang_asset_type}
</td>
<td class="value">
{html_radios name=asset_type values=$type_ids output=$type_names selected=$asset->asset_type}
</td> </td>
</tr> </tr>
</table> </table>
@@ -64,7 +80,7 @@
{$lang_assetclass_name} {$lang_assetclass_name}
</td> </td>
<td class="value"> <td class="value">
{html_options name=assetclass_id options=$assetclass_options selected=$asset.assetclass_id} {html_options name=assetclass_id options=$assetclass_options selected=$asset->assetclass_id}
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -1,12 +1,19 @@
<table class="title"> <table class="title">
<tr> <tr>
<td class="header"> <td class="header">
{$asset_name} <img class="icon" src="images/asset.png" alt="" />
{$asset->asset_name}
</td> </td>
<td align="right"> <td align="right">
<a href="assignnodetoasset.php?asset_id={$asset_id}"><img src="image.php?icon=add" alt="{$lang_assignnodetoasset}"></a> {if $suser_add}
<a href="assetedit.php?asset_id={$asset_id}"><img src="image.php?icon=edit" alt="{$lang_asset_edit}"></a> <a href="assignnodetoasset.php?asset_id={$asset->asset_id}"><img src="image.php?icon=add" alt="{$lang_assignnodetoasset}"></a>
<a href="assetdel.php?asset_id={$asset_id}"><img src="image.php?icon=delete" alt="{$lang_asset_edit}"></a> {/if}
{if $suser_edit}
<a href="assetedit.php?asset_id={$asset->asset_id}"><img src="image.php?icon=edit" alt="{$lang_asset_edit}"></a>
{/if}
{if $suser_del}
<a href="assetdel.php?asset_id={$asset->asset_id}"><img src="image.php?icon=delete" alt="{$lang_asset_edit}"></a>
{/if}
</td> </td>
</tr> </tr>
</table> </table>
@@ -25,7 +32,7 @@
{$lang_asset_name} {$lang_asset_name}
</td> </td>
<td class="value"> <td class="value">
<a href="assetview.php?asset_id={$asset_id}">{$asset_name}</a> <a href="assetview.php?asset_id={$asset->asset_id}">{$asset->asset_name}</a>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -33,7 +40,7 @@
{$lang_asset_hostname} {$lang_asset_hostname}
</td> </td>
<td class="value"> <td class="value">
{$asset_hostname} {$asset->asset_hostname}
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -41,7 +48,23 @@
{$lang_asset_info} {$lang_asset_info}
</td> </td>
<td class="value"> <td class="value">
{$asset_info} {$asset->asset_info}
</td>
</tr>
<tr>
<td class="label">
{$lang_asset_intf}
</td>
<td class="value">
{$asset->asset_intf}
</td>
</tr>
<tr>
<td class="label">
{$lang_asset_type}
</td>
<td class="value">
{$asset->asset_type}
</td> </td>
</tr> </tr>
</table> </table>
@@ -61,7 +84,7 @@
{$lang_assetclass_name} {$lang_assetclass_name}
</td> </td>
<td class="value"> <td class="value">
<a href="assetclassview.php?assetclass_id={$assetclass_id}">{$assetclass_name}</a> <a href="assetclassview.php?assetclass_id={$asset->assetclass_id}">{$asset->assetclass_name}</a>
</td> </td>
</tr> </tr>
</table> </table>
@@ -72,7 +95,9 @@
{$lang_nodes} {$lang_nodes}
</td> </td>
<td class="header_right"> <td class="header_right">
<a href="assignnodetoasset.php?asset_id={$asset_id}"><img src="image.php?icon=edit" alt="{$lang_assignnodetoasset}"></a> {if $suser_edit}
<a href="assignnodetoasset.php?asset_id={$asset->asset_id}"><img src="image.php?icon=edit" alt="{$lang_assignnodetoasset}"></a>
{/if}
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@@ -1,7 +1,7 @@
<form method="POST" action="submit.php"> <form method="POST" action="submit.php">
<input type="hidden" name="redirect" value="assigniptonode"> <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}">
<table class="title"> <table class="title">
<tr> <tr>
@@ -37,7 +37,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="subnetview.php?subnet_id={$subnet->id}&page={$node_ip}">{$subnet->address}/{$subnet->mask}</a>
</td> </td>
</tr> </tr>
</table> </table>

View File

@@ -97,7 +97,7 @@
{$lang_subnet_subnetaddress}/{$lang_subnet_mask} {$lang_subnet_subnetaddress}/{$lang_subnet_mask}
</td> </td>
<td class="value"> <td class="value">
{html_options name=subnet_id options=$subnet_options} {html_options name=subnet_id options=$subnet_options selected=$subnet_id}
</td> </td>
</tr> </tr>
</table> </table>

53
tpl/cable.tpl Normal file
View File

@@ -0,0 +1,53 @@
<table class="title">
<tr>
<td class="header">
<img class="icon" src="images/disconnect.png" alt="" />
{$lang_cable} ({$cables|@count})
</td>
<td align="right">
{if $suser_add || $suser_admin}
<a href="cable.php?f=add"><img src="images/page_add.png" alt="{$lang_add}" {if $suser_tooltips}title="{$lang_add}" {/if}/></a>
{/if}
</td>
</tr>
</table>
<table class="info">
<tr>
<td class="header">
{$lang_cable}
</td>
<td class="header">
{$lang_length}
</td>
<td class="header">
{$lang_cable_type}
</td>
<td class="header">
{$lang_cable_info}
</td>
</tr>
{foreach item=cable from=$cables}
<tr>
<td class="label">
<img src="image.php?color={$cable.cable_color}" alt="#{$cable.cable_color}">
<a href="cable.php?f=view&id={$cable.id}">{$cable.description}</a>
</td>
<td class="label">
{$cable.cable_length} m
</td>
<td class="label">
{$cable.cable_type}
</td>
<td class="label">
{$cable.info}
</td>
</tr>
{foreachelse}
<tr>
<td>
{$lang_cable_none}
</td>
</tr>
{/foreach}
</table>

75
tpl/cableadd.tpl Normal file
View File

@@ -0,0 +1,75 @@
<form method="POST" action="cable.php">
<table class="title">
<tr>
<td class="header">
{$lang_cable_add}
</td>
<td align="right">
<a href="#" onClick="history.go(-1)"><img src="images/control_rewind_blue.png" alt="{$lang_cancel}"{if $suser_tooltips} title="{$lang_cancel}"{/if} /></a>
<input type="image" name="submit[insert]" src="images/page_save.png" alt="{$lang_save}"{if $suser_tooltips} title="{$lang_save}"{/if} />
</td>
</tr>
</table>
<table class="info">
<tr>
<td class="header">
{$lang_cable}
</td>
</tr>
<tr>
<td class="label">
{$lang_description}
</td>
<td class="value">
<input type="text" size="40" name="description" maxlength="80">
</td>
</tr>
{*
<tr>
<td class="label">
from - to
</td>
<td class="value">
<input type="text" size="10" name="length" maxlength="12">
-
<input type="text" size="10" name="length" maxlength="12">
</td>
</tr>
*}
<tr>
<td class="label">
{$lang_length}
</td>
<td class="value">
<input type="text" size="10" name="length" maxlength="80"> m
</td>
</tr>
<tr>
<td class="label">
Type
</td>
<td class="value">
{html_options name=cable_type options=$type_options selected=$cable->cable_type}
</td>
</tr>
<tr>
<td class="label">
{$lang_color}
</td>
<td class="value">
#<input type="text" {literal}class="color {pickerPosition:'right'}"{/literal} name="color" size="6" maxlength="6" value="{$cable->color}">
</td>
</tr>
<tr>
<td class="label">
{$lang_info}
</td>
<td class="value">
<textarea name="info" cols="30" rows="10"></textarea>
</td>
</tr>
</table>
</form>

39
tpl/cabledel.tpl Normal file
View File

@@ -0,0 +1,39 @@
<form method="POST" action="cable.php">
<input type="hidden" name="id" value="{$cable->id}">
<table class="title">
<tr>
<td class="header">
{$lang_cable_del}
</td>
<td align="right">
<a href="#" onClick="history.go(-1)"><img src="image.php?icon=cancel" alt="{$lang_cancel}" {if $suser_tooltips}title="{$lang_cancel}" {/if}/></a>
<input type="image" src="image.php?icon=shred" alt="{$lang_assetclass_del}" {if $suser_tooltips}title="{$lang_assetclass_del}" {/if}/>
<a href="#" onClick="history.go(-1)"><img src="images/control_rewind_blue.png" alt="Abbruch"{if $suser_tooltips} title="{$lang_cancel}"{/if} /></a>
<input type="image" name="submit[delete]" src="images/delete.png" alt="Löschen"{if $suser_tooltips} title="Löschen"{/if} />
</td>
</tr>
</table>
<table class="info">
<tr>
<td class="header">
{$lang_cable}
</td>
<td class="header_right">
&nbsp;
</td>
</tr>
<tr>
<td class="label">
{$lang_cable_name}
</td>
<td class="value">
<a href="cable.php?id={$cable->id}">{$cable->description}</a>
</td>
</tr>
</table>
</form>

76
tpl/cableedit.tpl Normal file
View File

@@ -0,0 +1,76 @@
<form method="POST" action="cable.php">
<input type="hidden" name="id" value="{$cable->id}">
<table class="title">
<tr>
<td class="header">
{$lang_cable_add}
</td>
<td align="right">
<a href="#" onClick="history.go(-1)"><img src="images/control_rewind_blue.png" alt="{$lang_cancel}"{if $suser_tooltips} title="{$lang_cancel}"{/if} /></a>
<input type="image" name="submit[update]" src="images/page_save.png" alt="{$lang_save}"{if $suser_tooltips} title="{$lang_save}"{/if} />
</td>
</tr>
</table>
<table class="info">
<tr>
<td class="header">
{$lang_cable}
</td>
</tr>
<tr>
<td class="label">
{$lang_description}
</td>
<td class="value">
<input type="text" size="40" name="description" maxlength="80" value="{$cable->description}">
</td>
</tr>
{*
<tr>
<td class="label">
from - to
</td>
<td class="value">
<input type="text" size="10" name="loc_from" maxlength="12">
-
<input type="text" size="10" name="loc_to" maxlength="12">
</td>
</tr>
*}
<tr>
<td class="label">
{$lang_length}
</td>
<td class="value">
<input type="text" size="10" name="length" maxlength="80" value="{$cable->cable_length}"> m
</td>
</tr>
<tr>
<td class="label">
Type
</td>
<td class="value">
{html_options name=cable_type options=$type_options selected=$cable->cable_type}
</td>
</tr>
<tr>
<td class="label">
{$lang_color}
</td>
<td class="value">
#<input type="text" {literal}class="color {pickerPosition:'right'}"{/literal} name="color" size="6" maxlength="6" value="{$cable->color}">
</td>
</tr>
<tr>
<td class="label">
{$lang_info}
</td>
<td class="value">
<textarea name="info" cols="30" rows="10">{$cable->info}</textarea>
</td>
</tr>
</table>
</form>

64
tpl/cableview.tpl Normal file
View File

@@ -0,0 +1,64 @@
<table class="title">
<tr>
<td class="header">
<img class="icon" src="images/disconnect.png" alt="" />
{$cable->description}
</td>
<td align="right">
<a href="cable.php?f=edit&id={$cable->id}"><img src="image.php?icon=edit" alt="{$lang_cable_edit}"></a>
<a href="cable.php?f=del&id={$cable->id}"><img src="image.php?icon=delete" alt="{$lang_cable_del}"></a>
</td>
</tr>
</table>
<table class="info">
<tr>
<td class="header">
{$lang_cable}
</td>
<td class="header_right">
&nbsp;
</td>
</tr>
<tr>
<td class="label">
{$lang_description}
</td>
<td class="value">
{$cable->description}
</td>
</tr>
<tr>
<td class="label">
{$lang_cable_type}
</td>
<td class="value">
{$cable->cable_type}
</td>
</tr>
<tr>
<td class="label">
{$lang_length}
</td>
<td class="value">
{$cable->cable_length} m
</td>
</tr>
<tr>
<td class="label">
{$lang_color}
</td>
<td class="value">
<img src="image.php?color={$cable->color}" alt="{$cable->color}">
#{$cable->color}
</td>
</tr>
<tr>
<td class="label">
{$lang_cable_info}
</td>
<td class="value">
{$cable->info}
</td>
</tr>
</table>

View File

@@ -6,12 +6,16 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="images/shield.ico"> <link rel="shortcut icon" href="images/shield.ico">
<link rel="stylesheet" href="tpl/style.css" type="text/css"> <link rel="stylesheet" href="tpl/style.css" type="text/css">
{if isset($styles)}
{foreach item=style from=$styles} {foreach item=style from=$styles}
<link rel="stylesheet" href="css/{$style[0]}" type="text/css" media="{$style[1]}" /> <link rel="stylesheet" href="css/{$style[0]}" type="text/css" media="{$style[1]}" />
{/foreach} {/foreach}
{/if}
{if isset($scripts)}
{foreach item=script from=$scripts} {foreach item=script from=$scripts}
<script type="text/javascript" src="lib/{$script}"></script> <script type="text/javascript" src="lib/{$script}"></script>
{/foreach} {/foreach}
{/if}
</head> </head>
<body> <body>
@@ -22,14 +26,7 @@
<a href="index.php"><img src="image.php?icon=logo" alt="{$lang_ipreg}" style="margin-right:1em" /></a> <a href="index.php"><img src="image.php?icon=logo" alt="{$lang_ipreg}" style="margin-right:1em" /></a>
</td> </td>
<td valign="top" rowspan="2"> <td valign="top" rowspan="2">
{if $menu_assets}<a href="asset.php">{$lang_assets}</a> | {/if} {$menu}
{if $menu_assetclasses}<a href="assetclass.php">{$lang_assetclasses}</a> | {/if}
{if $menu_assetclassgroups}<a href="assetclassgroup.php">{$lang_assetclassgroups}</a> | {/if}
{if $menu_locations}<a href="location.php">{$lang_locations}</a> | {/if}
{if $menu_nodes}<a href="node.php">{$lang_nodes}</a> | {/if}
{if $menu_subnets}<a href="subnet.php">{$lang_subnets}</a> | {/if}
{if $menu_vlans}<a href="vlan.php">{$lang_vlans}</a> | {/if}
{if $menu_zones}<a href="zone.php">{$lang_zones}</a> {/if}
</td> </td>
<td align="right" width="38%"> <td align="right" width="38%">
{$suser_name}&nbsp;|&nbsp; {$suser_name}&nbsp;|&nbsp;
@@ -45,7 +42,6 @@
</tr> </tr>
</table> </table>
</form> </form>
<table class="header"> <table class="header">
<tr> <tr>
<td> <td>
@@ -53,3 +49,4 @@
</td> </td>
</tr> </tr>
</table> </table>
{msgout}

Some files were not shown because too many files have changed in this diff Show More