Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pytz
- import datetime
- import pygeoip
- import socket
- import GeoIP
- import time
- from util import hook
- g = GeoIP.open("GeoIPCity.dat", GeoIP.GEOIP_MEMORY_CACHE)
- go = pygeoip.GeoIP("GeoIPOrg.dat")
- def getuser(users, nick):
- user = users.users.get(nick, None)
- if user:
- return user
- nlower = nick.lower()
- for user in users.users.itervalues():
- if user.nick.lower() == nlower:
- return user
- @hook.command
- def geoip(inp, input=None, users=None, chan=None):
- #nick
- if "." not in inp:
- user = getuser(users, inp)
- if not user or not user.host:
- input.conn.send("WHOIS "+inp)
- for i in xrange(10):
- user = getuser(users, inp)
- if user and user.host:
- break
- time.sleep(0.5)
- if not user or not user.host:
- return "Error getting user host"
- inp = user.host
- rec = g.record_by_addr(inp)
- reco = None
- try:
- reco = go.org_by_addr(inp)
- except pygeoip.GeoIPError:
- try:
- reco = go.org_by_name(inp)
- except (pygeoip.GeoIPError, socket.gaierror):
- pass
- if not rec:
- rec = g.record_by_name(inp)
- if not rec and not reco:
- return "no results"
- bits = []
- if rec.get("country_name", None):
- bits.append(u"Country name: "+rec["country_name"].decode("ISO-8859-2"))
- if rec.get("city", None):
- bits.append(u"City: "+rec["city"].decode("ISO-8859-2"))
- if rec.get("region_name", None):
- bits.append(u"Region name: "+rec["region_name"].decode("ISO-8859-2"))
- if reco:
- bits.append(u"Org: "+reco.decode("ISO-8859-2"))
- if rec.get("time_zone", None):
- try:
- tz = pytz.timezone(rec["time_zone"])
- except KeyError:
- pass
- else:
- bits.append(u"Time: %s %s" % (rec["time_zone"].decode("ISO-8859-2"), datetime.datetime.now(tz).strftime("%H:%M")))
- if not len(bits):
- return "no results"
- return u", ".join(bits)
Add Comment
Please, Sign In to add comment