finalized language support and fixed some more bugsmaster
@ -1,114 +1,85 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$assetclass_id = sanitize($_GET['assetclass_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/assetclassview.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 |
||||
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"); |
||||
/***************************************************************************** |
||||
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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$assetclass_id = sanitize($_GET['assetclass_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// setup assetclass |
||||
// build query |
||||
$query = "SELECT |
||||
assetclass.assetclass_id, |
||||
assetclass.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 |
||||
$smarty->assign("assetclass_id", $assetclass[0]['assetclass_id']); |
||||
$smarty->assign("assetclass_name", $assetclass[0]['assetclass_name']); |
||||
$smarty->assign("assetclass_selected", ""); |
||||
|
||||
$smarty->assign("assetclassgroup_id", $assetclass[0]['assetclassgroup_id']); |
||||
$smarty->assign("assetclassgroup_name", $assetclass[0]['assetclassgroup_name']); |
||||
|
||||
// send to tpl |
||||
// setup asset |
||||
// build query |
||||
$query = "SELECT |
||||
asset_id, |
||||
asset_name, |
||||
CONCAT(LEFT(asset_info, 80), IF(CHAR_LENGTH(asset_info)>80,'...','')) AS asset_info |
||||
FROM |
||||
asset |
||||
WHERE |
||||
assetclass_id='" . $assetclass_id . "' |
||||
ORDER BY |
||||
asset_name"; |
||||
|
||||
// run query |
||||
$assets = $db->db_select($query); |
||||
$smarty->assign("assets", $assets); |
||||
|
||||
// end page |
||||
// output |
||||
$smarty->display("assetclassview.tpl"); |
||||
|
||||
// footer |
||||
include("footer.php"); |
||||
?> |
@ -1,113 +1,86 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$asset_id = sanitize($_GET['asset_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/assetview.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, |
||||
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"); |
||||
/***************************************************************************** |
||||
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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$asset_id = sanitize($_GET['asset_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// setup asset |
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_name, |
||||
asset.asset_hostname, |
||||
asset.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 |
||||
$smarty->assign("asset_id", $asset_id); |
||||
$smarty->assign("asset_name", $asset[0]['asset_name']); |
||||
$smarty->assign("asset_hostname", $asset[0]['asset_hostname']); |
||||
$smarty->assign("asset_info", nl2br($asset[0]['asset_info'])); |
||||
|
||||
$smarty->assign("assetclass_id", $asset[0]['assetclass_id']); |
||||
$smarty->assign("assetclass_name", $asset[0]['assetclass_name']); |
||||
|
||||
// setup node |
||||
// build query |
||||
$query = "SELECT |
||||
node_id, |
||||
node_ip, |
||||
LEFT(node_info, 40) as node_info |
||||
FROM |
||||
node |
||||
WHERE |
||||
node.asset_id=" . $asset_id . " |
||||
ORDER BY |
||||
INET_ATON(node.node_ip)"; |
||||
|
||||
// run query |
||||
$nodes = $db->db_select($query); |
||||
$smarty->assign("nodes", $nodes); |
||||
|
||||
// end page |
||||
// output |
||||
$smarty->display("assetview.tpl"); |
||||
|
||||
// footer |
||||
include("footer.php"); |
||||
?> |
@ -1,28 +1,28 @@ |
||||
<?php |
||||
/***************************************************************************** |
||||
IP Reg, a PHP/MySQL IPAM tool |
||||
Copyright (C) 2007-2009 Wietse Warendorff |
||||
/***************************************************************************** |
||||
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 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. |
||||
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/>. |
||||
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 |
||||
*****************************************************************************/ |
||||
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); |
||||
// build connection |
||||
$dblink = mysqli_connect($config_mysql_host,$config_mysql_username,$config_mysql_password); |
||||
|
||||
// select db |
||||
mysql_select_db($config_mysql_dbname); |
||||
// select db |
||||
mysqli_select_db($dblink, $config_mysql_dbname); |
||||
?> |
After Width: | Height: | Size: 475 B |
After Width: | Height: | Size: 85 B |
After Width: | Height: | Size: 556 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 633 B |
After Width: | Height: | Size: 731 B |
After Width: | Height: | Size: 701 B |
After Width: | Height: | Size: 70 B |
After Width: | Height: | Size: 199 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 577 B |
After Width: | Height: | Size: 635 B |
After Width: | Height: | Size: 200 B |
After Width: | Height: | Size: 649 B |
After Width: | Height: | Size: 566 B |
After Width: | Height: | Size: 663 B |
After Width: | Height: | Size: 660 B |
After Width: | Height: | Size: 744 B |
After Width: | Height: | Size: 683 B |
After Width: | Height: | Size: 723 B |
After Width: | Height: | Size: 741 B |
After Width: | Height: | Size: 746 B |
After Width: | Height: | Size: 767 B |
After Width: | Height: | Size: 833 B |
After Width: | Height: | Size: 663 B |
@ -1,16 +1,37 @@ |
||||
IP Reg Installation |
||||
|
||||
1. Create database |
||||
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. |
||||
1. Install requirements |
||||
IP Reg version 0.6 and up depends on smarty template engine. |
||||
In Debian install ist with: "apt-get install smarty3". |
||||
The GHP-GD module is also required: "apt-get install php-gd". |
||||
|
||||
2. Run import |
||||
Import the mysql.sql file into your database, which will create the tables and some sample data. |
||||
2. Create database |
||||
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. |
||||
|
||||
3. Edit config file |
||||
CREATE DATABASE ipreg; |
||||
|
||||
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 import |
||||
Import the mysql.sql file into your database, which will create the tables |
||||
and some sample data. |
||||
|
||||
mysql ipreg < mysql.sql |
||||
|
||||
4. Edit config file |
||||
Open config.php in a text editor and fill in your database details. |
||||
|
||||
4. Upload files |
||||
Upload all files and directory's (except the install directory) to your webserver. |
||||
5. Upload files |
||||
Upload all files and directory's (except the install directory) to your |
||||
webserver. |
||||
|
||||
6. Check file access rights for security |
||||
Only directory tpl_c should be writeble by webserver |
||||
|
||||
5. Start using IP Reg |
||||
Start your browser and login to IP Reg with the default username/password: admin/admin |
||||
7. Start using IP Reg |
||||
Start your browser and login to IP Reg with the default username/password: |
||||
admin/admin |
||||
|
@ -0,0 +1,222 @@ |
||||
<?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_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' => 'Allw', |
||||
'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ücksetzen', |
||||
'lang_search' => 'Suche', |
||||
'lang_statistics' => 'Statistik', |
||||
'lang_subitem' => 'Sub-Item', |
||||
'lang_submit' => 'Absenden', |
||||
'lang_unassigned' => 'Nicht zugeordnet', |
||||
'lang_warning' => 'Warnung', |
||||
|
||||
'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_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_locationsubnet' => 'Standort/Subnetz', |
||||
'lang_locationsubnet_edit' => 'Standort/Subnetz bearbeiten', |
||||
|
||||
'lang_node_add' => 'Knoten hinzufügen', |
||||
'lang_node_del' => 'Knoten löschen', |
||||
'lang_node_edit' => 'Knoten ändern', |
||||
'lang_node_info' => 'Knoteninfo', |
||||
'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_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_zone_add' => 'Zone hinzufügen', |
||||
'lang_zone_del' => 'Zone löschen', |
||||
'lang_zone_edit' => 'Zone bearbeiten', |
||||
|
||||
|
||||
'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_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_options_ipreg' => 'IP Reg Optionen', |
||||
'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' => 'Default DNS Name suffix für neue Knoten', |
||||
'lang_options_dns2suffix' => 'DNS Alias suffix', |
||||
'lang_options_dns2suffix_help' => 'Default 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_sfprojectpage' => 'Sourceforge Project Page', |
||||
'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_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', |
||||
|
||||
); |
||||
|
||||
?> |
@ -1,44 +1,48 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// functions |
||||
include("lib/functions.php"); |
||||
|
||||
// classes |
||||
// db |
||||
// load class |
||||
require("lib/db.class.php"); |
||||
|
||||
// create instance |
||||
$db = new Db(); |
||||
|
||||
// user |
||||
// load class |
||||
require("lib/user.class.php"); |
||||
|
||||
// create instance |
||||
$user = new User(); |
||||
|
||||
// tpl |
||||
// load class |
||||
include("lib/yapter.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 |
||||
*****************************************************************************/ |
||||
|
||||
// functions |
||||
include("lib/functions.php"); |
||||
|
||||
// classes |
||||
// db |
||||
// load class |
||||
require("lib/db.class.php"); |
||||
|
||||
// create instance |
||||
$db = new Db($dblink); |
||||
|
||||
// user |
||||
// load class |
||||
require("lib/user.class.php"); |
||||
|
||||
// create instance |
||||
$user = new User(); |
||||
|
||||
// tpl |
||||
require_once('smarty3/Smarty.class.php'); |
||||
$smarty = new Smarty(); |
||||
$smarty->template_dir = 'tpl'; |
||||
$smarty->compile_dir = 'tpl_c'; |
||||
$smarty->registerPlugin('function', 'treelist', 'print_tree'); |
||||
$smarty->assign("suser_tooltips", $_SESSION['suser_tooltips']); |
||||
?> |
After Width: | Height: | Size: 66 B |
@ -1,5 +1,5 @@ |
||||
function changelink(optVal){ |
||||
if(optVal=="") |
||||
return false; |
||||
window.location='subnetview.php?subnet_id='+optVal; |
||||
} |
||||
function changelink(optVal) { |
||||
if(optVal=="") |
||||
return false; |
||||
window.location='subnetview.php?subnet_id='+optVal; |
||||
} |
@ -1,3 +1,3 @@ |
||||
function changetext(id,newtext) { |
||||
document.getElementById(id).innerHTML=newtext |
||||
} |
||||
function changetext(id,newtext) { |
||||
document.getElementById(id).innerHTML=newtext |
||||
} |
After Width: | Height: | Size: 83 B |
@ -1,55 +1,173 @@ |
||||
<?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()); |
||||
} |
||||
} |
||||
/***************************************************************************** |
||||
IP Reg, a PHP/MySQL IPAM tool |
||||
Copyright (C) 2007-2009 Wietse Warendorff |
||||
|
||||
This program is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
|
||||
For more information, visit http://sourceforge.net/projects/ipreg, |
||||
or contact me at wietsew@users.sourceforge.net |
||||
*****************************************************************************/ |
||||
|
||||
class Db { |
||||
|
||||
protected $dblink; |
||||
|
||||
public function __construct ($dblink) { |
||||
$this->dblink = $dblink; |
||||
} |
||||
|
||||
function db_delete($query) { |
||||
// run query |
||||
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink)); |
||||
} |
||||
|
||||
function db_insert($query) { |
||||
// run query |
||||
echo "<pre>$query</pre>"; |
||||
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink)); |
||||
|
||||
// return result |
||||
return mysqli_insert_id($this->dblink); |
||||
} |
||||
|
||||
function db_select($query) { |
||||
// run query |
||||
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink)); |
||||
|
||||
// loop results |
||||
$result = array(); |
||||
while($record = mysqli_fetch_assoc($sql)) { |
||||
$result[] = $record; |
||||
} |
||||
|
||||
// return array |
||||
return $result; |
||||
} |
||||
|
||||
function db_update($query) { |
||||
// run query |
||||
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink)); |
||||
} |
||||
|
||||
function options_asset($null_value=NULL) { |
||||
$options = array(); |
||||
if (isset($null_value)) { |
||||
$options[0] = $null_value; |
||||
} |
||||
$sql = "SELECT asset_id, asset_name |
||||
FROM asset |
||||
ORDER BY asset_name"; |
||||
$records = $this->db_select($sql); |
||||
foreach ($records as $rec) { |
||||
$options[$rec['asset_id']] = $rec['asset_name']; |
||||
} |
||||
return $options; |
||||
} |
||||
|
||||
function options_assetclass($null_value=NULL) { |
||||
$options = array(); |
||||
if (isset($null_value)) { |
||||
$options[0] = $null_value; |
||||
} |
||||
$sql = "SELECT assetclass_id, assetclass_name |
||||
FROM assetclass |
||||
ORDER BY assetclass_name"; |
||||
$records = $this->db_select($sql); |
||||
foreach ($records as $rec) { |
||||
$options[$rec['assetclass_id']] = $rec['assetclass_name']; |
||||
} |
||||
return $options; |
||||
} |
||||
|
||||
function options_assetclassgroup($null_value=NULL) { |
||||
$options = array(); |
||||
if (isset($null_value)) { |
||||
$options[0] = $null_value; |
||||
} |
||||
$sql = "SELECT assetclassgroup_id, assetclassgroup_name |
||||
FROM assetclassgroup |
||||
ORDER BY assetclassgroup_name"; |
||||
$records = $this->db_select($sql); |
||||
foreach ($records as $rec) { |
||||
$options[$rec['assetclassgroup_id']] = $rec['assetclassgroup_name']; |
||||
} |
||||
return $options; |
||||
} |
||||
|
||||
function options_location($null_value=NULL) { |
||||
$options = array(); |
||||
if (isset($null_value)) { |
||||
$options[0] = $null_value; |
||||
} |
||||
$sql = "SELECT location_id, |
||||
location_name |
||||
FROM location |
||||
ORDER BY location_name"; |
||||
$records = $this->db_select($sql); |
||||
foreach ($records as $rec) { |
||||
$options[$rec['location_id']] = $rec['location_name']; |
||||
} |
||||
return $options; |
||||
} |
||||
|
||||
function options_subnet($null_value=NULL) { |
||||
$options = array(); |
||||
if (isset($null_value)) { |
||||
$options[0] = $null_value; |
||||
} |
||||
$sql = "SELECT subnet_id, |
||||
CONCAT_WS('/', subnet_address, subnet_mask) AS subnet_name |
||||
FROM subnet |
||||
ORDER BY INET_ATON(subnet_address)"; |
||||
$records = $this->db_select($sql); |
||||
foreach ($records as $rec) { |
||||
$options[$rec['subnet_id']] = $rec['subnet_name']; |
||||
} |
||||
return $options; |
||||
} |
||||
|
||||
function options_vlan($null_value=NULL) { |
||||
$options = array(); |
||||
if (isset($null_value)) { |
||||
$options[0] = $null_value; |
||||
} |
||||
$sql = "SELECT vlan_id, |
||||
CONCAT_WS(' - ', vlan_number, vlan_name) AS vlan_option |
||||
FROM vlan |
||||
ORDER BY vlan_number"; |
||||
$records = $this->db_select($sql); |
||||
foreach ($records as $rec) { |
||||
$options[$rec['vlan_id']] = $rec['vlan_option']; |
||||
} |
||||
return $options; |
||||
} |
||||
|
||||
function options_zone($null_value=NULL) { |
||||
$options = array(); |
||||
if (isset($null_value)) { |
||||
$options[0] = $null_value; |
||||
} |
||||
$sql = "SELECT zone_id, zone_origin |
||||
FROM zone |
||||
ORDER BY zone_origin"; |
||||
$records = $this->db_select($sql); |
||||
foreach ($records as $rec) { |
||||
$options[$rec['zone_id']] = $rec['zone_origin']; |
||||
} |
||||
return $options; |
||||
} |
||||
|
||||
} |
||||
?> |
@ -1,94 +1,170 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// strip mac address to 12 char string |
||||
function strip_mac($mac) { |
||||
// strip chars we don't need |
||||
$mac = preg_replace("|[^a-fA-F0-9]|", "", $mac); |
||||
|
||||
// capitalize (just because it looks better eh) |
||||
$mac = strtoupper($mac); |
||||
|
||||
// and return |
||||
return ($mac); |
||||
} |
||||
|
||||
// rebuild mac address |
||||
function write_mac($mac) { |
||||
// check string length |
||||
if (strlen($mac)!=12) { |
||||
// if the MAC is empty, or for whatever reason incorrect, just return |
||||
return $mac; |
||||
} else { |
||||
// count to 12... |
||||
for($i=0;$i<12;$i++) { |
||||
// ... and strip mac to pieces |
||||
${"mac".$i} = $mac{$i}; |
||||
} |
||||
|
||||
// get user preference |
||||
$user_mac = $_SESSION['suser_mac']; |
||||
|
||||
// count to 12 again... |
||||
for($i=0;$i<12;$i++) { |
||||
// ... and replace user preference with pieces |
||||
$user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1); |
||||
} |
||||
|
||||
// and return |
||||
return $user_mac; |
||||
} |
||||
} |
||||
|
||||
// redirect page |
||||
function header_location($location) { |
||||
// send header |
||||
header("location: " . $location); |
||||
|
||||
// exit to be sure |
||||
exit; |
||||
} |
||||
|
||||
// sanitize input |
||||
function sanitize($input) { |
||||
// trim whitespaces |
||||
$input = @trim($input); |
||||
|
||||
// magic quotes enabled? |
||||
if(get_magic_quotes_gpc()) { |
||||
// strip slashes |
||||
$input = stripslashes($input); |
||||
} |
||||
|
||||
// convert to utf-8 |
||||
iconv("UTF-8", "UTF-8", $input); |
||||
|
||||
// convert special chars |
||||
$input = htmlentities($input,ENT_QUOTES,'UTF-8'); |
||||
|
||||
// make sql ready |
||||
$input = mysql_real_escape_string($input); |
||||
|
||||
// and return |
||||
return $input; |
||||
} |
||||
/***************************************************************************** |
||||
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 |
||||
*****************************************************************************/ |
||||
|
||||
// strip mac address to 12 char string |
||||
function strip_mac($mac) { |
||||
// strip chars we don't need |
||||
$mac = preg_replace("|[^a-fA-F0-9]|", "", $mac); |
||||
|
||||
// capitalize (just because it looks better eh) |
||||
$mac = strtoupper($mac); |
||||
|
||||
// and return |
||||
return ($mac); |
||||
} |
||||
|
||||
// rebuild mac address |
||||
function write_mac($mac) { |
||||
// check string length |
||||
if (strlen($mac)!=12) { |
||||
// if the MAC is empty, or for whatever reason incorrect, just return |
||||
return $mac; |
||||
} else { |
||||
// count to 12... |
||||
for($i=0;$i<12;$i++) { |
||||
// ... and strip mac to pieces |
||||
${"mac".$i} = $mac{$i}; |
||||
} |
||||
|
||||
// get user preference |
||||
$user_mac = $_SESSION['suser_mac']; |
||||
|
||||
// count to 12 again... |
||||
for($i=0;$i<12;$i++) { |
||||
// ... and replace user preference with pieces |
||||
$user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1); |
||||
} |
||||
|
||||
// and return |
||||
return $user_mac; |
||||
} |
||||
} |
||||
|
||||
// redirect page |
||||
function header_location($location) { |
||||
// send header |
||||
header("location: " . $location); |
||||
|
||||
// exit to be sure |
||||
exit; |
||||
} |
||||
|
||||
// sanitize input |
||||
function sanitize($input) { |
||||
global $dblink; |
||||
|
||||
// trim whitespaces |
||||
$input = @trim($input); |
||||
|
||||
// magic quotes enabled? |
||||
if(get_magic_quotes_gpc()) { |
||||
// strip slashes |
||||
$input = stripslashes($input); |
||||
} |
||||
|
||||
// convert to utf-8 |
||||
iconv("UTF-8", "UTF-8", $input); |
||||
|
||||
// convert special chars |
||||
$input = htmlentities($input,ENT_QUOTES,'UTF-8'); |
||||
|
||||
// make sql ready |
||||
$input = mysqli_real_escape_string($dblink, $input); |
||||
|
||||
// and return |
||||
return $input; |
||||
} |
||||
|
||||
function mysql_nullstring($input) { |
||||
if (isset($input)) { |
||||
return $input; |
||||
} else { |
||||
return ''; |
||||
} |
||||
} |
||||
|
||||
function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) { |
||||
if ($lang_variable === null) { |
||||
$lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE']; |
||||
} |
||||
if (empty($lang_variable)) { |
||||
return $default_language; |
||||
} |
||||
$accepted_languages = preg_split('/,\s*/', $lang_variable); |
||||
$current_lang = $default_language; |
||||
$current_q = 0; |
||||
foreach ($accepted_languages as $accepted_language) { |
||||
$res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i', |
||||
$accepted_language, $matches); |
||||
if (!$res) { |
||||
continue; |
||||
} |
||||
$lang_code = explode ('-', $matches[1]); |
||||
if (isset($matches[2])) { |
||||
$lang_quality = (float)$matches[2]; |
||||
} else { |
||||
$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) { |
||||
if (empty($params['level'])) { |
||||
$level = 0; |
||||
} else { |
||||
$level = $params['level']; |
||||
} |
||||
if (empty($params['tree'])) { |
||||
return ''; |
||||
} else { |
||||
return print_tree_rec($params['tree'], $level); |
||||
} |
||||
} |
||||
|
||||
?> |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.8 KiB |
@ -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(); |
@ -1,115 +1,122 @@ |
||||
<?php |
||||
/***************************************************************************** |
||||
IP Reg, a PHP/MySQL IPAM tool |
||||
Copyright (C) 2007-2009 Wietse Warendorff |
||||
/***************************************************************************** |
||||
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 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. |
||||
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/>. |
||||
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 |
||||
*****************************************************************************/ |
||||
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; |
||||
} |
||||
} |
||||
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; |
||||
} |
||||
function user_login($user_name, $user_pass) { |
||||
global $dblink; |
||||
// check user_name length |
||||
if($this->check_strlen($user_name)==FALSE) { |
||||
return FALSE; |
||||
} |
||||
|
||||
// check user_pass length |
||||
if($this->check_strlen($user_pass)==FALSE) { |
||||
return FALSE; |
||||
} |
||||
// check user_pass length |
||||
if($this->check_strlen($user_pass)==FALSE) { |
||||
return FALSE; |
||||
} |
||||
|
||||
// get user data |
||||
// initiate class |
||||
$db = new Db(); |
||||
// get user data |
||||
// initiate class |
||||
$db = new Db($dblink); |
||||
|
||||
// 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 . "'"; |
||||
// build query |
||||
$query = "SELECT |
||||
user.user_id, |
||||
user.user_pass, |
||||
user.user_displayname, |
||||
user.user_language, |
||||
user.user_imagesize, |
||||
user.user_imagecount, |
||||
user.user_mac, |
||||
user.user_dateformat, |
||||
user.user_dns1suffix, |
||||
user.user_dns2suffix, |
||||
user.user_menu_assets, |
||||
user.user_menu_assetclasses, |
||||
user.user_menu_assetclassgroups, |
||||
user.user_menu_locations, |
||||
user.user_menu_nodes, |
||||
user.user_menu_subnets, |
||||
user.user_menu_users, |
||||
user.user_menu_vlans, |
||||
user.user_menu_zones, |
||||
user.user_tooltips |
||||
FROM |
||||
user |
||||
WHERE |
||||
user.user_name='" . $user_name . "'"; |
||||
|
||||
// run query |
||||
$users = $db->db_select($query); |
||||
// run query |
||||
$users = $db->db_select($query); |
||||
|
||||
// count results |
||||
$user_counter = count($users); |
||||
// 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; |
||||
} |
||||
// any users? |
||||
if ($user_counter>0) { |
||||
// compare passwords |
||||
if(!strcmp(md5($user_pass), $users[0]['user_pass'])) { |
||||
// all ok: user is logged in, register session data |
||||
$_SESSION['suser_id'] = $users[0]['user_id']; |
||||
$_SESSION['suser_displayname'] = $users[0]['user_displayname']; |
||||
$_SESSION['suser_language'] = $users[0]['user_language']; |
||||
$_SESSION['suser_imagesize'] = $users[0]['user_imagesize']; |
||||
$_SESSION['suser_imagecount'] = $users[0]['user_imagecount']; |
||||
$_SESSION['suser_mac'] = $users[0]['user_mac']; |
||||
$_SESSION['suser_dateformat'] = $users[0]['user_dateformat']; |
||||
$_SESSION['suser_dns1suffix'] = $users[0]['user_dns1suffix']; |
||||
$_SESSION['suser_dns2suffix'] = $users[0]['user_dns2suffix']; |
||||
$_SESSION['suser_menu_assets'] = $users[0]['user_menu_assets']; |
||||
$_SESSION['suser_menu_assetclasses'] = $users[0]['user_menu_assetclasses']; |
||||
$_SESSION['suser_menu_assetclassgroups'] = $users[0]['user_menu_assetclassgroups']; |
||||
$_SESSION['suser_menu_locations'] = $users[0]['user_menu_locations']; |
||||
$_SESSION['suser_menu_nodes'] = $users[0]['user_menu_nodes']; |
||||
$_SESSION['suser_menu_subnets'] = $users[0]['user_menu_subnets']; |
||||
$_SESSION['suser_menu_users'] = $users[0]['user_menu_users']; |
||||
$_SESSION['suser_menu_vlans'] = $users[0]['user_menu_vlans']; |
||||
$_SESSION['suser_menu_zones'] = $users[0]['user_menu_zones']; |
||||
$_SESSION['suser_tooltips'] = $users[0]['user_tooltips']; |
||||
} else { |
||||
return FALSE; |
||||
} |
||||
} else { |
||||
return FALSE; |
||||
} |
||||
|
||||
// no errors found, return |
||||
return TRUE; |
||||
} |
||||
// no errors found, return |
||||
return TRUE; |
||||
} |
||||
|
||||
function user_logout() { |
||||
// clear and destroy session |
||||
$_SESSION = array(); |
||||
} |
||||
} |
||||
function user_logout() { |
||||
// clear and destroy session |
||||
$_SESSION = array(); |
||||
} |
||||
} |
||||
?> |
@ -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 ® |
||||
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"; |
||||
} |
||||
} |
||||
?> |
@ -1,108 +1,78 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/node.tpl", $config_yapter_error); |
||||
|
||||
// set language variables |
||||
$tp->setvars($lang); |
||||
|
||||
// start node |
||||
// setup view |
||||
// subnet |
||||
if(isset($_GET['subnet_id'])) { |
||||
// get id |
||||
$subnet_id = sanitize($_GET['subnet_id']); |
||||
|
||||
// build query part |
||||
$subnet_view = "AND node.subnet_id=" . $subnet_id; |
||||
|
||||
// to tpl |
||||
$tp->set("subnet_id", $subnet_id); |
||||
} else { |
||||
// to tpl |
||||
$tp->set("subnet_id", ""); |
||||
} |
||||
|
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_id AS asset_id, |
||||
asset.asset_name AS asset_name, |
||||
node.node_id AS node_id, |
||||
node.node_ip AS node_ip |
||||
FROM |
||||
asset, |
||||
node |
||||
WHERE |
||||
asset.asset_id=node.asset_id |
||||
" . $subnet_view . " |
||||
GROUP BY |
||||
node.node_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("asset_id", $node['asset_id']); |
||||
$tp->set("asset_name", $node['asset_name']); |
||||
|
||||
$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(); |
||||
|
||||
// end output |
||||
include("footer.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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// start node |
||||
// setup view |
||||
// subnet |
||||
if(isset($_GET['subnet_id'])) { |
||||
// get id |
||||
$subnet_id = sanitize($_GET['subnet_id']); |
||||
|
||||
// build query part |
||||
$subnet_view = "AND node.subnet_id=" . $subnet_id; |
||||
|
||||
// to tpl |
||||
$smarty->assign("subnet_id", $subnet_id); |
||||
} else { |
||||
// to tpl |
||||
$smarty->assign("subnet_id", ""); |
||||
} |
||||
|
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_id, |
||||
REPLACE(asset.asset_name, ' ', ' ') AS asset_name, |
||||
asset.asset_info, |
||||
node.node_id, |
||||
node.node_ip |
||||
FROM |
||||
asset, |
||||
node |
||||
WHERE |
||||
asset.asset_id=node.asset_id |
||||
" . $subnet_view . " |
||||
GROUP BY |
||||
node.node_id |
||||
ORDER BY |
||||
INET_ATON(node.node_ip)"; |
||||
|
||||
// run query |
||||
$nodes = $db->db_select($query); |
||||
$smarty->assign("nodes", $nodes); |
||||
|
||||
// end page |
||||
// output |
||||
$smarty->display("node.tpl"); |
||||
|
||||
// end output |
||||
include("footer.php"); |
||||
?> |
@ -1,181 +1,105 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$node_id = sanitize($_GET['node_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/nodeview.tpl", $config_yapter_error); |
||||
|
||||
// set language variables |
||||
$tp->setvars($lang); |
||||
|
||||
// setup node |
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_id AS asset_id, |
||||
asset.asset_name AS asset_name, |
||||
node.node_id AS node_id, |
||||
node.node_ip AS node_ip, |
||||
node.node_mac AS node_mac, |
||||
node.node_dns1 AS node_dns1, |
||||
node.node_dns2 AS node_dns2, |
||||
node.node_info AS node_info, |
||||
subnet.subnet_id AS subnet_id, |
||||
subnet.subnet_address AS subnet_address, |
||||
subnet.subnet_mask AS subnet_mask |
||||
FROM |
||||
asset, |
||||
node, |
||||
subnet |
||||
WHERE |
||||
asset.asset_id=node.asset_id |
||||
AND node.node_id=" . $node_id . " |
||||
AND subnet.subnet_id=node.subnet_id"; |
||||
|
||||
// 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("asset_id", $node['asset_id']); |
||||
$tp->set("asset_name", $node['asset_name']); |
||||
|
||||
$tp->set("node_id", $node['node_id']); |
||||
$tp->set("node_ip", $node['node_ip']); |
||||
$tp->set("node_mac", write_mac($node['node_mac'])); |
||||
$tp->set("node_dns1", $node['node_dns1']); |
||||
$tp->set("node_dns2", $node['node_dns2']); |
||||
$tp->set("node_info", nl2br($node['node_info'])); |
||||
|
||||
$tp->set("subnet_id", $node['subnet_id']); |
||||
$tp->set("subnet_address", $node['subnet_address']); |
||||
$tp->set("subnet_mask", $node['subnet_mask']); |
||||
|
||||
// parse row |
||||
$tp->parse("node_row"); |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("node_table"); |
||||
} else { |
||||
// hide block |
||||
$tp->hide("node_table"); |
||||
} |
||||
|
||||
// setup nat |
||||
// build query |
||||
$query = "SELECT |
||||
asset_ext.asset_id AS asset_id_ext, |
||||
asset_int.asset_id AS asset_id_int, |
||||
asset_ext.asset_name AS asset_name_ext, |
||||
asset_int.asset_name AS asset_name_int, |
||||
nat.nat_id AS nat_id, |
||||
nat.nat_type AS nat_type, |
||||
nat.nat_ext AS nat_ext, |
||||
nat.nat_int AS nat_int, |
||||
node_ext.node_ip AS node_ip_ext, |
||||
node_int.node_ip AS node_ip_int |
||||
FROM |
||||
asset asset_ext, |
||||
asset asset_int, |
||||
nat, |
||||
node node_ext, |
||||
node node_int |
||||
WHERE |
||||
(nat.nat_ext=" . $node_id . " |
||||
OR nat.nat_int=" . $node_id . ") |
||||
AND node_ext.node_id=nat.nat_ext |
||||
AND node_int.node_id=nat.nat_int |
||||
AND asset_ext.asset_id=node_ext.asset_id |
||||
AND asset_int.asset_id=node_int.asset_id |
||||
ORDER BY |
||||
INET_ATON(node_ext.node_ip), |
||||
INET_ATON(node_int.node_ip)"; |
||||
|
||||
// run query |
||||
$nats = $db->db_select($query); |
||||
|
||||
// count results |
||||
$nat_counter = count($nats); |
||||
|
||||
// counter to tpl |
||||
$tp->set("nat_counter", $nat_counter); |
||||
|
||||
// any nodes? |
||||
if ($nat_counter>0) { |
||||
// get objects |
||||
foreach($nats AS $nat) { |
||||
if($node_id==$nat['nat_ext']) { |
||||
// send to tpl |
||||
$tp->set("nat_asset_id", $nat['asset_id_int']); |
||||
$tp->set("nat_asset_name", $nat['asset_name_int']); |
||||
|
||||
$tp->set("nat_type", $lang['lang_nat_type_' . $nat['nat_type']]); |
||||
|
||||
$tp->set("nat_node_id", $nat['nat_int']); |
||||
$tp->set("nat_node_ip", $nat['node_ip_int']); |
||||
} else if($node_id==$nat['nat_int']) { |
||||
// send to tpl |
||||
$tp->set("nat_asset_id", $nat['asset_id_ext']); |
||||
$tp->set("nat_asset_name", $nat['asset_name_ext']); |
||||
|
||||
$tp->set("nat_type", $lang['lang_nat_type_' . $nat['nat_type']]); |
||||
|
||||
$tp->set("nat_node_id", $nat['nat_ext']); |
||||
$tp->set("nat_node_ip", $nat['node_ip_ext']); |
||||
} |
||||
|
||||
// parse row |
||||
$tp->parse("nat_row"); |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("nat_table"); |
||||
} else { |
||||
// hide block |
||||
$tp->hide("nat_table"); |
||||
} |
||||
|
||||
// end page |
||||
// output |
||||
$tp->parse(); |
||||
$tp->spit(); |
||||
|
||||
include("footer.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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$node_id = sanitize($_GET['node_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// setup node |
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_id, |
||||
asset.asset_name, |
||||
node.node_id, |
||||
node.node_ip, |
||||
node.node_mac, |
||||
node.node_dns1, |
||||
node.node_dns2, |
||||
node.node_info, |
||||
node.node_type, |
||||
subnet.subnet_id, |
||||
subnet.subnet_address, |
||||
subnet.subnet_mask, |
||||
zone.zone_origin |
||||
FROM |
||||
node |
||||
JOIN asset USING (asset_id) |
||||
JOIN subnet USING (subnet_id) |
||||
LEFT JOIN zone USING (zone_id) |
||||
WHERE |
||||
node.node_id=" . $node_id; |
||||
|
||||
// run query |
||||
$node = $db->db_select($query); |
||||
$node[0]['node_mac'] = write_mac($node[0]['node_mac']); |
||||
$smarty->assign("node", $node[0]); |
||||
|
||||
// setup nat |
||||
// build query |
||||
$query = "SELECT |
||||
asset_ext.asset_id AS asset_id_ext, |
||||
asset_int.asset_id AS asset_id_int, |
||||
asset_ext.asset_name AS asset_name_ext, |
||||
asset_int.asset_name AS asset_name_int, |
||||
nat.nat_id AS nat_id, |
||||
nat.nat_type AS nat_type, |
||||
nat.nat_ext AS nat_ext, |
||||
nat.nat_int AS nat_int, |
||||
node_ext.node_ip AS node_ip_ext, |
||||
node_int.node_ip AS node_ip_int |
||||
FROM |
||||
asset asset_ext, |
||||
asset asset_int, |
||||
nat, |
||||
node node_ext, |
||||
node node_int |
||||
WHERE |
||||
(nat.nat_ext=" . $node_id . " |
||||
OR nat.nat_int=" . $node_id . ") |
||||
AND node_ext.node_id=nat.nat_ext |
||||
AND node_int.node_id=nat.nat_int |
||||
AND asset_ext.asset_id=node_ext.asset_id |
||||
AND asset_int.asset_id=node_int.asset_id |
||||
ORDER BY |
||||
INET_ATON(node_ext.node_ip), |
||||
INET_ATON(node_int.node_ip)"; |
||||
|
||||
// run query |
||||
$natrules = $db->db_select($query); |
||||
// counter to tpl |
||||
$smarty->assign("natrules", $natrules); |
||||
|
||||
// end page |
||||
// output |
||||
$smarty->display("nodeview.tpl"); |
||||
|
||||
include("footer.php"); |
||||
?> |
@ -1,321 +1,178 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/search.tpl", $config_yapter_error); |
||||
|
||||
// set language variables |
||||
$tp->setvars($lang); |
||||
|
||||
// get string that was searched for ($search is allready set in header.php) |
||||
if (empty($search)) { |
||||
// parse nosearch box |
||||
$tp->parse("nosearch"); |
||||
|
||||
// hide others |
||||
$tp->hide("asset"); |
||||
$tp->hide("location"); |
||||
$tp->hide("node"); |
||||
$tp->hide("subnet"); |
||||
$tp->hide("vlan"); |
||||
$tp->hide("resultcount"); |
||||
} else { |
||||
// hide nosearch box |
||||
$tp->hide("nosearch"); |
||||
|
||||
// set needle |
||||
$needle = '%' . $search . '%'; |
||||
|
||||
// set counter |
||||
$resultcounter = 0; |
||||
|
||||
// setup asset |
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_id AS asset_id, |
||||
asset.asset_name AS asset_name |
||||
FROM |
||||
asset |
||||
WHERE |
||||
asset.asset_name LIKE '" . $needle . "' |
||||
OR asset.asset_hostname LIKE '" . $needle . "' |
||||
OR asset.asset_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
asset.asset_name"; |
||||
|
||||
// run query |
||||
$assets = $db->db_select($query); |
||||
|
||||
// count results |
||||
$counter = count($assets); |
||||
|
||||
// counter to tpl |
||||
$tp->set("counter", $counter); |
||||
|
||||
// any assets? |
||||
if ($counter>0) { |
||||
// get objects |
||||
foreach($assets AS $asset) { |
||||
// send to tpl |
||||
$tp->set("item_name", $lang['lang_assets']); |
||||
$tp->set("item", "asset"); |
||||
$tp->set("id", $asset['asset_id']); |
||||
$tp->set("name", $asset['asset_name']); |
||||
|
||||
// parse block |
||||
$tp->parse("row"); |
||||
|
||||
// update counter |
||||
$resultcounter++; |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("asset"); |
||||
} else { |
||||
// parse block |
||||
$tp->hide("asset"); |
||||
} |
||||
|
||||
// clear row |
||||
$tp->clear("row"); |
||||
|
||||
// setup location |
||||
// build query |
||||
$query = "SELECT |
||||
location.location_id AS location_id, |
||||
location.location_name AS location_name |
||||
FROM |
||||
location |
||||
WHERE |
||||
location.location_name LIKE '" . $needle . "' |
||||
OR location.location_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
location.location_name"; |
||||
|
||||
// run query |
||||
$locations = $db->db_select($query); |
||||
|
||||
// count results |
||||
$counter = count($locations); |
||||
|
||||
// counter to tpl |
||||
$tp->set("counter", $counter); |
||||
|
||||
// any locations? |
||||
if ($counter>0) { |
||||
// get objects |
||||
foreach($locations AS $location) { |
||||
// send to tpl |
||||
$tp->set("item_name", $lang['lang_locations']); |
||||
$tp->set("item", "location"); |
||||
$tp->set("id", $location['location_id']); |
||||
$tp->set("name", $location['location_name']); |
||||
|
||||
// parse block |
||||
$tp->parse("row"); |
||||
|
||||
// update counter |
||||
$resultcounter++; |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("location"); |
||||
} else { |
||||
// parse block |
||||
$tp->hide("location"); |
||||
} |
||||
|
||||
// clear row |
||||
$tp->clear("row"); |
||||
|
||||
// setup node |
||||
// build query |
||||
$query = "SELECT |
||||
node.node_id AS node_id, |
||||
node.node_ip AS node_ip |
||||
FROM |
||||
node |
||||
WHERE |
||||
node.node_ip LIKE '" . $needle . "' |
||||
OR node.node_mac LIKE '" . $needle . "' |
||||
OR node.node_dns1 LIKE '" . $needle . "' |
||||
OR node.node_dns2 LIKE '" . $needle . "' |
||||
OR node.node_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
node.node_ip"; |
||||
|
||||
// run query |
||||
$nodes = $db->db_select($query); |
||||
|
||||
// count results |
||||
$counter = count($nodes); |
||||
|
||||
// counter to tpl |
||||
$tp->set("counter", $counter); |
||||
|
||||
// any nodes? |
||||
if ($counter>0) { |
||||
// get objects |
||||
foreach($nodes AS $node) { |
||||
// send to tpl |
||||
$tp->set("item_name", $lang['lang_nodes']); |
||||
$tp->set("item", "node"); |
||||
$tp->set("id", $node['node_id']); |
||||
$tp->set("name", $node['node_ip']); |
||||
|
||||
// parse block |
||||
$tp->parse("row"); |
||||
|
||||
// update counter |
||||
$resultcounter++; |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("node"); |
||||
} else { |
||||
// parse block |
||||
$tp->hide("node"); |
||||
} |
||||
|
||||
// clear row |
||||
$tp->clear("row"); |
||||
|
||||
// setup subnet |
||||
// build query |
||||
$query = "SELECT |
||||
subnet.subnet_id AS subnet_id, |
||||
subnet.subnet_address AS subnet_address |
||||
FROM |
||||
subnet |
||||
WHERE |
||||
subnet.subnet_address LIKE '" . $needle . "' |
||||
OR subnet.subnet_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
subnet.subnet_address"; |
||||
|
||||
// run query |
||||
$subnets = $db->db_select($query); |
||||
|
||||
// count results |
||||
$counter = count($subnets); |
||||
|
||||
// counter to tpl |
||||
$tp->set("counter", $counter); |
||||
|
||||
// any subnets? |
||||
if ($counter>0) { |
||||
// get objects |
||||
foreach($subnets AS $subnet) { |
||||
// send to tpl |
||||
$tp->set("item_name", $lang['lang_subnets']); |
||||
$tp->set("item", "subnet"); |
||||
$tp->set("id", $subnet['subnet_id']); |
||||
$tp->set("name", $subnet['subnet_address']); |
||||
|
||||
// parse block |
||||
$tp->parse("row"); |
||||
|
||||
// update counter |
||||
$resultcounter++; |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("subnet"); |
||||
} else { |
||||
// parse block |
||||
$tp->hide("subnet"); |
||||
} |
||||
|
||||
// clear row |
||||
$tp->clear("row"); |
||||
|
||||
// setup vlan |
||||
// build query |
||||
$query = "SELECT |
||||
vlan.vlan_id AS vlan_id, |
||||
vlan.vlan_name AS vlan_name |
||||
FROM |
||||
vlan |
||||
WHERE |
||||
vlan.vlan_name LIKE '" . $needle . "' |
||||
OR vlan.vlan_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
vlan.vlan_name"; |
||||
|
||||
// run query |
||||
$vlans = $db->db_select($query); |
||||
|
||||
// count results |
||||
$counter = count($vlans); |
||||
|
||||
// counter to tpl |
||||
$tp->set("counter", $counter); |
||||
|
||||
// any vlans? |
||||
if ($counter>0) { |
||||
// get objects |
||||
foreach($vlans AS $vlan) { |
||||
// send to tpl |
||||
$tp->set("item_name", $lang['lang_vlans']); |
||||
$tp->set("item", "vlan"); |
||||
$tp->set("id", $vlan['vlan_id']); |
||||
$tp->set("name", $vlan['vlan_name']); |
||||
|
||||
// parse block |
||||
$tp->parse("row"); |
||||
|
||||
// update counter |
||||
$resultcounter++; |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("vlan"); |
||||
} else { |
||||
// parse block |
||||
$tp->hide("vlan"); |
||||
} |
||||
|
||||
// clear row |
||||
$tp->clear("row"); |
||||
|
||||
// to tpl |
||||
$tp->set("resultcounter", $resultcounter); |
||||
|
||||
// parse block |
||||
$tp->parse("resultcount"); |
||||
} |
||||
|
||||
// end page |
||||
// output |
||||
$tp->parse(); |
||||
$tp->spit(); |
||||
|
||||
// end output |
||||
include("footer.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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// get string that was searched for ($search is already set in header.php) |
||||
if (empty($search)) { |
||||
// parse nosearch box |
||||
$smarty->assign("nosearch", TRUE); |
||||
} else { |
||||
// hide nosearch box |
||||
$smarty->assign("nosearch", FALSE); |
||||
$smarty->assign("search", $search); |
||||
|
||||
// set needle |
||||
$needle = '%' . $search . '%'; |
||||
|
||||
// set counter |
||||
$resultcounter = 0; |
||||
|
||||
// setup asset |
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_id AS id, |
||||
asset.asset_name AS name, |
||||
asset.asset_info AS description |
||||
FROM |
||||
asset |
||||
WHERE |
||||
asset.asset_name LIKE '" . $needle . "' |
||||
OR asset.asset_hostname LIKE '" . $needle . "' |
||||
OR asset.asset_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
asset.asset_name"; |
||||
|
||||
// run query |
||||
$assets = $db->db_select($query); |
||||
$resultcounter += count($assets); |
||||
$smarty->assign("assets", $assets); |
||||
|
||||
// setup location |
||||
// build query |
||||
$query = "SELECT |
||||
location.location_id AS id, |
||||
location.location_name AS name |
||||
FROM |
||||
location |
||||
WHERE |
||||
location.location_name LIKE '" . $needle . "' |
||||
OR location.location_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
location.location_name"; |
||||
|
||||
// run query |
||||
$locations = $db->db_select($query); |
||||
$resultcounter += count($locations); |
||||
$smarty->assign("locations", $locations); |
||||
|
||||
// setup node |
||||
// build query |
||||
$query = "SELECT |
||||
node.node_id AS id, |
||||
node.node_ip AS ip |
||||
FROM |
||||
node |
||||
WHERE |
||||
node.node_ip LIKE '" . $needle . "' |
||||
OR node.node_mac LIKE '" . $needle . "' |
||||
OR node.node_dns1 LIKE '" . $needle . "' |
||||
OR node.node_dns2 LIKE '" . $needle . "' |
||||
OR node.node_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
node.node_ip"; |
||||
|
||||
// run query |
||||
$nodes = $db->db_select($query); |
||||
$resultcounter += count($nodes); |
||||
$smarty->assign("nodes", $nodes); |
||||
|
||||
// setup subnet |
||||
// build query |
||||
$query = "SELECT |
||||
subnet.subnet_id AS id, |
||||
subnet.subnet_address AS address |
||||
FROM |
||||
subnet |
||||
WHERE |
||||
subnet.subnet_address LIKE '" . $needle . "' |
||||
OR subnet.subnet_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
subnet.subnet_address"; |
||||
|
||||
// run query |
||||
$subnets = $db->db_select($query); |
||||
$resultcounter += count($subnets); |
||||
$smarty->assign("subnets", $subnets); |
||||
|
||||
// setup vlan |
||||
// build query |
||||
$query = "SELECT |
||||
vlan.vlan_id AS id, |
||||
vlan.vlan_name AS name |
||||
FROM |
||||
vlan |
||||
WHERE |
||||
vlan.vlan_name LIKE '" . $needle . "' |
||||
OR vlan.vlan_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
vlan.vlan_name"; |
||||
|
||||
// run query |
||||
$vlans = $db->db_select($query); |
||||
$resultcounter += count($vlans); |
||||
$smarty->assign("vlans", $vlans); |
||||
|
||||
// setup zone |
||||
// build query |
||||
$query = "SELECT |
||||
zone_id AS id, |
||||
zone_origin AS origin |
||||
FROM |
||||
zone |
||||
WHERE |
||||
zone_origin LIKE '" . $needle . "' |
||||
OR zone_soa LIKE '" . $needle . "' |
||||
OR zone_hostmaster LIKE '" . $needle . "' |
||||
OR zone_ns1 LIKE '" . $needle . "' |
||||
OR zone_ns2 LIKE '" . $needle . "' |
||||
OR zone_ns3 LIKE '" . $needle . "' |
||||
OR zone_mx1 LIKE '" . $needle . "' |
||||
OR zone_mx2 LIKE '" . $needle . "' |
||||
OR zone_info LIKE '" . $needle . "' |
||||
ORDER BY |
||||
zone_origin"; |
||||
|
||||
// run query |
||||
$zones = $db->db_select($query); |
||||
$resultcounter += count($zones); |
||||
$smarty->assign("zones", $zones); |
||||
|
||||
// grand totals |
||||
$smarty->assign("resultcounter", $resultcounter); |
||||
} |
||||
|
||||
// end page |
||||
// output |
||||
$smarty->display("search.tpl"); |
||||
|
||||
// end output |
||||
include("footer.php"); |
||||
?> |
@ -1,91 +1,64 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/subnet.tpl", $config_yapter_error); |
||||
|
||||
// set language variables |
||||
$tp->setvars($lang); |
||||
|
||||
// setup subnet |
||||
// build query |
||||
$query = "SELECT |
||||
subnet.subnet_id AS subnet_id, |
||||
subnet.subnet_address AS subnet_address, |
||||
subnet.subnet_mask AS subnet_mask, |
||||
COUNT(node.subnet_id) AS node_counter |
||||
FROM |
||||
subnet |
||||
LEFT JOIN |
||||
node |
||||
ON |
||||
node.subnet_id=subnet.subnet_id |
||||
GROUP BY |
||||
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 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']); |
||||
$tp->set("node_counter", $subnet['node_counter']); |
||||
|
||||
// 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"); |
||||
/***************************************************************************** |
||||
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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// setup subnet |
||||
// build query |
||||
$query = "SELECT |
||||
s.subnet_id, |
||||
s.subnet_address, |
||||
s.subnet_mask, |
||||
s.ntp_server, |
||||
LEFT(s.subnet_info, 40) AS subnet_info, |
||||
CHAR_LENGTH(s.subnet_info) AS subnet_length, |
||||
COUNT(node.subnet_id) AS node_counter |
||||
FROM |
||||
subnet AS s |
||||
LEFT JOIN |
||||
node |
||||
ON |
||||
node.subnet_id=s.subnet_id |
||||
GROUP BY |
||||
s.subnet_id |
||||
ORDER BY |
||||
INET_ATON(s.subnet_address)"; |
||||
|
||||
// run query |
||||
$subnets = $db->db_select($query); |
||||
$smarty->assign("subnets", $subnets); |
||||
|
||||
// end page |
||||
// output |
||||
$smarty->display("subnet.tpl"); |
||||
|
||||
// end output |
||||
include("footer.php"); |
||||
?> |
@ -1,66 +1,70 @@ |
||||
<?php |
||||
/***************************************************************************** |
||||
IP Reg, a PHP/MySQL IPAM tool |
||||
Copyright (C) 2007-2009 Wietse Warendorff |
||||
/***************************************************************************** |
||||
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 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. |
||||
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/>. |
||||
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 |
||||
*****************************************************************************/ |
||||
For more information, visit http://sourceforge.net/projects/ipreg, |
||||
or contact me at wietsew@users.sourceforge.net |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$subnet_id = sanitize($_GET['subnet_id']); |
||||
// get id |
||||
$subnet_id = sanitize($_GET['subnet_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/subnetedit.tpl", $config_yapter_error); |
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// set language variables |
||||
$tp->setvars($lang); |
||||
// setup subnet |
||||
// build query |
||||
$query = "SELECT |
||||
subnet_address, |
||||
subnet_mask, |
||||
protocol_version, |
||||
subnet_dhcp_start, |
||||
subnet_dhcp_end, |
||||
ntp_server, |
||||
subnet_info AS subnet_info |
||||
FROM |
||||
subnet |
||||
WHERE |
||||
subnet_id=" . $subnet_id; |
||||
|
||||
// setup subnet |
||||
// build query |
||||
$query = "SELECT |
||||
subnet.subnet_address AS subnet_address, |
||||
subnet.subnet_mask AS subnet_mask, |
||||
subnet.subnet_info AS subnet_info |
||||
FROM |
||||
subnet |
||||
WHERE |
||||
subnet.subnet_id=" . $subnet_id; |
||||
// run query |
||||
$subnet = $db->db_select($query); |
||||
|
||||
// run query |
||||
$subnet = $db->db_select($query); |
||||
// send to tpl |
||||
$smarty->assign("subnet_id", $subnet_id); |
||||
$smarty->assign("subnet_address", $subnet[0]['subnet_address']); |
||||
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']); |
||||
$smarty->assign("subnet_proto_vers", $subnet[0]['protocol_version']); |
||||
$smarty->assign("subnet_dhcpstart", $subnet[0]['subnet_dhcp_start']); |
||||
$smarty->assign("subnet_dhcpend", $subnet[0]['subnet_dhcp_end']); |
||||
$smarty->assign("subnet_ntp_server", $subnet[0]['ntp_server']); |
||||
$smarty->assign("subnet_info", $subnet[0]['subnet_info']); |
||||
|
||||
// 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("subnet_info", $subnet[0]['subnet_info']); |
||||
// end page |
||||
// output |
||||
$smarty->display("subnetedit.tpl"); |
||||
|
||||
// end page |
||||
// output |
||||
$tp->parse(); |
||||
$tp->spit(); |
||||
|
||||
// end output |
||||
include("footer.php"); |
||||
// end output |
||||
include("footer.php"); |
||||
?> |
@ -1,102 +1,82 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get ip and id |
||||
$subnet_id = sanitize($_GET['subnet_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/subnetlocationdel.tpl", $config_yapter_error); |
||||
|
||||
// set language variables |
||||
$tp->setvars($lang); |
||||
|
||||
// setup subnet |
||||
// 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); |
||||
|
||||
$tp->set("subnet_id", $subnet_id); |
||||
$tp->set("subnet_address", $subnet[0]['subnet_address']); |
||||
$tp->set("subnet_mask", $subnet[0]['subnet_mask']); |
||||
|
||||
// setup location |
||||
// build query |
||||
$query = "SELECT |
||||
location.location_id AS location_id, |
||||
location.location_name AS location_name |
||||
FROM |
||||
subnetlocation, |
||||
location |
||||
WHERE |
||||
subnetlocation.subnet_id=" . $subnet_id . " |
||||
AND location.location_id=subnetlocation.location_id |
||||
ORDER BY |
||||
location.location_name"; |
||||
|
||||
// run query |
||||
$locations = $db->db_select($query); |
||||
|
||||
// count results |
||||
$location_counter = count($locations); |
||||
|
||||
// any locations? |
||||
if ($location_counter>0) { |
||||
// get objects |
||||
foreach($locations AS $location) { |
||||
// send to tpl |
||||
$tp->set("location_id", $location['location_id']); |
||||
$tp->set("location_name", $location['location_name']); |
||||
|
||||
// parse row |
||||
$tp->parse("location_row"); |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("location_table"); |
||||
} else { |
||||
// hide block |
||||
$tp->hide("location_table"); |
||||
} |
||||
|
||||
// end page |
||||
// output |
||||
$tp->parse(); |
||||
$tp->spit(); |
||||
|
||||
// end output |
||||
include("footer.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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get ip and id |
||||
$subnet_id = sanitize($_GET['subnet_id']); |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// setup subnet |
||||
// 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); |
||||
|
||||
$smarty->assign("subnet_id", $subnet_id); |
||||
$smarty->assign("subnet_address", $subnet[0]['subnet_address']); |
||||
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']); |
||||
|
||||
// setup location |
||||
// build query |
||||
$query = "SELECT |
||||
location.location_id AS location_id, |
||||
location.location_name AS location_name |
||||
FROM |
||||
subnetlocation, |
||||
location |
||||
WHERE |
||||
subnetlocation.subnet_id=" . $subnet_id . " |
||||
AND location.location_id=subnetlocation.location_id |
||||
ORDER BY |
||||
location.location_name"; |
||||
|
||||
// run query |
||||
$records = $db->db_select($query); |
||||
$locations = array(); |
||||
foreach ($records as $rec) { |
||||
$locations[$rec['location_id']] = $rec['location_name']; |
||||
} |
||||
$smarty->assign("location_options", $locations); |
||||
|
||||
|
||||
// end page |
||||
// output |
||||
$smarty->display("subnetlocationdel.tpl"); |
||||
|
||||
// end output |
||||
include("footer.php"); |
||||
?> |
@ -1,499 +1,440 @@ |
||||
<?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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$subnet_id = sanitize($_GET['subnet_id']); |
||||
|
||||
// get page |
||||
if(isset($_GET['page'])) { |
||||
$page = sanitize($_GET['page']); |
||||
} |
||||
|
||||
// start output |
||||
include("header.php"); |
||||
|
||||
// set template |
||||
$tp = new Template("tpl/subnetview.tpl", $config_yapter_error); |
||||
|
||||
// set language variables |
||||
$tp->setvars($lang); |
||||
|
||||
// setup subnet |
||||
// build query |
||||
$query = "SELECT |
||||
subnet.subnet_address AS subnet_address, |
||||
subnet.subnet_mask AS subnet_mask, |
||||
subnet.subnet_info AS subnet_info, |
||||
COUNT(node.subnet_id) AS node_counter |
||||
FROM |
||||
subnet |
||||
LEFT JOIN |
||||
node |
||||
ON |
||||
node.subnet_id=subnet.subnet_id |
||||
WHERE |
||||
subnet.subnet_id=" . $subnet_id . " |
||||
GROUP BY |
||||
subnet.subnet_id"; |
||||
|
||||
// run query |
||||
$subnet = $db->db_select($query); |
||||
|
||||
// set needed variables |
||||
$subnet_address = $subnet[0]['subnet_address']; |
||||
$subnet_mask = $subnet[0]['subnet_mask']; |
||||
|
||||
// set counters |
||||
$host_counter = pow(2,(32-$subnet_mask)); |
||||
$node_counter = $subnet[0]['node_counter']; |
||||
$subnet_usedpercentage = round((($node_counter/($host_counter-2))*100),1); |
||||
|
||||
// send to tpl |
||||
$tp->set("subnet_id", $subnet_id); |
||||
$tp->set("subnet_address", $subnet_address); |
||||
$tp->set("subnet_mask", $subnet_mask); |
||||
$tp->set("subnet_info", nl2br($subnet[0]['subnet_info'])); |
||||
$tp->set("node_counter", $node_counter); |
||||
$tp->set("subnet_usedpercentage", $subnet_usedpercentage); |
||||
$tp->set("config_color_unused", $config_color_unused); |
||||
$tp->set("host_counter", $host_counter-2); |
||||
$tp->set("free_counter", (($host_counter-2)-$node_counter)); |
||||
|
||||
// setup subnet |
||||
// split up the range |
||||
$iprange = explode('.', $subnet_address); |
||||
$iprange1 = $iprange[0]; |
||||
$iprange2 = $iprange[1]; |
||||
$iprange3 = $iprange[2]; |
||||
$iprange4 = $iprange[3]; |
||||
|
||||
// create empty subnet-array |
||||
$subnet = array(); |
||||
|
||||
// determine range (Class A/B/C) |
||||
if ($subnet_mask>=24) { |
||||
// Class C |
||||
// fill subnet-array with addresses we want to see |
||||
for($i=0;$i<$host_counter;$i++) { |
||||
// build ip |
||||
$ip = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i); |
||||
|
||||
// fill subnet-array |
||||
$subnet[$ip] = array(); |
||||
} |
||||
|
||||
// calculate broadcast address |
||||
$broadcast_address = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i-1); |
||||
|
||||
// to tpl |
||||
$tp->set("iprange1", $iprange1); |
||||
$tp->set("iprange2", $iprange2); |
||||
$tp->set("iprange3", $iprange3); |
||||
$tp->set("iprange4", $iprange4); |
||||
$tp->set("subnetmask1", 255); |
||||
$tp->set("subnetmask2", 255); |
||||
$tp->set("subnetmask3", 255); |
||||
$tp->set("subnetmask4", 256-$host_counter); |
||||
|
||||
// no pagination needed |
||||
$tp->parse("noselect"); |
||||
$tp->hide("one_select"); |
||||
$tp->hide("two_select"); |
||||
|
||||
// set displayed nodes |
||||
$nodes_displayed = $host_counter; |
||||
} else if ($subnet_mask>=16) { |
||||
// Class B |
||||
// which part do we want to see? |
||||
if((empty($page)) ? $page=$subnet_address : $page=$page); |
||||
$page = explode('.', $page); |
||||
$page2 = $page[2]; |
||||
|
||||
// fill subnet-array with addresses we want to see |
||||
for($i=0;$i<256;$i++) { |
||||
// build ip |
||||
$ip = $iprange1 . '.' . $iprange2 . '.' . $page2 . '.' . $i; |
||||
|
||||
// fill subnet-array |
||||
$subnet[$ip] = array(); |
||||
} |
||||
|
||||
// calculate broadcast address |
||||
$broadcast_address = $iprange1 . '.' . $iprange2 . '.' . ($iprange3+$i-1) . '.255'; |
||||
|
||||
// to tpl |
||||
$tp->set("iprange1", $iprange1); |
||||
$tp->set("iprange2", $iprange2); |
||||
|
||||
// loop addresses in range3 |
||||
for($i=$iprange3;$i<(pow(2,(32-$subnet_mask))/256);$i++) { |
||||
// send to tpl |
||||
$tp->set("iprange3", $i); |
||||
$tp->set("iprange4", 0); |
||||
|
||||
// set select box |
||||
if($i==$page2) { |
||||
$tp->set("row_selected", "selected"); |
||||
|
||||
} else { |
||||
$tp->set("row_selected", ""); |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("one_select_row"); |
||||
} |
||||
|
||||
$tp->set("subnetmask1", 255); |
||||
$tp->set("subnetmask2", 255); |
||||
$tp->set("subnetmask3", 256-($host_counter/256)); |
||||
$tp->set("subnetmask4", 0); |
||||
|
||||
// one select box |
||||
$tp->hide("noselect"); |
||||
$tp->parse("one_select"); |
||||
$tp->hide("two_select"); |
||||
|
||||
// set displayed nodes |
||||
$nodes_displayed = 256; |
||||
} else { |
||||
// Class A |
||||
// which part do we want to see? |
||||
if((empty($page)) ? $page=$subnet_address : $page=$page); |
||||
$page = explode('.', $page); |
||||
$page2 = $page[1]; |
||||
$page3 = $page[2]; |
||||
|
||||
// fill subnet-array with addresses we want to see |
||||
for($i=0;$i<256;$i++) { |
||||
// build ip |
||||
$ip = $iprange1 . '.' . $page2 . '.' . $page3 . '.' . $i; |
||||
|
||||
// fill subnet-array |
||||
$subnet[$ip] = array(); |
||||
} |
||||
|
||||
// calculate broadcast address |
||||
$broadcast_address = $iprange1 . '.' . ($iprange2+$i-1) . '.255.255'; |
||||
|
||||
// to tpl |
||||
$tp->set("iprange1", $iprange1); |
||||
$tp->set("iprange2", $iprange2); |
||||
|
||||
// loop addresses in range 2 |
||||
for($i=$iprange2;$i<(pow(2,(24-$subnet_mask))/256);$i++) { |
||||
// send to tpl |
||||
$tp->set("iprange1", $iprange1); |
||||
$tp->set("iprange2", $i); |
||||
$tp->set("iprange3", $page3); |
||||
$tp->set("iprange4", $iprange4); |
||||
|
||||
// set select box |
||||
if($i==$page2) { |
||||
$tp->set("row1_selected", "selected"); |
||||
|
||||
} else { |
||||
$tp->set("row1_selected", ""); |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("two_select_row1"); |
||||
} |
||||
|
||||
// loop addresses in range 3 |
||||
for($i=0;$i<256;$i++) { |
||||
// send to tpl |
||||
$tp->set("iprange1", $iprange1); |
||||
$tp->set("iprange2", $page2); |
||||
$tp->set("iprange3", $i); |
||||
$tp->set("iprange4", $iprange4); |
||||
|
||||
// set select box |
||||
if($i==$page3) { |
||||
$tp->set("row2_selected", "selected"); |
||||
|
||||
} else { |
||||
$tp->set("row2_selected", ""); |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("two_select_row2"); |
||||
} |
||||
|
||||
$tp->set("subnetmask1", 255); |
||||
$tp->set("subnetmask2", 256-($host_counter/65536)); |
||||
$tp->set("subnetmask3", 0); |
||||
$tp->set("subnetmask4", 0); |
||||
|
||||
// one select box |
||||
$tp->hide("noselect"); |
||||
$tp->hide("one_select"); |
||||
$tp->parse("two_select"); |
||||
|
||||
// set displayed nodes |
||||
$nodes_displayed = 256; |
||||
} |
||||
|
||||
// get nodes for this subnetview and implement the values into the array |
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_name AS asset_name, |
||||
assetclassgroup.assetclassgroup_color AS assetclassgroup_color, |
||||
node.node_id AS node_id, |
||||
node.node_ip AS node_ip |
||||
FROM |
||||
asset, |
||||
assetclass, |
||||
assetclassgroup, |
||||
node |
||||
WHERE |
||||
node.node_ip IN ('".implode("','",array_keys($subnet))."') |
||||
AND node.subnet_id='$subnet_id' |
||||
AND asset.asset_id=node.asset_id |
||||
AND assetclass.assetclass_id=asset.assetclass_id |
||||
AND assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id"; |
||||
|
||||
// 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) { |
||||
// add node-values to ip in subnet-array |
||||
$subnet[$node['node_ip']] = $node; |
||||
|
||||
} |
||||
} |
||||
|
||||
// replace ip's in subnet-array (if necessary) |
||||
// check for subnet address |
||||
if(array_key_exists($subnet_address, $subnet)) { |
||||
// replace |
||||
$subnet[$subnet_address] = array("subnet_address"); |
||||
} |
||||
|
||||
// check for broadcast address |
||||
if(array_key_exists($broadcast_address, $subnet)) { |
||||
// replace |
||||
$subnet[$broadcast_address] = array("broadcast_address"); |
||||
} |
||||
|
||||
// loop subnet-array and send to template |
||||
// start counter |
||||
$i=1; |
||||
|
||||
// loop subnet-array |
||||
foreach($subnet AS $node_ip => $node) { |
||||
// make new line? |
||||
if(($i%$_SESSION['suser_imagecount']==0 && $i!=$nodes_displayed) ? $tr="</tr><tr>" : $tr=""); |
||||
|
||||
// check node |
||||
if(empty($node)) { |
||||
// empty node to tpl |
||||
$tp->set("url", 'assigniptonode.php?subnet_id=' . $subnet_id . '&node_ip='. $node_ip); |
||||
$tp->set("remotetext", $node_ip); |
||||
$tp->set("assetclassgroup_color", $config_color_unused); |
||||
} else if ($node[0]=="subnet_address") { |
||||
// subnet address to tpl |
||||
$tp->set("url", ""); |
||||
$tp->set("remotetext", $node_ip . ' ' . $lang['lang_subnet_subnetaddress']); |
||||
$tp->set("assetclassgroup_color", $config_color_blocked); |
||||
} else if ($node[0]=="broadcast_address") { |
||||
// broadcast address to tpl |
||||
$tp->set("url", ""); |
||||
$tp->set("remotetext", $node_ip . ' ' . $lang['lang_subnet_broadcastaddress']); |
||||
$tp->set("assetclassgroup_color", $config_color_blocked); |
||||
} else { |
||||
// node to tpl |
||||
$tp->set("url", 'nodeview.php?node_id=' . $node['node_id']); |
||||
$tp->set("remotetext", $node_ip . ' ' . $node['asset_name']); |
||||
$tp->set("assetclassgroup_color", $node['assetclassgroup_color']); |
||||
} |
||||
|
||||
// set other vars |
||||
$tp->set("tr", $tr); |
||||
|
||||
// parse block |
||||
$tp->parse("node_row"); |
||||
|
||||
// update counter |
||||
$i++; |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("node_table"); |
||||
|
||||
// setup vlan |
||||
// build query |
||||
$query = "SELECT |
||||
vlan.vlan_id AS vlan_id, |
||||
vlan.vlan_name AS vlan_name, |
||||
vlan.vlan_number AS vlan_number |
||||
FROM |
||||
subnetvlan, |
||||
vlan |
||||
WHERE |
||||
subnetvlan.subnet_id=" . $subnet_id . " |
||||
AND vlan.vlan_id=subnetvlan.vlan_id |
||||
ORDER BY |
||||
vlan.vlan_name"; |
||||
|
||||
// run query |
||||
$vlans = $db->db_select($query); |
||||
|
||||
// count results |
||||
$vlan_counter = count($vlans); |
||||
|
||||
// counter to tpl |
||||
$tp->set("vlan_counter", $vlan_counter); |
||||
|
||||
// any nodes? |
||||
if ($vlan_counter>0) { |
||||
// get objects |
||||
foreach($vlans AS $vlan) { |
||||
// send to tpl |
||||
$tp->set("vlan_id", $vlan['vlan_id']); |
||||
$tp->set("vlan_name", $vlan['vlan_name']); |
||||
$tp->set("vlan_number", $vlan['vlan_number']); |
||||
|
||||
// parse block |
||||
$tp->parse("vlan_row"); |
||||
} |
||||
// parse block |
||||
$tp->parse("vlan_table"); |
||||
} else { |
||||
// parse block |
||||
$tp->hide("vlan_table"); |
||||
} |
||||
|
||||
// setup location |
||||
// build query |
||||
$query = "SELECT |
||||
location.location_id, |
||||
location.location_name |
||||
FROM |
||||
location |
||||
LEFT JOIN |
||||
subnetlocation |
||||
ON |
||||
subnetlocation.location_id=location.location_id |
||||
WHERE |
||||
subnetlocation.subnet_id=". $subnet_id . " |
||||
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 nodes? |
||||
if ($location_counter>0) { |
||||
// get objects |
||||
foreach($locations AS $location) { |
||||
// send to tpl |
||||
$tp->set("location_id", $location['location_id']); |
||||
$tp->set("location_name", $location['location_name']); |
||||
|
||||
// parse block |
||||
$tp->parse("location_row"); |
||||
} |
||||
// parse block |
||||
$tp->parse("location_table"); |
||||
} else { |
||||
// parse block |
||||
$tp->hide("location_table"); |
||||
} |
||||
|
||||
// setup assetclassgroup |
||||
// build query |
||||
$query = "SELECT |
||||
assetclassgroup.assetclassgroup_id, |
||||
assetclassgroup.assetclassgroup_name, |
||||
assetclassgroup.assetclassgroup_color, |
||||
(SELECT |
||||
COUNT(node.node_id) |
||||
FROM |
||||
asset, |
||||
assetclass, |
||||
node |
||||
WHERE |
||||
asset.assetclass_id=assetclass.assetclass_id |
||||
AND assetclass.assetclassgroup_id=assetclassgroup.assetclassgroup_id |
||||
AND node.asset_id=asset.asset_id |
||||
AND node.subnet_id=" . $subnet_id . ") AS node_counter |
||||
FROM |
||||
assetclassgroup |
||||
GROUP BY |
||||
assetclassgroup.assetclassgroup_id |
||||
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 nodes? |
||||
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_color", $assetclassgroup['assetclassgroup_color']); |
||||
|
||||
$tp->set("assetclassgroup_node_counter", $assetclassgroup['node_counter']); |
||||
|
||||
// parse block |
||||
$tp->parse("assetclassgroup_row"); |
||||
} |
||||
// parse block |
||||
$tp->parse("assetclassgroup_table"); |
||||
} else { |
||||
// parse block |
||||
$tp->hide("assetclassgroup_table"); |
||||
} |
||||
|
||||
// end page |
||||
// output |
||||
$tp->parse(); |
||||
$tp->spit(); |
||||
|
||||
// end output |
||||
include("footer.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 |
||||
*****************************************************************************/ |
||||
|
||||
// start page |
||||
// includes |
||||
include("includes.php"); |
||||
|
||||
// get id |
||||
$subnet_id = sanitize($_GET['subnet_id']); |
||||
|
||||
// get page |
||||
if(isset($_GET['page'])) { |
||||
$page = sanitize($_GET['page']); |
||||
} |
||||
|
||||
// start output |
||||
$smarty->assign("scripts",'changetext.js'); |
||||
include("header.php"); |
||||
|
||||
// set language variables |
||||
$smarty->assign($lang); |
||||
|
||||
// setup subnet |
||||
// build query |
||||
$query = "SELECT |
||||
subnet.subnet_address, |
||||
subnet.subnet_mask, |
||||
subnet.subnet_dhcp_start, |
||||
subnet.subnet_dhcp_end, |
||||
subnet.subnet_info, |
||||
subnet.protocol_version, |
||||
subnet.ntp_server, |
||||
COUNT(node.subnet_id) AS node_counter |
||||
FROM |
||||
subnet |
||||
LEFT JOIN |
||||
node |
||||
ON |
||||
node.subnet_id=subnet.subnet_id |
||||
WHERE |
||||
subnet.subnet_id=" . $subnet_id . " |
||||
GROUP BY |
||||
subnet.subnet_id"; |
||||
|
||||
// run query |
||||
$subnet = $db->db_select($query); |
||||
|
||||
// set needed variables |
||||
$subnet_address = $subnet[0]['subnet_address']; |
||||
$subnet_mask = $subnet[0]['subnet_mask']; |
||||
$subnet_dhcpstart = $subnet[0]['subnet_dhcp_start']; |
||||
$subnet_dhcpend = $subnet[0]['subnet_dhcp_end']; |
||||
$subnet_proto_vers = $subnet[0]['protocol_version']; |
||||
$subnet_ntp_server = $subnet[0]['ntp_server']; |
||||
|
||||
// set counters |
||||
$host_counter = pow(2,(32-$subnet_mask)); |
||||
$node_counter = $subnet[0]['node_counter']; |
||||
$subnet_usedpercentage = round((($node_counter/($host_counter-2))*100), 1); |
||||
|
||||
// send to tpl |
||||
$smarty->assign("subnet_id", $subnet_id); |
||||
$smarty->assign("subnet_address", $subnet_address); |
||||
$smarty->assign("subnet_mask", $subnet_mask); |
||||
$smarty->assign("subnet_dhcpstart", $subnet_dhcpstart); |
||||
$smarty->assign("subnet_dhcpend", $subnet_dhcpend); |
||||
$smarty->assign("subnet_info", nl2br($subnet[0]['subnet_info'])); |
||||
$smarty->assign("subnet_proto_vers", $subnet_proto_vers); |
||||
$smarty->assign("subnet_ntp_server", $subnet_ntp_server); |
||||
$smarty->assign("node_counter", $node_counter); |
||||
$smarty->assign("subnet_usedpercentage", $subnet_usedpercentage); |
||||
$smarty->assign("config_color_unused", $config_color_unused); |
||||
$smarty->assign("host_counter", $host_counter-2); |
||||
$smarty->assign("free_counter", (($host_counter-2)-$node_counter)); |
||||
|
||||
// setup subnet |
||||
// split up the range |
||||
$iprange = explode('.', $subnet_address); |
||||
$iprange1 = $iprange[0]; |
||||
$iprange2 = $iprange[1]; |
||||
$iprange3 = $iprange[2]; |
||||
$iprange4 = $iprange[3]; |
||||
|
||||
// create empty subnet-array |
||||
$subnet = array(); |
||||
|
||||
// determine range (Class A/B/C) |
||||
if ($subnet_mask>=24) { |
||||
// Class C |
||||
// fill subnet-array with addresses we want to see |
||||
for($i=0;$i<$host_counter;$i++) { |
||||
// build ip |
||||
$ip = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i); |
||||
|
||||
// fill subnet-array |
||||
$subnet[$ip] = array(); |
||||
} |
||||
|
||||
// calculate broadcast address |
||||
$broadcast_address = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i-1); |
||||
|
||||
// to tpl |
||||
$smarty->assign("iprange1", $iprange1); |
||||
$smarty->assign("iprange2", $iprange2); |
||||
$smarty->assign("iprange3", $iprange3); |
||||
$smarty->assign("iprange4", $iprange4); |
||||
$smarty->assign("subnetmask1", 255); |
||||
$smarty->assign("subnetmask2", 255); |
||||
$smarty->assign("subnetmask3", 255); |
||||
$smarty->assign("subnetmask4", 256-$host_counter); |
||||
|
||||
// no pagination needed |
||||
$smarty->assign("noselect", TRUE); |
||||
$smarty->assign("one_select", FALSE); |
||||
$smarty->assign("two_select", FALSE); |
||||
|
||||
// set displayed nodes |
||||
$nodes_displayed = $host_counter; |
||||
} else if ($subnet_mask>=16) { |
||||
// Class B |
||||
// which part do we want to see? |
||||
if((empty($page)) ? $page=$subnet_address : $page=$page); |
||||
$page = explode('.', $page); |
||||
$page2 = $page[2]; |
||||
|
||||
// fill subnet-array with addresses we want to see |
||||
for($i=0;$i<256;$i++) { |
||||
// build ip |
||||
$ip = $iprange1 . '.' . $iprange2 . '.' . $page2 . '.' . $i; |
||||
|
||||
// fill subnet-array |
||||
$subnet[$ip] = array(); |
||||
} |
||||
|
||||
// calculate broadcast address |
||||
$broadcast_address = $iprange1 . '.' . $iprange2 . '.' . ($iprange3+$i-1) . '.255'; |
||||
|
||||
// to tpl |
||||
$smarty->assign("iprange1", $iprange1); |
||||
$smarty->assign("iprange2", $iprange2); |
||||
|
||||
// loop addresses in range3 |
||||
for($i=$iprange3;$i<(pow(2,(32-$subnet_mask))/256);$i++) { |
||||
// send to tpl |
||||
$smarty->assign("iprange3", $i); |
||||
$smarty->assign("iprange4", 0); |
||||
|
||||
// set select box |
||||
if($i==$page2) { |
||||
$smarty->assign("row_selected", "selected"); |
||||
|
||||
} else { |
||||
$smarty->assign("row_selected", ""); |
||||
} |
||||
|
||||
} |
||||
|
||||
$smarty->assign("subnetmask1", 255); |
||||
$smarty->assign("subnetmask2", 255); |
||||
$smarty->assign("subnetmask3", 256-($host_counter/256)); |
||||
$smarty->assign("subnetmask4", 0); |
||||
|
||||
// one select box |
||||
$smarty->assign("noselect", FALSE); |
||||
$smarty->assign("one_select", TRUE); |
||||
$smarty->assign("two_select", FALSE); |
||||
|
||||
// set displayed nodes |
||||
$nodes_displayed = 256; |
||||
} else { |
||||
// Class A |
||||
// which part do we want to see? |
||||
if((empty($page)) ? $page=$subnet_address : $page=$page); |
||||
$page = explode('.', $page); |
||||
$page2 = $page[1]; |
||||
$page3 = $page[2]; |
||||
|
||||
// fill subnet-array with addresses we want to see |
||||
for($i=0;$i<256;$i++) { |
||||
// build ip |
||||
$ip = $iprange1 . '.' . $page2 . '.' . $page3 . '.' . $i; |
||||
|
||||
// fill subnet-array |
||||
$subnet[$ip] = array(); |
||||
} |
||||
|
||||
// calculate broadcast address |
||||
$broadcast_address = $iprange1 . '.' . ($iprange2+$i-1) . '.255.255'; |
||||
|
||||
// to tpl |
||||
$smarty->assign("iprange1", $iprange1); |
||||
$smarty->assign("iprange2", $iprange2); |
||||
|
||||
// loop addresses in range 2 |
||||
for($i=$iprange2;$i<(pow(2,(24-$subnet_mask))/256);$i++) { |
||||
// send to tpl |
||||
$smarty->assign("iprange1", $iprange1); |
||||
$smarty->assign("iprange2", $i); |
||||
$smarty->assign("iprange3", $page3); |
||||
$smarty->assign("iprange4", $iprange4); |
||||
|
||||
// set select box |
||||
if($i==$page2) { |
||||
$smarty->assign("row1_selected", "selected"); |
||||
|
||||
} else { |
||||
$smarty->assign("row1_selected", ""); |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("two_select_row1"); |
||||
} |
||||
|
||||
// loop addresses in range 3 |
||||
for($i=0;$i<256;$i++) { |
||||
// send to tpl |
||||
$smarty->assign("iprange1", $iprange1); |
||||
$smarty->assign("iprange2", $page2); |
||||
$smarty->assign("iprange3", $i); |
||||
$smarty->assign("iprange4", $iprange4); |
||||
|
||||
// set select box |
||||
if($i==$page3) { |
||||
$smarty->assign("row2_selected", "selected"); |
||||
|
||||
} else { |
||||
$smarty->assign("row2_selected", ""); |
||||
} |
||||
|
||||
// parse block |
||||
$tp->parse("two_select_row2"); |
||||
} |
||||
|
||||
$smarty->assign("subnetmask1", 255); |
||||
$smarty->assign("subnetmask2", 256-($host_counter/65536)); |
||||
$smarty->assign("subnetmask3", 0); |
||||
$smarty->assign("subnetmask4", 0); |
||||
|
||||
// one select box |
||||
$smarty->assign("noselect", FALSE); |
||||
$smarty->assign("one_select", FALSE); |
||||
$smarty->assign("two_select", TRUE); |
||||
|
||||
// set displayed nodes |
||||
$nodes_displayed = 256; |
||||
} |
||||
|
||||
// get nodes for this subnetview and implement the values into the array |
||||
// build query |
||||
$query = "SELECT |
||||
asset.asset_name, |
||||
assetclassgroup.assetclassgroup_color, |
||||
node.node_id, |
||||
node.node_ip |
||||
FROM |
||||
asset, |
||||
assetclass, |
||||
assetclassgroup, |
||||
node |
||||
WHERE |
||||
node.node_ip IN ('".implode("','",array_keys($subnet))."') |
||||
AND node.subnet_id='$subnet_id' |
||||
AND asset.asset_id=node.asset_id |
||||
AND assetclass.assetclass_id=asset.assetclass_id |
||||
AND assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id"; |
||||
|
||||
// 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) { |
||||
// add node-values to ip in subnet-array |
||||
$subnet[$node['node_ip']] = $node; |
||||
|
||||
} |
||||
} |
||||
|
||||
// replace ip's in subnet-array (if necessary) |
||||
// check for subnet address |
||||
if(array_key_exists($subnet_address, $subnet)) { |
||||
// replace |
||||
$subnet[$subnet_address] = array("subnet_address"); |
||||
} |
||||
|
||||
// check for broadcast address |
||||
if(array_key_exists($broadcast_address, $subnet)) { |
||||
// replace |
||||
$subnet[$broadcast_address] = array("broadcast_address"); |
||||
} |
||||
|
||||
$dhcpstart = 0; |
||||
if ($subnet_dhcpstart && $subnet_dhcpend) { |
||||
$dhcpstart = ip2long($subnet_dhcpstart); |
||||
$dhcpend = ip2long($subnet_dhcpend); |
||||
} |
||||
|
||||
// loop subnet-array and send to template |
||||
// start counter |
||||
// $i=1; |
||||
// loop subnet-array |
||||
foreach($subnet AS $node_ip => $node) { |
||||
|
||||
// make new line? |
||||
// if(($i%$_SESSION['suser_imagecount']==0 && $i!=$nodes_displayed) ? $tr="</tr><tr>" : $tr=""); |
||||
|
||||
// check if node-ip in DHCP-area |
||||
$subnet[$node_ip]["dynamic"] = False; |
||||
if ($dhcpstart > 0) { |
||||
$ipval = ip2long($node_ip); |
||||
if (($ipval >= $dhcpstart) and ($ipval <= $dhcpend)) { |
||||
$subnet[$node_ip]["dynamic"] = True; |
||||
} |
||||
} |
||||
|
||||
// check node |
||||
if (empty($node)) { |
||||
// empty node to tpl |
||||
$subnet[$node_ip]["url"] = 'assigniptonode.php?subnet_id=' . $subnet_id . '&node_ip='. $node_ip; |
||||
$subnet[$node_ip]["remotetext"] = $node_ip; |
||||
if ($subnet[$node_ip]["dynamic"]) { |
||||
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_dynamic; |
||||
} else { |
||||
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_unused; |
||||
} |
||||
|
||||
} else if (array_key_exists(0, $node) && $node[0]=="subnet_address") { |
||||
// subnet address to tpl |
||||
$subnet[$node_ip]["url"] = ""; |
||||
$subnet[$node_ip]["remotetext"] = $node_ip . ' ' . $lang['lang_subnet_subnetaddress']; |
||||
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_blocked; |
||||
} else if (array_key_exists(0, $node) && $node[0]=="broadcast_address") { |
||||
// broadcast address to tpl |
||||
$subnet[$node_ip]["url"] = ""; |
||||
$subnet[$node_ip]["remotetext"] = $node_ip . ' ' . $lang['lang_subnet_broadcastaddress']; |
||||
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_blocked; |
||||
} else { |
||||
// node to tpl |
||||
$subnet[$node_ip]["url"] = 'nodeview.php?node_id=' . $node['node_id']; |
||||
$subnet[$node_ip]["remotetext"] = $node_ip . ' ' . $node['asset_name']; |
||||
$subnet[$node_ip]["assetclassgroup_color"] = $node['assetclassgroup_color']; |
||||
} |
||||
|
||||
|
||||
// update counter |
||||
// $i++; |
||||
} |
||||
|
||||
$smarty->assign("subnet", $subnet); |
||||
$smarty->assign("imagewrap", $_SESSION['suser_imagecount']); |
||||
|
||||
// setup vlan |
||||
// build query |
||||
$query = "SELECT |
||||
vlan.vlan_id AS vlan_id, |
||||
vlan.vlan_name AS vlan_name, |
||||
vlan.vlan_number AS vlan_number |
||||
FROM |
||||
subnetvlan, |
||||
vlan |
||||
WHERE |
||||
subnetvlan.subnet_id=" . $subnet_id . " |
||||
AND vlan.vlan_id=subnetvlan.vlan_id |
||||
ORDER BY |
||||
vlan.vlan_name"; |
||||
|
||||
// run query |
||||
$vlans = $db->db_select($query); |
||||
$smarty->assign("vlans", $vlans); |
||||
|
||||
// setup location |
||||
// build query |
||||
$query = "SELECT |
||||
location.location_id, |
||||
location.location_name |
||||
FROM |
||||
location |
||||
LEFT JOIN |
||||
subnetlocation |
||||
ON |
||||
subnetlocation.location_id=location.location_id |
||||
WHERE |
||||
subnetlocation.subnet_id=". $subnet_id . " |
||||
ORDER BY |
||||
location.location_name"; |
||||
|
||||
// run query |
||||
$locations = $db->db_select($query); |
||||
$smarty->assign("locations", $locations); |
||||
|
||||
// setup assetclassgroup |
||||
// build query |
||||
$query = "SELECT |
||||
assetclassgroup_id AS id, |
||||
assetclassgroup_name AS name, |
||||
assetclassgroup_color AS color, |
||||
COUNT(assetclass_id) AS counter |
||||
FROM subnet |
||||
LEFT JOIN node USING (subnet_id) |
||||
LEFT JOIN asset USING (asset_id) |
||||
LEFT JOIN assetclass USING (assetclass_id) |
||||
LEFT JOIN assetclassgroup USING (assetclassgroup_id) |
||||
WHERE subnet_id=" . $subnet_id . " |
||||
GROUP BY assetclass_id |
||||
ORDER BY counter DESC"; |
||||
|
||||
// run query |
||||
$assetclassgroups = $db->db_select($query); |
||||
$smarty->assign("assetclassgroups", $assetclassgroups); |
||||
|
||||
// end page |
||||
// output |
||||
$smarty->display("subnetview.tpl"); |
||||
|
||||
// end output |
||||
include("footer.php"); |
||||
?> |