Guest User

Untitled

a guest
Apr 25th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. import pytz
  2. import datetime
  3. import pygeoip
  4. import socket
  5. import GeoIP
  6. import time
  7. from util import hook
  8.  
  9. g = GeoIP.open("GeoIPCity.dat", GeoIP.GEOIP_MEMORY_CACHE)
  10. go = pygeoip.GeoIP("GeoIPOrg.dat")
  11. def getuser(users, nick):
  12. user = users.users.get(nick, None)
  13.  
  14. if user:
  15. return user
  16.  
  17. nlower = nick.lower()
  18.  
  19. for user in users.users.itervalues():
  20. if user.nick.lower() == nlower:
  21. return user
  22.  
  23. @hook.command
  24. def geoip(inp, input=None, users=None, chan=None):
  25. #nick
  26. if "." not in inp:
  27. user = getuser(users, inp)
  28.  
  29. if not user or not user.host:
  30. input.conn.send("WHOIS "+inp)
  31.  
  32. for i in xrange(10):
  33. user = getuser(users, inp)
  34.  
  35. if user and user.host:
  36. break
  37.  
  38. time.sleep(0.5)
  39.  
  40. if not user or not user.host:
  41. return "Error getting user host"
  42.  
  43. inp = user.host
  44.  
  45. rec = g.record_by_addr(inp)
  46. reco = None
  47.  
  48. try:
  49. reco = go.org_by_addr(inp)
  50. except pygeoip.GeoIPError:
  51. try:
  52. reco = go.org_by_name(inp)
  53. except (pygeoip.GeoIPError, socket.gaierror):
  54. pass
  55.  
  56. if not rec:
  57. rec = g.record_by_name(inp)
  58. if not rec and not reco:
  59. return "no results"
  60.  
  61. bits = []
  62.  
  63. if rec.get("country_name", None):
  64. bits.append(u"Country name: "+rec["country_name"].decode("ISO-8859-2"))
  65. if rec.get("city", None):
  66. bits.append(u"City: "+rec["city"].decode("ISO-8859-2"))
  67. if rec.get("region_name", None):
  68. bits.append(u"Region name: "+rec["region_name"].decode("ISO-8859-2"))
  69. if reco:
  70. bits.append(u"Org: "+reco.decode("ISO-8859-2"))
  71. if rec.get("time_zone", None):
  72. try:
  73. tz = pytz.timezone(rec["time_zone"])
  74. except KeyError:
  75. pass
  76. else:
  77. bits.append(u"Time: %s %s" % (rec["time_zone"].decode("ISO-8859-2"), datetime.datetime.now(tz).strftime("%H:%M")))
  78.  
  79. if not len(bits):
  80. return "no results"
  81.  
  82. return u", ".join(bits)
Add Comment
Please, Sign In to add comment