* * 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; $data->state = "offline"; $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; if($links[$jot]->label != -1) $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; if($links[$jot]->label != -1) $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; if($links[$i]->label != -1) $links[$i]->label = $label; if($locations[$locids[$ipfromLoc]]->state == "offline") $locations[$locids[$ipfromLoc]]->state = "online"; if($locations[$locids[$iptoLoc]]->state == "offline") $locations[$locids[$iptoLoc]]->state = "online"; if (($nodename[$ipfromLoc] == "tunnel" && $locations[$locids[$ipfromLoc]]->locname=="housing") || ($nodename[$iptoLoc] == "tunnel" && $locations[$locids[$iptoLoc]]->locname=="housing" ) || ($locations[$locids[$iptoLoc]]->hastinc && $locations[$locids[$ipfromLoc]]->hastinc)) { $links[$i]->label = -1; $locations[$locids[$ipfromLoc]]->state = "tunnel"; $locations[$locids[$iptoLoc]]->state = "tunnel"; } $i++; } } echo "\n"; echo "\n"; echo "\n"; foreach ($locations as $location) { $data = $locations[$location->locid]; printf("\t" . '' . "\n", $data->locid, $data->locname, $data->lat, $data->lng, $data->pixel_x, $data->pixel_y, $data->state, $data->gallery_link); } echo "\n"; echo "\n"; foreach ($links as $link) { $data1 = $locations[$locids[$link->ipfromLoc]]; $data2 = $locations[$locids[$link->iptoLoc]]; $count[$data1->locid]=true; $count[$data2->locid]=true; printf("\t" . '' . "\n", $data1->locid, $data1->locname, $data1->lat,$data1->lng,$data2->locid, $data2->locname, $data2->lat, $data2->lng, $link->label); } echo "\n"; echo "\n"; printf("\t" . '' . "\n"); echo "\n"; echo ""; ?>