27 Commits
v0.5 ... 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
c500face92 Bumped version to 0.8 2023-02-17 19:35:43 +01:00
37f4bd4185 Code formatting improved and some bugfixng 2023-02-17 19:09:10 +01:00
808ae831bf Added some indices to database and more SQL simplification 2023-02-15 14:25:45 +01:00
6df7a3f6a8 SQL Statements simplified and some bugfixing 2023-02-15 12:44:29 +01:00
ed33c0553d Example data swapped out for optional import 2023-02-14 14:34:58 +01:00
23b73a387b Added improvements for empty database 2023-02-14 13:48:28 +01:00
cf27c1377c Added minor install instructions 2023-02-13 18:04:01 +01:00
ee582988e6 Moved towards smarty templates, support php7, switched to mysqli,
finalized language support and fixed some more bugs
2023-02-13 16:41:38 +01:00
219 changed files with 11889 additions and 13675 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
*~
tpl_c/*.php
config.php

View File

@@ -1,47 +1,16 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful, include("header.php");
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the $smarty->display("about.tpl");
GNU General Public License for more details.
include("footer.php");
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
*****************************************************************************/
// start page
// includes
include("includes.php");
// start output
include("header.php");
// set template
$tp = new Template("tpl/about.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup page
// set vars
$tp->set("config_version", $config_version);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?> ?>

176
asset.php
View File

@@ -1,129 +1,47 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of include("header.php");
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
// create letter links
You should have received a copy of the GNU General Public License $sql = "SELECT DISTINCT SUBSTRING(UPPER(asset_name),1,1) AS asset_letter
along with this program. If not, see <http://www.gnu.org/licenses/>. FROM asset
ORDER BY asset_letter";
For more information, visit http://sourceforge.net/projects/ipreg, $sth = $dbh->query($sql);
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/ $alphabet = $sth->fetchAll();
$smarty->assign("alphabet", $alphabet);
// start page
// includes // total asset count
include("includes.php"); $sth = $dbh->query("SELECT COUNT(*) FROM asset");
$smarty->assign("assetcount", $sth->fetchColumn());
// start output
include("header.php"); // assets for current letter
if (isset($_GET['asset_letter'])) {
// set template $asset_letter = sanitize($_GET['asset_letter']);
$tp = new Template("tpl/asset.tpl", $config_yapter_error); } else {
$asset_letter = $alphabet[0]['asset_letter'];
// set language variables }
$tp->setvars($lang);
$sql = "SELECT a.asset_id, IF(LENGTH(a.asset_name)>0, a.asset_name, '...') AS asset_name,
// create letter links a.asset_info, c.assetclass_id, c.assetclass_name
// build query FROM asset AS a LEFT OUTER JOIN assetclass AS c USING (assetclass_id)
$query = "SELECT WHERE SUBSTRING(a.asset_name,1,1)=?
SUBSTRING(UPPER(asset.asset_name),1,1) AS asset_letter ORDER BY a.asset_name";
FROM $sth = $dbh->prepare($sql);
asset $sth->execute([$asset_letter]);
GROUP BY $smarty->assign("assets", $sth->fetchAll());
asset_letter
ORDER BY $smarty->display("asset.tpl");
asset_letter";
include("footer.php");
// run query ?>
$alphabet = $db->db_select($query);
// count results
$alphabet_counter = count($alphabet);
// any letters?
if ($alphabet_counter>0) {
// get objects
foreach($alphabet AS $alphabet_letter) {
// to tpl
$tp->set("asset_letter", strtoupper($alphabet_letter['asset_letter']));
// parse every row
$tp->parse("letter_row");
}
}
// parse block
$tp->parse("letter_table");
// setup asset
// setup current letter
if(isset($_GET['asset_letter'])) {
$asset_letter = sanitize($_GET['asset_letter']);
} else {
$asset_letter = $alphabet[0]['asset_letter'];
}
// build query
$query = "SELECT
asset.asset_id AS asset_id,
asset.asset_name AS asset_name,
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name
FROM
asset,
assetclass
WHERE
SUBSTRING(asset.asset_name,1,1) = '" . $asset_letter . "'
AND assetclass.assetclass_id=asset.assetclass_id
ORDER BY
asset.asset_name";
// run query
$assets = $db->db_select($query);
// count results
$asset_counter = count($assets);
// counter to tpl
$tp->set("asset_counter", $asset_counter);
// any assets?
if ($asset_counter>0) {
// get objects
foreach($assets AS $asset) {
// send to tpl
$tp->set("asset_id", $asset['asset_id']);
$tp->set("asset_name", $asset['asset_name']);
$tp->set("assetclass_id", $asset['assetclass_id']);
$tp->set("assetclass_name", $asset['assetclass_name']);
// parse row
$tp->parse("asset_row");
}
// parse block
$tp->parse("asset_table");
} else {
// hide block
$tp->hide("asset_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,77 +1,36 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of if((isset($_GET['assetclass_id'])) ? $assetclass_id = sanitize($_GET['assetclass_id']) : $assetclass_id = "");
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT assetclass_id, assetclass_name
along with this program. If not, see <http://www.gnu.org/licenses/>. FROM assetclass
ORDER BY assetclass_name";
For more information, visit http://sourceforge.net/projects/ipreg, $sth = $dbh->query($sql);
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/ $types = db_load_enum('asset','asset_type');
// start page $smarty->assign("type_ids", $types);
// includes $smarty->assign("type_names", $types);
include("includes.php"); $smarty->assign("type_selected", $types[0]);
// get id $assetclass_options = array();
if((isset($_GET['assetclass_id'])) ? $assetclass_id = sanitize($_GET['assetclass_id']) : $assetclass_id = ""); foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$assetclass_options[$rec[0]] = $rec[1];
// start output }
include("header.php");
$smarty->assign("assetclass_options", $assetclass_options);
// set template $smarty->display("assetadd.tpl");
$tp = new Template("tpl/assetadd.tpl", $config_yapter_error);
include("footer.php");
// set language variables
$tp->setvars($lang);
// setup assetclass
// build query
$query = "SELECT
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name
FROM
assetclass
ORDER BY
assetclass.assetclass_name";
// run query
$assetclasses = $db->db_select($query);
foreach($assetclasses AS $assetclass) {
// send to tpl
$tp->set("assetclass_id", $assetclass['assetclass_id']);
$tp->set("assetclass_name", $assetclass['assetclass_name']);
if($assetclass['assetclass_id']==$assetclass_id) {
$tp->set("assetclass_selected", "selected");
} else {
$tp->set("assetclass_selected", "");
}
// parse block
$tp->parse("assetclass_row");
}
// parse block
$tp->parse("assetclass_table");
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?> ?>

View File

@@ -1,89 +1,23 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful, include("header.php");
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the $sql = "SELECT a.assetclass_id, a.assetclass_name, g.assetclassgroup_id,
GNU General Public License for more details. g.assetclassgroup_name, g.assetclassgroup_color
FROM assetclass AS a LEFT OUTER JOIN assetclassgroup AS g USING (assetclassgroup_id)
You should have received a copy of the GNU General Public License ORDER BY a.assetclass_name";
along with this program. If not, see <http://www.gnu.org/licenses/>. $sth = $dbh->query($sql);
$smarty->assign("assetclasses", $sth->fetchAll(PDO::FETCH_ASSOC));
For more information, visit http://sourceforge.net/projects/ipreg,
or contact me at wietsew@users.sourceforge.net $smarty->display("assetclass.tpl");
*****************************************************************************/
include("footer.php");
// start page ?>
// includes
include("includes.php");
// start output
include("header.php");
// set template
$tp = new Template("tpl/assetclass.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup assetclass
// build query
$query = "SELECT
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name,
assetclassgroup.assetclassgroup_id AS assetclassgroup_id,
assetclassgroup.assetclassgroup_name AS assetclassgroup_name
FROM
assetclass,
assetclassgroup
WHERE
assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id
ORDER BY
assetclass.assetclass_name";
// run query
$assetclasses = $db->db_select($query);
// count results
$assetclass_counter = count($assetclasses);
// counter to tpl
$tp->set("assetclass_counter", $assetclass_counter);
// any assetclasses?
if ($assetclass_counter>0) {
// get objects
foreach($assetclasses AS $assetclass) {
// send to tpl
$tp->set("assetclass_id", $assetclass['assetclass_id']);
$tp->set("assetclass_name", $assetclass['assetclass_name']);
$tp->set("assetclassgroup_id", $assetclass['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclass['assetclassgroup_name']);
// parse row
$tp->parse("assetclass_row");
}
// parse block
$tp->parse("assetclass_table");
} else {
// hide block
$tp->hide("assetclass_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,78 +1,20 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of if((isset($_GET['assetclassgroup_id'])) ? $assetclassgroup_id = sanitize($_GET['assetclassgroup_id']) : $assetclassgroup_id = "");
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $smarty->assign("assetclassgroup_options", db_get_options_assetclassgroup());
along with this program. If not, see <http://www.gnu.org/licenses/>. $smarty->display("assetclassadd.tpl");
For more information, visit http://sourceforge.net/projects/ipreg, include("footer.php");
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/
// start page
// includes
include("includes.php");
// get id
if((isset($_GET['assetclassgroup_id'])) ? $assetclassgroup_id = sanitize($_GET['assetclassgroup_id']) : $assetclassgroup_id = "");
// start output
include("header.php");
// set template
$tp = new Template("tpl/assetclassadd.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup assetclassgroup
// build query
$query = "SELECT
assetclassgroup.assetclassgroup_id AS assetclassgroup_id,
assetclassgroup.assetclassgroup_name AS assetclassgroup_name
FROM
assetclassgroup
ORDER BY
assetclassgroup.assetclassgroup_name";
// run query
$assetclassgroup = $db->db_select($query);
// get objects
foreach($assetclassgroup AS $assetclassgroup) {
// send to tpl
$tp->set("assetclassgroup_id", $assetclassgroup['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclassgroup['assetclassgroup_name']);
if($assetclassgroup['assetclassgroup_id']==$assetclassgroup_id) {
$tp->set("assetclassgroup_selected", "selected");
} else {
$tp->set("assetclassgroup_selected", "");
}
// parse block
$tp->parse("assetclassgroup_row");
}
// parse block
$tp->parse("assetclassgroup_table");
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?> ?>

View File

@@ -1,63 +1,26 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $assetclass_id = sanitize($_GET['assetclass_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT assetclass_id AS id, assetclass_name AS name
along with this program. If not, see <http://www.gnu.org/licenses/>. FROM assetclass
WHERE assetclass_id=?";
For more information, visit http://sourceforge.net/projects/ipreg, $sth = $dbh->prepare($sql);
or contact me at wietsew@users.sourceforge.net $sth->execute([$assetclass_id]);
*****************************************************************************/ $smarty->assign("assetclass", $sth->fetch(PDO::FETCH_OBJ));
// start page $smarty->display("assetclassdel.tpl");
// includes
include("includes.php"); include("footer.php");
?>
// get id
$assetclass_id = sanitize($_GET['assetclass_id']);
// start output
include("header.php");
// set template
$tp = new Template("tpl/assetclassdel.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup assetclass
// build query
$query = "SELECT
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name
FROM
assetclass
WHERE
assetclass.assetclass_id=" . $assetclass_id;
// run query
$assetclass = $db->db_select($query);
// send to tpl
$tp->set("assetclass_id", $assetclass[0]['assetclass_id']);
$tp->set("assetclass_name", $assetclass[0]['assetclass_name']);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,96 +1,29 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $assetclass_id = sanitize($_GET['assetclass_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the include("header.php");
GNU General Public License for more details.
$sql = "SELECT assetclass_id AS id, assetclass_name AS name,
You should have received a copy of the GNU General Public License assetclassgroup_id AS group_id
along with this program. If not, see <http://www.gnu.org/licenses/>. FROM assetclass
WHERE assetclass_id=?";
For more information, visit http://sourceforge.net/projects/ipreg, $sth = $dbh->prepare($sql);
or contact me at wietsew@users.sourceforge.net $sth->execute([$assetclass_id]);
*****************************************************************************/
$smarty->assign("assetclass", $sth->fetch(PDO::FETCH_OBJ));
// start page
// includes $smarty->assign("assetclassgroup_options", db_get_options_assetclass());
include("includes.php");
$smarty->display("assetclassedit.tpl");
// get id
$assetclass_id = sanitize($_GET['assetclass_id']); include("footer.php");
?>
// start output
include("header.php");
// set template
$tp = new Template("tpl/assetclassedit.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup assetclass
// build query
$query = "SELECT
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name,
assetclass.assetclassgroup_id AS assetclassgroup_id
FROM
assetclass
WHERE
assetclass.assetclass_id=" . $assetclass_id;
// run query
$assetclass = $db->db_select($query);
// send to tpl
$tp->set("assetclass_id", $assetclass[0]['assetclass_id']);
$tp->set("assetclass_name", $assetclass[0]['assetclass_name']);
// setup assetclassgroup
// build query
$query = "SELECT
assetclassgroup.assetclassgroup_id AS assetclassgroup_id,
assetclassgroup.assetclassgroup_name AS assetclassgroup_name
FROM
assetclassgroup
ORDER BY
assetclassgroup.assetclassgroup_name";
// run query
$assetclassgroups = $db->db_select($query);
// get objects
foreach($assetclassgroups AS $assetclassgroup) {
// send to tpl
$tp->set("assetclassgroup_id", $assetclassgroup['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclassgroup['assetclassgroup_name']);
if($assetclassgroup['assetclassgroup_id']==$assetclass[0]['assetclassgroup_id']) {
$tp->set("assetclassgroup_selected", "selected");
} else {
$tp->set("assetclassgroup_selected", "");
}
// parse block
$tp->parse("assetclassgroup_row");
}
// parse block
$tp->parse("assetclassgroup_table");
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,84 +1,23 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful, include("header.php");
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the $sql = "SELECT assetclassgroup_id AS id, assetclassgroup_name AS name,
GNU General Public License for more details. assetclassgroup_color AS color, assetclassgroup_description AS description
FROM assetclassgroup
You should have received a copy of the GNU General Public License ORDER BY assetclassgroup_name";
along with this program. If not, see <http://www.gnu.org/licenses/>. $sth = $dbh->query($sql);
$smarty->assign('assetclassgroups', $sth->fetchAll(PDO::FETCH_ASSOC));
For more information, visit http://sourceforge.net/projects/ipreg,
or contact me at wietsew@users.sourceforge.net $smarty->display("assetclassgroup.tpl");
*****************************************************************************/
include("footer.php");
// start page
// includes
include("includes.php");
// start output
include("header.php");
// set template
$tp = new Template("tpl/assetclassgroup.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup assetclassgroup
// build query
$query = "SELECT
assetclassgroup.assetclassgroup_id AS assetclassgroup_id,
assetclassgroup.assetclassgroup_name AS assetclassgroup_name
FROM
assetclassgroup
ORDER BY
assetclassgroup.assetclassgroup_name";
// run query
$assetclassgroups = $db->db_select($query);
// count results
$assetclassgroup_counter = count($assetclassgroups);
// counter to tpl
$tp->set("assetclassgroup_counter", $assetclassgroup_counter);
// any assetclassgroups?
if ($assetclassgroup_counter>0) {
// get objects
foreach($assetclassgroups AS $assetclassgroup) {
// send to tpl
$tp->set("assetclassgroup_id", $assetclassgroup['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclassgroup['assetclassgroup_name']);
$tp->set("assetclassgroup_id", $assetclassgroup['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclassgroup['assetclassgroup_name']);
// parse row
$tp->parse("assetclassgroup_row");
}
// parse block
$tp->parse("assetclassgroup_table");
} else {
// hide block
$tp->hide("assetclassgroup_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?> ?>

View File

@@ -1,43 +1,18 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $smarty->assign("scripts", 'jscolor.js');
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the include("header.php");
GNU General Public License for more details.
$smarty->display("assetclassgroupadd.tpl");
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. include("footer.php");
?>
For more information, visit http://sourceforge.net/projects/ipreg,
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/
// start page
// includes
include("includes.php");
// start output
include("header.php");
// set template
$tp = new Template("tpl/assetclassgroupadd.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,63 +1,26 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $assetclassgroup_id = sanitize($_GET['assetclassgroup_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT assetclassgroup_id AS id, assetclassgroup_name AS name
along with this program. If not, see <http://www.gnu.org/licenses/>. FROM assetclassgroup
WHERE assetclassgroup_id=?";
For more information, visit http://sourceforge.net/projects/ipreg, $sth = $dbh->prepare($sql);
or contact me at wietsew@users.sourceforge.net $sth->execute([$assetclassgroup_id]);
*****************************************************************************/ $smarty->assign("assetclassgroup", $sth->fetch(PDO::FETCH_OBJ));
// start page $smarty->display("assetclassgroupdel.tpl");
// includes
include("includes.php"); include("footer.php");
?>
// get id
$assetclassgroup_id = sanitize($_GET['assetclassgroup_id']);
// start output
include("header.php");
// set template
$tp = new Template("tpl/assetclassgroupdel.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup assetclassgroup
// build query
$query = "SELECT
assetclassgroup.assetclassgroup_id AS assetclassgroup_id,
assetclassgroup.assetclassgroup_name AS assetclassgroup_name
FROM
assetclassgroup
WHERE
assetclassgroup.assetclassgroup_id=" . $assetclassgroup_id;
// run query
$assetclassgroup = $db->db_select($query);
// send to tpl
$tp->set("assetclassgroup_id", $assetclassgroup[0]['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclassgroup[0]['assetclassgroup_name']);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,65 +1,30 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $assetclassgroup_id = sanitize($_GET['assetclassgroup_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. $smarty->assign("scripts", 'jscolor.js');
include("header.php");
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. $sql = "SELECT assetclassgroup_id AS id, assetclassgroup_name AS name,
assetclassgroup_color AS color,
For more information, visit http://sourceforge.net/projects/ipreg, assetclassgroup_description AS description
or contact me at wietsew@users.sourceforge.net FROM assetclassgroup
*****************************************************************************/ WHERE assetclassgroup_id=?";
$sth = $dbh->prepare($sql);
// start page $sth->execute([$assetclassgroup_id]);
// includes
include("includes.php"); $smarty->assign("assetclassgroup", $sth->fetch(PDO::FETCH_OBJ));
// get id $smarty->display("assetclassgroupedit.tpl");
$assetclassgroup_id = sanitize($_GET['assetclassgroup_id']);
include("footer.php");
// start output ?>
include("header.php");
// set template
$tp = new Template("tpl/assetclassgroupedit.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup assetclassgroup
// build query
$query = "SELECT
assetclassgroup.assetclassgroup_id AS assetclassgroup_id,
assetclassgroup.assetclassgroup_name AS assetclassgroup_name,
assetclassgroup.assetclassgroup_color AS assetclassgroup_color
FROM
assetclassgroup
WHERE
assetclassgroup.assetclassgroup_id=" . $assetclassgroup_id;
// run query
$assetclassgroup = $db->db_select($query);
// send to tpl
$tp->set("assetclassgroup_id", $assetclassgroup[0]['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclassgroup[0]['assetclassgroup_name']);
$tp->set("assetclassgroup_color", $assetclassgroup[0]['assetclassgroup_color']);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,105 +1,37 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $assetclassgroup_id = sanitize($_GET['assetclassgroup_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT assetclassgroup_id AS id,
along with this program. If not, see <http://www.gnu.org/licenses/>. assetclassgroup_name AS name,
assetclassgroup_color AS color,
For more information, visit http://sourceforge.net/projects/ipreg, assetclassgroup_description AS description
or contact me at wietsew@users.sourceforge.net FROM assetclassgroup
*****************************************************************************/ WHERE assetclassgroup_id=?";
$sth = $dbh->prepare($sql);
// start page $sth->execute([$assetclassgroup_id]);
// includes $smarty->assign("assetclassgroup", $sth->fetch(PDO::FETCH_OBJ));
include("includes.php");
$sql = "SELECT assetclass_id, assetclass_name
// get id FROM assetclass
$assetclassgroup_id = sanitize($_GET['assetclassgroup_id']); WHERE assetclassgroup_id=?
ORDER BY assetclass_name";
// start output $sth = $dbh->prepare($sql);
include("header.php"); $sth->execute([$assetclassgroup_id]);
$smarty->assign("assetclasses", $sth->fetchAll(PDO::FETCH_ASSOC));
// set template
$tp = new Template("tpl/assetclassgroupview.tpl", $config_yapter_error); $smarty->display("assetclassgroupview.tpl");
// set language variables include("footer.php");
$tp->setvars($lang); ?>
// setup assetclassgroup
// build query
$query = "SELECT
assetclassgroup.assetclassgroup_id AS assetclassgroup_id,
assetclassgroup.assetclassgroup_name AS assetclassgroup_name,
assetclassgroup.assetclassgroup_color AS assetclassgroup_color
FROM
assetclassgroup
WHERE
assetclassgroup.assetclassgroup_id=" . $assetclassgroup_id;
// run query
$assetclassgroup = $db->db_select($query);
// send to tpl
$tp->set("assetclassgroup_id", $assetclassgroup[0]['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclassgroup[0]['assetclassgroup_name']);
$tp->set("assetclassgroup_color", $assetclassgroup[0]['assetclassgroup_color']);
// setup assetclass
// build query
$query = "SELECT
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name
FROM
assetclass
WHERE
assetclass.assetclassgroup_id=" . $assetclassgroup_id . "
ORDER BY
assetclass.assetclass_name";
// run query
$assetclasses = $db->db_select($query);
// count results
$assetclass_counter = count($assetclasses);
// counter to tpl
$tp->set("assetclass_counter", $assetclass_counter);
// any assets?
if ($assetclass_counter>0) {
// get objects
foreach($assetclasses AS $assetclass) {
// send to tpl
$tp->set("assetclass_id", $assetclass['assetclass_id']);
$tp->set("assetclass_name", $assetclass['assetclass_name']);
// parse row
$tp->parse("assetclass_row");
}
// parse block
$tp->parse("assetclass_table");
} else {
// hide block
$tp->hide("assetclass_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,114 +1,36 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $assetclass_id = sanitize($_GET['assetclass_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT a.assetclass_id, a.assetclass_name, g.assetclassgroup_id,
along with this program. If not, see <http://www.gnu.org/licenses/>. g.assetclassgroup_name, g.assetclassgroup_color
FROM assetclass AS a LEFT OUTER JOIN assetclassgroup AS g USING (assetclassgroup_id)
For more information, visit http://sourceforge.net/projects/ipreg, WHERE a.assetclass_id=?";
or contact me at wietsew@users.sourceforge.net $sth = $dbh->prepare($sql);
*****************************************************************************/ $sth->execute([$assetclass_id]);
$smarty->assign("assetclass", $sth->fetch(PDO::FETCH_OBJ));
// start page
// includes $sql = "SELECT asset_id, asset_name,
include("includes.php"); CONCAT(LEFT(asset_info, 80), IF(CHAR_LENGTH(asset_info)>80,'...','')) AS asset_info
FROM asset
// get id WHERE assetclass_id=?
$assetclass_id = sanitize($_GET['assetclass_id']); ORDER BY asset_name";
$sth = $dbh->prepare($sql);
// start output $sth->execute([$assetclass_id]);
include("header.php"); $smarty->assign("assets", $sth->fetchAll(PDO::FETCH_ASSOC));
// set template $smarty->display("assetclassview.tpl");
$tp = new Template("tpl/assetclassview.tpl", $config_yapter_error);
include("footer.php");
// set language variables ?>
$tp->setvars($lang);
// setup assetclass
// build query
$query = "SELECT
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name,
assetclassgroup.assetclassgroup_id AS assetclassgroup_id,
assetclassgroup.assetclassgroup_name AS assetclassgroup_name
FROM
assetclass,
assetclassgroup
WHERE
assetclass.assetclass_id=" . $assetclass_id . "
AND assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id";
// run query
$assetclass = $db->db_select($query);
// send to tpl
$tp->set("assetclass_id", $assetclass[0]['assetclass_id']);
$tp->set("assetclass_name", $assetclass[0]['assetclass_name']);
$tp->set("assetclass_selected", "");
$tp->set("assetclassgroup_id", $assetclass[0]['assetclassgroup_id']);
$tp->set("assetclassgroup_name", $assetclass[0]['assetclassgroup_name']);
// setup asset
// build query
$query = "SELECT
asset.asset_id AS asset_id,
asset.asset_name AS asset_name
FROM
asset
WHERE
asset.assetclass_id='" . $assetclass_id . "'
ORDER BY
asset.asset_name";
// run query
$assets = $db->db_select($query);
// count results
$asset_counter = count($assets);
// counter to tpl
$tp->set("asset_counter", $asset_counter);
// any assets?
if ($asset_counter>0) {
// sort using "natural order"
// ksort($assets);
// get objects
foreach($assets AS $asset) {
// send to tpl
$tp->set("asset_id", $asset['asset_id']);
$tp->set("asset_name", $asset['asset_name']);
// parse row
$tp->parse("asset_row");
}
// parse block
$tp->parse("asset_table");
} else {
// hide block
$tp->hide("asset_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

View File

@@ -1,99 +1,31 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $asset_id = sanitize($_GET['asset_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License // asset to delete
along with this program. If not, see <http://www.gnu.org/licenses/>. $sth = $dbh->prepare("SELECT asset_name FROM asset WHERE asset_id=?");
$sth->execute([$asset_id]);
For more information, visit http://sourceforge.net/projects/ipreg, $smarty->assign("asset_id", $asset_id);
or contact me at wietsew@users.sourceforge.net $smarty->assign("asset_name", $sth->fetchColumn());
*****************************************************************************/
// nodes to delete
// start page $sql = "SELECT node_id, node_ip FROM node WHERE asset_id=? ORDER BY INET_ATON(node_ip)";
// includes $sth = $dbh->prepare($sql);
include("includes.php"); $sth->execute([$asset_id]);
$smarty->assign("nodes", $sth->fetchAll(PDO::FETCH_ASSOC));
// get id
$asset_id = sanitize($_GET['asset_id']); $smarty->display("assetdel.tpl");
// start output include("footer.php");
include("header.php"); ?>
// set template
$tp = new Template("tpl/assetdel.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup asset
// build query
$query = "SELECT
asset.asset_name AS asset_name
FROM
asset
WHERE
asset.asset_id=" . $asset_id;
// run query
$asset = $db->db_select($query);
// send to tpl
$tp->set("asset_id", $asset_id);
$tp->set("asset_name", $asset[0]['asset_name']);
// setup node
// build query
$query = "SELECT
node.node_id AS node_id,
node.node_ip AS node_ip
FROM
node
WHERE
node.asset_id=" . $asset_id . "
ORDER BY
INET_ATON(node.node_ip)";
// run query
$nodes = $db->db_select($query);
// count results
$node_counter = count($nodes);
// any nodes?
if ($node_counter>0) {
// get objects
foreach($nodes AS $node) {
// set id
$tp->set("node_id", $node['node_id']);
$tp->set("node_ip", $node['node_ip']);
// parse row
$tp->parse("node_row");
}
// parse block
$tp->parse("node_table");
} else {
// hide block
$tp->hide("node_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

View File

@@ -1,108 +1,33 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $asset_id = sanitize($_GET['asset_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT asset_id, asset_name, asset_hostname, asset_info, asset_intf,
along with this program. If not, see <http://www.gnu.org/licenses/>. assetclass_id, asset_type
FROM asset
For more information, visit http://sourceforge.net/projects/ipreg, WHERE asset_id=?";
or contact me at wietsew@users.sourceforge.net $sth = $dbh->prepare($sql);
*****************************************************************************/ $sth->execute([$asset_id]);
$smarty->assign("asset", $sth->fetch(PDO::FETCH_OBJ));
// start page
// includes // Type selection
include("includes.php"); $smarty->assign("type_ids", ['active', 'passive']);
$smarty->assign("type_names", ['Active', 'Passive']);
// get id
$asset_id = sanitize($_GET['asset_id']); $smarty->assign("assetclass_options", db_get_options_assetclass());
// start output $smarty->display("assetedit.tpl");
include("header.php");
include("footer.php");
// set template ?>
$tp = new Template("tpl/assetedit.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup asset
// build query
$query = "SELECT
asset.asset_name AS asset_name,
asset.asset_hostname AS asset_hostname,
asset.asset_info AS asset_info,
asset.assetclass_id AS assetclass_id
FROM
asset
WHERE
asset.asset_id=" . $asset_id;
// run query
$asset = $db->db_select($query);
// send to tpl
$tp->set("asset_id", $asset_id);
$tp->set("asset_name", $asset[0]['asset_name']);
$tp->set("asset_hostname", $asset[0]['asset_hostname']);
$tp->set("asset_info", $asset[0]['asset_info']);
// setup assetclass
// build query
$query = "SELECT
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name
FROM
assetclass
ORDER BY
assetclass.assetclass_name";
// run query
$assetclasses = $db->db_select($query);
// count results
$assetclass_counter = count($assetclasses);
// any nodes?
if ($assetclass_counter>0) {
// get objects
foreach($assetclasses AS $assetclass) {
// send to tpl
$tp->set("assetclass_id", $assetclass['assetclass_id']);
$tp->set("assetclass_name", $assetclass['assetclass_name']);
// set select box
if($assetclass['assetclass_id']==$asset[0]['assetclass_id']) {
$tp->set("assetclass_selected", "selected");
} else {
$tp->set("assetclass_selected", "");
}
// parse block
$tp->parse("assetclass_row");
}
// parse block
$tp->parse("assetclass_table");
} else {
// parse block
$tp->hide("assetclass_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

View File

@@ -1,113 +1,36 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $asset_id = sanitize($_GET['asset_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT a.asset_id, a.asset_name, a.asset_hostname, a.asset_info,
along with this program. If not, see <http://www.gnu.org/licenses/>. a.asset_intf, a.asset_type, c.assetclass_id, c.assetclass_name
FROM asset AS a LEFT OUTER JOIN assetclass AS c USING (assetclass_id)
For more information, visit http://sourceforge.net/projects/ipreg, WHERE a.asset_id=?";
or contact me at wietsew@users.sourceforge.net $sth = $dbh->prepare($sql);
*****************************************************************************/ $sth->execute([$asset_id]);
$asset = $sth->fetch(PDO::FETCH_OBJ);
// start page $smarty->assign("asset", $asset);
// includes
include("includes.php"); $sql = "SELECT node_id, node_ip, LEFT(node_info, 40) as node_info
FROM node
// get id WHERE asset_id=?
$asset_id = sanitize($_GET['asset_id']); ORDER BY INET_ATON(node_ip)";
$sth = $dbh->prepare($sql);
// start output $sth->execute([$asset_id]);
include("header.php"); $smarty->assign("nodes", $sth->fetchAll(PDO::FETCH_ASSOC));
// set template $smarty->display("assetview.tpl");
$tp = new Template("tpl/assetview.tpl", $config_yapter_error);
include("footer.php");
// set language variables ?>
$tp->setvars($lang);
// setup asset
// build query
$query = "SELECT
asset.asset_name AS asset_name,
asset.asset_hostname AS asset_hostname,
asset.asset_info AS asset_info,
assetclass.assetclass_id AS assetclass_id,
assetclass.assetclass_name AS assetclass_name
FROM
asset,
assetclass
WHERE
asset.asset_id=" . $asset_id . "
AND assetclass.assetclass_id=asset.assetclass_id";
// run query
$asset = $db->db_select($query);
// send to tpl
$tp->set("asset_id", $asset_id);
$tp->set("asset_name", $asset[0]['asset_name']);
$tp->set("asset_hostname", $asset[0]['asset_hostname']);
$tp->set("asset_info", nl2br($asset[0]['asset_info']));
$tp->set("assetclass_id", $asset[0]['assetclass_id']);
$tp->set("assetclass_name", $asset[0]['assetclass_name']);
// setup node
// build query
$query = "SELECT
node.node_id AS node_id,
node.node_ip AS node_ip
FROM
node
WHERE
node.asset_id=" . $asset_id . "
ORDER BY
INET_ATON(node.node_ip)";
// run query
$nodes = $db->db_select($query);
// count results
$node_counter = count($nodes);
// counter to tpl
$tp->set("node_counter", $node_counter);
// any nodes?
if ($node_counter>0) {
// get objects
foreach($nodes AS $node) {
// send to tpl
$tp->set("node_id", $node['node_id']);
$tp->set("node_ip", $node['node_ip']);
// parse row
$tp->parse("node_row");
}
// parse block
$tp->parse("node_table");
} else {
// hide block
$tp->hide("node_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

View File

@@ -1,65 +1,29 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $node_ip = sanitize($_GET['node_ip']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the $subnet_id = sanitize($_GET['subnet_id']);
GNU General Public License for more details.
include("header.php");
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. $sql = "SELECT subnet_id AS id, subnet_address AS address, subnet_mask AS mask
FROM subnet
For more information, visit http://sourceforge.net/projects/ipreg, WHERE subnet_id=?";
or contact me at wietsew@users.sourceforge.net $sth = $dbh->prepare($sql);
*****************************************************************************/ $sth->execute([$subnet_id]);
// start page $smarty->assign("subnet", $sth->fetch(PDO::FETCH_OBJ));
// includes $smarty->assign("node_ip", $node_ip);
include("includes.php");
$smarty->display("assigniptonode.tpl");
// get ip and id
$node_ip = sanitize($_GET['node_ip']); include("footer.php");
$subnet_id = sanitize($_GET['subnet_id']); ?>
// start output
include("header.php");
// set template
$tp = new Template("tpl/assigniptonode.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// build query
$query = "SELECT
subnet.subnet_address AS subnet_address,
subnet.subnet_mask AS subnet_mask
FROM
subnet
WHERE
subnet.subnet_id=" . $subnet_id;
// run query
$subnet = $db->db_select($query);
// send to tpl
$tp->set("subnet_id", $subnet_id);
$tp->set("subnet_address", $subnet[0]['subnet_address']);
$tp->set("subnet_mask", $subnet[0]['subnet_mask']);
$tp->set("node_ip", $node_ip);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,133 +1,28 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $asset_id = sanitize($_GET['asset_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the $node_ip = sanitize($_GET['node_ip']);
GNU General Public License for more details. $subnet_id = sanitize($_GET['subnet_id']);
You should have received a copy of the GNU General Public License include("header.php");
along with this program. If not, see <http://www.gnu.org/licenses/>.
$smarty->assign("node_ip", $node_ip);
For more information, visit http://sourceforge.net/projects/ipreg, $smarty->assign("asset_id", $asset_id);
or contact me at wietsew@users.sourceforge.net $smarty->assign("subnet_id", $subnet_id);
*****************************************************************************/
$smarty->assign("asset_options", db_get_options_asset());
// start page $smarty->assign("subnet_options", db_get_options_subnet());
// includes
include("includes.php"); $smarty->display("assignnodetoasset.tpl");
// get id include("footer.php");
$asset_id = sanitize($_GET['asset_id']); ?>
$node_ip = sanitize($_GET['node_ip']);
$subnet_id = sanitize($_GET['subnet_id']);
// start output
include("header.php");
// set template
$tp = new Template("tpl/assignnodetoasset.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// to tpl
$tp->set("node_ip", $node_ip);
// setup asset
// build query
$query = "SELECT
asset.asset_id AS asset_id,
asset.asset_name AS asset_name
FROM
asset
ORDER BY
asset.asset_name";
// run query
$assets = $db->db_select($query);
// count results
$asset_counter = count($assets);
// any assets?
if ($asset_counter>0) {
// get objects
foreach($assets AS $asset) {
// send to tpl
$tp->set("asset_id", $asset['asset_id']);
$tp->set("asset_name", $asset['asset_name']);
if($asset['asset_id']==$asset_id) {
$tp->set("asset_selected", "selected");
} else {
$tp->set("asset_selected", "");
}
// parse block
$tp->parse("asset_row");
}
// parse block
$tp->parse("asset_table");
} else {
// parse block
$tp->hide("asset_table");
}
// setup subnet
// build query
$query = "SELECT
subnet.subnet_id AS subnet_id,
subnet.subnet_address AS subnet_address,
subnet.subnet_mask AS subnet_mask
FROM
subnet
ORDER BY
INET_ATON(subnet.subnet_address)";
// run query
$subnets = $db->db_select($query);
// count results
$subnet_counter = count($subnets);
// any subnets?
if ($subnet_counter>0) {
// get objects
foreach($subnets AS $subnet) {
// send to tpl
$tp->set("subnet_id", $subnet['subnet_id']);
$tp->set("subnet_address", $subnet['subnet_address']);
$tp->set("subnet_mask", $subnet['subnet_mask']);
if($subnet['subnet_id']==$subnet_id) {
$tp->set("subnet_selected", "selected");
} else {
$tp->set("subnet_selected", "");
}
// parse block
$tp->parse("subnet_row");
}
// parse block
$tp->parse("subnet_table");
} else {
// parse block
$tp->hide("subnet_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

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

@@ -1,46 +1,22 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of include("header.php");
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
$comments = sanitize($_GET['comments']);
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. $smarty->assign("comments", $lang['lang_comments_' . $comments]);
For more information, visit http://sourceforge.net/projects/ipreg, $smarty->display("comments.tpl");
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/ include("footer.php");
?>
// includes
include("includes.php");
// start output
include("header.php");
// set template
$tp = new Template("tpl/comments.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// get error
$comments = sanitize($_GET['comments']);
// set veriables
$tp->set("comments", $lang['lang_comments_' . $comments]);
// output
$tp->parse();
$tp->spit();
include("footer.php");
?>

View File

@@ -1,38 +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
*****************************************************************************/
// version
$config_version = 'v0.5';
// db connection
$config_mysql_host = 'localhost';
$config_mysql_username = 'db_user';
$config_mysql_password = 'db_pass';
$config_mysql_dbname = 'db_name';
// error reporting
$config_yapter_error = 15; // see yapter.php for more information
// default values for IP blocks
$config_color_blocked = 'dcdcdc';
$config_color_unused = 'ffffff';
?>

36
config.php-sample Normal file
View File

@@ -0,0 +1,36 @@
<?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
*****************************************************************************/
// db connection
$config_mysql_host = 'localhost';
$config_mysql_username = 'ipreg';
$config_mysql_password = 'changeme!';
$config_mysql_dbname = 'ipreg';
// default values for IP blocks
$config_color_blocked = 'dcdcdc';
$config_color_unused = 'ffffff';
$config_color_dynamic = 'e0e0e0';
// language
$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,28 +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
*****************************************************************************/
// build connection
mysql_connect($config_mysql_host,$config_mysql_username,$config_mysql_password);
// select db
mysql_select_db($config_mysql_dbname);
?>

View File

@@ -1,34 +1,13 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
$smarty->assign("config_version", $config_version);
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $smarty->display("footer.tpl");
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
*****************************************************************************/
// start page
// set template
$tp = new Template("tpl/footer.tpl", $config_yapter_error);
// get version for the footer-stamp
$tp->set("config_version", $config_version);
// end page
// output
$tp->parse();
$tp->spit();
?> ?>

View File

@@ -1,112 +1,61 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include('lang/' . $_SESSION['suser_language'] . '.php');
This program is distributed in the hope that it will be useful, $smarty->assign($lang);
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // search box
GNU General Public License for more details. if (isset($_POST['search'])) {
$search = sanitize($_POST['search']);
You should have received a copy of the GNU General Public License $_SESSION['search'] = $search;
along with this program. If not, see <http://www.gnu.org/licenses/>. } else {
if (isset($_SESSION['search'])) {
For more information, visit http://sourceforge.net/projects/ipreg, $search = $_SESSION['search'];
or contact me at wietsew@users.sourceforge.net } else {
*****************************************************************************/ $search = '';
}
// start page }
// include language file
include('lang/en.php'); $smarty->assign("config_version", $config_version);
$smarty->assign("suser_name", $_SESSION['suser_displayname']);
// set template $smarty->assign("search", $search);
$tp = new Template("tpl/header.tpl", $config_yapter_error);
// menu
// set language variables $menu = array();
$tp->setvars($lang); if ($_SESSION['suser_menu_assets']) {
$menu[] = '<a href="asset.php">' . $lang['lang_assets'] . "</a>\n";
// search box }
// new search? if ($_SESSION['suser_menu_assetclasses']) {
if (isset($_POST['search'])) { $menu[] = '<a href="assetclass.php">' . $lang['lang_assetclasses'] . "</a>\n";
// set var }
$search = sanitize($_POST['search']); if ($_SESSION['suser_menu_assetclassgroups']) {
$menu[] = '<a href="assetclassgroup.php">' . $lang['lang_assetclassgroups'] . "</a>\n";
// store var }
$_SESSION['search'] = $search; if ($_SESSION['suser_menu_locations']) {
} else { $menu[] = '<a href="location.php">' . $lang['lang_locations'] . "</a>\n";
// check for stored var }
if(isset($_SESSION['search'])) { if ($_SESSION['suser_menu_nodes']) {
// set var $menu[] = '<a href="node.php">' . $lang['lang_nodes'] . "</a>\n";
$search = $_SESSION['search']; }
} else { if ($_SESSION['suser_menu_subnets']) {
// empty var $menu[] = '<a href="subnet.php">' . $lang['lang_subnets'] . "</a>\n";
$search = ''; }
} if ($_SESSION['suser_menu_vlans']) {
} $menu[] = '<a href="vlan.php">' . $lang['lang_vlans'] . "</a>\n";
}
// to tpl if ($_SESSION['suser_menu_cables']) {
// set global template vars $menu[] = '<a href="cable.php">' . $lang['lang_cables'] . "</a>\n";
$tp->set("config_version", $config_version); }
$tp->set("suser_name", $_SESSION['suser_displayname']); if ($_SESSION['suser_menu_zones']) {
$tp->set("search", $search); $menu[] = '<a href="zone.php">' . $lang['lang_zones'] . "</a>\n";
}
// menu $smarty->assign("menu", implode(' | ', $menu));
// assets
if($_SESSION['suser_menu_assets']=='on') { $smarty->display("header.tpl");
$tp->parse("menu_assets"); ?>
} else {
$tp->hide("menu_assets");
}
// assetclasses
if($_SESSION['suser_menu_assetclasses']=='on') {
$tp->parse("menu_assetclasses");
} else {
$tp->hide("menu_assetclasses");
}
// assetclassgroups
if($_SESSION['suser_menu_assetclassgroups']=='on') {
$tp->parse("menu_assetclassgroups");
} else {
$tp->hide("menu_assetclassgroups");
}
// locations
if($_SESSION['suser_menu_locations']=='on') {
$tp->parse("menu_locations");
} else {
$tp->hide("menu_locations");
}
// nodes
if($_SESSION['suser_menu_nodes']=='on') {
$tp->parse("menu_nodes");
} else {
$tp->hide("menu_nodes");
}
// subnets
if($_SESSION['suser_menu_subnets']=='on') {
$tp->parse("menu_subnets");
} else {
$tp->hide("menu_subnets");
}
// users
if($_SESSION['suser_menu_users']=='on') {
$tp->parse("menu_users");
} else {
$tp->hide("menu_users");
}
// vlans
if($_SESSION['suser_menu_vlans']=='on') {
$tp->parse("menu_vlans");
} else {
$tp->hide("menu_vlans");
}
// end page
// output
$tp->parse();
$tp->spit();
?>

187
image.php
View File

@@ -1,106 +1,81 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of if(isset($_GET['icon'])) {
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the $icon = sanitize($_GET['icon']);
GNU General Public License for more details.
switch($icon) {
You should have received a copy of the GNU General Public License case ("add") :
along with this program. If not, see <http://www.gnu.org/licenses/>. $png = 'page_add';
break;
For more information, visit http://sourceforge.net/projects/ipreg, case ("back") :
or contact me at wietsew@users.sourceforge.net $png = 'control_rewind_blue';
*****************************************************************************/ break;
case ("cancel") :
// start page $png = 'control_rewind_blue';
// includes break;
include("includes.php"); case ("comment") :
$png = 'comment';
// icon image break;
if(isset($_GET['icon'])) { case ("delete") :
// get desired image $png = 'page_delete';
$icon = sanitize($_GET['icon']); break;
case ("shred") :
// switch selected $png = 'bin';
switch($icon) { break;
case ("add") : case ("edit") :
$png = 'page_add'; $png = 'page_edit';
break; break;
case ("back") : case ("error") :
$png = 'control_rewind_blue'; $png = 'error';
break; break;
case ("cancel") : case ("help") :
$png = 'control_rewind_blue'; $png = 'help';
break; break;
case ("comment") : case ("logo") :
$png = 'comment'; $png = 'logo';
break; break;
case ("delete") : case ("next") :
$png = 'page_delete'; $png = 'control_fastforward_blue';
break; break;
case ("edit") : case ("save") :
$png = 'page_edit'; $png = 'page_save';
break; break;
case ("error") : case ("search") :
$png = 'error'; $png = 'magnifier';
break; break;
case ("help") : }
$png = 'help';
break; $image = imagecreatefrompng("images/" . $png . ".png");
case ("logo") :
$png = 'logo'; imagealphablending($image, true);
break;
case ("next") : imagesavealpha($image, true);
$png = 'control_fastforward_blue';
break; header('Content-type: image/png');
case ("save") : imagepng($image);
$png = 'page_save'; imagedestroy($image);
break; }
case ("search") :
$png = 'magnifier'; if(isset($_GET['color'])) {
break; $color = sanitize($_GET['color']);
}
$image = imagecreatetruecolor($_SESSION['suser_imagesize'], $_SESSION['suser_imagesize']);
// get image
$image = imagecreatefrompng("images/" . $png . ".png"); $color = imagecolorallocate($image, hexdec(substr($color,0,2)), hexdec(substr($color,2,2)), hexdec(substr($color,4,2)));
// alpha blending imagefill($image, 0, 0, $color);
imagealphablending($image, true);
header('Content-type: image/png');
// save alphablending setting imagepng($image);
imagesavealpha($image, true); imagedestroy($image);
}
// display image ?>
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
}
// colored block
if(isset($_GET['color'])) {
// get desired color
$color = sanitize($_GET['color']);
// create base image
$image = imagecreatetruecolor($_SESSION['suser_imagesize'], $_SESSION['suser_imagesize']);
// build color
$color = imagecolorallocate($image, hexdec(substr($color,0,2)), hexdec(substr($color,2,2)), hexdec(substr($color,4,2)));
// fill image with color
imagefill($image, 0, 0, $color);
// display image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
}
?>

BIN
images/admin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

BIN
images/arrow_left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

BIN
images/arrow_right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

BIN
images/asset.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

BIN
images/bin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

BIN
images/breadcrumb.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 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/building.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

BIN
images/building_add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

BIN
images/building_delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

BIN
images/building_edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 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/exclamation.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

BIN
images/information.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

BIN
images/link.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

BIN
images/manage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

BIN
images/minus.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

BIN
images/network-ethernet.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
images/network-ethernet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

BIN
images/note.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
images/page.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

BIN
images/plugin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

BIN
images/plus.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

BIN
images/report.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 B

BIN
images/settings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

BIN
images/table.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

BIN
images/table_add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

BIN
images/table_delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 B

BIN
images/table_edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

BIN
images/table_go.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

BIN
images/table_save.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

BIN
images/tag-blue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

BIN
images/user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

BIN
images/user_add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

BIN
images/user_delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

BIN
images/user_edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 833 B

BIN
images/user_female.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

View File

@@ -1,45 +1,31 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
session_name('ipreg');
This program is distributed in the hope that it will be useful, session_start();
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // check for user_id, if unnkown, redirect to login
GNU General Public License for more details. if (empty($_SESSION['suser_id'])) {
$_SESSION['prelogin'] = $_SERVER['REQUEST_URI'];
You should have received a copy of the GNU General Public License header("Location: login.php");
along with this program. If not, see <http://www.gnu.org/licenses/>. exit;
}
For more information, visit http://sourceforge.net/projects/ipreg,
or contact me at wietsew@users.sourceforge.net include("config.php");
*****************************************************************************/
// connect to database
// session $dbh = new PDO("mysql:host=$config_mysql_host;dbname=$config_mysql_dbname;charset=utf8", $config_mysql_username, $config_mysql_password);
// start session $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
session_start(); $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
// check for user_id, if unnkown, redirect to login include("lib.php");
if(empty($_SESSION['suser_id'])) {
// redirect $language = lang_getfrombrowser($config_lang, $config_lang_default, null, false);
header("Location: login.php");
exit;
}
// headers
// raw http headers
header("Content-Type: text/html; charset=utf-8");
// includes
// includes
include("config.php");
include("dbconnect.php");
// load lib
include("lib.php");
?> ?>

151
index.php
View File

@@ -1,108 +1,43 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of include("header.php");
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. // Statistics
You should have received a copy of the GNU General Public License // asset
along with this program. If not, see <http://www.gnu.org/licenses/>. $sth = $dbh->query("SELECT COUNT(asset_id) AS asset_counter FROM asset");
$smarty->assign("asset_counter", $sth->fetchColumn());
For more information, visit http://sourceforge.net/projects/ipreg,
or contact me at wietsew@users.sourceforge.net // location
*****************************************************************************/ $sth = $dbh->query("SELECT COUNT(location_id) AS location_counter FROM location");
$smarty->assign("location_counter", $sth->fetchColumn());
// start page
// includes // node
include("includes.php"); $sth = $dbh->query("SELECT COUNT(node_id) AS node_counter FROM node");
$smarty->assign("node_counter", $sth->fetchColumn());
// start output
include("header.php"); // subnet
$sth = $dbh->query("SELECT COUNT(subnet_id) AS subnet_counter FROM subnet");
// set template $smarty->assign("subnet_counter", $sth->fetchColumn());
$tp = new Template("tpl/index.tpl", $config_yapter_error);
// vlan
// set language variables $sth = $dbh->query("SELECT COUNT(vlan_id) AS vlan_counter FROM vlan");
$tp->setvars($lang); $smarty->assign("vlan_counter", $sth->fetchColumn());
// setup asset // zone
// build query $sth = $dbh->query("SELECT COUNT(zone_id) AS zone_counter FROM zone");
$query = "SELECT $smarty->assign("zone_counter", $sth->fetchColumn());
COUNT(asset.asset_id) AS asset_counter
FROM $smarty->display("index.tpl");
asset";
include("footer.php");
// run query ?>
$assets = $db->db_select($query);
// counter to tpl
$tp->set("asset_counter", $assets[0]['asset_counter']);
// setup location
// build query
$query = "SELECT
COUNT(location.location_id) AS location_counter
FROM
location";
// run query
$locations = $db->db_select($query);
// counter to tpl
$tp->set("location_counter", $locations[0]['location_counter']);
// setup node
// build query
$query = "SELECT
COUNT(node.node_id) AS node_counter
FROM
node";
// run query
$nodes = $db->db_select($query);
// counter to tpl
$tp->set("node_counter", $nodes[0]['node_counter']);
// setup subnet
// build query
$query = "SELECT
COUNT(subnet.subnet_id) AS subnet_counter
FROM
subnet";
// run query
$subnets = $db->db_select($query);
// counter to tpl
$tp->set("subnet_counter", $subnets[0]['subnet_counter']);
// setup vlan
// build query
$query = "SELECT
COUNT(vlan.vlan_id) AS vlan_counter
FROM
vlan";
// run query
$vlans = $db->db_select($query);
// counter to tpl
$tp->set("vlan_counter", $vlans[0]['vlan_counter']);
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

View File

@@ -1,16 +1,57 @@
IP Reg Installation IP Reg Installation
1. Create database 1. Install requirements
Create a database for IP Reg on your web server, as well as a MySQL user who has all privileges for accessing and modifying it. Minimum PHP version is 7.4, we are using arrow functions introduced
in that version.
2. Run import IP Reg version 0.6 and up depends on smarty template engine.
Import the mysql.sql file into your database, which will create the tables and some sample data. In Debian install it with: "apt-get install smarty3".
The PHP-GD module is also required: "apt-get install php-gd".
3. Edit config file
Open config.php in a text editor and fill in your database details.
2. Create database
4. Upload files Create a database for IP Reg on your web server, as well as a MySQL user who
Upload all files and directory's (except the install directory) to your webserver. has all privileges for accessing and modifying it.
5. Start using IP Reg CREATE DATABASE ipreg;
Start your browser and login to IP Reg with the default username/password: admin/admin
Create database-user for application with minimum necessary rights.
CREATE USER 'ipreg'@'localhost' IDENTIFIED BY '********';
GRANT SELECT, INSERT, UPDATE, DELETE ON ipreg.* TO 'ipreg'@'localhost';
3. Run database import
Import the mysql.sql file into your database, which will create the tables
mysql ipreg < mysql.sql
Optional import some sample data
mysql ipreg < mysql_sample.sql
4. Upload files
Upload all files and directories (except the install directory) to your
webserver.
5. Create and edit config file
Rename sample configfile config.php-sample:
mv config.php-sample config.php
Open config.php in a text editor and fill in your database details.
6. Check file access rights for security
Only directory tpl_c should be writeble by webserver.
Configfile should be readable by webserver but not writeable.
chmod 640 config.php
chgrp www-data config.php
chown www-data tpl_c
7. Start using IP Reg
Start your browser and login to IP Reg with the default username/password:
admin/admin

View File

@@ -1,143 +1,185 @@
CREATE TABLE asset ( CREATE TABLE asset (
asset_id int(10) NOT NULL auto_increment, asset_id int(10) NOT NULL AUTO_INCREMENT,
asset_name varchar(100) NOT NULL, asset_name varchar(100) NOT NULL,
asset_hostname varchar(100) NOT NULL, asset_hostname varchar(100) DEFAULT NULL,
assetclass_id int(10) NOT NULL, assetclass_id int(10) NOT NULL,
asset_info text NOT NULL, asset_info text DEFAULT NULL,
PRIMARY KEY (asset_id) asset_intf smallint(5) UNSIGNED NOT NULL DEFAULT 1,
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; asset_location int(10) DEFAULT NULL,
asset_type enum ('active','passive') NOT NULL DEFAULT 'active',
INSERT INTO asset (asset_name, assetclass_id) VALUES PRIMARY KEY (asset_id),
('My Computer', 1), INDEX ix_asset_name (asset_name)
('My Server', 2); ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE assetclass (
CREATE TABLE assetclass ( assetclass_id int(10) NOT NULL AUTO_INCREMENT,
assetclass_id int(10) NOT NULL auto_increment, assetclassgroup_id int(10) NOT NULL,
assetclassgroup_id int(10) NOT NULL, assetclass_name varchar(100) NOT NULL,
assetclass_name varchar(100) NOT NULL, PRIMARY KEY (assetclass_id),
PRIMARY KEY (assetclass_id) INDEX ix_assetclass_name (assetclass_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO assetclass (assetclassgroup_id, assetclass_name) VALUES CREATE TABLE assetclassgroup (
(1, 'PC'), assetclassgroup_id int(10) NOT NULL AUTO_INCREMENT,
(2, 'Server'); assetclassgroup_name varchar(100) NOT NULL,
assetclassgroup_color char(6) NOT NULL DEFAULT '000000',
assetclassgroup_description varchar(100) DEFAULT NULL,
CREATE TABLE assetclassgroup ( PRIMARY KEY (assetclassgroup_id),
assetclassgroup_id int(10) NOT NULL auto_increment, INDEX ix_assetclassgroup_name (assetclassgroup_name)
assetclassgroup_name varchar(100) NOT NULL, ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
assetclassgroup_color varchar(6) NOT NULL,
PRIMARY KEY (assetclassgroup_id) -- WIP
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; CREATE TABLE cable (
cable_id int(10) NOT NULL AUTO_INCREMENT,
INSERT INTO assetclassgroup (assetclassgroup_name, assetclassgroup_color) VALUES cable_description varchar(100) NOT NULL,
('Workstations', 000000); cable_from_id int(10) DEFAULT NULL,
cable_to_id int(10) DEFAULT NULL,
cable_length smallint(5) UNSIGNED DEFAULT NULL,
CREATE TABLE location ( cable_links smallint(5) UNSIGNED DEFAULT 1,
location_id int(10) NOT NULL auto_increment, cable_type enum('copper','fibre','laser','radio') DEFAULT NULL,
location_name varchar(100) NOT NULL, cable_color char(6) NOT NULL DEFAULT '000000',
location_parent int(1) NOT NULL default 0, cable_info text DEFAULT NULL,
location_info text NOT NULL, PRIMARY KEY (cable_id),
PRIMARY KEY (location_id) UNIQUE INDEX ix_cable_description (cable_description)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO location (location_name, location_parent) VALUES -- WIP
('Main Office', 0); CREATE TABLE cablevlan (
cablevlan_id int(10) NOT NULL AUTO_INCREMENT,
cable_id int(10) NOT NULL,
CREATE TABLE nat ( vlan_id int(10) NOT NULL,
nat_id int(10) NOT NULL auto_increment, PRIMARY KEY (cablevlan_id)
nat_type int(1) NOT NULL, ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
nat_ext int(10) NOT NULL,
nat_int int(10) NOT NULL, -- WIP
PRIMARY KEY (nat_id) -- Reference to external systems
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; CREATE TABLE extlink (
extlink_id int(10) NOT NULL AUTO_INCREMENT,
asset_id int(10) NOT NULL,
CREATE TABLE node ( extlink_type enum('cdb','zabbix', 'topdesk') NOT NULL DEFAULT 'cdb',
node_id int(10) NOT NULL auto_increment, extlink_refid int(10) DEFAULT NULL,
node_ip varchar(15) NOT NULL, extlink_uid varchar(65) DEFAULT NULL,
node_mac varchar(12) NOT NULL, PRIMARY KEY (extlink_id),
node_dns1 varchar(100) NOT NULL, INDEX ix_extlink_asset_id (asset_id)
node_dns2 varchar(100) NOT NULL, ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
subnet_id int(10) NOT NULL,
asset_id int(10) NOT NULL, CREATE TABLE location (
node_info text NOT NULL, location_id int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (node_id) location_name varchar(100) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; location_parent int(10) NOT NULL DEFAULT 0,
location_info text DEFAULT NULL,
INSERT INTO node (node_ip, node_mac, subnet_id, asset_id) VALUES location_type enum('location', 'building','room','rack') NOT NULL DEFAULT 'location',
('192.168.1.2', '001122334455', 1, 1), location_sort smallint(6) NOT NULL DEFAULT 0,
('192.168.1.1', 'aabbccddeeff', 1, 2); PRIMARY KEY (location_id),
INDEX ix_location_sort (location_sort),
INDEX ix_location_name (location_name)
CREATE TABLE subnet ( ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
subnet_id int(10) NOT NULL auto_increment,
subnet_address varchar(15) NOT NULL, CREATE TABLE nat (
subnet_mask int(2) NOT NULL, nat_id int(10) NOT NULL AUTO_INCREMENT,
subnet_info text NOT NULL, nat_type int(1) NOT NULL,
PRIMARY KEY (subnet_id) nat_ext int(10) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; nat_int int(10) NOT NULL,
nat_ext_port smallint(5) UNSIGNED DEFAULT NULL,
nat_int_port smallint(5) UNSIGNED DEFAULT NULL,
INSERT INTO subnet (subnet_address, subnet_mask) VALUES nat_description varchar(100) DEFAULT NULL,
('192.168.0.0', 24); PRIMARY KEY (nat_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE subnetlocation ( CREATE TABLE node (
subnetlocation_id int(10) NOT NULL auto_increment, node_id int(10) NOT NULL AUTO_INCREMENT,
subnet_id int(10) NOT NULL, node_ip varchar(45) NOT NULL,
location_id int(10) NOT NULL, node_mac varchar(12) NOT NULL,
PRIMARY KEY (subnetlocation_id) node_dns1 varchar(100) DEFAULT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; node_dns2 varchar(100) DEFAULT NULL,
subnet_id int(10) NOT NULL,
INSERT INTO subnetlocation (subnet_id, location_id) VALUES asset_id int(10) NOT NULL,
(1, 1); zone_id int(10) DEFAULT NULL,
node_info text DEFAULT NULL,
node_type enum('v4','v6') NOT NULL DEFAULT 'v4',
CREATE TABLE subnetvlan ( PRIMARY KEY (node_id),
subnetvlan_id int(10) NOT NULL auto_increment, INDEX ix_ip (node_ip),
subnet_id int(10) NOT NULL, INDEX ix_mac (node_mac)
vlan_id int(10) NOT NULL, ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
PRIMARY KEY (subnetvlan_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; CREATE TABLE subnet (
subnet_id int(10) NOT NULL AUTO_INCREMENT,
subnet_address varchar(45) NOT NULL,
CREATE TABLE user ( subnet_mask int(2) NOT NULL,
user_id int(10) NOT NULL auto_increment, subnet_dhcp_start varchar(15) DEFAULT NULL,
user_name varchar(100) NOT NULL, subnet_dhcp_end varchar(15) DEFAULT NULL,
user_pass varchar(32) NOT NULL, subnet_info text DEFAULT NULL,
user_displayname varchar(100) NOT NULL, protocol_version tinyint(1) NOT NULL DEFAULT 4,
user_imagesize int(3) NOT NULL default 6, ntp_server varchar(45) DEFAULT NULL,
user_imagecount int(3) NOT NULL default 64, PRIMARY KEY (subnet_id),
user_mac varchar(25) NOT NULL default 'xxxxxxxxxxxx', UNIQUE INDEX ix_subnet (subnet_address, subnet_mask)
user_dateformat varchar(10) NOT NULL default 'd M Y H:i', ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
user_dns1suffix varchar(100) NOT NULL,
user_dns2suffix varchar(100) NOT NULL, CREATE TABLE subnetlocation (
user_menu_assets varchar(2) NOT NULL default 'on', subnetlocation_id int(10) NOT NULL AUTO_INCREMENT,
user_menu_assetclasses varchar(2) NOT NULL default 'on', subnet_id int(10) NOT NULL,
user_menu_assetclassgroups varchar(2) NOT NULL default 'on', location_id int(10) NOT NULL,
user_menu_locations varchar(2) NOT NULL default 'on', PRIMARY KEY (subnetlocation_id)
user_menu_nodes varchar(2) NOT NULL default 'on', ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
user_menu_subnets varchar(2) NOT NULL default 'on',
user_menu_users varchar(2) NOT NULL default 'on', CREATE TABLE subnetvlan (
user_menu_vlans varchar(2) NOT NULL default 'on', subnetvlan_id int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (user_id) subnet_id int(10) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; vlan_id int(10) NOT NULL,
PRIMARY KEY (subnetvlan_id)
INSERT INTO user (user_name, user_pass, user_displayname, user_imagesize, user_imagecount, user_mac, user_dateformat, user_menu_assets, user_menu_assetclasses, user_menu_assetclassgroups, user_menu_locations, user_menu_nodes, user_menu_subnets, user_menu_users, user_menu_vlans) VALUES ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
('admin', '21232f297a57a5a743894a0e4a801fc3', 'administrator', 6, 64, 'xxxxxxxxxxxx', 'd M Y H:i', 'on', 'on', 'on', 'on', 'on', 'on', 'on', 'on');
CREATE TABLE user (
user_id int(10) NOT NULL AUTO_INCREMENT,
CREATE TABLE vlan ( user_realm enum ('local','ldap') NOT NULL DEFAULT 'local',
vlan_id int(10) NOT NULL auto_increment, user_name varchar(100) NOT NULL,
vlan_number int(3) NOT NULL, user_pass binary(60) NOT NULL,
vlan_name varchar(100) NOT NULL, user_displayname varchar(100) NOT NULL,
vlan_info text NOT NULL, user_language char(2) NOT NULL DEFAULT 'en',
PRIMARY KEY (vlan_id) user_imagesize int(3) NOT NULL DEFAULT 6,
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; user_imagecount int(3) NOT NULL DEFAULT 64,
user_mac varchar(25) NOT NULL DEFAULT 'xx:xx:xx:xx:xx:xx',
INSERT INTO vlan (vlan_number, vlan_name) VALUES user_dateformat varchar(10) NOT NULL DEFAULT 'd M Y H:i',
(1, 'DEFAULT_VLAN'); user_dns1suffix varchar(100) DEFAULT NULL,
user_dns2suffix varchar(100) DEFAULT NULL,
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),
UNIQUE INDEX ix_username (user_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO user (user_name, user_pass, user_displayname, user_role) VALUES
('admin', '$2y$10$HTs0lSaFrfr.q4Gmy5zWfeDg3jhYZkqEGZEnDkMiHZ641nso38mt6', 'Administrator', 'admin');
CREATE TABLE vlan (
vlan_id int(10) NOT NULL AUTO_INCREMENT,
vlan_number int(3) NOT NULL,
vlan_name varchar(100) NOT NULL,
vlan_color char(6) NOT NULL DEFAULT '000000',
vlan_info text DEFAULT NULL,
PRIMARY KEY (vlan_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE zone (
zone_id int(10) NOT NULL AUTO_INCREMENT,
zone_soa varchar(40) NOT NULL,
zone_hostmaster varchar(40) NOT NULL,
zone_origin varchar(40) NOT NULL,
zone_ttl_default varchar(10) NOT NULL DEFAULT '3D',
zone_refresh varchar(10) NOT NULL DEFAULT '8H',
zone_retry varchar(10) NOT NULL DEFAULT '2H',
zone_expire varchar(10) NOT NULL DEFAULT '4W',
zone_ttl varchar(10) NOT NULL DEFAULT '1D',
zone_serial int(10) unsigned NOT NULL,
zone_ns1 varchar(20) NOT NULL,
zone_ns2 varchar(20) DEFAULT NULL,
zone_ns3 varchar(20) DEFAULT NULL,
zone_mx1 varchar(20) DEFAULT NULL,
zone_mx2 varchar(20) DEFAULT NULL,
zone_info text DEFAULT NULL,
PRIMARY KEY (zone_id),
UNIQUE INDEX ix_zone_origin (zone_origin)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

60
install/mysql_sample.sql Normal file
View File

@@ -0,0 +1,60 @@
INSERT INTO asset (asset_name, assetclass_id) VALUES
('Computer', 1),
('Server', 3),
('Printer', 4),
('Firewall', 6);
INSERT INTO assetclass (assetclassgroup_id, assetclass_name) VALUES
(1, 'Desktop'),
(1, 'Notebook'),
(2, 'Server'),
(3, 'Printer'),
(4, 'Switch'),
(4, 'Firewall'),
(5, 'Scanner');
INSERT INTO assetclassgroup (assetclassgroup_name, assetclassgroup_color) VALUES
('Personal Computer', '000000'),
('Servers', '0000CC'),
('Periphery', '00CC00'),
('Network', 'CCCC00'),
('Miscellaneous', 'CC0000');
INSERT INTO location (location_name, location_parent) VALUES
('Main Office', 0),
('Branch Office A', 1),
('Branch Office B', 1);
INSERT INTO node (node_ip, node_mac, subnet_id, asset_id) VALUES
('192.168.0.10', '001122334455', 1, 1),
('192.168.0.11', 'aabbccddeeff', 1, 2),
('192.168.0.12', '775544881199', 1, 3),
('192.168.0.1', '667755441122', 1, 4),
('192.168.1.1', '667755441123', 2, 4),
('192.168.10.1', '667755441124', 3, 4),
('192.168.20.1', '667755441125', 4, 4);
INSERT INTO subnet (subnet_address, subnet_mask) VALUES
('192.168.0.0', 24),
('192.168.1.0', 24),
('192.168.10.0', 24),
('192.168.20.0', 24);
INSERT INTO subnetlocation (subnet_id, location_id) VALUES
(1, 1),
(2, 1),
(3, 2),
(4, 3);
INSERT INTO subnetvlan (subnet_id, vlan_id) VALUES
(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
(1, 'DEFAULT_VLAN');
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');

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.

253
lang/de.php Normal file
View File

@@ -0,0 +1,253 @@
<?php
$lang = array(
'lang_ipreg' => 'IP Reg',
'lang_asset' => 'Objekt',
'lang_assets' => 'Objekte',
'lang_assetclass' => 'Objektklasse',
'lang_assetclasses' => 'Objektklassen',
'lang_assetclassgroup' => 'Objektklassengruppe',
'lang_assetclassgroups' => 'Objektklassengruppen',
'lang_cable' => 'Kabel',
'lang_cables' => 'Kabel',
'lang_location' => 'Standort',
'lang_locations' => 'Standorte',
'lang_menu' => 'Menü',
'lang_node' => 'Knoten',
'lang_nodes' => 'Knoten',
'lang_user' => 'Benutzer',
'lang_users' => 'Benutzer',
'lang_zone' => 'Zone',
'lang_zones' => 'Zonen',
'lang_sublocation' => 'Unterstandort',
'lang_sublocations' => 'Unterstandorte',
'lang_subnet' => 'Subnetz',
'lang_subnets' => 'Subnetze',
'lang_tooltips' => 'Tooltips',
'lang_vlan' => 'VLAN',
'lang_vlans' => 'VLANs',
'lang_about' => 'Über',
'lang_all' => 'Alle',
'lang_cancel' => 'Abbruch',
'lang_color' => 'Farbe',
'lang_error' => 'Fehler',
'lang_item' => 'Gegenstand',
'lang_language' => 'Sprache',
'lang_login' => 'Anmelden',
'lang_logout' => 'Abmelden',
'lang_options' => 'Optionen',
'lang_option_none' => '(kein)',
'lang_reset' => 'Zur&uuml;cksetzen',
'lang_search' => 'Suche',
'lang_statistics' => 'Statistik',
'lang_subitem' => 'Sub-Item',
'lang_submit' => 'Absenden',
'lang_unassigned' => 'Nicht zugeordnet',
'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_del' => 'Objekt löschen',
'lang_asset_edit' => 'Objekt ändern',
'lang_asset_info' => 'Objektinfo',
'lang_asset_name' => 'Objektname',
'lang_asset_hostname' => 'Hostname',
'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_del' => 'Objektklasse löschen',
'lang_assetclass_edit' => 'Objektklasse ändern',
'lang_assetclass_name' => 'Objektklassenname',
'lang_assetclass_none' => 'Es sind keine Objektklassen vorhanden',
'lang_assetclassgroup_add' => 'Objektklassengruppe hinzufügen',
'lang_assetclassgroup_del' => 'Objektklassengruppe löschen',
'lang_assetclassgroup_edit' => 'Objektklassengruppe ändern',
'lang_assetclassgroup_name' => 'Objektklassengruppenname',
'lang_assetclassgroup_none' => 'Es sind keine Objektklassengruppen vorhanden',
'lang_assignnodetoasset' => 'Knoten zu Objekt hinzufügen',
'lang_assignnodetoasset_existing' => 'Knoten zu existierendem Objekt hinzufügen',
'lang_assignnodetoasset_new' => 'Knoten zu neuem Objekt hinzufügen',
'lang_assigniptonode' => 'IP zu Knoten hinzufügen',
'lang_assigniptonode_existing' => 'IP zu existierendem Knoten hinzufügen',
'lang_assigniptonode_new' => 'IP zu neuem Knoten hinzufügen',
'lang_assignlocationtosubnet' => 'Standort zu Subnetz hinzufügen',
'lang_assignlocationtosubnet_existing' => 'Assign location to existing subnet',
'lang_assignlocationtosubnet_new' => 'Assign location to new subnet',
'lang_assignsubnettovlan' => 'Assign subnet to VLAN',
'lang_assignsubnettovlan_existing' => 'Assign subnet to existing VLAN',
'lang_assignsubnettovlan_new' => 'Assign subnet to new VLAN',
'lang_assignvlantosubnet' => 'Assign VLAN to subnet',
'lang_assignvlantosubnet_existing' => 'Assign VLAN to existing subnet',
'lang_assignvlantosubnet_new' => 'Assign VLAN to new subnet',
'lang_location_add' => 'Standort hinzufügen',
'lang_location_del' => 'Standort löschen',
'lang_location_edit' => 'Standort ändern',
'lang_location_info' => 'Standortinfo',
'lang_location_name' => 'Standortname',
'lang_location_parent' => 'Übergeordneter Standort',
'lang_sublocation_add' => 'Unterstandort hinzufügen',
'lang_location_none' => 'Es sind keine Standorte vorhanden',
'lang_locationsubnet' => 'Standort/Subnetz',
'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_del' => 'Knoten löschen',
'lang_node_edit' => 'Knoten ändern',
'lang_node_info' => 'Knoteninfo',
'lang_node_none' => 'Es sind keine Knoten vorhanden',
'lang_dns1' => 'DNS-Name',
'lang_dns2' => 'DNS-Alias',
'lang_ip' => 'IP-Adresse',
'lang_mac' => 'MAC-Adresse',
'lang_proto_vers' => 'Protokollversion',
'lang_nat' => 'NAT',
'lang_nat_add' => 'NAT hinzufügen',
'lang_nat_del' => 'NAT löschen',
'lang_nat_edit' => 'NAT ändern',
'lang_nat_rules' => 'NAT Regeln',
'lang_nat_type' => 'Typ',
'lang_nat_type_1' => 'Verbergen',
'lang_nat_type_2' => 'Statisch',
'lang_nat_type_3' => 'Dynamisch',
'lang_search_results_found' => 'Anzahl der gefundenen Ergebnisse: ',
'lang_subnet_add' => 'Subnetz hinzufügen',
'lang_subnet_subnetaddress' => 'Subnetzadresse',
'lang_subnet_subnetaddress_mask' => 'Subnetzadresse/Maske',
'lang_subnet_broadcastaddress' => 'Broadcastadresse',
'lang_subnet_nodesinsubnet' => 'Nodes im Subnetz',
'lang_subnet_subnetused' => 'Subnetz benutzt',
'lang_subnet_del' => 'Subnetz löschen',
'lang_subnet_edit' => 'Subnetz ändern',
'lang_subnet_info' => 'Subnetzinfo',
'lang_subnet_mask' => 'Subnetzmaske',
'lang_subnet_dhcp' => 'DHCP ausschließen',
'lang_subnet_dhcpstart' => 'DHCP Anfang',
'lang_subnet_dhcpend' => 'DHCP Ende',
'lang_subnet_ntp_server' => 'NTP-Server',
'lang_subnet_none' => 'Es sind keine Subnetze vorhanden',
'lang_subnetlocation' => 'Subnetz/Ort',
'lang_subnetlocation_edit' => 'Subnetz/Ort bearbeiten',
'lang_subnetvlan' => 'Subnetz/VLAN',
'lang_subnetvlan_edit' => 'Subnetz/VLAN bearbeiten',
'lang_user_add' => 'Benutzer hinzufügen',
'lang_user_del' => 'Benutzer löschen',
'lang_user_displayname' => 'Anzeigename',
'lang_user_edit' => 'Benutzer bearbeiten',
'lang_user_name' => 'Benutzername',
'lang_user_password' => 'Kennwort',
'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_del' => 'Zone löschen',
'lang_zone_edit' => 'Zone bearbeiten',
'lang_zone_none' => 'Es sind keine Zonen vorhanden',
'lang_vlan_add' => 'VLAN hinzufügen',
'lang_vlan_del' => 'VLAN löschen',
'lang_vlan_edit' => 'VLAN ändern',
'lang_vlan_number' => 'VLAN ID',
'lang_vlan_info' => 'VLAN Info',
'lang_vlan_new' => 'VLAN Info',
'lang_vlan_name' => 'VLAN Name',
'lang_vlan_none' => 'Es sind keine VLANs vorhanden',
'lang_vlansubnet' => 'VLAN/Subnetz',
'lang_vlansubnet_edit' => 'VLAN/Subnetz bearbeiten',
'lang_comments' => 'Kommentare',
'lang_comments_error' => 'Fehler',
'lang_comments_asset_del_nodes' => 'Diese Knoten werden ebenfalls gelöscht!',
'lang_comments_ipinuse' => 'IP wird bereits verwendet',
'lang_comments_notallowed' => 'Nicht erlaubt',
'lang_comments_search_nosearch' => 'Es gibt nichts zu suchen!',
'lang_comments_usernameinuse' => 'Benutzername wird bereits verwendet',
'lang_comments_invalidpass' => 'Das Kennwort ist falsch',
'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_profile' => 'Aktuelles Benutzerprofil',
'lang_options_display' => 'Anzeigeeinstellungen',
'lang_options_password' => 'Kennwort ändern',
'lang_options_imagesize' => 'Bildgröße',
'lang_options_imagesize_help' => 'Größe (in Pixel) der farbigen Quadrate in der Subnetzanzeige',
'lang_options_imagecount' => 'Bildanzahl',
'lang_options_imagecount_help' => 'Anzahl der farbigen Quadrate je Zeile in der Subnetzanzeige',
'lang_options_mac' => 'MAC-Adresse',
'lang_options_mac_help' => 'Format in der eine MAC-Adresse dargestellt wird (z.B. xx-xx-xx-xx-xx-xx)',
'lang_options_menu_help' => 'Select items to be displayed in menu',
'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_dns1suffix' => 'DNS Name suffix',
'lang_options_dns1suffix_help' => 'Standard DNS Name Suffix für neue Knoten',
'lang_options_dns2suffix' => 'DNS Alias suffix',
'lang_options_dns2suffix_help' => 'Standard DNS Alias Suffix für neue Knoten',
'lang_options_currentpassword' => 'Aktuelles Kennwort',
'lang_options_currentpassword_help' => 'Bitte geben Sie hier Ihr bisheriges Kennwort ein',
'lang_options_newpassword1' => 'Neues Kennwort',
'lang_options_newpassword1_help' => 'Bitte geben Sie hier Ihr neues Kennwort ein',
'lang_options_newpassword2' => 'Neues Kennwort (Wiederholung)',
'lang_options_newpassword2_help' => 'Bitte geben Sie hier nochmals Ihr neues Kennwort ein',
'lang_options_tooltips_help' => 'Tooltips anzeigen',
'lang_options_language_help' => 'Sprache für diesen Benutzer',
'lang_about_projectpage' => 'Aktuelle Projektseite',
'lang_about_sfprojectpage' => 'Sourceforge Projektseite',
'lang_about_license' => 'Lizenz',
'lang_about_gpl' => 'GNU General Public License (GPL)',
'lang_about_smarty' => 'Smarty Template Engine',
'lang_about_iconset' => 'Silk icon set 1.3',
'lang_about_ipreg_ext' => 'IP Reg, a PHP/MySQL IPAM tool',
'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_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_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_ext' => '- Added support for PHP7, switched to mysqli',
'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_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_v04' => 'v0.4 (jun 2008)',
'lang_about_changelog_v04_ext' => '- SQL vulnerability fixed<br>- PHP-generated images in subnet overview',
'lang_about_changelog_v03' => 'v0.3 (dec 2007)',
'lang_about_changelog_v03_ext' => '- Class A subnet support<br>- Multi-language support<br>- User defined options<br>- All configuration options in one file (config.php)',
'lang_about_changelog_v02' => 'v0.2 (dec 2007)',
'lang_about_changelog_v02_ext' => '- Fixed ordering of IP addresses<br>- Fixed info fields',
'lang_about_changelog_v01' => 'v0.1 (dec 2007)',
'lang_about_changelog_v01_ext' => '- First beta release',
);
?>

View File

@@ -1,196 +1,253 @@
<?php <?php
$lang = array( $lang = array(
'lang_ipreg' => 'IP Reg', 'lang_ipreg' => 'IP Reg',
'lang_asset' => 'Asset', 'lang_asset' => 'Asset',
'lang_assets' => 'Assets', 'lang_assets' => 'Assets',
'lang_assetclass' => 'Assetclass', 'lang_assetclass' => 'Assetclass',
'lang_assetclasses' => 'Assetclasses', 'lang_assetclasses' => 'Assetclasses',
'lang_assetclassgroup' => 'Assetclassgroup', 'lang_assetclassgroup' => 'Assetclassgroup',
'lang_assetclassgroups' => 'Assetclassgroups', 'lang_assetclassgroups' => 'Assetclassgroups',
'lang_location' => 'Location', 'lang_cable' => 'Cable',
'lang_locations' => 'Locations', 'lang_cables' => 'Cables',
'lang_menu' => 'Menu', 'lang_location' => 'Location',
'lang_node' => 'Node', 'lang_locations' => 'Locations',
'lang_nodes' => 'Nodes', 'lang_menu' => 'Menu',
'lang_user' => 'User', 'lang_node' => 'Node',
'lang_users' => 'Users', 'lang_nodes' => 'Nodes',
'lang_sublocation' => 'Sub-location', 'lang_user' => 'User',
'lang_sublocations' => 'Sub-locations', 'lang_users' => 'Users',
'lang_subnet' => 'Subnet', 'lang_zone' => 'Zone',
'lang_subnets' => 'Subnets', 'lang_zones' => 'Zones',
'lang_vlan' => 'VLAN', 'lang_sublocation' => 'Sub-location',
'lang_vlans' => 'VLANs', 'lang_sublocations' => 'Sub-locations',
'lang_subnet' => 'Subnet',
'lang_about' => 'About', 'lang_subnets' => 'Subnets',
'lang_all' => 'All', 'lang_tooltips' => 'Tooltips',
'lang_cancel' => 'Cancel', 'lang_vlan' => 'VLAN',
'lang_color' => 'Color', 'lang_vlans' => 'VLANs',
'lang_error' => 'Error',
'lang_item' => 'Item', 'lang_about' => 'About',
'lang_language' => 'Language', 'lang_all' => 'All',
'lang_login' => 'Login', 'lang_cancel' => 'Cancel',
'lang_logout' => 'Logout', 'lang_color' => 'Color',
'lang_options' => 'Options', 'lang_error' => 'Error',
'lang_reset' => 'Reset', 'lang_item' => 'Item',
'lang_search' => 'Search', 'lang_language' => 'Language',
'lang_statistics' => 'Statistics', 'lang_login' => 'Login',
'lang_subitem' => 'Sub-Item', 'lang_logout' => 'Logout',
'lang_submit' => 'Submit', 'lang_options' => 'Options',
'lang_unassigned' => 'Unassigned', 'lang_option_none' => '(none)',
'lang_warning' => 'Warning', 'lang_reset' => 'Reset',
'lang_search' => 'Search',
'lang_asset_add' => 'Add asset', 'lang_statistics' => 'Statistics',
'lang_asset_del' => 'Delete asset', 'lang_subitem' => 'Sub-Item',
'lang_asset_edit' => 'Modify asset', 'lang_submit' => 'Submit',
'lang_asset_info' => 'Asset info', 'lang_unassigned' => 'Unassigned',
'lang_asset_name' => 'Asset name', 'lang_warning' => 'Warning',
'lang_asset_hostname' => 'Hostname', 'lang_description' => 'Description',
'lang_empty' => 'empty',
'lang_assetclass_add' => 'Add assetclass', 'lang_source' => 'Source',
'lang_assetclass_del' => 'Delete assetclass', 'lang_target' => 'Target',
'lang_assetclass_edit' => 'Mofidy assetclass', 'lang_length' => 'Length',
'lang_assetclass_name' => 'Assetclass name',
'lang_asset_add' => 'Add asset',
'lang_assetclassgroup_add' => 'Add assetclassgroup', 'lang_asset_del' => 'Delete asset',
'lang_assetclassgroup_del' => 'Delete assetclassgroup', 'lang_asset_edit' => 'Modify asset',
'lang_assetclassgroup_edit' => 'Modify assetclassgroup', 'lang_asset_info' => 'Asset info',
'lang_assetclassgroup_name' => 'Assetclass Groupname', 'lang_asset_name' => 'Asset name',
'lang_asset_hostname' => 'Hostname',
'lang_assignnodetoasset' => 'Assign node to asset', 'lang_asset_none' => 'There are no assets defined',
'lang_assignnodetoasset_existing' => 'Assign node to existing asset', 'lang_asset_intf' => 'Number of interfaces',
'lang_assignnodetoasset_new' => 'Assign node to new asset', 'lang_asset_type' => 'Asset type',
'lang_assigniptonode' => 'Assign IP to node',
'lang_assigniptonode_existing' => 'Assign IP to existing node', 'lang_assetclass_add' => 'Add assetclass',
'lang_assigniptonode_new' => 'Assign IP to new node', 'lang_assetclass_del' => 'Delete assetclass',
'lang_assignlocationtosubnet' => 'Assign location to subnet', 'lang_assetclass_edit' => 'Mofidy assetclass',
'lang_assignlocationtosubnet_existing' => 'Assign location to existing subnet', 'lang_assetclass_name' => 'Assetclass name',
'lang_assignlocationtosubnet_new' => 'Assign location to new subnet', 'lang_assetclass_none' => 'There are no assetclasses defined',
'lang_assignsubnettovlan' => 'Assign subnet to VLAN',
'lang_assignsubnettovlan_existing' => 'Assign subnet to existing VLAN', 'lang_assetclassgroup_add' => 'Add assetclassgroup',
'lang_assignsubnettovlan_new' => 'Assign subnet to new VLAN', 'lang_assetclassgroup_del' => 'Delete assetclassgroup',
'lang_assignvlantosubnet' => 'Assign VLAN to subnet', 'lang_assetclassgroup_edit' => 'Modify assetclassgroup',
'lang_assignvlantosubnet_existing' => 'Assign VLAN to existing subnet', 'lang_assetclassgroup_name' => 'Assetclassgroup Name',
'lang_assignvlantosubnet_new' => 'Assign VLAN to new subnet', 'lang_assetclassgroup_none' => 'There are no assetclassegroups defined',
'lang_location_add' => 'Add location', 'lang_assignnodetoasset' => 'Assign node to asset',
'lang_location_del' => 'Delete location', 'lang_assignnodetoasset_existing' => 'Assign node to existing asset',
'lang_location_edit' => 'Mofidy location', 'lang_assignnodetoasset_new' => 'Assign node to new asset',
'lang_location_info' => 'Location info', 'lang_assigniptonode' => 'Assign IP to node',
'lang_location_name' => 'Location name', 'lang_assigniptonode_existing' => 'Assign IP to existing node',
'lang_location_parent' => 'Parent', 'lang_assigniptonode_new' => 'Assign IP to new node',
'lang_sublocation_add' => 'Add Sub-location', 'lang_assignlocationtosubnet' => 'Assign location to subnet',
'lang_assignlocationtosubnet_existing' => 'Assign location to existing subnet',
'lang_locationsubnet' => 'Location/Subnet', 'lang_assignlocationtosubnet_new' => 'Assign location to new subnet',
'lang_locationsubnet_edit' => 'Edit Location/Subnet', 'lang_assignsubnettovlan' => 'Assign subnet to VLAN',
'lang_assignsubnettovlan_existing' => 'Assign subnet to existing VLAN',
'lang_node_add' => 'Add node', 'lang_assignsubnettovlan_new' => 'Assign subnet to new VLAN',
'lang_node_del' => 'Delete node', 'lang_assignvlantosubnet' => 'Assign VLAN to subnet',
'lang_node_edit' => 'Modify node', 'lang_assignvlantosubnet_existing' => 'Assign VLAN to existing subnet',
'lang_node_info' => 'Node info', 'lang_assignvlantosubnet_new' => 'Assign VLAN to new subnet',
'lang_dns1' => 'DNS name',
'lang_dns2' => 'DNS Alias', 'lang_location_add' => 'Add location',
'lang_ip' => 'IP Address', 'lang_location_del' => 'Delete location',
'lang_mac' => 'MAC Address', 'lang_location_edit' => 'Mofidy location',
'lang_location_info' => 'Location info',
'lang_nat' => 'NAT', 'lang_location_name' => 'Location name',
'lang_nat_add' => 'Add NAT', 'lang_location_parent' => 'Parent',
'lang_nat_del' => 'Delete NAT', 'lang_sublocation_add' => 'Add Sub-location',
'lang_nat_edit' => 'Modify NAT', 'lang_location_none' => 'There are no locations defined',
'lang_nat_rules' => 'NAT Rules',
'lang_nat_type' => 'Type', 'lang_locationsubnet' => 'Location/Subnet',
'lang_nat_type_1' => 'Hide', 'lang_locationsubnet_edit' => 'Edit Location/Subnet',
'lang_nat_type_2' => 'Static',
'lang_nat_type_3' => 'Dynamic', 'lang_cable_info' => 'Cable info',
'lang_cable_type' => 'Cable type',
'lang_search_results_found' => 'Total results found', 'lang_cable_none' => 'There are no cables defined',
'lang_subnet_add' => 'Add subnet', 'lang_node_add' => 'Add node',
'lang_subnet_subnetaddress' => 'Subnet address', 'lang_node_del' => 'Delete node',
'lang_subnet_subnetaddress_mask' => 'Subnet address/Mask', 'lang_node_edit' => 'Modify node',
'lang_subnet_broadcastaddress' => 'Broadcast address', 'lang_node_info' => 'Node info',
'lang_subnet_nodesinsubnet' => 'Nodes in subnet', 'lang_node_none' => 'There are no nodes defined',
'lang_subnet_subnetused' => 'Subnet used', 'lang_dns1' => 'DNS name',
'lang_subnet_del' => 'Delete subnet', 'lang_dns2' => 'DNS Alias',
'lang_subnet_edit' => 'Modify subnet', 'lang_ip' => 'IP Address',
'lang_subnet_info' => 'Subnet info', 'lang_mac' => 'MAC Address',
'lang_subnet_mask' => 'Subnet mask', 'lang_proto_vers' => 'Protocol version',
'lang_subnetlocation' => 'Subnet/Location', 'lang_nat' => 'NAT',
'lang_subnetlocation_edit' => 'Edit Subnet/Location', 'lang_nat_add' => 'Add NAT',
'lang_subnetvlan' => 'Subnet/VLAN', 'lang_nat_del' => 'Delete NAT',
'lang_subnetvlan_edit' => 'Edit Subnet/VLAN', 'lang_nat_edit' => 'Modify NAT',
'lang_nat_rules' => 'NAT Rules',
'lang_user_add' => 'Add user', 'lang_nat_type' => 'Type',
'lang_user_del' => 'Delete user', 'lang_nat_type_1' => 'Hide',
'lang_user_displayname' => 'Displayname', 'lang_nat_type_2' => 'Static',
'lang_user_edit' => 'Mofidy user', 'lang_nat_type_3' => 'Dynamic',
'lang_user_name' => 'Username',
'lang_user_password' => 'Password', 'lang_search_results_found' => 'Total results found',
'lang_vlan_add' => 'Add VLAN', 'lang_subnet_add' => 'Add subnet',
'lang_vlan_del' => 'Delete VLAN', 'lang_subnet_subnetaddress' => 'Subnet address',
'lang_vlan_edit' => 'Modify VLAN', 'lang_subnet_subnetaddress_mask' => 'Subnet address/Mask',
'lang_vlan_number' => 'VLAN ID', 'lang_subnet_broadcastaddress' => 'Broadcast address',
'lang_vlan_info' => 'VLAN info', 'lang_subnet_nodesinsubnet' => 'Nodes in subnet',
'lang_vlan_new' => 'VLAN info', 'lang_subnet_subnetused' => 'Subnet used',
'lang_vlan_name' => 'VLAN name', 'lang_subnet_del' => 'Delete subnet',
'lang_subnet_edit' => 'Modify subnet',
'lang_vlansubnet' => 'VLAN/Subnet', 'lang_subnet_info' => 'Subnet info',
'lang_vlansubnet_edit' => 'Edit VLAN/Subnet', 'lang_subnet_mask' => 'Subnet mask',
'lang_subnet_dhcp' => 'Exclude DHCP',
'lang_comments' => 'Comments', 'lang_subnet_dhcpstart' => 'DHCP Start',
'lang_comments_error' => 'Error', 'lang_subnet_dhcpend' => 'DHCP End',
'lang_comments_asset_del_nodes' => 'These nodes will also be deleted!', 'lang_subnet_ntp_server' => 'NTP Server',
'lang_comments_ipinuse' => 'IP in use', 'lang_subnet_none' => 'There are no subnets defined',
'lang_comments_notallowed' => 'Not allowed',
'lang_comments_search_nosearch' => 'Nothing to search for!', 'lang_subnetlocation' => 'Subnet/Location',
'lang_comments_usernameinuse' => 'Username in use', 'lang_subnetlocation_edit' => 'Edit Subnet/Location',
'lang_subnetvlan' => 'Subnet/VLAN',
'lang_options_ipreg' => 'IP Reg options', 'lang_subnetvlan_edit' => 'Edit Subnet/VLAN',
'lang_options_display' => 'Display options',
'lang_options_password' => 'Change password', 'lang_user_add' => 'Add user',
'lang_options_imagesize' => 'Imagesize', 'lang_user_del' => 'Delete user',
'lang_options_imagesize_help' => 'Size (in pixels) of colored square on subnetview', 'lang_user_displayname' => 'Displayname',
'lang_options_imagecount' => 'Imagecount', 'lang_user_edit' => 'Mofidy user',
'lang_options_imagecount_help' => 'Nr of colored squares per row on subnetview', 'lang_user_name' => 'Username',
'lang_options_mac' => 'MAC Address', 'lang_user_password' => 'Password',
'lang_options_mac_help' => 'Format in which a MAC address is displayed (e.g. xx-xx-xx-xx-xx-xx)', 'lang_user_language' => 'Language',
'lang_options_menu_help' => 'Select items to be displayed in menu', 'lang_user_realm' => 'Realm',
'lang_options_dateformat' => 'Date format', 'lang_user_roles' => 'Roles',
'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_user_role_add' => 'Add',
'lang_options_dns1suffix' => 'DNS Name suffix', 'lang_user_role_edit' => 'Edit',
'lang_options_dns1suffix_help' => 'Default DNS Name suffix when creating a new node', 'lang_user_role_delete' => 'Delete',
'lang_options_dns2suffix' => 'DNS Alias suffix', 'lang_user_role_manage' => 'Manage',
'lang_options_dns2suffix_help' => 'Default DNS Alias suffix when creating a new node', 'lang_user_role_admin' => 'Adminstration',
'lang_options_currentpassword' => 'Current password',
'lang_options_currentpassword_help' => 'Enter your current password', 'lang_zone_add' => 'Add zone',
'lang_options_newpassword1' => 'New password', 'lang_zone_del' => 'Delete zone',
'lang_options_newpassword1_help' => 'Enter your new password', 'lang_zone_edit' => 'Mofidy zone',
'lang_options_newpassword2' => 'Retype new password', 'lang_zone_none' => 'There are no zones defined',
'lang_options_newpassword2_help' => 'Re-type your new password',
'lang_vlan_add' => 'Add VLAN',
'lang_about_sfprojectpage' => 'Sourceforge Project Page', 'lang_vlan_del' => 'Delete VLAN',
'lang_about_license' => 'lang_about_license', 'lang_vlan_edit' => 'Modify VLAN',
'lang_about_gpl' => 'GNU General Public License (GPL)', 'lang_vlan_number' => 'VLAN ID',
'lang_about_yapter' => 'Yapter Template Engine', 'lang_vlan_info' => 'VLAN info',
'lang_about_iconset' => 'Silk icon set 1.3', 'lang_vlan_new' => 'VLAN info',
'lang_about_ipreg_ext' => 'IP Reg, a PHP/MySQL IPAM tool', 'lang_vlan_name' => 'VLAN name',
'lang_about_license_ext' => 'Copyright (C) 2007-2009 Wietse Warendorff<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_vlan_none' => 'There are no VLANs defined',
'lang_about_changelog' => 'Changelog (major changes only)', 'lang_vlansubnet' => 'VLAN/Subnet',
'lang_about_changelog_v05' => 'v0.5 (dec 2009)', 'lang_vlansubnet_edit' => 'Edit VLAN/Subnet',
'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_comments' => 'Comments',
'lang_about_changelog_v04_ext' => '- SQL vulnerability fixed<br>- PHP-generated images in subnet overview', 'lang_comments_error' => 'Error',
'lang_about_changelog_v03' => 'v0.3 (dec 2007)', 'lang_comments_asset_del_nodes' => 'These nodes will also be deleted!',
'lang_about_changelog_v03_ext' => '- Class A subnet support<br>- Multi-language support<br>- User defined options<br>- All configuration options in one file (config.php)', 'lang_comments_ipinuse' => 'IP in use',
'lang_about_changelog_v02' => 'v0.2 (dec 2007)', 'lang_comments_notallowed' => 'Not allowed',
'lang_about_changelog_v02_ext' => '- Fixed ordering of IP addresses<br>- Fixed info fields', 'lang_comments_search_nosearch' => 'Nothing to search for!',
'lang_about_changelog_v01' => 'v0.1 (dec 2007)', 'lang_comments_usernameinuse' => 'Username in use',
'lang_about_changelog_v01_ext' => '- First beta release', 'lang_comments_invalidpass' => 'Invalid password',
'lang_comments_invalidnewpass' => 'Invalid new password',
); 'lang_comments_accessdenied' => 'Access denied',
?> 'lang_options_ipreg' => 'IP Reg options',
'lang_options_profile' => 'Current user profile',
'lang_options_display' => 'Display options',
'lang_options_password' => 'Change password',
'lang_options_imagesize' => 'Imagesize',
'lang_options_imagesize_help' => 'Size (in pixels) of colored square on subnetview',
'lang_options_imagecount' => 'Imagecount',
'lang_options_imagecount_help' => 'Nr of colored squares per row on subnetview',
'lang_options_mac' => 'MAC Address',
'lang_options_mac_help' => 'Format in which a MAC address is displayed (e.g. xx-xx-xx-xx-xx-xx)',
'lang_options_menu_help' => 'Select items to be displayed in menu',
'lang_options_dateformat' => 'Date format',
'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_help' => 'Default DNS Name suffix when creating a new node',
'lang_options_dns2suffix' => 'DNS Alias suffix',
'lang_options_dns2suffix_help' => 'Default DNS Alias suffix when creating a new node',
'lang_options_currentpassword' => 'Current password',
'lang_options_currentpassword_help' => 'Enter your current password',
'lang_options_newpassword1' => 'New password',
'lang_options_newpassword1_help' => 'Enter your new password',
'lang_options_newpassword2' => 'Retype new password',
'lang_options_newpassword2_help' => 'Re-type your new password',
'lang_options_tooltips_help' => 'Show tooltips',
'lang_options_language_help' => 'Language for this user',
'lang_about_projectpage' => 'Current Project Page',
'lang_about_sfprojectpage' => 'Sourceforge Project Page',
'lang_about_license' => 'License',
'lang_about_gpl' => 'GNU General Public License (GPL)',
'lang_about_smarty' => 'Smarty Template Engine',
'lang_about_iconset' => 'Silk icon set 1.3',
'lang_about_ipreg_ext' => 'IP Reg, a PHP/MySQL IPAM tool',
'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_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_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_ext' => '- Added support for PHP7, switched to mysqli',
'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_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_v04' => 'v0.4 (jun 2008)',
'lang_about_changelog_v04_ext' => '- SQL vulnerability fixed<br>- PHP-generated images in subnet overview',
'lang_about_changelog_v03' => 'v0.3 (dec 2007)',
'lang_about_changelog_v03_ext' => '- Class A subnet support<br>- Multi-language support<br>- User defined options<br>- All configuration options in one file (config.php)',
'lang_about_changelog_v02' => 'v0.2 (dec 2007)',
'lang_about_changelog_v02_ext' => '- Fixed ordering of IP addresses<br>- Fixed info fields',
'lang_about_changelog_v01' => 'v0.1 (dec 2007)',
'lang_about_changelog_v01_ext' => '- First beta release',
);
?>

303
lib.php
View File

@@ -1,44 +1,259 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
// ========== CONSTANT DEFINITIONS ============================================
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of // page actions
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the define ('ACT_DEFAULT', 0);
GNU General Public License for more details. define ('ACT_ADD', 1);
define ('ACT_VIEW', 2);
You should have received a copy of the GNU General Public License define ('ACT_EDIT', 3);
along with this program. If not, see <http://www.gnu.org/licenses/>. define ('ACT_DELETE', 4);
define ('ACT_COPY', 5);
For more information, visit http://sourceforge.net/projects/ipreg, define ('ACT_JOIN', 6);
or contact me at wietsew@users.sourceforge.net define ('ACT_LEAVE', 7);
*****************************************************************************/ define ('ACT_EDIT_DETAIL', 8);
define ('ACT_DEL_DETAIL', 9);
// functions define ('ACT_LINK', 10);
include("lib/functions.php"); define ('ACT_UNLINK', 11);
define ('ACT_MAIL', 12);
// classes define ('ACT_VIEW_LIST', 13);
// db
// load class // ========== GLOBAL PAGE START CODE ==========================================
require("lib/db.class.php");
// global version string
// create instance $config_version = 'v0.9';
$db = new Db();
// available languages
// user $config_lang = array('de', 'en');
// load class
require("lib/user.class.php"); include("lib/functions.php");
// create instance require_once('smarty3/Smarty.class.php');
$user = new User(); $smarty = new Smarty();
$smarty->template_dir = 'tpl';
// tpl $smarty->compile_dir = 'tpl_c';
// load class $smarty->registerPlugin('function', 'treelist', 'print_tree');
include("lib/yapter.php"); $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;
}
?>

BIN
lib/arrow.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 B

View File

@@ -1,5 +1,5 @@
function changelink(optVal){ function changelink(optVal) {
if(optVal=="") if(optVal=="")
return false; return false;
window.location='subnetview.php?subnet_id='+optVal; window.location='subnetview.php?subnet_id='+optVal;
} }

View File

@@ -1,3 +1,3 @@
function changetext(id,newtext) { function changetext(id,newtext) {
document.getElementById(id).innerHTML=newtext document.getElementById(id).innerHTML=newtext
} }

BIN
lib/cross.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 B

View File

@@ -1,55 +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 {
function db_delete($query) {
// run query
$sql = mysql_query($query) or die(mysql_error());
}
function db_insert($query) {
// run query
$sql = mysql_query($query) or die(mysql_error());
// return result
return mysql_insert_id();
}
function db_select($query) {
// run query
$sql = mysql_query($query) or die(mysql_error());
// loop results
while($record = mysql_fetch_assoc($sql)) {
$result[] = $record;
}
// return array
return $result;
}
function db_update($query) {
// run query
$sql = mysql_query($query) or die(mysql_error());
}
}
?>

View File

@@ -1,94 +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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
// strip mac address to 12 char string
This program is distributed in the hope that it will be useful, function strip_mac($mac) {
but WITHOUT ANY WARRANTY; without even the implied warranty of // strip chars we don't need
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the $mac = preg_replace("|[^a-fA-F0-9]|", "", $mac);
GNU General Public License for more details.
// capitalize (just because it looks better eh)
You should have received a copy of the GNU General Public License $mac = strtoupper($mac);
along with this program. If not, see <http://www.gnu.org/licenses/>.
// and return
For more information, visit http://sourceforge.net/projects/ipreg, return ($mac);
or contact me at wietsew@users.sourceforge.net }
*****************************************************************************/
// rebuild mac address
// strip mac address to 12 char string function write_mac($mac) {
function strip_mac($mac) { // check string length
// strip chars we don't need if (strlen($mac)!=12) {
$mac = preg_replace("|[^a-fA-F0-9]|", "", $mac); // if the MAC is empty, or for whatever reason incorrect, just return
return $mac;
// capitalize (just because it looks better eh) } else {
$mac = strtoupper($mac); // count to 12...
for ($i=0; $i<12; $i++) {
// and return // ... and strip mac to pieces
return ($mac); ${"mac".$i} = $mac{$i};
} }
// rebuild mac address // get user preference
function write_mac($mac) { $user_mac = $_SESSION['suser_mac'];
// check string length
if (strlen($mac)!=12) { // count to 12 again...
// if the MAC is empty, or for whatever reason incorrect, just return for($i=0; $i<12; $i++) {
return $mac; // ... and replace user preference with pieces
} else { $user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1);
// count to 12... }
for($i=0;$i<12;$i++) {
// ... and strip mac to pieces // and return
${"mac".$i} = $mac{$i}; return $user_mac;
} }
}
// get user preference
$user_mac = $_SESSION['suser_mac']; // redirect page
function header_location($location) {
// count to 12 again... // send header
for($i=0;$i<12;$i++) { header("location: " . $location);
// ... and replace user preference with pieces
$user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1); // exit to be sure
} exit;
}
// and return
return $user_mac; // sanitize input
} function sanitize($input) {
} global $dblink;
// redirect page // trim whitespaces
function header_location($location) { $input = @trim($input);
// send header
header("location: " . $location); // magic quotes enabled?
if(get_magic_quotes_gpc()) {
// exit to be sure // strip slashes
exit; $input = stripslashes($input);
} }
// sanitize input // convert to utf-8
function sanitize($input) { iconv("UTF-8", "UTF-8", $input);
// trim whitespaces
$input = @trim($input); // convert special chars
$input = htmlentities($input,ENT_QUOTES,'UTF-8');
// magic quotes enabled?
if(get_magic_quotes_gpc()) { // and return
// strip slashes return $input;
$input = stripslashes($input); }
}
function mysql_nullstring($input) {
// convert to utf-8 if (isset($input)) {
iconv("UTF-8", "UTF-8", $input); return $input;
} else {
// convert special chars return '';
$input = htmlentities($input,ENT_QUOTES,'UTF-8'); }
}
// make sql ready
$input = mysql_real_escape_string($input); function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) {
if ($lang_variable === null) {
// and return $lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
return $input; }
} 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;
}
array_pop ($lang_code);
}
}
return $current_lang;
}
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";
}
$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();
}
?>

BIN
lib/hs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
lib/hv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

840
lib/jscolor.js Normal file
View File

@@ -0,0 +1,840 @@
/**
* jscolor, JavaScript Color Picker
*
* @version 1.3.1
* @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
* @author Jan Odvarko, http://odvarko.cz
* @created 2008-06-15
* @updated 2010-01-23
* @link http://jscolor.com
*/
var jscolor = {
dir : '', // location of jscolor directory (leave empty to autodetect)
bindClass : 'color', // class name
binding : true, // automatic binding via <input class="...">
preloading : true, // use image preloading?
install : function() {
jscolor.addEvent(window, 'load', jscolor.init);
},
init : function() {
if(jscolor.binding) {
jscolor.bind();
}
if(jscolor.preloading) {
jscolor.preload();
}
},
getDir : function() {
if(!jscolor.dir) {
var detected = jscolor.detectDir();
jscolor.dir = detected!==false ? detected : 'jscolor/';
}
return jscolor.dir;
},
detectDir : function() {
var base = location.href;
var e = document.getElementsByTagName('base');
for(var i=0; i<e.length; i+=1) {
if(e[i].href) { base = e[i].href; }
}
var e = document.getElementsByTagName('script');
for(var i=0; i<e.length; i+=1) {
if(e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
var src = new jscolor.URI(e[i].src);
var srcAbs = src.toAbsolute(base);
srcAbs.path = srcAbs.path.replace(/[^\/]+$/, ''); // remove filename
srcAbs.query = null;
srcAbs.fragment = null;
return srcAbs.toString();
}
}
return false;
},
bind : function() {
var matchClass = new RegExp('(^|\\s)('+jscolor.bindClass+')\\s*(\\{[^}]*\\})?', 'i');
var e = document.getElementsByTagName('input');
for(var i=0; i<e.length; i+=1) {
var m;
if(!e[i].color && e[i].className && (m = e[i].className.match(matchClass))) {
var prop = {};
if(m[3]) {
try {
eval('prop='+m[3]);
} catch(eInvalidProp) {}
}
e[i].color = new jscolor.color(e[i], prop);
}
}
},
preload : function() {
for(var fn in jscolor.imgRequire) {
if(jscolor.imgRequire.hasOwnProperty(fn)) {
jscolor.loadImage(fn);
}
}
},
images : {
pad : [ 181, 101 ],
sld : [ 16, 101 ],
cross : [ 15, 15 ],
arrow : [ 7, 11 ]
},
imgRequire : {},
imgLoaded : {},
requireImage : function(filename) {
jscolor.imgRequire[filename] = true;
},
loadImage : function(filename) {
if(!jscolor.imgLoaded[filename]) {
jscolor.imgLoaded[filename] = new Image();
jscolor.imgLoaded[filename].src = jscolor.getDir()+filename;
}
},
fetchElement : function(mixed) {
return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
},
addEvent : function(el, evnt, func) {
if(el.addEventListener) {
el.addEventListener(evnt, func, false);
} else if(el.attachEvent) {
el.attachEvent('on'+evnt, func);
}
},
fireEvent : function(el, evnt) {
if(!el) {
return;
}
if(document.createEventObject) {
var ev = document.createEventObject();
el.fireEvent('on'+evnt, ev);
} else if(document.createEvent) {
var ev = document.createEvent('HTMLEvents');
ev.initEvent(evnt, true, true);
el.dispatchEvent(ev);
} else if(el['on'+evnt]) { // alternatively use the traditional event model (IE5)
el['on'+evnt]();
}
},
getElementPos : function(e) {
var e1=e, e2=e;
var x=0, y=0;
if(e1.offsetParent) {
do {
x += e1.offsetLeft;
y += e1.offsetTop;
} while(e1 = e1.offsetParent);
}
while((e2 = e2.parentNode) && e2.nodeName.toUpperCase() !== 'BODY') {
x -= e2.scrollLeft;
y -= e2.scrollTop;
}
return [x, y];
},
getElementSize : function(e) {
return [e.offsetWidth, e.offsetHeight];
},
getMousePos : function(e) {
if(!e) { e = window.event; }
if(typeof e.pageX === 'number') {
return [e.pageX, e.pageY];
} else if(typeof e.clientX === 'number') {
return [
e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
e.clientY + document.body.scrollTop + document.documentElement.scrollTop
];
}
},
getViewPos : function() {
if(typeof window.pageYOffset === 'number') {
return [window.pageXOffset, window.pageYOffset];
} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
return [document.body.scrollLeft, document.body.scrollTop];
} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
} else {
return [0, 0];
}
},
getViewSize : function() {
if(typeof window.innerWidth === 'number') {
return [window.innerWidth, window.innerHeight];
} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
return [document.body.clientWidth, document.body.clientHeight];
} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
return [document.documentElement.clientWidth, document.documentElement.clientHeight];
} else {
return [0, 0];
}
},
URI : function(uri) { // See RFC3986
this.scheme = null;
this.authority = null;
this.path = '';
this.query = null;
this.fragment = null;
this.parse = function(uri) {
var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);
this.scheme = m[3] ? m[2] : null;
this.authority = m[5] ? m[6] : null;
this.path = m[7];
this.query = m[9] ? m[10] : null;
this.fragment = m[12] ? m[13] : null;
return this;
};
this.toString = function() {
var result = '';
if(this.scheme !== null) { result = result + this.scheme + ':'; }
if(this.authority !== null) { result = result + '//' + this.authority; }
if(this.path !== null) { result = result + this.path; }
if(this.query !== null) { result = result + '?' + this.query; }
if(this.fragment !== null) { result = result + '#' + this.fragment; }
return result;
};
this.toAbsolute = function(base) {
var base = new jscolor.URI(base);
var r = this;
var t = new jscolor.URI;
if(base.scheme === null) { return false; }
if(r.scheme !== null && r.scheme.toLowerCase() === base.scheme.toLowerCase()) {
r.scheme = null;
}
if(r.scheme !== null) {
t.scheme = r.scheme;
t.authority = r.authority;
t.path = removeDotSegments(r.path);
t.query = r.query;
} else {
if(r.authority !== null) {
t.authority = r.authority;
t.path = removeDotSegments(r.path);
t.query = r.query;
} else {
if(r.path === '') { // TODO: == or === ?
t.path = base.path;
if(r.query !== null) {
t.query = r.query;
} else {
t.query = base.query;
}
} else {
if(r.path.substr(0,1) === '/') {
t.path = removeDotSegments(r.path);
} else {
if(base.authority !== null && base.path === '') { // TODO: == or === ?
t.path = '/'+r.path;
} else {
t.path = base.path.replace(/[^\/]+$/,'')+r.path;
}
t.path = removeDotSegments(t.path);
}
t.query = r.query;
}
t.authority = base.authority;
}
t.scheme = base.scheme;
}
t.fragment = r.fragment;
return t;
};
function removeDotSegments(path) {
var out = '';
while(path) {
if(path.substr(0,3)==='../' || path.substr(0,2)==='./') {
path = path.replace(/^\.+/,'').substr(1);
} else if(path.substr(0,3)==='/./' || path==='/.') {
path = '/'+path.substr(3);
} else if(path.substr(0,4)==='/../' || path==='/..') {
path = '/'+path.substr(4);
out = out.replace(/\/?[^\/]*$/, '');
} else if(path==='.' || path==='..') {
path = '';
} else {
var rm = path.match(/^\/?[^\/]*/)[0];
path = path.substr(rm.length);
out = out + rm;
}
}
return out;
}
if(uri) {
this.parse(uri);
}
},
/*
* Usage example:
* var myColor = new jscolor.color(myInputElement)
*/
color : function(target, prop) {
this.required = true; // refuse empty values?
this.adjust = true; // adjust value to uniform notation?
this.hash = false; // prefix color with # symbol?
this.caps = true; // uppercase?
this.valueElement = target; // value holder
this.styleElement = target; // where to reflect current color
this.hsv = [0, 0, 1]; // read-only 0-6, 0-1, 0-1
this.rgb = [1, 1, 1]; // read-only 0-1, 0-1, 0-1
this.pickerOnfocus = true; // display picker on focus?
this.pickerMode = 'HSV'; // HSV | HVS
this.pickerPosition = 'bottom'; // left | right | top | bottom
this.pickerFace = 10; // px
this.pickerFaceColor = 'ThreeDFace'; // CSS color
this.pickerBorder = 1; // px
this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight'; // CSS color
this.pickerInset = 1; // px
this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow'; // CSS color
this.pickerZIndex = 10000;
for(var p in prop) {
if(prop.hasOwnProperty(p)) {
this[p] = prop[p];
}
}
this.hidePicker = function() {
if(isPickerOwner()) {
removePicker();
}
};
this.showPicker = function() {
if(!isPickerOwner()) {
var tp = jscolor.getElementPos(target); // target pos
var ts = jscolor.getElementSize(target); // target size
var vp = jscolor.getViewPos(); // view pos
var vs = jscolor.getViewSize(); // view size
var ps = [ // picker size
2*this.pickerBorder + 4*this.pickerInset + 2*this.pickerFace + jscolor.images.pad[0] + 2*jscolor.images.arrow[0] + jscolor.images.sld[0],
2*this.pickerBorder + 2*this.pickerInset + 2*this.pickerFace + jscolor.images.pad[1]
];
var a, b, c;
switch(this.pickerPosition.toLowerCase()) {
case 'left': a=1; b=0; c=-1; break;
case 'right':a=1; b=0; c=1; break;
case 'top': a=0; b=1; c=-1; break;
default: a=0; b=1; c=1; break;
}
var l = (ts[b]+ps[b])/2;
var pp = [ // picker pos
-vp[a]+tp[a]+ps[a] > vs[a] ?
(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
tp[a],
-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
];
drawPicker(pp[a], pp[b]);
}
};
this.importColor = function() {
if(!valueElement) {
this.exportColor();
} else {
if(!this.adjust) {
if(!this.fromString(valueElement.value, leaveValue)) {
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
styleElement.style.color = styleElement.jscStyle.color;
this.exportColor(leaveValue | leaveStyle);
}
} else if(!this.required && /^\s*$/.test(valueElement.value)) {
valueElement.value = '';
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
styleElement.style.color = styleElement.jscStyle.color;
this.exportColor(leaveValue | leaveStyle);
} else if(this.fromString(valueElement.value)) {
// OK
} else {
this.exportColor();
}
}
};
this.exportColor = function(flags) {
if(!(flags & leaveValue) && valueElement) {
var value = this.toString();
if(this.caps) { value = value.toUpperCase(); }
if(this.hash) { value = '#'+value; }
valueElement.value = value;
}
if(!(flags & leaveStyle) && styleElement) {
styleElement.style.backgroundColor =
'#'+this.toString();
styleElement.style.color =
0.213 * this.rgb[0] +
0.715 * this.rgb[1] +
0.072 * this.rgb[2]
< 0.5 ? '#FFF' : '#000';
}
if(!(flags & leavePad) && isPickerOwner()) {
redrawPad();
}
if(!(flags & leaveSld) && isPickerOwner()) {
redrawSld();
}
};
this.fromHSV = function(h, s, v, flags) { // null = don't change
h<0 && (h=0) || h>6 && (h=6);
s<0 && (s=0) || s>1 && (s=1);
v<0 && (v=0) || v>1 && (v=1);
this.rgb = HSV_RGB(
h===null ? this.hsv[0] : (this.hsv[0]=h),
s===null ? this.hsv[1] : (this.hsv[1]=s),
v===null ? this.hsv[2] : (this.hsv[2]=v)
);
this.exportColor(flags);
};
this.fromRGB = function(r, g, b, flags) { // null = don't change
r<0 && (r=0) || r>1 && (r=1);
g<0 && (g=0) || g>1 && (g=1);
b<0 && (b=0) || b>1 && (b=1);
var hsv = RGB_HSV(
r===null ? this.rgb[0] : (this.rgb[0]=r),
g===null ? this.rgb[1] : (this.rgb[1]=g),
b===null ? this.rgb[2] : (this.rgb[2]=b)
);
if(hsv[0] !== null) {
this.hsv[0] = hsv[0];
}
if(hsv[2] !== 0) {
this.hsv[1] = hsv[1];
}
this.hsv[2] = hsv[2];
this.exportColor(flags);
};
this.fromString = function(hex, flags) {
var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
if(!m) {
return false;
} else {
if(m[1].length === 6) { // 6-char notation
this.fromRGB(
parseInt(m[1].substr(0,2),16) / 255,
parseInt(m[1].substr(2,2),16) / 255,
parseInt(m[1].substr(4,2),16) / 255,
flags
);
} else { // 3-char notation
this.fromRGB(
parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
flags
);
}
return true;
}
};
this.toString = function() {
return (
(0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
(0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
(0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
);
};
function RGB_HSV(r, g, b) {
var n = Math.min(Math.min(r,g),b);
var v = Math.max(Math.max(r,g),b);
var m = v - n;
if(m === 0) { return [ null, 0, v ]; }
var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
return [ h===6?0:h, m/v, v ];
}
function HSV_RGB(h, s, v) {
if(h === null) { return [ v, v, v ]; }
var i = Math.floor(h);
var f = i%2 ? h-i : 1-(h-i);
var m = v * (1 - s);
var n = v * (1 - s*f);
switch(i) {
case 6:
case 0: return [v,n,m];
case 1: return [n,v,m];
case 2: return [m,v,n];
case 3: return [m,n,v];
case 4: return [n,m,v];
case 5: return [v,m,n];
}
}
function removePicker() {
delete jscolor.picker.owner;
document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB);
}
function drawPicker(x, y) {
if(!jscolor.picker) {
jscolor.picker = {
box : document.createElement('div'),
boxB : document.createElement('div'),
pad : document.createElement('div'),
padB : document.createElement('div'),
padM : document.createElement('div'),
sld : document.createElement('div'),
sldB : document.createElement('div'),
sldM : document.createElement('div')
};
for(var i=0,segSize=4; i<jscolor.images.sld[1]; i+=segSize) {
var seg = document.createElement('div');
seg.style.height = segSize+'px';
seg.style.fontSize = '1px';
seg.style.lineHeight = '0';
jscolor.picker.sld.appendChild(seg);
}
jscolor.picker.sldB.appendChild(jscolor.picker.sld);
jscolor.picker.box.appendChild(jscolor.picker.sldB);
jscolor.picker.box.appendChild(jscolor.picker.sldM);
jscolor.picker.padB.appendChild(jscolor.picker.pad);
jscolor.picker.box.appendChild(jscolor.picker.padB);
jscolor.picker.box.appendChild(jscolor.picker.padM);
jscolor.picker.boxB.appendChild(jscolor.picker.box);
}
var p = jscolor.picker;
// recompute controls positions
posPad = [
x+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset,
y+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset ];
posSld = [
null,
y+THIS.pickerBorder+THIS.pickerFace+THIS.pickerInset ];
// controls interaction
p.box.onmouseup =
p.box.onmouseout = function() { target.focus(); };
p.box.onmousedown = function() { abortBlur=true; };
p.box.onmousemove = function(e) { holdPad && setPad(e); holdSld && setSld(e); };
p.padM.onmouseup =
p.padM.onmouseout = function() { if(holdPad) { holdPad=false; jscolor.fireEvent(valueElement,'change'); } };
p.padM.onmousedown = function(e) { holdPad=true; setPad(e); };
p.sldM.onmouseup =
p.sldM.onmouseout = function() { if(holdSld) { holdSld=false; jscolor.fireEvent(valueElement,'change'); } };
p.sldM.onmousedown = function(e) { holdSld=true; setSld(e); };
// picker
p.box.style.width = 4*THIS.pickerInset + 2*THIS.pickerFace + jscolor.images.pad[0] + 2*jscolor.images.arrow[0] + jscolor.images.sld[0] + 'px';
p.box.style.height = 2*THIS.pickerInset + 2*THIS.pickerFace + jscolor.images.pad[1] + 'px';
// picker border
p.boxB.style.position = 'absolute';
p.boxB.style.clear = 'both';
p.boxB.style.left = x+'px';
p.boxB.style.top = y+'px';
p.boxB.style.zIndex = THIS.pickerZIndex;
p.boxB.style.border = THIS.pickerBorder+'px solid';
p.boxB.style.borderColor = THIS.pickerBorderColor;
p.boxB.style.background = THIS.pickerFaceColor;
// pad image
p.pad.style.width = jscolor.images.pad[0]+'px';
p.pad.style.height = jscolor.images.pad[1]+'px';
// pad border
p.padB.style.position = 'absolute';
p.padB.style.left = THIS.pickerFace+'px';
p.padB.style.top = THIS.pickerFace+'px';
p.padB.style.border = THIS.pickerInset+'px solid';
p.padB.style.borderColor = THIS.pickerInsetColor;
// pad mouse area
p.padM.style.position = 'absolute';
p.padM.style.left = '0';
p.padM.style.top = '0';
p.padM.style.width = THIS.pickerFace + 2*THIS.pickerInset + jscolor.images.pad[0] + jscolor.images.arrow[0] + 'px';
p.padM.style.height = p.box.style.height;
p.padM.style.cursor = 'crosshair';
// slider image
p.sld.style.overflow = 'hidden';
p.sld.style.width = jscolor.images.sld[0]+'px';
p.sld.style.height = jscolor.images.sld[1]+'px';
// slider border
p.sldB.style.position = 'absolute';
p.sldB.style.right = THIS.pickerFace+'px';
p.sldB.style.top = THIS.pickerFace+'px';
p.sldB.style.border = THIS.pickerInset+'px solid';
p.sldB.style.borderColor = THIS.pickerInsetColor;
// slider mouse area
p.sldM.style.position = 'absolute';
p.sldM.style.right = '0';
p.sldM.style.top = '0';
p.sldM.style.width = jscolor.images.sld[0] + jscolor.images.arrow[0] + THIS.pickerFace + 2*THIS.pickerInset + 'px';
p.sldM.style.height = p.box.style.height;
try {
p.sldM.style.cursor = 'pointer';
} catch(eOldIE) {
p.sldM.style.cursor = 'hand';
}
// load images in optimal order
switch(modeID) {
case 0: var padImg = 'hs.png'; break;
case 1: var padImg = 'hv.png'; break;
}
p.padM.style.background = "url('"+jscolor.getDir()+"cross.gif') no-repeat";
p.sldM.style.background = "url('"+jscolor.getDir()+"arrow.gif') no-repeat";
p.pad.style.background = "url('"+jscolor.getDir()+padImg+"') 0 0 no-repeat";
// place pointers
redrawPad();
redrawSld();
jscolor.picker.owner = THIS;
document.getElementsByTagName('body')[0].appendChild(p.boxB);
}
function redrawPad() {
// redraw the pad pointer
switch(modeID) {
case 0: var yComponent = 1; break;
case 1: var yComponent = 2; break;
}
var x = Math.round((THIS.hsv[0]/6) * (jscolor.images.pad[0]-1));
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.pad[1]-1));
jscolor.picker.padM.style.backgroundPosition =
(THIS.pickerFace+THIS.pickerInset+x - Math.floor(jscolor.images.cross[0]/2)) + 'px ' +
(THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.cross[1]/2)) + 'px';
// redraw the slider image
var seg = jscolor.picker.sld.childNodes;
switch(modeID) {
case 0:
var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
for(var i=0; i<seg.length; i+=1) {
seg[i].style.backgroundColor = 'rgb('+
(rgb[0]*(1-i/seg.length)*100)+'%,'+
(rgb[1]*(1-i/seg.length)*100)+'%,'+
(rgb[2]*(1-i/seg.length)*100)+'%)';
}
break;
case 1:
var rgb, s, c = [ THIS.hsv[2], 0, 0 ];
var i = Math.floor(THIS.hsv[0]);
var f = i%2 ? THIS.hsv[0]-i : 1-(THIS.hsv[0]-i);
switch(i) {
case 6:
case 0: rgb=[0,1,2]; break;
case 1: rgb=[1,0,2]; break;
case 2: rgb=[2,0,1]; break;
case 3: rgb=[2,1,0]; break;
case 4: rgb=[1,2,0]; break;
case 5: rgb=[0,2,1]; break;
}
for(var i=0; i<seg.length; i+=1) {
s = 1 - 1/(seg.length-1)*i;
c[1] = c[0] * (1 - s*f);
c[2] = c[0] * (1 - s);
seg[i].style.backgroundColor = 'rgb('+
(c[rgb[0]]*100)+'%,'+
(c[rgb[1]]*100)+'%,'+
(c[rgb[2]]*100)+'%)';
}
break;
}
}
function redrawSld() {
// redraw the slider pointer
switch(modeID) {
case 0: var yComponent = 2; break;
case 1: var yComponent = 1; break;
}
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.sld[1]-1));
jscolor.picker.sldM.style.backgroundPosition =
'0 ' + (THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.arrow[1]/2)) + 'px';
}
function isPickerOwner() {
return jscolor.picker && jscolor.picker.owner === THIS;
}
function blurTarget() {
if(valueElement === target) {
THIS.importColor();
}
if(THIS.pickerOnfocus) {
THIS.hidePicker();
}
}
function blurValue() {
if(valueElement !== target) {
THIS.importColor();
}
}
function setPad(e) {
var posM = jscolor.getMousePos(e);
var x = posM[0]-posPad[0];
var y = posM[1]-posPad[1];
switch(modeID) {
case 0: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), 1 - y/(jscolor.images.pad[1]-1), null, leaveSld); break;
case 1: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), null, 1 - y/(jscolor.images.pad[1]-1), leaveSld); break;
}
}
function setSld(e) {
var posM = jscolor.getMousePos(e);
var y = posM[1]-posPad[1];
switch(modeID) {
case 0: THIS.fromHSV(null, null, 1 - y/(jscolor.images.sld[1]-1), leavePad); break;
case 1: THIS.fromHSV(null, 1 - y/(jscolor.images.sld[1]-1), null, leavePad); break;
}
}
var THIS = this;
var modeID = this.pickerMode.toLowerCase()==='hvs' ? 1 : 0;
var abortBlur = false;
var
valueElement = jscolor.fetchElement(this.valueElement),
styleElement = jscolor.fetchElement(this.styleElement);
var
holdPad = false,
holdSld = false;
var
posPad,
posSld;
var
leaveValue = 1<<0,
leaveStyle = 1<<1,
leavePad = 1<<2,
leaveSld = 1<<3;
// target
jscolor.addEvent(target, 'focus', function() {
if(THIS.pickerOnfocus) { THIS.showPicker(); }
});
jscolor.addEvent(target, 'blur', function() {
if(!abortBlur) {
window.setTimeout(function(){ abortBlur || blurTarget(); abortBlur=false; }, 0);
} else {
abortBlur = false;
}
});
// valueElement
if(valueElement) {
var updateField = function() {
THIS.fromString(valueElement.value, leaveValue);
};
jscolor.addEvent(valueElement, 'keyup', updateField);
jscolor.addEvent(valueElement, 'input', updateField);
jscolor.addEvent(valueElement, 'blur', blurValue);
valueElement.setAttribute('autocomplete', 'off');
}
// styleElement
if(styleElement) {
styleElement.jscStyle = {
backgroundColor : styleElement.style.backgroundColor,
color : styleElement.style.color
};
}
// require images
switch(modeID) {
case 0: jscolor.requireImage('hs.png'); break;
case 1: jscolor.requireImage('hv.png'); break;
}
jscolor.requireImage('cross.gif');
jscolor.requireImage('arrow.gif');
this.importColor();
}
};
jscolor.install();

View File

@@ -1,115 +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) {
// 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();
// build query
$query = "SELECT
user.user_id,
user.user_pass,
user.user_displayname,
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
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_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'];
} else {
return FALSE;
}
} else {
return FALSE;
}
// no errors found, return
return TRUE;
}
function user_logout() {
// clear and destroy session
$_SESSION = array();
}
}
?>

View File

@@ -1,483 +0,0 @@
<?php
/*****************************************************************************
$Id: yapter.php,v 1.24 2006/01/31 07:30:28 nvie Exp $
Yapter 2.14b2 - Yet Another PHP Template Engine <20>
Copyright (C) 2001-2003 Vincent Driessen
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
For more information, visit http://yapter.sf.net/ or contact us at
nvie@users.sourceforge.net
The full terms of the GNU Lesser General Public License that apply to Yapter
can be found at http://yapter.sf.net/LICENSE
*****************************************************************************/
// Define Yapter's warning levels
define('E_YAPTER_NONE', 0); // Be completely silent
define('E_YAPTER_NOTICE', 1); // Report notices
define('E_YAPTER_WARNING', 2); // Report warnings
define('E_YAPTER_ERROR', 4); // Report errors
define('E_YAPTER_DIE_ON_ERROR', 8); // Die on errors
define('E_YAPTER_ALL', 15); // Report errors, warnings and notices
// Define Yapter's ignore levels
define('E_YAPTER_IGN_UNKNOWN_VARS', 16); // Ignore unknown variables
define('E_YAPTER_AUTO_HIDE_BLOCK', 32); // Automaticly hide unparsed blocks
class Template {
var $_ROOT = '__DOCUMENT_ROOT';
var $parseUnknownVars = false; // Defines whether unknown variables should be removed or left alone
var $blox = array(); // $blox[blockname]['content'] holds the template's content
// $blox[blockname]['numlines'] holds the number of lines in the block
// $blox[blockname]['parsed'] holds an array with the parsed data
// $blox[$_ROOT] always holds the main template
var $blockDefs = array(); // Keeps track of all block-definitions from which multiple blocks...
// ...can be created instances of
var $vars = array(); // This array contains all variables. All are accessible from all blocks.
var $warningLevel; // The level of verbosity Yapter complies with (see the E_* defines above)
var $startTime; // Holds the start time of the script, so that it can compare it to the...
// ...end time to calculate the execution time. (For debugging purposes only.)
var $missing_list; // List of variable names that are declared but never set.
/////////////////////////////////////////////////////////////////////
function error($msg)
{
if ($this->warningLevel & E_YAPTER_ERROR)
if ($this->warningLevel & E_YAPTER_DIE_ON_ERROR )
// if DIE_ON_ERROR is set, then do die on error!
die("<br />\n<b>Yapter error</b>: ".$msg."<br />\n"); // Die here!
else
// else just barf out the message
echo "<br />\n<b>Yapter error</b>: ".$msg."<br />\n";
}
function warning($msg)
{
if ($this->warningLevel & E_YAPTER_WARNING)
echo "<br />\n<b>Yapter warning</b>: ".$msg."<br />\n";
}
function notice($msg)
{
if ($this->warningLevel & E_YAPTER_NOTICE)
echo "<br />\n<b>Yapter notice</b>: ".$msg."<br />\n";
}
function warn_var_not_set($varname)
{
if (!in_array($varname, $this->missing_list) && !($this->warningLevel & E_YAPTER_IGN_UNKNOWN_VARS)) {
$this->missing_list[] = $varname; // Add it to the list...
// ...and print a warning once.
$this->warning('Variable <b>'.htmlspecialchars($varname).'</b> found, but never assigned a value. (This message is shown only once for each variable.)');
}
}
/////////////////////////////////////////////////////////////////////
function Template($file, $level = E_YAPTER_ALL)
{
if (is_bool($level)) {
//
// Rationale:
// =========
// Older Yapter versions had the possibility of turning
// on the so called "debug mode" with a bool parameter
// as the second argument to this constructor.
// However, since debug mode was dropped and the
// warning level support was built in, it was a logical
// step of replacing the second parameter.
//
// However, to prevent people from making mistakes,
// we'll check if the user passed a boolean parameter.
// If so, he or she is probably using debug mode, and
// we'll issue a notice in these cases.
//
// Thanks to Ivo Koster.
//
$this->notice('Debug mode is not supported anymore since Yapter version 2.12.');
$this->warningLevel = E_YAPTER_ALL;
}
else
$this->warningLevel = (int)$level;
$this->startTime = $this->getmicrotime();
$this->addBlockFromFile($this->_ROOT, $file);
$this->missing_list = array();
}
/* setParseMode(): specifies to parse unknown variables or not */
function setParseMode($parseUnknownVars)
{
$this->parseUnknownVars = (bool)$parseUnknownVars;
}
/* setWarningLevel(): sets the level of verbosity which Yapter should obey */
function setWarningLevel($level)
{
$this->warningLevel = $level;
}
/* addBlock(): adds a new block to the blox-array */
function addBlock($blockname, $content)
{
$this->blox[$blockname]['content'] = $content;
$this->blox[$blockname]['numlines'] = sizeof($this->blox[$blockname]['content']);
$this->blox[$blockname]['parsed'] = '';
$this->prepare($blockname);
}
/* addBlockFromFile(): adds a new block, filling it with the specified's file contents */
function addBlockFromFile($blockname, $file)
{
$content = @file($file) or $this->error('Cannot open template file <b>'.htmlspecialchars($file).'</b>!');
//--- eliminate double block def mod -klp
// if ($blockname != $this->_ROOT)
// $this->addBlockDef($blockname, $content);
$this->addBlock($blockname, $content);
}
/* addBlockDef(): adds a block definition to the block-definition array from which other blocks can be copied */
function addBlockDef($blockdef, $content)
{
/* if (isset($this->blockDefs[$blockdef]))
$this->error('Block "'.htmlspecialchars($blockdef).'" allready exists. I cannot create it twice.');
else
$this->blockDefs[$blockdef] = $content;
*/
$this->blockDefs[$blockdef] = $content;
}
/* addBlockFromDef(): copies a block from the block definition array */
function addBlockFromDef($blockname, $blockdef)
{
$this->addBlock($blockname, $this->blockDefs[$blockdef]);
}
/* prepare(): handles subprocessing of templates found in the main template file */
function prepare($blockname)
{
$currblockcontents = array();
$block = &$this->blox[$blockname];
for ($i = 0; $i < $block['numlines']; $i++) {
if (isset($block['content'][$i]))
$line = $block['content'][$i];
else
continue;
// Try to find a tag-definition on this line
if (preg_match('/\[(INCLUDE|BLOCK|END|REUSE|SET) ([A-Za-z0-9_.\/-]+)( AS ([A-Za-z0-9_-]+))?]/', $line, $matches)) {
$type = $matches[1];
$name = (!empty($matches[4])) ? $matches[4] : $matches[2];
if ($type == 'END' && !isset($currblockdef))
$this->error('"[END '.$name.']" found without matching "[BLOCK '.$name.']" or "[SET '.$name.']"');
if ($type == 'END' && $matches[2] == $currblockdef) {
if (isset($matches[4]))
$this->error('Given "AS"-parameter not allowed in END-tags!');
// End the current block definition: add the block to the blox-array
//--- if wrapper mod -klp
if (isset($currblockdef) && isset($currblockcontents) && isset($currblockname)) {
$this->addBlockDef($currblockdef, $currblockcontents);
$this->addBlockFromDef($currblockname, $currblockdef);
}
// Now, try to remove the block from the template definition, replacing it with a var
for ($j = $i; $j >= $currblockstart; $j--) {
if ($j == $currblockstart && $currblocktype == 'BLOCK')
$block['content'][$j] = "{" . $currblockname . "}";
else
unset($block['content'][$j]);
}
// unset these thingies for further preparing
unset($currblocktype);
unset($currblockstart);
unset($currblockname);
unset($currblockdef);
$currblockcontents = array();
} elseif (($type == 'SET' || $type == 'BLOCK') && !isset($currblockname)) {
if ($type == 'BLOCK') {
// Start block definition
$currblocktype = $type;
$currblockstart = $i;
$currblockname = $name;
$currblockdef = $matches[2];
} else { // SET-tag
// Start block definition
if (isset($matches[4]))
$this->error('Given "AS"-parameter not allowed in SET-tags!');
$currblocktype = $type;
$currblockstart = $i;
$currblockname = $matches[2];
$currblockdef = $matches[2];
}
} elseif ($type == 'INCLUDE' && !isset($currblockname)) {
// Make this line a variable...
$block['content'][$i] = "{" . $name . "}\n";
// ...and include the given file...
$this->addBlockFromFile($name, $matches[2]);
} elseif ($type == 'REUSE' && !isset($currblockname)) {
if (!isset($matches[4]))
$this->error('Missing "AS"-parameter in [REUSE <b>$name</b>] tag!');
// Make this line a variable...
$block['content'][$i] = "{" . $matches[4] . "}\n";
// ...and get this REUSE value from the block definition list...
$this->addBlockFromDef($matches[4], $matches[2]);
} elseif ($currblockname != $name) {
if ($currblockname)
$currblockcontents[] = $line;
}
} else {
// No tag-definition... just normal text so do nothing here
if (!empty($currblockname))
$currblockcontents[] = $line;
}
}
}
/* parse(): parses the specified block, filling variables and nested blockdefs */
function parse($blockname = '')
{
if (!$blockname)
$blockname = $this->_ROOT;
if (!isset($this->blox[$blockname]))
$this->error('Block "'.htmlspecialchars($blockname).'" does not exist.');
$block = &$this->blox[$blockname];
$parsed = $block['content'];
// Loop through all the lines of the template and parse variables one-by-one
for ($i = 0; $i < $block['numlines']; $i++) {
if (!isset($parsed[$i]))
continue;
$line = $parsed[$i];
// Look for variables in this line, processing it character-by-character
unset($start);
unset($buffer);
for ($j = 0; $j < strlen($line); $j++) {
$char = $line[$j];
if (!isset($start) && $char == '{')
$start = $j;
elseif (isset($start) && $char == '}') {
// The sequence {} is not a valid variable value
if (!isset($buffer)) {
unset($start);
continue;
} else {
// Gotcha! Now replace this variable with its contents
// First, check to see if it's a variable or a block that has to be parsed
if (isset($this->vars[$buffer]))
$value = $this->vars[$buffer];
elseif (isset($this->blox[$buffer])) {
if ($this->blox[$buffer]['parsed']) {
// The value must be filled with the parsed data from the $buffer block
$value = @implode('', $this->blox[$buffer]['parsed']);
} elseif ($this->warningLevel & E_YAPTER_AUTO_HIDE_BLOCK) {
// Automaticly hide unparsed bloks
$value = "";
} else {
// Make the recursive call now
$value = @implode('', $this->parse($buffer));
}
} else {
// No variable or block name found by the name of $buffer
// First, issue a warning!
$this->warn_var_not_set($buffer);
if ($this->parseUnknownVars) {
// Unable to find variable, replace this one with an empty
// string silently.
$value = '';
} else {
// Unable to find variable, leave this one alone...
unset($start);
unset($buffer);
continue;
}
}
$part1 = substr($line, 0, $start);
$part2 = substr($line, $start + strlen($buffer) + 2);
$line = $part1 . $value . $part2;
$j += strlen($value) - (strlen($buffer) + 2);
unset($start);
unset($buffer);
}
} elseif (isset($start)) {
// Check to see $char is a proper character (range: [A-Za-z0-9_./-])
// In Yapter 2.13b2, I've added the '/' char as well, to support inclusion
// from Unix paths, like '../../foo.tpl'
if (($char >= 'a' && $char <= 'z') || ($char >= '0' && $char <= '9') || ($char >= 'A' && $char <= 'Z') || ($char == '_') || ($char == '.') || ($char == '-') || ($char == '/')) {
if (!empty($buffer))
$buffer .= $char;
else
$buffer = $char;
} else {
unset($start);
unset($buffer);
}
}
}
$parsed[$i] = $line;
}
if (is_array($this->blox[$blockname]['parsed'])) {
$this->blox[$blockname]['parsed'] = array_merge($this->blox[$blockname]['parsed'], $parsed);
} else {
//--- array cast mod -klp
$this->blox[$blockname]['parsed'] = (array) $parsed;
}
return $this->blox[$blockname]['parsed'];
}
/* set(): assigns a value to a variabele inside curly brackets ('{' and '}') */
function set($varname, $value)
{
if (isset($value))
$this->vars[$varname] = $value;
else
$this->warning('Trying to set <b>'.htmlspecialchars($varname).'</b> to NULL. Variable not set.');
}
/* setVars(): assigns values to variables for each element in the given array
Contributed by: Raniz
*/
function setVars($variables)
{
if (!is_array($variables))
$this->error('Value passed to setVars is not an array.');
foreach($variables as $varname => $value)
$this->vars[$varname] = $value;
}
/* setFile(): assigns the contents of a file to a variabele inside curly brackets ('{' and '}') */
function setFile($varname, $filename)
{
if (!file_exists($filename))
$this->error('Cannot open file "'.htmlspecialchars($filename).'" for inclusion in "'.htmlspecialchars($varname).'".');
$value = implode('', file($filename));
$this->set($varname, $value);
}
/* getVar(): returns the value of the 'varname' variable */
function getVar($varname)
{
if ($this->vars[$varname])
return $this->vars[$varname];
else
return false;
}
/* getBlock(): returns the content of the 'blockname' block */
function getBlockContent($blockname)
{
if ($this->$blox[$blockname]['content'])
return @implode('', $this->$blox[$blockname]['content']);
else
return false;
}
/* replace(): replaces the content of one block by another */
function replace($block, $byblock)
{
if (!isset($this->blox[$block]))
$this->error('Block "'.htmlspecialchars($block).'" does not exist.');
if (!isset($this->blox[$byblock]))
$this->error('Block "'.htmlspecialchars($block).'" does not exist.');
$this->blox[$block]['content'] = $this->blox[$byblock]['content'];
$this->blox[$block]['numlines'] = $this->blox[$byblock]['numlines'];
}
/* hide(): hides all the contents of the given block */
function hide($block)
{
if (!isset($this->blox[$block]))
$this->error('Block "'.htmlspecialchars($block).'" does not exist.');
$this->blox[$block]['content'] = array();
$this->blox[$block]['numlines'] = 0;
}
/* clear(): resets the parsed data to an empty string again and defines the block as 'unparsed' */
function clear($blockname)
{
if (!isset($this->blox[$blockname]))
$this->error('Block "'.htmlspecialchars($blockname).'" does not exist.');
$this->blox[$blockname]['parsed'] = '';
unset($this->vars[$blockname]); // often, a variabele is set whenever a block should be discarded...
// ...now reset such a variable to make sure the block is not overriden
}
/* getContents(): gets the final contents to be outputted on the screen */
function getContents($blockname = '')
{
if ($blockname == '') $blockname = $this->_ROOT;
$parsed = $this->blox[$blockname]['parsed'];
if ($parsed)
return implode('', $parsed);
else
return false;
}
/* spit(): ouputs contents to screen */
function spit()
{
echo $this->getContents();
}
function getmicrotime()
{
/* I got this getmicrotime()-function from the PHP.net website, but it seems to be
buggy, while it sometimes displays a negative execution time when you substract
the current time with the starting time of the script... I only noticed it at
my Windows localhost machine, not on *nix servers. Is anybody familiar with this
behaviour? Any information about this is welcome at nvie@users.sourceforge.net
for your co-operation. */
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
function execTime()
{
return round($this->getmicrotime() - $this->startTime, 5);
}
function executionTime()
{
echo "<p>\n\nThe execution time is <b>".$this->execTime()."</b> seconds.<br>\n";
}
}
?>

View File

@@ -1,127 +1,42 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of include("header.php");
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. $sql = "SELECT location_id AS id, location_name AS value, location_parent AS parent_id
FROM location
You should have received a copy of the GNU General Public License ORDER BY location_parent, location_sort, location_name";
along with this program. If not, see <http://www.gnu.org/licenses/>. $sth = $dbh->query($sql);
$locations = $sth->fetchAll();
For more information, visit http://sourceforge.net/projects/ipreg,
or contact me at wietsew@users.sourceforge.net // function for recursion
*****************************************************************************/ function build_tree($parent_id, $level) {
global $locations;
// start page $children = array();
// includes foreach ($locations as $key => $location) {
include("includes.php"); if ($location['parent_id'] == $parent_id) {
unset($location['parent_id']);
// start output $location['children'] = build_tree($location['id'], $level+1);
include("header.php"); $location['level'] = $level;
$location['href'] = 'locationview.php?location_id=' . $location['id'];
// set template $children[] = $location;
$tp = new Template("tpl/location.tpl", $config_yapter_error); }
}
// set language variables return $children;
$tp->setvars($lang); }
// start location $tree = build_tree(0, 0);
// look for locations $smarty->assign("locations", $tree);
// build query
$query = "SELECT $smarty->display("location.tpl");
location.location_id AS location_id,
location.location_name AS location_name, include("footer.php");
location.location_parent AS location_parent ?>
FROM
location
ORDER BY
location.location_name";
// run query
$locations = $db->db_select($query);
// count results
$location_counter = count($locations);
// counter to tpl
$tp->set("location_counter", $location_counter);
// any loactions?
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
// function to look for parents and create a new array for every child
function location($parents, $parent = 0) {
// loop array to check
foreach($parents[$parent] as $child) {
if(isset($parents[$child])) {
// element has children
$children[$child] = location($parents, $child);
} else {
// no children, set NULL
$children[$child] = NULL;
}
}
// and again...
return $children;
}
// to tpl
// recursive children check to template
function checkchildren($locations, $level) {
// include template class
global $tp;
// import location names
global $location_names;
// action!
foreach ($locations as $parent=>$child) {
// send vars to template
$tp->set("location_id", $parent);
$tp->set("location_name", $location_names[$parent]);
$tp->set("nbsp", str_repeat("-&nbsp;&nbsp;",$level));
$tp->parse("location_row");
// any children?
if($child != "") {
// yes, so do the loop again!
checkchildren($child, $level+1);
}
}
// parse and clear for the next round
$tp->parse("location_table");
$tp->clear("location_table");
}
// assemble the tree
$tree = location($parents);
// check for values and build template
checkchildren($tree, 0);
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

View File

@@ -1,139 +1,75 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $location_parent = sanitize($_GET['location_parent']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. // ************* <option value="0">{$lang_option_none}</option>
For more information, visit http://sourceforge.net/projects/ipreg, $sql = "SELECT location_id AS id, location_name AS name,
or contact me at wietsew@users.sourceforge.net location_parent AS parent, location_sort AS sort
*****************************************************************************/ FROM location
ORDER BY location_parent, location_sort, location_name";
// start page $sth = $dbh->query($sql);
// includes $locations = $sth->fetchAll();
include("includes.php");
if (count($locations) > 0) {
// get id foreach ($locations AS $location) {
$location_parent = sanitize($_GET['location_parent']); $location_names[$location['id']] = $location['name'];
$parents[$location['parent']][] = $location['id'];
// start output }
include("header.php"); }
// set template // look for parents
$tp = new Template("tpl/locationadd.tpl", $config_yapter_error); // function to look for parents and create a new array for every child
function location($parents, $parent = 0) {
// set language variables foreach ($parents[$parent] as $child) {
$tp->setvars($lang); if (isset($parents[$child])) {
// element has children
// start parent $children[$child] = location($parents, $child);
// look for locations } else {
// build query // no children, set NULL
$query = "SELECT $children[$child] = NULL;
location.location_id AS location_id, }
location.location_name AS location_name, }
location.location_parent AS location_parent return $children;
FROM }
location
ORDER BY // recursive children check to template
location.location_name"; function checkchildren($locations, $level) {
global $location_options;
// run query global $location_names;
$locations = $db->db_select($query); global $location_parent;
// count results foreach ($locations as $parent=>$child) {
$location_counter = count($locations); $row = str_repeat("-&nbsp;&nbsp;", $level) . $location_names[$parent];
$location_options[$parent] = $row;
// any loactions? if (isset($child)) {
if ($location_counter>0) { checkchildren($child, $level+1);
// get objects }
foreach($locations AS $location) { }
// create arrays }
$location_names[$location['location_id']] = $location['location_name'];
$parents[$location['location_parent']][] = $location['location_id']; $tree = location($parents);
}
} // create tree option list
$location_options = array(0 => '-');
// look for parents checkchildren($tree, 0);
// function to look for parents and create a new array for every child
function location($parents, $parent = 0) { $smarty->assign("location_options", $location_options);
// loop array to check $smarty->assign("location_parent", $location_parent);
foreach($parents[$parent] as $child) {
if(isset($parents[$child])) { $smarty->display("locationadd.tpl");
// element has children
$children[$child] = location($parents, $child); include("footer.php");
} else { ?>
// no children, set NULL
$children[$child] = NULL;
}
}
// and again...
return $children;
}
// to tpl
// recursive children check to template
function checkchildren($locations, $level) {
// include template class
global $tp;
// import location names
global $location_names;
// import location names
global $location_parent;
// action!
foreach ($locations as $parent=>$child) {
// send vars to template
$tp->set("location_id", $parent);
$tp->set("location_name", $location_names[$parent]);
$tp->set("nbsp", str_repeat("-&nbsp;&nbsp;",$level));
// set parent selected
if($parent==$location_parent) {
$tp->set("location_selected", "selected");
} else {
$tp->set("location_selected", "");
}
// parse block
$tp->parse("location_row");
// any children?
if($child != "") {
// yes, so do the loop again!
checkchildren($child, $level+1);
}
}
// parse and clear for the next round
$tp->parse("location_table");
$tp->clear("location_table");
}
// assemble the tree
$tree = location($parents);
// check for values and build template
checkchildren($tree, 0);
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

View File

@@ -1,62 +1,24 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $location_id = sanitize($_GET['location_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT location_id AS id, location_name AS name FROM location WHERE location_id=?";
along with this program. If not, see <http://www.gnu.org/licenses/>. $sth = $dbh->prepare($sql);
$sth->execute([$location_id]);
For more information, visit http://sourceforge.net/projects/ipreg, $smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/ $smarty->display("locationdel.tpl");
// start page include("footer.php");
// includes ?>
include("includes.php");
// get id
$location_id = sanitize($_GET['location_id']);
// start output
include("header.php");
// set template
$tp = new Template("tpl/locationdel.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup location
// build query
$query = "SELECT
location.location_name AS location_name
FROM
location
WHERE
location.location_id=" . $location_id;
// run query
$location = $db->db_select($query);
// send to tpl
$tp->set("location_id", $location_id);
$tp->set("location_name", $location[0]['location_name']);
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

View File

@@ -1,167 +1,98 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $location_id = sanitize($_GET['location_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License // location
along with this program. If not, see <http://www.gnu.org/licenses/>. $sql = "SELECT location_id AS id, location_name AS name, location_parent AS parent,
location_info AS info, location_sort AS sort
For more information, visit http://sourceforge.net/projects/ipreg, FROM location
or contact me at wietsew@users.sourceforge.net WHERE location_id=?";
*****************************************************************************/ $sth = $dbh->prepare($sql);
$sth->execute([$location_id]);
// start page $location = $sth->fetch(PDO::FETCH_OBJ);
// includes
include("includes.php"); $location_parent = $location->parent;
// get id $smarty->assign("location", $location);
$location_id = sanitize($_GET['location_id']);
/*$smarty->assign("location_id", $location_id);
// start output $smarty->assign("location_name", $location[0]['location_name']);
include("header.php"); $smarty->assign("location_info", $location[0]['location_info']);
$smarty->assign("location_sort", $location[0]['location_sort']); */
// set template
$tp = new Template("tpl/locationedit.tpl", $config_yapter_error); // parent location
$sql = "SELECT location_id, location_name, location_parent
// set language variables FROM location
$tp->setvars($lang); WHERE location_id != ?
ORDER BY location_name";
// setup location $sth = $dbh->prepare($sql);
// build query $sth->execute([$location_id]);
$query = "SELECT
location.location_name AS location_name, $locations = $sth->fetchAll();
location.location_parent AS location_parent,
location.location_info AS location_info $location_counter = count($locations);
FROM
location $smarty->assign("location_counter", $location_counter);
WHERE
location.location_id=" . $location_id; // any loactions?
if ($location_counter>0) {
// run query foreach($locations AS $location) {
$location = $db->db_select($query); $location_names[$location['location_id']] = $location['location_name'];
$parents[$location['location_parent']][] = $location['location_id'];
// get parent }
$location_parent = $location[0]['location_parent']; }
// send to tpl // look for parents
$tp->set("location_id", $location_id); // function to look for parents and create a new array for every child
$tp->set("location_name", $location[0]['location_name']); function location($parents, $parent = 0) {
$tp->set("location_info", $location[0]['location_info']); // loop array to check
foreach($parents[$parent] as $child) {
// setup parent location if(isset($parents[$child])) {
// look for locations // element has children
// build query $children[$child] = location($parents, $child);
$query = "SELECT } else {
location.location_id AS location_id, // no children, set NULL
location.location_name AS location_name, $children[$child] = NULL;
location.location_parent AS location_parent }
FROM }
location
ORDER BY // and again...
location.location_name"; return $children;
}
// run query
$locations = $db->db_select($query); // recursive children check to template
function checkchildren($locations, $level) {
// count results global $location_options;
$location_counter = count($locations); global $location_names;
global $location_parent;
// counter to tpl
$tp->set("location_counter", $location_counter); foreach ($locations as $parent=>$child) {
$row = str_repeat("-&nbsp;&nbsp;", $level) . $location_names[$parent];
// any loactions? $location_options[$parent] = $row;
if ($location_counter>0) { if(isset($child)) {
// get objects checkchildren($child, $level+1);
foreach($locations AS $location) { }
// create arrays }
$location_names[$location['location_id']] = $location['location_name']; }
$parents[$location['location_parent']][] = $location['location_id'];
} $tree = location($parents);
} $location_options = array(0 => '-');
checkchildren($tree, 0);
// look for parents $smarty->assign("location_options", $location_options);
// function to look for parents and create a new array for every child $smarty->assign("location_parent", $location_parent);
function location($parents, $parent = 0) {
// loop array to check $smarty->display("locationedit.tpl");
foreach($parents[$parent] as $child) {
if(isset($parents[$child])) { include("footer.php");
// element has children ?>
$children[$child] = location($parents, $child);
} else {
// no children, set NULL
$children[$child] = NULL;
}
}
// and again...
return $children;
}
// to tpl
// recursive children check to template
function checkchildren($locations, $level) {
// include template class
global $tp;
// import location names
global $location_names;
// import current id
global $location_id;
// import parent
global $location_parent;
// action!
foreach ($locations as $parent=>$child) {
// send vars to template
$tp->set("parentlocation_id", $parent);
$tp->set("parentlocation_name", $location_names[$parent]);
$tp->set("nbsp", str_repeat("-&nbsp;&nbsp;",$level));
// set parent selected
if($parent==$location_parent) {
$tp->set("parentlocation_selected", "selected");
} else {
$tp->set("parentlocation_selected", "");
}
// parse block
$tp->parse("parentlocation_row");
// any children?
if($child != "") {
// yes, so do the loop again!
checkchildren($child, $level+1);
}
}
// parse and clear for the next round
$tp->parse("parentlocation_table");
$tp->clear("parentlocation_table");
}
// assemble the tree
$tree = location($parents);
// check for values and build template
checkchildren($tree, 0);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,107 +1,28 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $location_id = sanitize($_GET['location_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT location_id AS id, location_name AS name
along with this program. If not, see <http://www.gnu.org/licenses/>. FROM location
WHERE location_id=?";
For more information, visit http://sourceforge.net/projects/ipreg, $sth = $dbh->prepare($sql);
or contact me at wietsew@users.sourceforge.net $sth->execute([$location_id]);
*****************************************************************************/ $smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
// start page $smarty->assign("subnet_options", db_get_options_subnet());
// includes
include("includes.php"); $smarty->display("locationsubnetadd.tpl");
// get ip and id include("footer.php");
$location_id = sanitize($_GET['location_id']); ?>
// start output
include("header.php");
// set template
$tp = new Template("tpl/locationsubnetadd.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup location
// build query
$query = "SELECT
location.location_name AS location_name
FROM
location
WHERE
location.location_id=" . $location_id;
// run query
$location = $db->db_select($query);
$tp->set("location_id", $location_id);
$tp->set("location_name", $location[0]['location_name']);
// setup subnet
// build query
$query = " SELECT
subnet.subnet_id AS subnet_id,
subnet.subnet_address AS subnet_address,
subnet.subnet_mask AS subnet_mask
FROM
subnet
WHERE
subnet.subnet_id NOT IN (
SELECT
subnet_id
FROM
subnetlocation
WHERE
location_id=" . $location_id . "
)
ORDER BY
INET_ATON(subnet.subnet_address)";
// run query
$subnets = $db->db_select($query);
// count results
$subnet_counter = count($subnets);
// any locations?
if ($subnet_counter>0) {
// get objects
foreach($subnets AS $subnet) {
// send to tpl
$tp->set("subnet_id", $subnet['subnet_id']);
$tp->set("subnet_address", $subnet['subnet_address']);
$tp->set("subnet_mask", $subnet['subnet_mask']);
// parse row
$tp->parse("subnet_row");
}
// parse block
$tp->parse("subnet_table");
} else {
// hide block
$tp->hide("subnet_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,102 +1,44 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $location_id = sanitize($_GET['location_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License // location
along with this program. If not, see <http://www.gnu.org/licenses/>. $sql = "SELECT location_id AS id, location_name AS name
FROM location
For more information, visit http://sourceforge.net/projects/ipreg, WHERE location_id=?";
or contact me at wietsew@users.sourceforge.net $sth = $dbh->prepare($sql);
*****************************************************************************/ $sth->execute([$location_id]);
$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
// start page
// includes
include("includes.php"); // subnet
$sql = "SELECT
// get ip and id s.subnet_id,
$location_id = sanitize($_GET['location_id']); s.subnet_address,
s.subnet_mask
// start output FROM
include("header.php"); subnetlocation AS l LEFT JOIN subnet AS s USING (subnet_id)
WHERE
// set template l.location_id=?
$tp = new Template("tpl/locationsubnetdel.tpl", $config_yapter_error); ORDER BY
INET_ATON(s.subnet_address)";
// set language variables $sth = $dbh->prepare($sql);
$tp->setvars($lang); $sth->execute([$location_id]);
// setup location $smarty->assign($sth->fetchAll());
// build query
$query = "SELECT $smarty->display("locationsubnetdel.tpl");
location.location_name AS location_name
FROM include("footer.php");
location ?>
WHERE
location.location_id=" . $location_id;
// run query
$location = $db->db_select($query);
$tp->set("location_id", $location_id);
$tp->set("location_name", $location[0]['location_name']);
// setup subnet
// build query
$query = "SELECT
subnet.subnet_id AS subnet_id,
subnet.subnet_address AS subnet_address,
subnet.subnet_mask AS subnet_mask
FROM
subnetlocation,
subnet
WHERE
subnetlocation.location_id=" . $location_id . "
AND subnet.subnet_id=subnetlocation.subnet_id
ORDER BY
INET_ATON(subnet.subnet_address)";
// run query
$subnets = $db->db_select($query);
// count results
$subnet_counter = count($subnets);
// any locations?
if ($subnet_counter>0) {
// get objects
foreach($subnets AS $subnet) {
// send to tpl
$tp->set("subnet_id", $subnet['subnet_id']);
$tp->set("subnet_address", $subnet['subnet_address']);
$tp->set("subnet_mask", $subnet['subnet_mask']);
// parse row
$tp->parse("subnet_row");
}
// parse block
$tp->parse("subnet_table");
} else {
// hide block
$tp->hide("subnet_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,62 +1,26 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $location_id = sanitize($_GET['location_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT location_id AS id, location_name AS name
along with this program. If not, see <http://www.gnu.org/licenses/>. FROM location
WHERE location_id=?";
For more information, visit http://sourceforge.net/projects/ipreg, $sth = $dbh->prepare($sql);
or contact me at wietsew@users.sourceforge.net $sth->execute([$location_id]);
*****************************************************************************/ $smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
// start page $smarty->display("locationsubnetedit.tpl");
// includes
include("includes.php"); include("footer.php");
?>
// get ip and id
$location_id = sanitize($_GET['location_id']);
// start output
include("header.php");
// set template
$tp = new Template("tpl/locationsubnetedit.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup location
// build query
$query = "SELECT
location.location_name AS location_name
FROM
location
WHERE
location.location_id=" . $location_id;
// run query
$location = $db->db_select($query);
// send to tpl
$tp->set("location_id", $location_id);
$tp->set("location_name", $location[0]['location_name']);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,214 +1,67 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $location_id = sanitize($_GET['location_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the if ((isset($_GET['id'])) ? $id = sanitize($_GET['id']) : $id = '');
GNU General Public License for more details.
include("header.php");
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
// base location
For more information, visit http://sourceforge.net/projects/ipreg, $sql = "SELECT location_id AS id, location_name AS name,
or contact me at wietsew@users.sourceforge.net location_parent AS parent_id, location_info AS info,
*****************************************************************************/ CONCAT('locationview.php?location_id=', location_id) AS url
FROM location
// start page WHERE location_id=?";
// includes $sth = $dbh->prepare($sql);
include("includes.php"); $sth->execute([$location_id]);
$location = $sth->fetch(PDO::FETCH_OBJ);
// get id $smarty->assign("location", $location);
$location_id = sanitize($_GET['location_id']);
// crumbs
// start output $crumbs[] = $location;
include("header.php"); $sql = "SELECT location_id AS id, location_name AS name,
location_parent AS parent_id,
// set template CONCAT('locationview.php?location_id=', location_id) AS url
$tp = new Template("tpl/locationview.tpl", $config_yapter_error); FROM location
WHERE location_id=?";
// set language variables $sth = $dbh->prepare($sql);
$tp->setvars($lang); while ($crumbs[0]->parent_id != 0) {
$sth->execute([$crumbs[0]->parent_id]);
// start locationcrumb $result = $sth->fetch(PDO::FETCH_OBJ);
// get locations array_unshift($crumbs, $result);
// build query }
$query = "SELECT $smarty->assign("crumbs", $crumbs);
location.location_id AS location_id,
location.location_name AS location_name, // sublocations
location.location_parent AS location_parent $sql = "SELECT location_id AS sublocation_id, location_name AS sublocation_name,
FROM LEFT(location_info, 40) AS info_short,
location"; CHAR_LENGTH(location_info) AS info_length
FROM location
// run query WHERE location_parent=?
$locations = $db->db_select($query); ORDER BY location_name";
$sth = $dbh->prepare($sql);
// count results $sth->execute([$location_id]);
$location_counter = count($locations); $smarty->assign("sublocations", $sth->fetchAll());
// counter to tpl // subnets
$tp->set("location_counter", $location_counter); $sql = "SELECT s.subnet_id, s.subnet_address, s.subnet_mask
FROM subnet AS s LEFT JOIN subnetlocation AS l USING (subnet_id)
// any loactions? WHERE l.location_id=?
if ($location_counter>0) { ORDER BY INET_ATON(s.subnet_address)";
// get objects $sth = $dbh->prepare($sql);
foreach($locations AS $location) { $sth->execute([$location_id]);
// create arrays $smarty->assign("subnets", $sth->fetchAll());
$location_names[$location['location_id']] = $location['location_name'];
$parents[$location['location_id']] = $location['location_parent']; $smarty->display("locationview.tpl");
}
} include("footer.php");
?>
// build parents array
// function to build array with parents for this location
function parent($location_id) {
// use names index
global $parents;
global $crumbs;
global $location_names;
// fill array with this value
$crumbs[$location_id] = $location_id;
if (($parents[$location_id])>0) {
// still not on top, so do it again
parent($parents[$location_id]);
}
// return the array
return $location_id;
}
// build parents
parent($location_id);
// to tpl
// loop in reverse order
foreach (array_reverse($crumbs) as $key=>$val) {
// send vars to template
$tp->set("location_id", $val);
$tp->set("location_name", $location_names[$val]);
// include seperator?
if (($key>0) ? $tp->set("seperator", ".&nbsp;") : $tp->set("seperator", ""));
// parse block
$tp->parse("locationcrumb_row");
}
// parse block
$tp->parse("locationcrumb_table");
// setup location
// build query
$query = "SELECT
location.location_info AS location_info
FROM
location
WHERE
location.location_id=" . $location_id;
// run query
$location = $db->db_select($query);
// send to tpl
$tp->set("location_id", $location_id);
$tp->set("location_info", nl2br($location[0]['location_info']));
// setup sublocations
// build query
$query = "SELECT
location.location_id AS sublocation_id,
location.location_name AS sublocation_name
FROM
location
WHERE
location.location_parent=" . $location_id . "
ORDER BY
location.location_name";
// run query
$sublocations = $db->db_select($query);
// count results
$sublocation_counter = count($sublocations);
// counter to tpl
$tp->set("sublocation_counter", $sublocation_counter);
// any nodes?
if ($sublocation_counter>0) {
// get objects
foreach($sublocations AS $sublocation) {
// send to tpl
$tp->set("sublocation_id", $sublocation['sublocation_id']);
$tp->set("sublocation_name", $sublocation['sublocation_name']);
// parse row
$tp->parse("sublocation_row");
}
// parse block
$tp->parse("sublocation_table");
} else {
// hide block
$tp->hide("sublocation_table");
}
// setup subnets
// build query
$query = "SELECT
subnet.subnet_id AS subnet_id,
subnet.subnet_address AS subnet_address,
subnet.subnet_mask AS subnet_mask
FROM
subnet,
subnetlocation
WHERE
subnetlocation.location_id=" . $location_id . "
AND subnetlocation.subnet_id=subnet.subnet_id
ORDER BY
INET_ATON(subnet.subnet_address)";
// run query
$subnets = $db->db_select($query);
// count results
$subnet_counter = count($subnets);
// counter to tpl
$tp->set("subnet_counter", $subnet_counter);
// any nodes?
if ($subnet_counter>0) {
// get objects
foreach($subnets AS $subnet) {
// send to tpl
$tp->set("subnet_id", $subnet['subnet_id']);
$tp->set("subnet_address", $subnet['subnet_address']);
$tp->set("subnet_mask", $subnet['subnet_mask']);
// parse row
$tp->parse("subnet_row");
}
// parse block
$tp->parse("subnet_table");
} else {
// hide block
$tp->hide("subnet_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// footer
include("footer.php");
?>

199
login.php
View File

@@ -1,79 +1,120 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
session_name('ipreg');
This program is distributed in the hope that it will be useful, session_start();
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the if (! include("config.php")) {
GNU General Public License for more details. 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);
You should have received a copy of the GNU General Public License }
along with this program. If not, see <http://www.gnu.org/licenses/>.
// connect to database
For more information, visit http://sourceforge.net/projects/ipreg, $dbh = new PDO("mysql:host=$config_mysql_host;dbname=$config_mysql_dbname;charset=utf8", $config_mysql_username, $config_mysql_password);
or contact me at wietsew@users.sourceforge.net $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
*****************************************************************************/ $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
// session include("lib.php"); // only for get_language from browser. TODO: simplify
// start session
session_start(); function user_login ($user_name, $user_pass) {
global $dbh;
// headers
// raw http headers if (strlen($user_name) < 1) {
header("Content-Type: text/html; charset=utf-8"); return FALSE;
}
// includes
// includes if (strlen($user_pass) < 1) {
include("config.php"); return FALSE;
include("dbconnect.php"); }
// load lib $sql = "SELECT user_id, user_pass, user_displayname, user_language,
include("lib.php"); user_imagesize, user_imagecount, user_mac, user_dateformat,
user_dns1suffix, user_dns2suffix, user_tooltips,
// include language file user_menu, user_role, user_flags
include('lang/en.php'); FROM user
WHERE user_name=?";
// try login? $sth = $dbh->prepare($sql);
// check for submit $sth->execute([$user_name]);
if ($_SERVER['REQUEST_METHOD']=="POST" ) {
/// get post info if (!$user = $sth->fetch(PDO::FETCH_OBJ)) {
$user_name = sanitize($_POST['user_name']); // no user record found
$user_pass = sanitize($_POST['user_pass']); return FALSE;
}
// login
$login = $user->user_login($user_name, $user_pass); if (strcmp(md5($user_pass), rtrim($user->user_pass)) != 0) {
// password does not match with md5, check if new hash matches
if($login==TRUE) { // For future expansion: $pwd_peppered = hash_hmac('sha256', $user_pass, $config_pepper);
// redirect if (! password_verify($user_pass, $user->user_pass)) {
header_location("index.php"); return FALSE;
} else { }
// not ok, break session } else {
$_SESSION = array(); // md5 match but outdated. rewrite with new algo
session_destroy(); $sth = $dbh->prepare("UPDATE user SET user_pass=? WHERE user_id=?");
} $newhash = password_hash($user_pass, PASSWORD_BCRYPT);
} $sth->execute([$newhash, $user->user_id]);
}
// start output
// set template
$tp = new Template("tpl/login.tpl", $config_yapter_error); // all ok: user is logged in, register session data
$_SESSION['suser_id'] = $user->user_id;
// get version for the footer-stamp $_SESSION['suser_displayname'] = $user->user_displayname;
$tp->set("config_version", $config_version); $_SESSION['suser_language'] = $user->user_language;
$_SESSION['suser_imagesize'] = $user->user_imagesize;
// set language variables $_SESSION['suser_imagecount'] = $user->user_imagecount;
$tp->setvars($lang); $_SESSION['suser_mac'] = $user->user_mac;
$_SESSION['suser_dateformat'] = $user->user_dateformat;
// end page $_SESSION['suser_dns1suffix'] = $user->user_dns1suffix;
// output $_SESSION['suser_dns2suffix'] = $user->user_dns2suffix;
$tp->parse(); $_SESSION['suser_tooltips'] = $user->user_tooltips;
$tp->spit();
$roles = explode(',', $user->user_role);
// end output $_SESSION['suser_role_add'] = in_array('add', $roles);
include("footer.php"); $_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
$language = lang_getfrombrowser($config_lang, $config_lang_default, null, false);
include('lang/' . $language . '.php');
if ($_SERVER['REQUEST_METHOD'] == "POST" ) {
$user_name = sanitize($_POST['user_name']);
$user_pass = sanitize($_POST['user_pass']);
if (user_login($user_name, $user_pass) == TRUE) {
header_location($_SESSION['prelogin'] ?? 'index.php');
} else {
$_SESSION = array();
session_destroy();
}
}
$smarty->assign("config_version", $config_version);
$smarty->assign($lang);
$smarty->display("login.tpl");
include("footer.php");
?>

View File

@@ -1,33 +1,17 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of // user logout: clear session
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the $_SESSION = array();
GNU General Public License for more details.
// redirect to start page
You should have received a copy of the GNU General Public License header("Location: index.php");
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
*****************************************************************************/
// start page
// includes
include("includes.php");
// logout
// user logout
$user->user_logout();
// redirect
header("Location: index.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

@@ -1,111 +1,65 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $node_id = sanitize($_GET['node_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License // node_ext
along with this program. If not, see <http://www.gnu.org/licenses/>. $sql = "SELECT node_ip AS node_ip_ext
FROM node
For more information, visit http://sourceforge.net/projects/ipreg, WHERE node_id=?";
or contact me at wietsew@users.sourceforge.net $sth = $dbh->prepare($sql);
*****************************************************************************/ $sth->execute([$node_id]);
// start page $node = $sth->fetch(PDO::FETCH_OBJ);
// includes
include("includes.php"); $smarty->assign("node_id_ext", $node_id);
$smarty->assign("node_ip_ext", $node->node_ip_ext);
// get ip and id
$node_id = sanitize($_GET['node_id']); // node_int
$sql = "SELECT
// start output a.asset_name,
include("header.php"); n.node_id AS node_id_int,
n.node_ip AS node_ip_int
// set template FROM
$tp = new Template("tpl/natadd.tpl", $config_yapter_error); asset AS a LEFT JOIN node AS n USING (asset_id)
WHERE
// set language variables n.node_id NOT IN (
$tp->setvars($lang); SELECT
nat_int
// setup node_ext FROM
// build query nat
$query = "SELECT WHERE
node.node_ip AS node_ip_ext nat_ext=?
FROM )
node AND n.node_id!=?
WHERE ORDER BY
node.node_id=" . $node_id; INET_ATON(n.node_ip)";
$sth = $dbh->prepare($sql);
// run query $sth->execute([$node_id, $node_id]);
$node = $db->db_select($query);
$nodes = $sth->fetchAll();
$tp->set("node_id_ext", $node_id);
$tp->set("node_ip_ext", $node[0]['node_ip_ext']); foreach ($nodes as $rec) {
$node_options[$rec['node_id_int']] = $rec['node_ip_int'] . '/' . $rec['asset_name'];
// setup node_int }
// build query $smarty->assign("node_options", $node_options);
$query = "SELECT
asset.asset_name AS asset_name, $nat_type_options[1] = $lang['lang_nat_type_1'];
node.node_id AS node_id_int, $nat_type_options[2] = $lang['lang_nat_type_2'];
node.node_ip AS node_ip_int $nat_type_options[3] = $lang['lang_nat_type_3'];
FROM $smarty->assign("nat_type_options", $nat_type_options);
asset,
node $smarty->display("natadd.tpl");
WHERE
node.node_id NOT IN ( include("footer.php");
SELECT ?>
nat_int
FROM
nat
WHERE
nat_ext=" . $node_id . "
)
AND node.node_id!=" . $node_id . "
AND asset.asset_id=node.asset_id
ORDER BY
INET_ATON(node.node_ip)";
// run query
$nodes = $db->db_select($query);
// count results
$node_counter = count($nodes);
// any nodes?
if ($node_counter>0) {
// get objects
foreach($nodes AS $node) {
// send to tpl
$tp->set("asset_name", $node['asset_name']);
$tp->set("node_id_int", $node['node_id_int']);
$tp->set("node_ip_int", $node['node_ip_int']);
// parse row
$tp->parse("node_row");
}
// parse block
$tp->parse("node_table");
} else {
// hide block
$tp->hide("node_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,105 +1,40 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $node_id = sanitize($_GET['node_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License // node_ext
along with this program. If not, see <http://www.gnu.org/licenses/>. $sth = $dbh->prepare("SELECT node_id AS id_ext, node_ip AS ip_ext FROM node WHERE node_id=?");
$sth->execute([$node_id]);
For more information, visit http://sourceforge.net/projects/ipreg, $smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/ // options
$sql = "SELECT x.nat_id, n.node_ip, a.asset_name
// start page FROM nat AS x
// includes LEFT JOIN node AS n ON (x.nat_int=n.node_id)
include("includes.php"); LEFT JOIN asset AS a USING (asset_id)
WHERE x.nat_ext=?
// get ip and id ORDER BY INET_ATON(n.node_ip)";
$node_id = sanitize($_GET['node_id']); $sth = $dbh->prepare($sql);
$sth->execute([$node_id]);
// start output $nats = $sth->fetchAll();
include("header.php");
$options = array();
// set template foreach ($nats as $rec) {
$tp = new Template("tpl/natdel.tpl", $config_yapter_error); $options[$rec['nat_id']] = $rec['node_ip'] . '/' . $rec['asset_name'];
}
// set language variables $smarty->assign("nat_options", $options);
$tp->setvars($lang); $smarty->display("natdel.tpl");
// setup node_ext include("footer.php");
// build query ?>
$query = "SELECT
node.node_ip AS node_ip_ext
FROM
node
WHERE
node.node_id=" . $node_id;
// run query
$node = $db->db_select($query);
$tp->set("node_id_ext", $node_id);
$tp->set("node_ip_ext", $node[0]['node_ip_ext']);
// setup node
// build query
$query = "SELECT
asset.asset_name AS asset_name,
node.node_id AS node_id_int,
node.node_ip AS node_ip_int
FROM
asset,
nat,
node
WHERE
nat.nat_ext=" . $node_id . "
AND node.node_id=nat.nat_int
AND asset.asset_id=node.asset_id
ORDER BY
INET_ATON(node.node_ip)";
// run query
$nodes = $db->db_select($query);
// count results
$node_counter = count($nodes);
// any nodes?
if ($node_counter>0) {
// get objects
foreach($nodes AS $node) {
// send to tpl
$tp->set("asset_name", $node['asset_name']);
$tp->set("node_id_int", $node['node_id_int']);
$tp->set("node_ip_int", $node['node_ip_int']);
// parse row
$tp->parse("node_row");
}
// parse block
$tp->parse("node_table");
} else {
// hide block
$tp->hide("node_table");
}
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

View File

@@ -1,61 +1,24 @@
<?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
it under the terms of the GNU General Public License as published by SPDX-License-Identifier: GPL-3.0-or-later
the Free Software Foundation, either version 3 of the License, or *****************************************************************************/
(at your option) any later version.
include("includes.php");
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of $node_id = sanitize($_GET['node_id']);
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. include("header.php");
You should have received a copy of the GNU General Public License $sql = "SELECT node_id AS id, node_ip AS ip FROM node WHERE node.node_id=?";
along with this program. If not, see <http://www.gnu.org/licenses/>. $sth = $dbh->prepare($sql);
$sth->execute([$node_id]);
For more information, visit http://sourceforge.net/projects/ipreg, $smarty->assign("node", $sth->fetch(PDO::FETCH_OBJ));
or contact me at wietsew@users.sourceforge.net
*****************************************************************************/ $smarty->display("natedit.tpl");
// start page include("footer.php");
// includes ?>
include("includes.php");
// get id
$node_id = sanitize($_GET['node_id']);
// start output
include("header.php");
// set template
$tp = new Template("tpl/natedit.tpl", $config_yapter_error);
// set language variables
$tp->setvars($lang);
// setup node
// build query
$query = "SELECT
node.node_ip AS node_ip
FROM
node
WHERE
node.node_id=" . $node_id;
// run query
$node = $db->db_select($query);
$tp->set("node_id", $node_id);
$tp->set("node_ip", $node[0]['node_ip']);
// end page
// output
$tp->parse();
$tp->spit();
// end output
include("footer.php");
?>

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