diff options
author | Christian Pointner <equinox@ffgraz.net> | 2008-12-06 07:23:29 +0000 |
---|---|---|
committer | Christian Pointner <equinox@ffgraz.net> | 2008-12-06 07:23:29 +0000 |
commit | 61448e4c2aabaf06cdae4160de77aaac8c7ad692 (patch) | |
tree | 52cf75f52eb999b9677af33c42556d1deec41372 /data.php | |
parent | 9cee05c341490e0329311a16c0d54a8c27ec5143 (diff) |
added data.php
Diffstat (limited to 'data.php')
-rw-r--r-- | data.php | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/data.php b/data.php new file mode 100644 index 0000000..97e59b4 --- /dev/null +++ b/data.php @@ -0,0 +1,145 @@ +<?php
+/*
+ * Copyright (C) 2006 Gaubatz Patrick <patrick@gaubatz.at>
+ *
+ * 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+require_once("db.class.php");
+require_once("ipmatch.php");
+require_once("config.php");
+
+header("Content-Type: text/xml");
+header("Cache-Control: no-cache, must-revalidate");
+header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
+
+$db = new DB($conf['db']['user'], $conf['db']['password'], $conf['db']['host'], $conf['db']['database']);
+$conf['acl']['auth'] = match_network($conf['acl']['range'],$_SERVER[REMOTE_ADDR]);
+
+$x_startpoint = 4080;
+$lng_startpoint = 15.43844103813;
+$dx_dLng = 50675.5176;
+$y_startpoint = 4806;
+$lat_startpoint= 47.07177327969;
+$dy_dLat = 75505.521;
+
+$locations = array();
+$locids = array();
+$nodename = array();
+$links = array();
+$already = array();
+$count = array();
+
+$db->query("SELECT ip, location.id as locid,location.name as locname, node.name as nodename FROM ip, node, location WHERE ip.node_id = node.id and node.location_id=location.id");
+while ($data = $db->getNextObject()) {
+ $locids[$data->ip]= $data->locid;
+ $nodename[$data->ip]= $data->nodename;
+}
+
+if($conf['acl']['auth'])
+ $db->query("SELECT id as locid, name as locname, pixel_x, pixel_y, gallery_link, location.hastinc as hastinc FROM location ORDER BY name ASC");
+else
+ $db->query("SELECT id as locid, name as locname, pixel_x, pixel_y, gallery_link, location.hastinc as hastinc FROM location WHERE location.hidden = 0 ORDER BY name ASC");
+
+while ($data = $db->getNextObject()) {
+ if ($data->pixel_x == "0")
+ continue;
+
+ $data->lng = $lng_startpoint + ($data->pixel_x - $x_startpoint) / $dx_dLng;
+ $data->lat = $lat_startpoint + ($y_startpoint - $data->pixel_y) / $dy_dLat;
+ $locations[$data->locid] = $data;
+}
+
+$regmatch = '#\"(.+)\" -> \"(.+)\"\[label=\"([0-9]+.[0-9]+)\"]#';
+$lines = file($conf['topo']['file']);
+
+$linecnt=0;
+$i =0;
+foreach ($lines as $num => $line)
+{
+ $linecnt++;
+ preg_match($regmatch,$line,$matches);
+ list( , $ipfromLoc, $iptoLoc, $label) = $matches;
+
+ if (empty($ipfromLoc) || empty($iptoLoc) || empty($label))
+ continue;
+
+ if(empty($locations[$locids[$ipfromLoc]]->locid) || empty($locations[$locids[$iptoLoc]]->locid))
+ continue;
+
+ if($locations[$locids[$ipfromLoc]]->locid == $locations[$locids[$iptoLoc]]->locid)
+ continue;
+
+ if($already[$locations[$locids[$ipfromLoc]]->locid . '-' . $locations[$locids[$iptoLoc]]->locid]->used == true) {
+ $jot = $already[$locations[$locids[$ipfromLoc]]->locid . '-' . $locations[$locids[$iptoLoc]]->locid]->i;
+ $links[$jot]->label = ($links[$jot]->label + $label)/2;
+ }
+ elseif($already[$locations[$locids[$iptoLoc]]->locid . '-' . $locations[$locids[$ipfromLoc]]->locid]->used == true) {
+ $jot = $already[$locations[$locids[$iptoLoc]]->locid . '-' . $locations[$locids[$ipfromLoc]]->locid]->i;
+ $links[$jot]->label = ($links[$jot]->label + $label)/2;
+ }
+ else {
+ $already[$locations[$locids[$ipfromLoc]]->locid . '-' . $locations[$locids[$iptoLoc]]->locid]->used =true;
+ $already[$locations[$locids[$ipfromLoc]]->locid . '-' . $locations[$locids[$iptoLoc]]->locid]->i = $i;
+
+ $links[$i]->ipfromLoc = $ipfromLoc;
+ $links[$i]->iptoLoc = $iptoLoc;
+ $links[$i]->label = $label;
+ $i++;
+ }
+}
+
+
+echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
+echo "<root>\n";
+
+echo "<nodes>\n";
+foreach ($locations as $location) {
+ $data = $locations[$location->locid];
+ printf("\t" . '<node id="%s" name="%s" lat="%s" lng="%s" pixel_x="%s" pixel_y="%s" gallery_link="%s"/>' . "\n",
+ $data->locid, $data->locname, $data->lat, $data->lng, $data->pixel_x, $data->pixel_y, $data->gallery_link);
+}
+echo "</nodes>\n";
+
+echo "<links>\n";
+foreach ($links as $link)
+{
+ if (($nodename[$link->ipfromLoc] == "tunnel" && $locations[$locids[$link->ipfromLoc]]->locname=="housing") ||
+ ($nodename[$link->iptoLoc] == "tunnel" && $locations[$locids[$link->iptoLoc]]->locname=="housing" ))
+ $link->label = -1;
+
+ if ($locations[$locids[$link->iptoLoc]]->hastinc && $locations[$locids[$link->ipfromLoc]]->hastinc)
+ $link->label = -1;
+
+ $data1 = $locations[$locids[$link->ipfromLoc]];
+ $data2 = $locations[$locids[$link->iptoLoc]];
+
+ $count[$data1->locid]=true;
+ $count[$data2->locid]=true;
+
+ printf("\t" . '<link fromid="%s" from="%s" latfrom="%s" lngfrom="%s" toid="%s" to="%s" latto="%s" lngto="%s" color="%s" />' . "\n",
+ $data1->locid, $data1->locname, $data1->lat,$data1->lng,$data2->locid, $data2->locname, $data2->lat, $data2->lng, $link->label);
+}
+echo "</links>\n";
+
+echo "<count>\n";
+printf("\t" . '<count number="');
+echo sizeof($count);
+printf('" />' . "\n");
+echo "</count>\n";
+
+echo "</root>";
+
+?>
|