Um die Frage zu beantworten wie ich denn IP-Adressen in eine Google-Karte bekommen habe: Mittels geoip, GeoRSS und (logisch) Google-Maps. Und zwar folgendermaßen.
geoiplookup <IP> >> geolookup.txt
speichert die Ausgabe in einer Datei.
- Mit regulären Ausdrücken extrahiert man die Längen- und Breitenangaben.
- Diese legt man als GeoRSS-Feed ab.
- Den Feed wiederum kann man in Google-Maps importieren.
Fertig ist die Karte. Wer es ein wenig einfacher haben will, kann auch folgendes PHP-Script zum umwandeln der geoip-Ausgabe in einen GeoRSS-Feed nutzen.
%s, %s, %s%s %s\n";
$geodata['points'] = array();
$geodata['rawdata'] = explode("\n", $_POST['geoiplookup']);
// XML-Special Characters-Function (alonso05 at gmail dot com)
function xml_character_encode($string, $trans=''){
$trans = (is_array($trans)) ? $trans : get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
foreach ($trans as $k=>$v)
$trans[$k]= "".ord($k).";";
return strtr($string, $trans);
}
// Parse input
foreach($geodata['rawdata'] as $data)
if(preg_match_all($regex, $data, $results))
$geodata['points'][] = array(
xml_character_encode(htmlentities($results[3][0])),
xml_character_encode(htmlentities($results[2][0])),
xml_character_encode(htmlentities($results[1][0])),
$results[5][0],
$results[6][0]
);
// Create GeoRSS-Feed
header('Content-type: application/xml');
echo('');
echo('
');
foreach($geodata['points'] as $point)
vprintf($geodata['line'], $point);
echo('');
?>
Kommentieren
your_ip_is_blacklisted_by sbl.spamhaus.org