finalized language support and fixed some more bugsmaster
@ -1,114 +1,85 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// get id |
// get id |
||||||
$assetclass_id = sanitize($_GET['assetclass_id']); |
$assetclass_id = sanitize($_GET['assetclass_id']); |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
include("header.php"); |
||||||
|
|
||||||
// set template |
// set language variables |
||||||
$tp = new Template("tpl/assetclassview.tpl", $config_yapter_error); |
$smarty->assign($lang); |
||||||
|
|
||||||
// set language variables |
// setup assetclass |
||||||
$tp->setvars($lang); |
// build query |
||||||
|
$query = "SELECT |
||||||
// setup assetclass |
assetclass.assetclass_id, |
||||||
// build query |
assetclass.assetclass_name, |
||||||
$query = "SELECT |
assetclassgroup.assetclassgroup_id AS assetclassgroup_id, |
||||||
assetclass.assetclass_id AS assetclass_id, |
assetclassgroup.assetclassgroup_name AS assetclassgroup_name |
||||||
assetclass.assetclass_name AS assetclass_name, |
FROM |
||||||
assetclassgroup.assetclassgroup_id AS assetclassgroup_id, |
assetclass, |
||||||
assetclassgroup.assetclassgroup_name AS assetclassgroup_name |
assetclassgroup |
||||||
FROM |
WHERE |
||||||
assetclass, |
assetclass.assetclass_id=" . $assetclass_id . " |
||||||
assetclassgroup |
AND assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id"; |
||||||
WHERE |
|
||||||
assetclass.assetclass_id=" . $assetclass_id . " |
// run query |
||||||
AND assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id"; |
$assetclass = $db->db_select($query); |
||||||
|
|
||||||
// run query |
// send to tpl |
||||||
$assetclass = $db->db_select($query); |
$smarty->assign("assetclass_id", $assetclass[0]['assetclass_id']); |
||||||
|
$smarty->assign("assetclass_name", $assetclass[0]['assetclass_name']); |
||||||
// send to tpl |
$smarty->assign("assetclass_selected", ""); |
||||||
$tp->set("assetclass_id", $assetclass[0]['assetclass_id']); |
|
||||||
$tp->set("assetclass_name", $assetclass[0]['assetclass_name']); |
$smarty->assign("assetclassgroup_id", $assetclass[0]['assetclassgroup_id']); |
||||||
$tp->set("assetclass_selected", ""); |
$smarty->assign("assetclassgroup_name", $assetclass[0]['assetclassgroup_name']); |
||||||
|
|
||||||
$tp->set("assetclassgroup_id", $assetclass[0]['assetclassgroup_id']); |
// send to tpl |
||||||
$tp->set("assetclassgroup_name", $assetclass[0]['assetclassgroup_name']); |
// setup asset |
||||||
|
// build query |
||||||
// setup asset |
$query = "SELECT |
||||||
// build query |
asset_id, |
||||||
$query = "SELECT |
asset_name, |
||||||
asset.asset_id AS asset_id, |
CONCAT(LEFT(asset_info, 80), IF(CHAR_LENGTH(asset_info)>80,'...','')) AS asset_info |
||||||
asset.asset_name AS asset_name |
FROM |
||||||
FROM |
asset |
||||||
asset |
WHERE |
||||||
WHERE |
assetclass_id='" . $assetclass_id . "' |
||||||
asset.assetclass_id='" . $assetclass_id . "' |
ORDER BY |
||||||
ORDER BY |
asset_name"; |
||||||
asset.asset_name"; |
|
||||||
|
// run query |
||||||
// run query |
$assets = $db->db_select($query); |
||||||
$assets = $db->db_select($query); |
$smarty->assign("assets", $assets); |
||||||
|
|
||||||
// count results |
// end page |
||||||
$asset_counter = count($assets); |
// output |
||||||
|
$smarty->display("assetclassview.tpl"); |
||||||
// counter to tpl |
|
||||||
$tp->set("asset_counter", $asset_counter); |
// footer |
||||||
|
include("footer.php"); |
||||||
// 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"); |
|
||||||
?> |
?> |
@ -1,113 +1,86 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// get id |
// get id |
||||||
$asset_id = sanitize($_GET['asset_id']); |
$asset_id = sanitize($_GET['asset_id']); |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
include("header.php"); |
||||||
|
|
||||||
// set template |
// set language variables |
||||||
$tp = new Template("tpl/assetview.tpl", $config_yapter_error); |
$smarty->assign($lang); |
||||||
|
|
||||||
// set language variables |
// setup asset |
||||||
$tp->setvars($lang); |
// build query |
||||||
|
$query = "SELECT |
||||||
// setup asset |
asset.asset_name, |
||||||
// build query |
asset.asset_hostname, |
||||||
$query = "SELECT |
asset.asset_info, |
||||||
asset.asset_name AS asset_name, |
assetclass.assetclass_id AS assetclass_id, |
||||||
asset.asset_hostname AS asset_hostname, |
assetclass.assetclass_name AS assetclass_name |
||||||
asset.asset_info AS asset_info, |
FROM |
||||||
assetclass.assetclass_id AS assetclass_id, |
asset, |
||||||
assetclass.assetclass_name AS assetclass_name |
assetclass |
||||||
FROM |
WHERE |
||||||
asset, |
asset.asset_id=" . $asset_id . " |
||||||
assetclass |
AND assetclass.assetclass_id=asset.assetclass_id"; |
||||||
WHERE |
|
||||||
asset.asset_id=" . $asset_id . " |
// run query |
||||||
AND assetclass.assetclass_id=asset.assetclass_id"; |
$asset = $db->db_select($query); |
||||||
|
|
||||||
// run query |
// send to tpl |
||||||
$asset = $db->db_select($query); |
$smarty->assign("asset_id", $asset_id); |
||||||
|
$smarty->assign("asset_name", $asset[0]['asset_name']); |
||||||
// send to tpl |
$smarty->assign("asset_hostname", $asset[0]['asset_hostname']); |
||||||
$tp->set("asset_id", $asset_id); |
$smarty->assign("asset_info", nl2br($asset[0]['asset_info'])); |
||||||
$tp->set("asset_name", $asset[0]['asset_name']); |
|
||||||
$tp->set("asset_hostname", $asset[0]['asset_hostname']); |
$smarty->assign("assetclass_id", $asset[0]['assetclass_id']); |
||||||
$tp->set("asset_info", nl2br($asset[0]['asset_info'])); |
$smarty->assign("assetclass_name", $asset[0]['assetclass_name']); |
||||||
|
|
||||||
$tp->set("assetclass_id", $asset[0]['assetclass_id']); |
// setup node |
||||||
$tp->set("assetclass_name", $asset[0]['assetclass_name']); |
// build query |
||||||
|
$query = "SELECT |
||||||
// setup node |
node_id, |
||||||
// build query |
node_ip, |
||||||
$query = "SELECT |
LEFT(node_info, 40) as node_info |
||||||
node.node_id AS node_id, |
FROM |
||||||
node.node_ip AS node_ip |
node |
||||||
FROM |
WHERE |
||||||
node |
node.asset_id=" . $asset_id . " |
||||||
WHERE |
ORDER BY |
||||||
node.asset_id=" . $asset_id . " |
INET_ATON(node.node_ip)"; |
||||||
ORDER BY |
|
||||||
INET_ATON(node.node_ip)"; |
// run query |
||||||
|
$nodes = $db->db_select($query); |
||||||
// run query |
$smarty->assign("nodes", $nodes); |
||||||
$nodes = $db->db_select($query); |
|
||||||
|
// end page |
||||||
// count results |
// output |
||||||
$node_counter = count($nodes); |
$smarty->display("assetview.tpl"); |
||||||
|
|
||||||
// counter to tpl |
// footer |
||||||
$tp->set("node_counter", $node_counter); |
include("footer.php"); |
||||||
|
|
||||||
// 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"); |
|
||||||
?> |
?> |
@ -1,28 +1,28 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// build connection |
// build connection |
||||||
mysql_connect($config_mysql_host,$config_mysql_username,$config_mysql_password); |
$dblink = mysqli_connect($config_mysql_host,$config_mysql_username,$config_mysql_password); |
||||||
|
|
||||||
// select db |
// select db |
||||||
mysql_select_db($config_mysql_dbname); |
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 |
IP Reg Installation |
||||||
|
|
||||||
1. Create database |
1. Install requirements |
||||||
Create a database for IP Reg on your web server, as well as a MySQL user who has all privileges for accessing and modifying it. |
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 |
2. Create database |
||||||
Import the mysql.sql file into your database, which will create the tables and some sample data. |
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. |
Open config.php in a text editor and fill in your database details. |
||||||
|
|
||||||
4. Upload files |
5. Upload files |
||||||
Upload all files and directory's (except the install directory) to your webserver. |
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 |
7. Start using IP Reg |
||||||
Start your browser and login to IP Reg with the default username/password: admin/admin |
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 |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// functions |
// functions |
||||||
include("lib/functions.php"); |
include("lib/functions.php"); |
||||||
|
|
||||||
// classes |
// classes |
||||||
// db |
// db |
||||||
// load class |
// load class |
||||||
require("lib/db.class.php"); |
require("lib/db.class.php"); |
||||||
|
|
||||||
// create instance |
// create instance |
||||||
$db = new Db(); |
$db = new Db($dblink); |
||||||
|
|
||||||
// user |
// user |
||||||
// load class |
// load class |
||||||
require("lib/user.class.php"); |
require("lib/user.class.php"); |
||||||
|
|
||||||
// create instance |
// create instance |
||||||
$user = new User(); |
$user = new User(); |
||||||
|
|
||||||
// tpl |
// tpl |
||||||
// load class |
require_once('smarty3/Smarty.class.php'); |
||||||
include("lib/yapter.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){ |
function changelink(optVal) { |
||||||
if(optVal=="") |
if(optVal=="") |
||||||
return false; |
return false; |
||||||
window.location='subnetview.php?subnet_id='+optVal; |
window.location='subnetview.php?subnet_id='+optVal; |
||||||
} |
} |
@ -1,3 +1,3 @@ |
|||||||
function changetext(id,newtext) { |
function changetext(id,newtext) { |
||||||
document.getElementById(id).innerHTML=newtext |
document.getElementById(id).innerHTML=newtext |
||||||
} |
} |
After Width: | Height: | Size: 83 B |
@ -1,55 +1,173 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
class Db { |
class Db { |
||||||
function db_delete($query) { |
|
||||||
// run query |
protected $dblink; |
||||||
$sql = mysql_query($query) or die(mysql_error()); |
|
||||||
} |
public function __construct ($dblink) { |
||||||
|
$this->dblink = $dblink; |
||||||
function db_insert($query) { |
} |
||||||
// run query |
|
||||||
$sql = mysql_query($query) or die(mysql_error()); |
function db_delete($query) { |
||||||
|
// run query |
||||||
// return result |
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink)); |
||||||
return mysql_insert_id(); |
} |
||||||
} |
|
||||||
|
function db_insert($query) { |
||||||
function db_select($query) { |
// run query |
||||||
// run query |
echo "<pre>$query</pre>"; |
||||||
$sql = mysql_query($query) or die(mysql_error()); |
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink)); |
||||||
|
|
||||||
// loop results |
// return result |
||||||
while($record = mysql_fetch_assoc($sql)) { |
return mysqli_insert_id($this->dblink); |
||||||
$result[] = $record; |
} |
||||||
} |
|
||||||
|
function db_select($query) { |
||||||
// return array |
// run query |
||||||
return $result; |
$sql = mysqli_query($this->dblink, $query) or die(mysqli_error($this->dblink)); |
||||||
} |
|
||||||
|
// loop results |
||||||
function db_update($query) { |
$result = array(); |
||||||
// run query |
while($record = mysqli_fetch_assoc($sql)) { |
||||||
$sql = mysql_query($query) or die(mysql_error()); |
$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 |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// strip mac address to 12 char string |
// strip mac address to 12 char string |
||||||
function strip_mac($mac) { |
function strip_mac($mac) { |
||||||
// strip chars we don't need |
// strip chars we don't need |
||||||
$mac = preg_replace("|[^a-fA-F0-9]|", "", $mac); |
$mac = preg_replace("|[^a-fA-F0-9]|", "", $mac); |
||||||
|
|
||||||
// capitalize (just because it looks better eh) |
// capitalize (just because it looks better eh) |
||||||
$mac = strtoupper($mac); |
$mac = strtoupper($mac); |
||||||
|
|
||||||
// and return |
// and return |
||||||
return ($mac); |
return ($mac); |
||||||
} |
} |
||||||
|
|
||||||
// rebuild mac address |
// rebuild mac address |
||||||
function write_mac($mac) { |
function write_mac($mac) { |
||||||
// check string length |
// check string length |
||||||
if (strlen($mac)!=12) { |
if (strlen($mac)!=12) { |
||||||
// if the MAC is empty, or for whatever reason incorrect, just return |
// if the MAC is empty, or for whatever reason incorrect, just return |
||||||
return $mac; |
return $mac; |
||||||
} else { |
} else { |
||||||
// count to 12... |
// count to 12... |
||||||
for($i=0;$i<12;$i++) { |
for($i=0;$i<12;$i++) { |
||||||
// ... and strip mac to pieces |
// ... and strip mac to pieces |
||||||
${"mac".$i} = $mac{$i}; |
${"mac".$i} = $mac{$i}; |
||||||
} |
} |
||||||
|
|
||||||
// get user preference |
// get user preference |
||||||
$user_mac = $_SESSION['suser_mac']; |
$user_mac = $_SESSION['suser_mac']; |
||||||
|
|
||||||
// count to 12 again... |
// count to 12 again... |
||||||
for($i=0;$i<12;$i++) { |
for($i=0;$i<12;$i++) { |
||||||
// ... and replace user preference with pieces |
// ... and replace user preference with pieces |
||||||
$user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1); |
$user_mac = preg_replace("/x/", ${"mac".$i}, $user_mac, 1); |
||||||
} |
} |
||||||
|
|
||||||
// and return |
// and return |
||||||
return $user_mac; |
return $user_mac; |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
// redirect page |
// redirect page |
||||||
function header_location($location) { |
function header_location($location) { |
||||||
// send header |
// send header |
||||||
header("location: " . $location); |
header("location: " . $location); |
||||||
|
|
||||||
// exit to be sure |
// exit to be sure |
||||||
exit; |
exit; |
||||||
} |
} |
||||||
|
|
||||||
// sanitize input |
// sanitize input |
||||||
function sanitize($input) { |
function sanitize($input) { |
||||||
// trim whitespaces |
global $dblink; |
||||||
$input = @trim($input); |
|
||||||
|
// trim whitespaces |
||||||
// magic quotes enabled? |
$input = @trim($input); |
||||||
if(get_magic_quotes_gpc()) { |
|
||||||
// strip slashes |
// magic quotes enabled? |
||||||
$input = stripslashes($input); |
if(get_magic_quotes_gpc()) { |
||||||
} |
// strip slashes |
||||||
|
$input = stripslashes($input); |
||||||
// convert to utf-8 |
} |
||||||
iconv("UTF-8", "UTF-8", $input); |
|
||||||
|
// convert to utf-8 |
||||||
// convert special chars |
iconv("UTF-8", "UTF-8", $input); |
||||||
$input = htmlentities($input,ENT_QUOTES,'UTF-8'); |
|
||||||
|
// convert special chars |
||||||
// make sql ready |
$input = htmlentities($input,ENT_QUOTES,'UTF-8'); |
||||||
$input = mysql_real_escape_string($input); |
|
||||||
|
// make sql ready |
||||||
// and return |
$input = mysqli_real_escape_string($dblink, $input); |
||||||
return $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 |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
class User { |
class User { |
||||||
function check_strlen($string) { |
function check_strlen($string) { |
||||||
// check length |
// check length |
||||||
if(strlen($string)<1) { |
if(strlen($string)<1) { |
||||||
return FALSE; |
return FALSE; |
||||||
} else { |
} else { |
||||||
return TRUE; |
return TRUE; |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
function user_login($user_name, $user_pass) { |
function user_login($user_name, $user_pass) { |
||||||
// check user_name length |
global $dblink; |
||||||
if($this->check_strlen($user_name)==FALSE) { |
// check user_name length |
||||||
return FALSE; |
if($this->check_strlen($user_name)==FALSE) { |
||||||
} |
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
// check user_pass length |
// check user_pass length |
||||||
if($this->check_strlen($user_pass)==FALSE) { |
if($this->check_strlen($user_pass)==FALSE) { |
||||||
return FALSE; |
return FALSE; |
||||||
} |
} |
||||||
|
|
||||||
// get user data |
// get user data |
||||||
// initiate class |
// initiate class |
||||||
$db = new Db(); |
$db = new Db($dblink); |
||||||
|
|
||||||
// build query |
// build query |
||||||
$query = "SELECT |
$query = "SELECT |
||||||
user.user_id, |
user.user_id, |
||||||
user.user_pass, |
user.user_pass, |
||||||
user.user_displayname, |
user.user_displayname, |
||||||
user.user_imagesize, |
user.user_language, |
||||||
user.user_imagecount, |
user.user_imagesize, |
||||||
user.user_mac, |
user.user_imagecount, |
||||||
user.user_dateformat, |
user.user_mac, |
||||||
user.user_dns1suffix, |
user.user_dateformat, |
||||||
user.user_dns2suffix, |
user.user_dns1suffix, |
||||||
user.user_menu_assets, |
user.user_dns2suffix, |
||||||
user.user_menu_assetclasses, |
user.user_menu_assets, |
||||||
user.user_menu_assetclassgroups, |
user.user_menu_assetclasses, |
||||||
user.user_menu_locations, |
user.user_menu_assetclassgroups, |
||||||
user.user_menu_nodes, |
user.user_menu_locations, |
||||||
user.user_menu_subnets, |
user.user_menu_nodes, |
||||||
user.user_menu_users, |
user.user_menu_subnets, |
||||||
user.user_menu_vlans |
user.user_menu_users, |
||||||
FROM |
user.user_menu_vlans, |
||||||
user |
user.user_menu_zones, |
||||||
WHERE |
user.user_tooltips |
||||||
user.user_name='" . $user_name . "'"; |
FROM |
||||||
|
user |
||||||
|
WHERE |
||||||
|
user.user_name='" . $user_name . "'"; |
||||||
|
|
||||||
// run query |
// run query |
||||||
$users = $db->db_select($query); |
$users = $db->db_select($query); |
||||||
|
|
||||||
// count results |
// count results |
||||||
$user_counter = count($users); |
$user_counter = count($users); |
||||||
|
|
||||||
// any users? |
// any users? |
||||||
if ($user_counter>0) { |
if ($user_counter>0) { |
||||||
// compare passwords |
// compare passwords |
||||||
if(!strcmp(md5($user_pass), $users[0]['user_pass'])) { |
if(!strcmp(md5($user_pass), $users[0]['user_pass'])) { |
||||||
// all ok: user is logged in, register session data |
// all ok: user is logged in, register session data |
||||||
$_SESSION['suser_id'] = $users[0]['user_id']; |
$_SESSION['suser_id'] = $users[0]['user_id']; |
||||||
$_SESSION['suser_displayname'] = $users[0]['user_displayname']; |
$_SESSION['suser_displayname'] = $users[0]['user_displayname']; |
||||||
$_SESSION['suser_imagesize'] = $users[0]['user_imagesize']; |
$_SESSION['suser_language'] = $users[0]['user_language']; |
||||||
$_SESSION['suser_imagecount'] = $users[0]['user_imagecount']; |
$_SESSION['suser_imagesize'] = $users[0]['user_imagesize']; |
||||||
$_SESSION['suser_mac'] = $users[0]['user_mac']; |
$_SESSION['suser_imagecount'] = $users[0]['user_imagecount']; |
||||||
$_SESSION['suser_dateformat'] = $users[0]['user_dateformat']; |
$_SESSION['suser_mac'] = $users[0]['user_mac']; |
||||||
$_SESSION['suser_dns1suffix'] = $users[0]['user_dns1suffix']; |
$_SESSION['suser_dateformat'] = $users[0]['user_dateformat']; |
||||||
$_SESSION['suser_dns2suffix'] = $users[0]['user_dns2suffix']; |
$_SESSION['suser_dns1suffix'] = $users[0]['user_dns1suffix']; |
||||||
$_SESSION['suser_menu_assets'] = $users[0]['user_menu_assets']; |
$_SESSION['suser_dns2suffix'] = $users[0]['user_dns2suffix']; |
||||||
$_SESSION['suser_menu_assetclasses'] = $users[0]['user_menu_assetclasses']; |
$_SESSION['suser_menu_assets'] = $users[0]['user_menu_assets']; |
||||||
$_SESSION['suser_menu_assetclassgroups'] = $users[0]['user_menu_assetclassgroups']; |
$_SESSION['suser_menu_assetclasses'] = $users[0]['user_menu_assetclasses']; |
||||||
$_SESSION['suser_menu_locations'] = $users[0]['user_menu_locations']; |
$_SESSION['suser_menu_assetclassgroups'] = $users[0]['user_menu_assetclassgroups']; |
||||||
$_SESSION['suser_menu_nodes'] = $users[0]['user_menu_nodes']; |
$_SESSION['suser_menu_locations'] = $users[0]['user_menu_locations']; |
||||||
$_SESSION['suser_menu_subnets'] = $users[0]['user_menu_subnets']; |
$_SESSION['suser_menu_nodes'] = $users[0]['user_menu_nodes']; |
||||||
$_SESSION['suser_menu_users'] = $users[0]['user_menu_users']; |
$_SESSION['suser_menu_subnets'] = $users[0]['user_menu_subnets']; |
||||||
$_SESSION['suser_menu_vlans'] = $users[0]['user_menu_vlans']; |
$_SESSION['suser_menu_users'] = $users[0]['user_menu_users']; |
||||||
} else { |
$_SESSION['suser_menu_vlans'] = $users[0]['user_menu_vlans']; |
||||||
return FALSE; |
$_SESSION['suser_menu_zones'] = $users[0]['user_menu_zones']; |
||||||
} |
$_SESSION['suser_tooltips'] = $users[0]['user_tooltips']; |
||||||
} else { |
} else { |
||||||
return FALSE; |
return FALSE; |
||||||
} |
} |
||||||
|
} else { |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
// no errors found, return |
// no errors found, return |
||||||
return TRUE; |
return TRUE; |
||||||
} |
} |
||||||
|
|
||||||
function user_logout() { |
function user_logout() { |
||||||
// clear and destroy session |
// clear and destroy session |
||||||
$_SESSION = array(); |
$_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 |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
include("header.php"); |
||||||
|
|
||||||
// set template |
// set language variables |
||||||
$tp = new Template("tpl/node.tpl", $config_yapter_error); |
$smarty->assign($lang); |
||||||
|
|
||||||
// set language variables |
// start node |
||||||
$tp->setvars($lang); |
// setup view |
||||||
|
// subnet |
||||||
// start node |
if(isset($_GET['subnet_id'])) { |
||||||
// setup view |
// get id |
||||||
// subnet |
$subnet_id = sanitize($_GET['subnet_id']); |
||||||
if(isset($_GET['subnet_id'])) { |
|
||||||
// get id |
// build query part |
||||||
$subnet_id = sanitize($_GET['subnet_id']); |
$subnet_view = "AND node.subnet_id=" . $subnet_id; |
||||||
|
|
||||||
// build query part |
// to tpl |
||||||
$subnet_view = "AND node.subnet_id=" . $subnet_id; |
$smarty->assign("subnet_id", $subnet_id); |
||||||
|
} else { |
||||||
// to tpl |
// to tpl |
||||||
$tp->set("subnet_id", $subnet_id); |
$smarty->assign("subnet_id", ""); |
||||||
} else { |
} |
||||||
// to tpl |
|
||||||
$tp->set("subnet_id", ""); |
// build query |
||||||
} |
$query = "SELECT |
||||||
|
asset.asset_id, |
||||||
// build query |
REPLACE(asset.asset_name, ' ', ' ') AS asset_name, |
||||||
$query = "SELECT |
asset.asset_info, |
||||||
asset.asset_id AS asset_id, |
node.node_id, |
||||||
asset.asset_name AS asset_name, |
node.node_ip |
||||||
node.node_id AS node_id, |
FROM |
||||||
node.node_ip AS node_ip |
asset, |
||||||
FROM |
node |
||||||
asset, |
WHERE |
||||||
node |
asset.asset_id=node.asset_id |
||||||
WHERE |
" . $subnet_view . " |
||||||
asset.asset_id=node.asset_id |
GROUP BY |
||||||
" . $subnet_view . " |
node.node_id |
||||||
GROUP BY |
ORDER BY |
||||||
node.node_id |
INET_ATON(node.node_ip)"; |
||||||
ORDER BY |
|
||||||
INET_ATON(node.node_ip)"; |
// run query |
||||||
|
$nodes = $db->db_select($query); |
||||||
// run query |
$smarty->assign("nodes", $nodes); |
||||||
$nodes = $db->db_select($query); |
|
||||||
|
// end page |
||||||
// count results |
// output |
||||||
$node_counter = count($nodes); |
$smarty->display("node.tpl"); |
||||||
|
|
||||||
// counter to tpl |
// end output |
||||||
$tp->set("node_counter", $node_counter); |
include("footer.php"); |
||||||
|
|
||||||
// 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"); |
|
||||||
?> |
?> |
@ -1,181 +1,105 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// get id |
// get id |
||||||
$node_id = sanitize($_GET['node_id']); |
$node_id = sanitize($_GET['node_id']); |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
include("header.php"); |
||||||
|
|
||||||
// set template |
// set language variables |
||||||
$tp = new Template("tpl/nodeview.tpl", $config_yapter_error); |
$smarty->assign($lang); |
||||||
|
|
||||||
// set language variables |
// setup node |
||||||
$tp->setvars($lang); |
// build query |
||||||
|
$query = "SELECT |
||||||
// setup node |
asset.asset_id, |
||||||
// build query |
asset.asset_name, |
||||||
$query = "SELECT |
node.node_id, |
||||||
asset.asset_id AS asset_id, |
node.node_ip, |
||||||
asset.asset_name AS asset_name, |
node.node_mac, |
||||||
node.node_id AS node_id, |
node.node_dns1, |
||||||
node.node_ip AS node_ip, |
node.node_dns2, |
||||||
node.node_mac AS node_mac, |
node.node_info, |
||||||
node.node_dns1 AS node_dns1, |
node.node_type, |
||||||
node.node_dns2 AS node_dns2, |
subnet.subnet_id, |
||||||
node.node_info AS node_info, |
subnet.subnet_address, |
||||||
subnet.subnet_id AS subnet_id, |
subnet.subnet_mask, |
||||||
subnet.subnet_address AS subnet_address, |
zone.zone_origin |
||||||
subnet.subnet_mask AS subnet_mask |
FROM |
||||||
FROM |
node |
||||||
asset, |
JOIN asset USING (asset_id) |
||||||
node, |
JOIN subnet USING (subnet_id) |
||||||
subnet |
LEFT JOIN zone USING (zone_id) |
||||||
WHERE |
WHERE |
||||||
asset.asset_id=node.asset_id |
node.node_id=" . $node_id; |
||||||
AND node.node_id=" . $node_id . " |
|
||||||
AND subnet.subnet_id=node.subnet_id"; |
// run query |
||||||
|
$node = $db->db_select($query); |
||||||
// run query |
$node[0]['node_mac'] = write_mac($node[0]['node_mac']); |
||||||
$nodes = $db->db_select($query); |
$smarty->assign("node", $node[0]); |
||||||
|
|
||||||
// count results |
// setup nat |
||||||
$node_counter = count($nodes); |
// build query |
||||||
|
$query = "SELECT |
||||||
// counter to tpl |
asset_ext.asset_id AS asset_id_ext, |
||||||
$tp->set("node_counter", $node_counter); |
asset_int.asset_id AS asset_id_int, |
||||||
|
asset_ext.asset_name AS asset_name_ext, |
||||||
// any nodes? |
asset_int.asset_name AS asset_name_int, |
||||||
if ($node_counter>0) { |
nat.nat_id AS nat_id, |
||||||
// get objects |
nat.nat_type AS nat_type, |
||||||
foreach($nodes AS $node) { |
nat.nat_ext AS nat_ext, |
||||||
// send to tpl |
nat.nat_int AS nat_int, |
||||||
$tp->set("asset_id", $node['asset_id']); |
node_ext.node_ip AS node_ip_ext, |
||||||
$tp->set("asset_name", $node['asset_name']); |
node_int.node_ip AS node_ip_int |
||||||
|
FROM |
||||||
$tp->set("node_id", $node['node_id']); |
asset asset_ext, |
||||||
$tp->set("node_ip", $node['node_ip']); |
asset asset_int, |
||||||
$tp->set("node_mac", write_mac($node['node_mac'])); |
nat, |
||||||
$tp->set("node_dns1", $node['node_dns1']); |
node node_ext, |
||||||
$tp->set("node_dns2", $node['node_dns2']); |
node node_int |
||||||
$tp->set("node_info", nl2br($node['node_info'])); |
WHERE |
||||||
|
(nat.nat_ext=" . $node_id . " |
||||||
$tp->set("subnet_id", $node['subnet_id']); |
OR nat.nat_int=" . $node_id . ") |
||||||
$tp->set("subnet_address", $node['subnet_address']); |
AND node_ext.node_id=nat.nat_ext |
||||||
$tp->set("subnet_mask", $node['subnet_mask']); |
AND node_int.node_id=nat.nat_int |
||||||
|
AND asset_ext.asset_id=node_ext.asset_id |
||||||
// parse row |
AND asset_int.asset_id=node_int.asset_id |
||||||
$tp->parse("node_row"); |
ORDER BY |
||||||
} |
INET_ATON(node_ext.node_ip), |
||||||
|
INET_ATON(node_int.node_ip)"; |
||||||
// parse block |
|
||||||
$tp->parse("node_table"); |
// run query |
||||||
} else { |
$natrules = $db->db_select($query); |
||||||
// hide block |
// counter to tpl |
||||||
$tp->hide("node_table"); |
$smarty->assign("natrules", $natrules); |
||||||
} |
|
||||||
|
// end page |
||||||
// setup nat |
// output |
||||||
// build query |
$smarty->display("nodeview.tpl"); |
||||||
$query = "SELECT |
|
||||||
asset_ext.asset_id AS asset_id_ext, |
include("footer.php"); |
||||||
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"); |
|
||||||
?> |
?> |
@ -1,321 +1,178 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
include("header.php"); |
||||||
|
|
||||||
// set template |
// set language variables |
||||||
$tp = new Template("tpl/search.tpl", $config_yapter_error); |
$smarty->assign($lang); |
||||||
|
|
||||||
// set language variables |
// get string that was searched for ($search is already set in header.php) |
||||||
$tp->setvars($lang); |
if (empty($search)) { |
||||||
|
// parse nosearch box |
||||||
// get string that was searched for ($search is allready set in header.php) |
$smarty->assign("nosearch", TRUE); |
||||||
if (empty($search)) { |
} else { |
||||||
// parse nosearch box |
// hide nosearch box |
||||||
$tp->parse("nosearch"); |
$smarty->assign("nosearch", FALSE); |
||||||
|
$smarty->assign("search", $search); |
||||||
// hide others |
|
||||||
$tp->hide("asset"); |
// set needle |
||||||
$tp->hide("location"); |
$needle = '%' . $search . '%'; |
||||||
$tp->hide("node"); |
|
||||||
$tp->hide("subnet"); |
// set counter |
||||||
$tp->hide("vlan"); |
$resultcounter = 0; |
||||||
$tp->hide("resultcount"); |
|
||||||
} else { |
// setup asset |
||||||
// hide nosearch box |
// build query |
||||||
$tp->hide("nosearch"); |
$query = "SELECT |
||||||
|
asset.asset_id AS id, |
||||||
// set needle |
asset.asset_name AS name, |
||||||
$needle = '%' . $search . '%'; |
asset.asset_info AS description |
||||||
|
FROM |
||||||
// set counter |
asset |
||||||
$resultcounter = 0; |
WHERE |
||||||
|
asset.asset_name LIKE '" . $needle . "' |
||||||
// setup asset |
OR asset.asset_hostname LIKE '" . $needle . "' |
||||||
// build query |
OR asset.asset_info LIKE '" . $needle . "' |
||||||
$query = "SELECT |
ORDER BY |
||||||
asset.asset_id AS asset_id, |
asset.asset_name"; |
||||||
asset.asset_name AS asset_name |
|
||||||
FROM |
// run query |
||||||
asset |
$assets = $db->db_select($query); |
||||||
WHERE |
$resultcounter += count($assets); |
||||||
asset.asset_name LIKE '" . $needle . "' |
$smarty->assign("assets", $assets); |
||||||
OR asset.asset_hostname LIKE '" . $needle . "' |
|
||||||
OR asset.asset_info LIKE '" . $needle . "' |
// setup location |
||||||
ORDER BY |
// build query |
||||||
asset.asset_name"; |
$query = "SELECT |
||||||
|
location.location_id AS id, |
||||||
// run query |
location.location_name AS name |
||||||
$assets = $db->db_select($query); |
FROM |
||||||
|
location |
||||||
// count results |
WHERE |
||||||
$counter = count($assets); |
location.location_name LIKE '" . $needle . "' |
||||||
|
OR location.location_info LIKE '" . $needle . "' |
||||||
// counter to tpl |
ORDER BY |
||||||
$tp->set("counter", $counter); |
location.location_name"; |
||||||
|
|
||||||
// any assets? |
// run query |
||||||
if ($counter>0) { |
$locations = $db->db_select($query); |
||||||
// get objects |
$resultcounter += count($locations); |
||||||
foreach($assets AS $asset) { |
$smarty->assign("locations", $locations); |
||||||
// send to tpl |
|
||||||
$tp->set("item_name", $lang['lang_assets']); |
// setup node |
||||||
$tp->set("item", "asset"); |
// build query |
||||||
$tp->set("id", $asset['asset_id']); |
$query = "SELECT |
||||||
$tp->set("name", $asset['asset_name']); |
node.node_id AS id, |
||||||
|
node.node_ip AS ip |
||||||
// parse block |
FROM |
||||||
$tp->parse("row"); |
node |
||||||
|
WHERE |
||||||
// update counter |
node.node_ip LIKE '" . $needle . "' |
||||||
$resultcounter++; |
OR node.node_mac LIKE '" . $needle . "' |
||||||
} |
OR node.node_dns1 LIKE '" . $needle . "' |
||||||
|
OR node.node_dns2 LIKE '" . $needle . "' |
||||||
// parse block |
OR node.node_info LIKE '" . $needle . "' |
||||||
$tp->parse("asset"); |
ORDER BY |
||||||
} else { |
node.node_ip"; |
||||||
// parse block |
|
||||||
$tp->hide("asset"); |
// run query |
||||||
} |
$nodes = $db->db_select($query); |
||||||
|
$resultcounter += count($nodes); |
||||||
// clear row |
$smarty->assign("nodes", $nodes); |
||||||
$tp->clear("row"); |
|
||||||
|
// setup subnet |
||||||
// setup location |
// build query |
||||||
// build query |
$query = "SELECT |
||||||
$query = "SELECT |
subnet.subnet_id AS id, |
||||||
location.location_id AS location_id, |
subnet.subnet_address AS address |
||||||
location.location_name AS location_name |
FROM |
||||||
FROM |
subnet |
||||||
location |
WHERE |
||||||
WHERE |
subnet.subnet_address LIKE '" . $needle . "' |
||||||
location.location_name LIKE '" . $needle . "' |
OR subnet.subnet_info LIKE '" . $needle . "' |
||||||
OR location.location_info LIKE '" . $needle . "' |
ORDER BY |
||||||
ORDER BY |
subnet.subnet_address"; |
||||||
location.location_name"; |
|
||||||
|
// run query |
||||||
// run query |
$subnets = $db->db_select($query); |
||||||
$locations = $db->db_select($query); |
$resultcounter += count($subnets); |
||||||
|
$smarty->assign("subnets", $subnets); |
||||||
// count results |
|
||||||
$counter = count($locations); |
// setup vlan |
||||||
|
// build query |
||||||
// counter to tpl |
$query = "SELECT |
||||||
$tp->set("counter", $counter); |
vlan.vlan_id AS id, |
||||||
|
vlan.vlan_name AS name |
||||||
// any locations? |
FROM |
||||||
if ($counter>0) { |
vlan |
||||||
// get objects |
WHERE |
||||||
foreach($locations AS $location) { |
vlan.vlan_name LIKE '" . $needle . "' |
||||||
// send to tpl |
OR vlan.vlan_info LIKE '" . $needle . "' |
||||||
$tp->set("item_name", $lang['lang_locations']); |
ORDER BY |
||||||
$tp->set("item", "location"); |
vlan.vlan_name"; |
||||||
$tp->set("id", $location['location_id']); |
|
||||||
$tp->set("name", $location['location_name']); |
// run query |
||||||
|
$vlans = $db->db_select($query); |
||||||
// parse block |
$resultcounter += count($vlans); |
||||||
$tp->parse("row"); |
$smarty->assign("vlans", $vlans); |
||||||
|
|
||||||
// update counter |
// setup zone |
||||||
$resultcounter++; |
// build query |
||||||
} |
$query = "SELECT |
||||||
|
zone_id AS id, |
||||||
// parse block |
zone_origin AS origin |
||||||
$tp->parse("location"); |
FROM |
||||||
} else { |
zone |
||||||
// parse block |
WHERE |
||||||
$tp->hide("location"); |
zone_origin LIKE '" . $needle . "' |
||||||
} |
OR zone_soa LIKE '" . $needle . "' |
||||||
|
OR zone_hostmaster LIKE '" . $needle . "' |
||||||
// clear row |
OR zone_ns1 LIKE '" . $needle . "' |
||||||
$tp->clear("row"); |
OR zone_ns2 LIKE '" . $needle . "' |
||||||
|
OR zone_ns3 LIKE '" . $needle . "' |
||||||
// setup node |
OR zone_mx1 LIKE '" . $needle . "' |
||||||
// build query |
OR zone_mx2 LIKE '" . $needle . "' |
||||||
$query = "SELECT |
OR zone_info LIKE '" . $needle . "' |
||||||
node.node_id AS node_id, |
ORDER BY |
||||||
node.node_ip AS node_ip |
zone_origin"; |
||||||
FROM |
|
||||||
node |
// run query |
||||||
WHERE |
$zones = $db->db_select($query); |
||||||
node.node_ip LIKE '" . $needle . "' |
$resultcounter += count($zones); |
||||||
OR node.node_mac LIKE '" . $needle . "' |
$smarty->assign("zones", $zones); |
||||||
OR node.node_dns1 LIKE '" . $needle . "' |
|
||||||
OR node.node_dns2 LIKE '" . $needle . "' |
// grand totals |
||||||
OR node.node_info LIKE '" . $needle . "' |
$smarty->assign("resultcounter", $resultcounter); |
||||||
ORDER BY |
} |
||||||
node.node_ip"; |
|
||||||
|
// end page |
||||||
// run query |
// output |
||||||
$nodes = $db->db_select($query); |
$smarty->display("search.tpl"); |
||||||
|
|
||||||
// count results |
// end output |
||||||
$counter = count($nodes); |
include("footer.php"); |
||||||
|
|
||||||
// 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"); |
|
||||||
?> |
?> |
@ -1,91 +1,64 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
include("header.php"); |
||||||
|
|
||||||
// set template |
// set language variables |
||||||
$tp = new Template("tpl/subnet.tpl", $config_yapter_error); |
$smarty->assign($lang); |
||||||
|
|
||||||
// set language variables |
// setup subnet |
||||||
$tp->setvars($lang); |
// build query |
||||||
|
$query = "SELECT |
||||||
// setup subnet |
s.subnet_id, |
||||||
// build query |
s.subnet_address, |
||||||
$query = "SELECT |
s.subnet_mask, |
||||||
subnet.subnet_id AS subnet_id, |
s.ntp_server, |
||||||
subnet.subnet_address AS subnet_address, |
LEFT(s.subnet_info, 40) AS subnet_info, |
||||||
subnet.subnet_mask AS subnet_mask, |
CHAR_LENGTH(s.subnet_info) AS subnet_length, |
||||||
COUNT(node.subnet_id) AS node_counter |
COUNT(node.subnet_id) AS node_counter |
||||||
FROM |
FROM |
||||||
subnet |
subnet AS s |
||||||
LEFT JOIN |
LEFT JOIN |
||||||
node |
node |
||||||
ON |
ON |
||||||
node.subnet_id=subnet.subnet_id |
node.subnet_id=s.subnet_id |
||||||
GROUP BY |
GROUP BY |
||||||
subnet.subnet_id |
s.subnet_id |
||||||
ORDER BY |
ORDER BY |
||||||
INET_ATON(subnet.subnet_address)"; |
INET_ATON(s.subnet_address)"; |
||||||
|
|
||||||
// run query |
// run query |
||||||
$subnets = $db->db_select($query); |
$subnets = $db->db_select($query); |
||||||
|
$smarty->assign("subnets", $subnets); |
||||||
// count results |
|
||||||
$subnet_counter = count($subnets); |
// end page |
||||||
|
// output |
||||||
// counter to tpl |
$smarty->display("subnet.tpl"); |
||||||
$tp->set("subnet_counter", $subnet_counter); |
|
||||||
|
// end output |
||||||
// any subnets? |
include("footer.php"); |
||||||
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"); |
|
||||||
?> |
?> |
@ -1,66 +1,70 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// get id |
// get id |
||||||
$subnet_id = sanitize($_GET['subnet_id']); |
$subnet_id = sanitize($_GET['subnet_id']); |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
include("header.php"); |
||||||
|
|
||||||
// set template |
// set language variables |
||||||
$tp = new Template("tpl/subnetedit.tpl", $config_yapter_error); |
$smarty->assign($lang); |
||||||
|
|
||||||
// set language variables |
// setup subnet |
||||||
$tp->setvars($lang); |
// 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 |
// run query |
||||||
// build query |
$subnet = $db->db_select($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 |
// send to tpl |
||||||
$subnet = $db->db_select($query); |
$smarty->assign("subnet_id", $subnet_id); |
||||||
|
$smarty->assign("subnet_address", $subnet[0]['subnet_address']); |
||||||
|
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']); |
||||||
|
$smarty->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 |
// end page |
||||||
$tp->set("subnet_id", $subnet_id); |
// output |
||||||
$tp->set("subnet_address", $subnet[0]['subnet_address']); |
$smarty->display("subnetedit.tpl"); |
||||||
$tp->set("subnet_mask", $subnet[0]['subnet_mask']); |
|
||||||
$tp->set("subnet_info", $subnet[0]['subnet_info']); |
|
||||||
|
|
||||||
// end page |
// end output |
||||||
// output |
include("footer.php"); |
||||||
$tp->parse(); |
|
||||||
$tp->spit(); |
|
||||||
|
|
||||||
// end output |
|
||||||
include("footer.php"); |
|
||||||
?> |
?> |
@ -1,102 +1,82 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// get ip and id |
// get ip and id |
||||||
$subnet_id = sanitize($_GET['subnet_id']); |
$subnet_id = sanitize($_GET['subnet_id']); |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
include("header.php"); |
||||||
|
|
||||||
// set template |
// set language variables |
||||||
$tp = new Template("tpl/subnetlocationdel.tpl", $config_yapter_error); |
$smarty->assign($lang); |
||||||
|
|
||||||
// set language variables |
// setup subnet |
||||||
$tp->setvars($lang); |
// build query |
||||||
|
$query = "SELECT |
||||||
// setup subnet |
subnet.subnet_address AS subnet_address, |
||||||
// build query |
subnet.subnet_mask AS subnet_mask |
||||||
$query = "SELECT |
FROM |
||||||
subnet.subnet_address AS subnet_address, |
subnet |
||||||
subnet.subnet_mask AS subnet_mask |
WHERE |
||||||
FROM |
subnet.subnet_id=" . $subnet_id; |
||||||
subnet |
|
||||||
WHERE |
// run query |
||||||
subnet.subnet_id=" . $subnet_id; |
$subnet = $db->db_select($query); |
||||||
|
|
||||||
// run query |
$smarty->assign("subnet_id", $subnet_id); |
||||||
$subnet = $db->db_select($query); |
$smarty->assign("subnet_address", $subnet[0]['subnet_address']); |
||||||
|
$smarty->assign("subnet_mask", $subnet[0]['subnet_mask']); |
||||||
$tp->set("subnet_id", $subnet_id); |
|
||||||
$tp->set("subnet_address", $subnet[0]['subnet_address']); |
// setup location |
||||||
$tp->set("subnet_mask", $subnet[0]['subnet_mask']); |
// build query |
||||||
|
$query = "SELECT |
||||||
// setup location |
location.location_id AS location_id, |
||||||
// build query |
location.location_name AS location_name |
||||||
$query = "SELECT |
FROM |
||||||
location.location_id AS location_id, |
subnetlocation, |
||||||
location.location_name AS location_name |
location |
||||||
FROM |
WHERE |
||||||
subnetlocation, |
subnetlocation.subnet_id=" . $subnet_id . " |
||||||
location |
AND location.location_id=subnetlocation.location_id |
||||||
WHERE |
ORDER BY |
||||||
subnetlocation.subnet_id=" . $subnet_id . " |
location.location_name"; |
||||||
AND location.location_id=subnetlocation.location_id |
|
||||||
ORDER BY |
// run query |
||||||
location.location_name"; |
$records = $db->db_select($query); |
||||||
|
$locations = array(); |
||||||
// run query |
foreach ($records as $rec) { |
||||||
$locations = $db->db_select($query); |
$locations[$rec['location_id']] = $rec['location_name']; |
||||||
|
} |
||||||
// count results |
$smarty->assign("location_options", $locations); |
||||||
$location_counter = count($locations); |
|
||||||
|
|
||||||
// any locations? |
// end page |
||||||
if ($location_counter>0) { |
// output |
||||||
// get objects |
$smarty->display("subnetlocationdel.tpl"); |
||||||
foreach($locations AS $location) { |
|
||||||
// send to tpl |
// end output |
||||||
$tp->set("location_id", $location['location_id']); |
include("footer.php"); |
||||||
$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"); |
|
||||||
?> |
?> |
@ -1,499 +1,440 @@ |
|||||||
<?php |
<?php |
||||||
/***************************************************************************** |
/***************************************************************************** |
||||||
IP Reg, a PHP/MySQL IPAM tool |
IP Reg, a PHP/MySQL IPAM tool |
||||||
Copyright (C) 2007-2009 Wietse Warendorff |
Copyright (C) 2007-2009 Wietse Warendorff |
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify |
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 |
it under the terms of the GNU General Public License as published by |
||||||
the Free Software Foundation, either version 3 of the License, or |
the Free Software Foundation, either version 3 of the License, or |
||||||
(at your option) any later version. |
(at your option) any later version. |
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
GNU General Public License for more details. |
GNU General Public License for more details. |
||||||
|
|
||||||
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
For more information, visit http://sourceforge.net/projects/ipreg, |
For more information, visit http://sourceforge.net/projects/ipreg, |
||||||
or contact me at wietsew@users.sourceforge.net |
or contact me at wietsew@users.sourceforge.net |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
// start page |
// start page |
||||||
// includes |
// includes |
||||||
include("includes.php"); |
include("includes.php"); |
||||||
|
|
||||||
// get id |
// get id |
||||||
$subnet_id = sanitize($_GET['subnet_id']); |
$subnet_id = sanitize($_GET['subnet_id']); |
||||||
|
|
||||||
// get page |
// get page |
||||||
if(isset($_GET['page'])) { |
if(isset($_GET['page'])) { |
||||||
$page = sanitize($_GET['page']); |
$page = sanitize($_GET['page']); |
||||||
} |
} |
||||||
|
|
||||||
// start output |
// start output |
||||||
include("header.php"); |
$smarty->assign("scripts",'changetext.js'); |
||||||
|
include("header.php"); |
||||||
// set template |
|
||||||
$tp = new Template("tpl/subnetview.tpl", $config_yapter_error); |
// set language variables |
||||||
|
$smarty->assign($lang); |
||||||
// set language variables |
|
||||||
$tp->setvars($lang); |
// setup subnet |
||||||
|
// build query |
||||||
// setup subnet |
$query = "SELECT |
||||||
// build query |
subnet.subnet_address, |
||||||
$query = "SELECT |
subnet.subnet_mask, |
||||||
subnet.subnet_address AS subnet_address, |
subnet.subnet_dhcp_start, |
||||||
subnet.subnet_mask AS subnet_mask, |
subnet.subnet_dhcp_end, |
||||||
subnet.subnet_info AS subnet_info, |
subnet.subnet_info, |
||||||
COUNT(node.subnet_id) AS node_counter |
subnet.protocol_version, |
||||||
FROM |
subnet.ntp_server, |
||||||
subnet |
COUNT(node.subnet_id) AS node_counter |
||||||
LEFT JOIN |
FROM |
||||||
node |
subnet |
||||||
ON |
LEFT JOIN |
||||||
node.subnet_id=subnet.subnet_id |
node |
||||||
WHERE |
ON |
||||||
subnet.subnet_id=" . $subnet_id . " |
node.subnet_id=subnet.subnet_id |
||||||
GROUP BY |
WHERE |
||||||
subnet.subnet_id"; |
subnet.subnet_id=" . $subnet_id . " |
||||||
|
GROUP BY |
||||||
// run query |
subnet.subnet_id"; |
||||||
$subnet = $db->db_select($query); |
|
||||||
|
// run query |
||||||
// set needed variables |
$subnet = $db->db_select($query); |
||||||
$subnet_address = $subnet[0]['subnet_address']; |
|
||||||
$subnet_mask = $subnet[0]['subnet_mask']; |
// set needed variables |
||||||
|
$subnet_address = $subnet[0]['subnet_address']; |
||||||
// set counters |
$subnet_mask = $subnet[0]['subnet_mask']; |
||||||
$host_counter = pow(2,(32-$subnet_mask)); |
$subnet_dhcpstart = $subnet[0]['subnet_dhcp_start']; |
||||||
$node_counter = $subnet[0]['node_counter']; |
$subnet_dhcpend = $subnet[0]['subnet_dhcp_end']; |
||||||
$subnet_usedpercentage = round((($node_counter/($host_counter-2))*100),1); |
$subnet_proto_vers = $subnet[0]['protocol_version']; |
||||||
|
$subnet_ntp_server = $subnet[0]['ntp_server']; |
||||||
// send to tpl |
|
||||||
$tp->set("subnet_id", $subnet_id); |
// set counters |
||||||
$tp->set("subnet_address", $subnet_address); |
$host_counter = pow(2,(32-$subnet_mask)); |
||||||
$tp->set("subnet_mask", $subnet_mask); |
$node_counter = $subnet[0]['node_counter']; |
||||||
$tp->set("subnet_info", nl2br($subnet[0]['subnet_info'])); |
$subnet_usedpercentage = round((($node_counter/($host_counter-2))*100), 1); |
||||||
$tp->set("node_counter", $node_counter); |
|
||||||
$tp->set("subnet_usedpercentage", $subnet_usedpercentage); |
// send to tpl |
||||||
$tp->set("config_color_unused", $config_color_unused); |
$smarty->assign("subnet_id", $subnet_id); |
||||||
$tp->set("host_counter", $host_counter-2); |
$smarty->assign("subnet_address", $subnet_address); |
||||||
$tp->set("free_counter", (($host_counter-2)-$node_counter)); |
$smarty->assign("subnet_mask", $subnet_mask); |
||||||
|
$smarty->assign("subnet_dhcpstart", $subnet_dhcpstart); |
||||||
// setup subnet |
$smarty->assign("subnet_dhcpend", $subnet_dhcpend); |
||||||
// split up the range |
$smarty->assign("subnet_info", nl2br($subnet[0]['subnet_info'])); |
||||||
$iprange = explode('.', $subnet_address); |
$smarty->assign("subnet_proto_vers", $subnet_proto_vers); |
||||||
$iprange1 = $iprange[0]; |
$smarty->assign("subnet_ntp_server", $subnet_ntp_server); |
||||||
$iprange2 = $iprange[1]; |
$smarty->assign("node_counter", $node_counter); |
||||||
$iprange3 = $iprange[2]; |
$smarty->assign("subnet_usedpercentage", $subnet_usedpercentage); |
||||||
$iprange4 = $iprange[3]; |
$smarty->assign("config_color_unused", $config_color_unused); |
||||||
|
$smarty->assign("host_counter", $host_counter-2); |
||||||
// create empty subnet-array |
$smarty->assign("free_counter", (($host_counter-2)-$node_counter)); |
||||||
$subnet = array(); |
|
||||||
|
// setup subnet |
||||||
// determine range (Class A/B/C) |
// split up the range |
||||||
if ($subnet_mask>=24) { |
$iprange = explode('.', $subnet_address); |
||||||
// Class C |
$iprange1 = $iprange[0]; |
||||||
// fill subnet-array with addresses we want to see |
$iprange2 = $iprange[1]; |
||||||
for($i=0;$i<$host_counter;$i++) { |
$iprange3 = $iprange[2]; |
||||||
// build ip |
$iprange4 = $iprange[3]; |
||||||
$ip = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i); |
|
||||||
|
// create empty subnet-array |
||||||
// fill subnet-array |
$subnet = array(); |
||||||
$subnet[$ip] = array(); |
|
||||||
} |
// determine range (Class A/B/C) |
||||||
|
if ($subnet_mask>=24) { |
||||||
// calculate broadcast address |
// Class C |
||||||
$broadcast_address = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i-1); |
// fill subnet-array with addresses we want to see |
||||||
|
for($i=0;$i<$host_counter;$i++) { |
||||||
// to tpl |
// build ip |
||||||
$tp->set("iprange1", $iprange1); |
$ip = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i); |
||||||
$tp->set("iprange2", $iprange2); |
|
||||||
$tp->set("iprange3", $iprange3); |
// fill subnet-array |
||||||
$tp->set("iprange4", $iprange4); |
$subnet[$ip] = array(); |
||||||
$tp->set("subnetmask1", 255); |
} |
||||||
$tp->set("subnetmask2", 255); |
|
||||||
$tp->set("subnetmask3", 255); |
// calculate broadcast address |
||||||
$tp->set("subnetmask4", 256-$host_counter); |
$broadcast_address = $iprange1 . '.' . $iprange2 . '.' . $iprange3 . '.' . ($iprange4+$i-1); |
||||||
|
|
||||||
// no pagination needed |
// to tpl |
||||||
$tp->parse("noselect"); |
$smarty->assign("iprange1", $iprange1); |
||||||
$tp->hide("one_select"); |
$smarty->assign("iprange2", $iprange2); |
||||||
$tp->hide("two_select"); |
$smarty->assign("iprange3", $iprange3); |
||||||
|
$smarty->assign("iprange4", $iprange4); |
||||||
// set displayed nodes |
$smarty->assign("subnetmask1", 255); |
||||||
$nodes_displayed = $host_counter; |
$smarty->assign("subnetmask2", 255); |
||||||
} else if ($subnet_mask>=16) { |
$smarty->assign("subnetmask3", 255); |
||||||
// Class B |
$smarty->assign("subnetmask4", 256-$host_counter); |
||||||
// which part do we want to see? |
|
||||||
if((empty($page)) ? $page=$subnet_address : $page=$page); |
// no pagination needed |
||||||
$page = explode('.', $page); |
$smarty->assign("noselect", TRUE); |
||||||
$page2 = $page[2]; |
$smarty->assign("one_select", FALSE); |
||||||
|
$smarty->assign("two_select", FALSE); |
||||||
// fill subnet-array with addresses we want to see |
|
||||||
for($i=0;$i<256;$i++) { |
// set displayed nodes |
||||||
// build ip |
$nodes_displayed = $host_counter; |
||||||
$ip = $iprange1 . '.' . $iprange2 . '.' . $page2 . '.' . $i; |
} else if ($subnet_mask>=16) { |
||||||
|
// Class B |
||||||
// fill subnet-array |
// which part do we want to see? |
||||||
$subnet[$ip] = array(); |
if((empty($page)) ? $page=$subnet_address : $page=$page); |
||||||
} |
$page = explode('.', $page); |
||||||
|
$page2 = $page[2]; |
||||||
// calculate broadcast address |
|
||||||
$broadcast_address = $iprange1 . '.' . $iprange2 . '.' . ($iprange3+$i-1) . '.255'; |
// fill subnet-array with addresses we want to see |
||||||
|
for($i=0;$i<256;$i++) { |
||||||
// to tpl |
// build ip |
||||||
$tp->set("iprange1", $iprange1); |
$ip = $iprange1 . '.' . $iprange2 . '.' . $page2 . '.' . $i; |
||||||
$tp->set("iprange2", $iprange2); |
|
||||||
|
// fill subnet-array |
||||||
// loop addresses in range3 |
$subnet[$ip] = array(); |
||||||
for($i=$iprange3;$i<(pow(2,(32-$subnet_mask))/256);$i++) { |
} |
||||||
// send to tpl |
|
||||||
$tp->set("iprange3", $i); |
// calculate broadcast address |
||||||
$tp->set("iprange4", 0); |
$broadcast_address = $iprange1 . '.' . $iprange2 . '.' . ($iprange3+$i-1) . '.255'; |
||||||
|
|
||||||
// set select box |
// to tpl |
||||||
if($i==$page2) { |
$smarty->assign("iprange1", $iprange1); |
||||||
$tp->set("row_selected", "selected"); |
$smarty->assign("iprange2", $iprange2); |
||||||
|
|
||||||
} else { |
// loop addresses in range3 |
||||||
$tp->set("row_selected", ""); |
for($i=$iprange3;$i<(pow(2,(32-$subnet_mask))/256);$i++) { |
||||||
} |
// send to tpl |
||||||
|
$smarty->assign("iprange3", $i); |
||||||
// parse block |
$smarty->assign("iprange4", 0); |
||||||
$tp->parse("one_select_row"); |
|
||||||
} |
// set select box |
||||||
|
if($i==$page2) { |
||||||
$tp->set("subnetmask1", 255); |
$smarty->assign("row_selected", "selected"); |
||||||
$tp->set("subnetmask2", 255); |
|
||||||
$tp->set("subnetmask3", 256-($host_counter/256)); |
} else { |
||||||
$tp->set("subnetmask4", 0); |
$smarty->assign("row_selected", ""); |
||||||
|
} |
||||||
// one select box |
|
||||||
$tp->hide("noselect"); |
} |
||||||
$tp->parse("one_select"); |
|
||||||
$tp->hide("two_select"); |
$smarty->assign("subnetmask1", 255); |
||||||
|
$smarty->assign("subnetmask2", 255); |
||||||
// set displayed nodes |
$smarty->assign("subnetmask3", 256-($host_counter/256)); |
||||||
$nodes_displayed = 256; |
$smarty->assign("subnetmask4", 0); |
||||||
} else { |
|
||||||
// Class A |
// one select box |
||||||
// which part do we want to see? |
$smarty->assign("noselect", FALSE); |
||||||
if((empty($page)) ? $page=$subnet_address : $page=$page); |
$smarty->assign("one_select", TRUE); |
||||||
$page = explode('.', $page); |
$smarty->assign("two_select", FALSE); |
||||||
$page2 = $page[1]; |
|
||||||
$page3 = $page[2]; |
// set displayed nodes |
||||||
|
$nodes_displayed = 256; |
||||||
// fill subnet-array with addresses we want to see |
} else { |
||||||
for($i=0;$i<256;$i++) { |
// Class A |
||||||
// build ip |
// which part do we want to see? |
||||||
$ip = $iprange1 . '.' . $page2 . '.' . $page3 . '.' . $i; |
if((empty($page)) ? $page=$subnet_address : $page=$page); |
||||||
|
$page = explode('.', $page); |
||||||
// fill subnet-array |
$page2 = $page[1]; |
||||||
$subnet[$ip] = array(); |
$page3 = $page[2]; |
||||||
} |
|
||||||
|
// fill subnet-array with addresses we want to see |
||||||
// calculate broadcast address |
for($i=0;$i<256;$i++) { |
||||||
$broadcast_address = $iprange1 . '.' . ($iprange2+$i-1) . '.255.255'; |
// build ip |
||||||
|
$ip = $iprange1 . '.' . $page2 . '.' . $page3 . '.' . $i; |
||||||
// to tpl |
|
||||||
$tp->set("iprange1", $iprange1); |
// fill subnet-array |
||||||
$tp->set("iprange2", $iprange2); |
$subnet[$ip] = array(); |
||||||
|
} |
||||||
// loop addresses in range 2 |
|
||||||
for($i=$iprange2;$i<(pow(2,(24-$subnet_mask))/256);$i++) { |
// calculate broadcast address |
||||||
// send to tpl |
$broadcast_address = $iprange1 . '.' . ($iprange2+$i-1) . '.255.255'; |
||||||
$tp->set("iprange1", $iprange1); |
|
||||||
$tp->set("iprange2", $i); |
// to tpl |
||||||
$tp->set("iprange3", $page3); |
$smarty->assign("iprange1", $iprange1); |
||||||
$tp->set("iprange4", $iprange4); |
$smarty->assign("iprange2", $iprange2); |
||||||
|
|
||||||
// set select box |
// loop addresses in range 2 |
||||||
if($i==$page2) { |
for($i=$iprange2;$i<(pow(2,(24-$subnet_mask))/256);$i++) { |
||||||
$tp->set("row1_selected", "selected"); |
// send to tpl |
||||||
|
$smarty->assign("iprange1", $iprange1); |
||||||
} else { |
$smarty->assign("iprange2", $i); |
||||||
$tp->set("row1_selected", ""); |
$smarty->assign("iprange3", $page3); |
||||||
} |
$smarty->assign("iprange4", $iprange4); |
||||||
|
|
||||||
// parse block |
// set select box |
||||||
$tp->parse("two_select_row1"); |
if($i==$page2) { |
||||||
} |
$smarty->assign("row1_selected", "selected"); |
||||||
|
|
||||||
// loop addresses in range 3 |
} else { |
||||||
for($i=0;$i<256;$i++) { |
$smarty->assign("row1_selected", ""); |
||||||
// send to tpl |
} |
||||||
$tp->set("iprange1", $iprange1); |
|
||||||
$tp->set("iprange2", $page2); |
// parse block |
||||||
$tp->set("iprange3", $i); |
$tp->parse("two_select_row1"); |
||||||
$tp->set("iprange4", $iprange4); |
} |
||||||
|
|
||||||
// set select box |
// loop addresses in range 3 |
||||||
if($i==$page3) { |
for($i=0;$i<256;$i++) { |
||||||
$tp->set("row2_selected", "selected"); |
// send to tpl |
||||||
|
$smarty->assign("iprange1", $iprange1); |
||||||
} else { |
$smarty->assign("iprange2", $page2); |
||||||
$tp->set("row2_selected", ""); |
$smarty->assign("iprange3", $i); |
||||||
} |
$smarty->assign("iprange4", $iprange4); |
||||||
|
|
||||||
// parse block |
// set select box |
||||||
$tp->parse("two_select_row2"); |
if($i==$page3) { |
||||||
} |
$smarty->assign("row2_selected", "selected"); |
||||||
|
|
||||||
$tp->set("subnetmask1", 255); |
} else { |
||||||
$tp->set("subnetmask2", 256-($host_counter/65536)); |
$smarty->assign("row2_selected", ""); |
||||||
$tp->set("subnetmask3", 0); |
} |
||||||
$tp->set("subnetmask4", 0); |
|
||||||
|
// parse block |
||||||
// one select box |
$tp->parse("two_select_row2"); |
||||||
$tp->hide("noselect"); |
} |
||||||
$tp->hide("one_select"); |
|
||||||
$tp->parse("two_select"); |
$smarty->assign("subnetmask1", 255); |
||||||
|
$smarty->assign("subnetmask2", 256-($host_counter/65536)); |
||||||
// set displayed nodes |
$smarty->assign("subnetmask3", 0); |
||||||
$nodes_displayed = 256; |
$smarty->assign("subnetmask4", 0); |
||||||
} |
|
||||||
|
// one select box |
||||||
// get nodes for this subnetview and implement the values into the array |
$smarty->assign("noselect", FALSE); |
||||||
// build query |
$smarty->assign("one_select", FALSE); |
||||||
$query = "SELECT |
$smarty->assign("two_select", TRUE); |
||||||
asset.asset_name AS asset_name, |
|
||||||
assetclassgroup.assetclassgroup_color AS assetclassgroup_color, |
// set displayed nodes |
||||||
node.node_id AS node_id, |
$nodes_displayed = 256; |
||||||
node.node_ip AS node_ip |
} |
||||||
FROM |
|
||||||
asset, |
// get nodes for this subnetview and implement the values into the array |
||||||
assetclass, |
// build query |
||||||
assetclassgroup, |
$query = "SELECT |
||||||
node |
asset.asset_name, |
||||||
WHERE |
assetclassgroup.assetclassgroup_color, |
||||||
node.node_ip IN ('".implode("','",array_keys($subnet))."') |
node.node_id, |
||||||
AND node.subnet_id='$subnet_id' |
node.node_ip |
||||||
AND asset.asset_id=node.asset_id |
FROM |
||||||
AND assetclass.assetclass_id=asset.assetclass_id |
asset, |
||||||
AND assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id"; |
assetclass, |
||||||
|
assetclassgroup, |
||||||
// run query |
node |
||||||
$nodes = $db->db_select($query); |
WHERE |
||||||
|
node.node_ip IN ('".implode("','",array_keys($subnet))."') |
||||||
// count results |
AND node.subnet_id='$subnet_id' |
||||||
$node_counter = count($nodes); |
AND asset.asset_id=node.asset_id |
||||||
|
AND assetclass.assetclass_id=asset.assetclass_id |
||||||
// any nodes? |
AND assetclassgroup.assetclassgroup_id=assetclass.assetclassgroup_id"; |
||||||
if ($node_counter>0) { |
|
||||||
// get objects |
// run query |
||||||
foreach($nodes AS $node) { |
$nodes = $db->db_select($query); |
||||||
// add node-values to ip in subnet-array |
|
||||||
$subnet[$node['node_ip']] = $node; |
// count results |
||||||
|
$node_counter = count($nodes); |
||||||
} |
|
||||||
} |
// any nodes? |
||||||
|
if ($node_counter>0) { |
||||||
// replace ip's in subnet-array (if necessary) |
// get objects |
||||||
// check for subnet address |
foreach($nodes AS $node) { |
||||||
if(array_key_exists($subnet_address, $subnet)) { |
// add node-values to ip in subnet-array |
||||||
// replace |
$subnet[$node['node_ip']] = $node; |
||||||
$subnet[$subnet_address] = array("subnet_address"); |
|
||||||
} |
} |
||||||
|
} |
||||||
// check for broadcast address |
|
||||||
if(array_key_exists($broadcast_address, $subnet)) { |
// replace ip's in subnet-array (if necessary) |
||||||
// replace |
// check for subnet address |
||||||
$subnet[$broadcast_address] = array("broadcast_address"); |
if(array_key_exists($subnet_address, $subnet)) { |
||||||
} |
// replace |
||||||
|
$subnet[$subnet_address] = array("subnet_address"); |
||||||
// loop subnet-array and send to template |
} |
||||||
// start counter |
|
||||||
$i=1; |
// check for broadcast address |
||||||
|
if(array_key_exists($broadcast_address, $subnet)) { |
||||||
// loop subnet-array |
// replace |
||||||
foreach($subnet AS $node_ip => $node) { |
$subnet[$broadcast_address] = array("broadcast_address"); |
||||||
// make new line? |
} |
||||||
if(($i%$_SESSION['suser_imagecount']==0 && $i!=$nodes_displayed) ? $tr="</tr><tr>" : $tr=""); |
|
||||||
|
$dhcpstart = 0; |
||||||
// check node |
if ($subnet_dhcpstart && $subnet_dhcpend) { |
||||||
if(empty($node)) { |
$dhcpstart = ip2long($subnet_dhcpstart); |
||||||
// empty node to tpl |
$dhcpend = ip2long($subnet_dhcpend); |
||||||
$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); |
// loop subnet-array and send to template |
||||||
} else if ($node[0]=="subnet_address") { |
// start counter |
||||||
// subnet address to tpl |
// $i=1; |
||||||
$tp->set("url", ""); |
// loop subnet-array |
||||||
$tp->set("remotetext", $node_ip . ' ' . $lang['lang_subnet_subnetaddress']); |
foreach($subnet AS $node_ip => $node) { |
||||||
$tp->set("assetclassgroup_color", $config_color_blocked); |
|
||||||
} else if ($node[0]=="broadcast_address") { |
// make new line? |
||||||
// broadcast address to tpl |
// if(($i%$_SESSION['suser_imagecount']==0 && $i!=$nodes_displayed) ? $tr="</tr><tr>" : $tr=""); |
||||||
$tp->set("url", ""); |
|
||||||
$tp->set("remotetext", $node_ip . ' ' . $lang['lang_subnet_broadcastaddress']); |
// check if node-ip in DHCP-area |
||||||
$tp->set("assetclassgroup_color", $config_color_blocked); |
$subnet[$node_ip]["dynamic"] = False; |
||||||
} else { |
if ($dhcpstart > 0) { |
||||||
// node to tpl |
$ipval = ip2long($node_ip); |
||||||
$tp->set("url", 'nodeview.php?node_id=' . $node['node_id']); |
if (($ipval >= $dhcpstart) and ($ipval <= $dhcpend)) { |
||||||
$tp->set("remotetext", $node_ip . ' ' . $node['asset_name']); |
$subnet[$node_ip]["dynamic"] = True; |
||||||
$tp->set("assetclassgroup_color", $node['assetclassgroup_color']); |
} |
||||||
} |
} |
||||||
|
|
||||||
// set other vars |
// check node |
||||||
$tp->set("tr", $tr); |
if (empty($node)) { |
||||||
|
// empty node to tpl |
||||||
// parse block |
$subnet[$node_ip]["url"] = 'assigniptonode.php?subnet_id=' . $subnet_id . '&node_ip='. $node_ip; |
||||||
$tp->parse("node_row"); |
$subnet[$node_ip]["remotetext"] = $node_ip; |
||||||
|
if ($subnet[$node_ip]["dynamic"]) { |
||||||
// update counter |
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_dynamic; |
||||||
$i++; |
} else { |
||||||
} |
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_unused; |
||||||
|
} |
||||||
// parse block |
|
||||||
$tp->parse("node_table"); |
} else if (array_key_exists(0, $node) && $node[0]=="subnet_address") { |
||||||
|
// subnet address to tpl |
||||||
// setup vlan |
$subnet[$node_ip]["url"] = ""; |
||||||
// build query |
$subnet[$node_ip]["remotetext"] = $node_ip . ' ' . $lang['lang_subnet_subnetaddress']; |
||||||
$query = "SELECT |
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_blocked; |
||||||
vlan.vlan_id AS vlan_id, |
} else if (array_key_exists(0, $node) && $node[0]=="broadcast_address") { |
||||||
vlan.vlan_name AS vlan_name, |
// broadcast address to tpl |
||||||
vlan.vlan_number AS vlan_number |
$subnet[$node_ip]["url"] = ""; |
||||||
FROM |
$subnet[$node_ip]["remotetext"] = $node_ip . ' ' . $lang['lang_subnet_broadcastaddress']; |
||||||
subnetvlan, |
$subnet[$node_ip]["assetclassgroup_color"] = $config_color_blocked; |
||||||
vlan |
} else { |
||||||
WHERE |
// node to tpl |
||||||
subnetvlan.subnet_id=" . $subnet_id . " |
$subnet[$node_ip]["url"] = 'nodeview.php?node_id=' . $node['node_id']; |
||||||
AND vlan.vlan_id=subnetvlan.vlan_id |
$subnet[$node_ip]["remotetext"] = $node_ip . ' ' . $node['asset_name']; |
||||||
ORDER BY |
$subnet[$node_ip]["assetclassgroup_color"] = $node['assetclassgroup_color']; |
||||||
vlan.vlan_name"; |
} |
||||||
|
|
||||||
// run query |
|
||||||
$vlans = $db->db_select($query); |
// update counter |
||||||
|
// $i++; |
||||||
// count results |
} |
||||||
$vlan_counter = count($vlans); |
|
||||||
|
$smarty->assign("subnet", $subnet); |
||||||
// counter to tpl |
$smarty->assign("imagewrap", $_SESSION['suser_imagecount']); |
||||||
$tp->set("vlan_counter", $vlan_counter); |
|
||||||
|
// setup vlan |
||||||
// any nodes? |
// build query |
||||||
if ($vlan_counter>0) { |
$query = "SELECT |
||||||
// get objects |
vlan.vlan_id AS vlan_id, |
||||||
foreach($vlans AS $vlan) { |
vlan.vlan_name AS vlan_name, |
||||||
// send to tpl |
vlan.vlan_number AS vlan_number |
||||||
$tp->set("vlan_id", $vlan['vlan_id']); |
FROM |
||||||
$tp->set("vlan_name", $vlan['vlan_name']); |
subnetvlan, |
||||||
$tp->set("vlan_number", $vlan['vlan_number']); |
vlan |
||||||
|
WHERE |
||||||
// parse block |
subnetvlan.subnet_id=" . $subnet_id . " |
||||||
$tp->parse("vlan_row"); |
AND vlan.vlan_id=subnetvlan.vlan_id |
||||||
} |
ORDER BY |
||||||
// parse block |
vlan.vlan_name"; |
||||||
$tp->parse("vlan_table"); |
|
||||||
} else { |
// run query |
||||||
// parse block |
$vlans = $db->db_select($query); |
||||||
$tp->hide("vlan_table"); |
$smarty->assign("vlans", $vlans); |
||||||
} |
|
||||||
|
// setup location |
||||||
// setup location |
// build query |
||||||
// build query |
$query = "SELECT |
||||||
$query = "SELECT |
location.location_id, |
||||||
location.location_id, |
location.location_name |
||||||
location.location_name |
FROM |
||||||
FROM |
location |
||||||
location |
LEFT JOIN |
||||||
LEFT JOIN |
subnetlocation |
||||||
subnetlocation |
ON |
||||||
ON |
subnetlocation.location_id=location.location_id |
||||||
subnetlocation.location_id=location.location_id |
WHERE |
||||||
WHERE |
subnetlocation.subnet_id=". $subnet_id . " |
||||||
subnetlocation.subnet_id=". $subnet_id . " |
ORDER BY |
||||||
ORDER BY |
location.location_name"; |
||||||
location.location_name"; |
|
||||||
|
// run query |
||||||
// run query |
$locations = $db->db_select($query); |
||||||
$locations = $db->db_select($query); |
$smarty->assign("locations", $locations); |
||||||
|
|
||||||
// count results |
// setup assetclassgroup |
||||||
$location_counter = count($locations); |
// build query |
||||||
|
$query = "SELECT |
||||||
// counter to tpl |
assetclassgroup_id AS id, |
||||||
$tp->set("location_counter", $location_counter); |
assetclassgroup_name AS name, |
||||||
|
assetclassgroup_color AS color, |
||||||
// any nodes? |
COUNT(assetclass_id) AS counter |
||||||
if ($location_counter>0) { |
FROM subnet |
||||||
// get objects |
LEFT JOIN node USING (subnet_id) |
||||||
foreach($locations AS $location) { |
LEFT JOIN asset USING (asset_id) |
||||||
// send to tpl |
LEFT JOIN assetclass USING (assetclass_id) |
||||||
$tp->set("location_id", $location['location_id']); |
LEFT JOIN assetclassgroup USING (assetclassgroup_id) |
||||||
$tp->set("location_name", $location['location_name']); |
WHERE subnet_id=" . $subnet_id . " |
||||||
|
GROUP BY assetclass_id |
||||||
// parse block |
ORDER BY counter DESC"; |
||||||
$tp->parse("location_row"); |
|
||||||
} |
// run query |
||||||
// parse block |
$assetclassgroups = $db->db_select($query); |
||||||
$tp->parse("location_table"); |
$smarty->assign("assetclassgroups", $assetclassgroups); |
||||||
} else { |
|
||||||
// parse block |
// end page |
||||||
$tp->hide("location_table"); |
// output |
||||||
} |
$smarty->display("subnetview.tpl"); |
||||||
|
|
||||||
// setup assetclassgroup |
// end output |
||||||
// build query |
include("footer.php"); |
||||||
$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"); |
|
||||||
?> |
?> |