]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/geoip.rb
geoip: make the GeoIP module a standalone
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / geoip.rb
index f5944256c49409ab98da6b7f4b42286667ff77b3..615511728df524469571276977a16965ac1579f7 100755 (executable)
@@ -9,17 +9,19 @@
 #
 # Resolves the geographic locations of users (network-wide) and IP addresses
 
-module GeoIP
+module ::GeoIP
   class InvalidHostError < RuntimeError; end
 
-  GEO_IP_PRIMARY   = "http://kapsi.fi:40086/lookup.yaml?host="
+  GEO_IP_PRIMARY   = "http://lakka.kapsi.fi:40086/lookup.yaml?host="
   GEO_IP_SECONDARY = "http://www.geoiptool.com/en/?IP="
-  HOST_NAME_REGEX  = /[a-z0-9\-]+(?:\.[a-z0-9\-]+)*\.[a-z]{2,4}/i
+  HOST_NAME_REGEX  = /^[a-z0-9\-]+(?:\.[a-z0-9\-]+)*\.[a-z]{2,4}/i
 
   REGEX  = {
     :country => %r{Country:.*?<a href=".*?" target="_blank"> (.*?)</a>}m,
     :region  => %r{Region:.*?<a href=".*?" target="_blank">(.*?)</a>}m,
-    :city    => %r{City:.*?<td align="left" class="arial_bold">(.*?)</td>}m
+    :city    => %r{City:.*?<td align="left" class="arial_bold">(.*?)</td>}m,
+    :lat     => %r{Latitude:.*?<td align="left" class="arial_bold">(.*?)</td>}m,
+    :lon     => %r{Longitude:.*?<td align="left" class="arial_bold">(.*?)</td>}m
   }
 
   def self.valid_host?(hostname)
@@ -82,12 +84,13 @@ class GeoIpPlugin < Plugin
     # need to see if the whois reply was invoked by this plugin
     return unless @stack.has_nick?(nick)
 
+    if m.target
+      msg = host2output(m.target.host, m.target.nick)
+    else
+      msg = "no such user on "+@bot.server.hostname.split(".")[-2]
+    end
     @stack[nick].each do |source|
-      if m.target
-        @bot.say source, host2output(m.target.host, m.target.nick)
-      else
-        @bot.say source, "no such user on "+@bot.server.hostname.split(".")[-2]
-      end
+      @bot.say source, msg
     end
 
     @stack.clear(nick)
@@ -157,4 +160,4 @@ class GeoIpPlugin < Plugin
 end
 
 plugin = GeoIpPlugin.new
-plugin.map "geoip [:input]", :action => 'geoip'
\ No newline at end of file
+plugin.map "geoip [:input]", :action => 'geoip', :thread => true