Skip to content

Commit

Permalink
ip2location fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
chubin committed Oct 26, 2018
1 parent 68f9c8c commit 0c67b15
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 16 deletions.
9 changes: 5 additions & 4 deletions lib/globals.py
Expand Up @@ -11,8 +11,8 @@
WEGO = "/home/igor/go/bin/we-lang"
PYPHOON = "/home/igor/pyphoon/bin/pyphoon-lolcat"

CACHEDIR = os.path.join(MYDIR, "cache")
IP2LCACHE = os.path.join(MYDIR, "cache/ip2l")
CACHEDIR = os.path.join(MYDIR, "cache/wego/")
IP2LCACHE = os.path.join(MYDIR, "cache/ip2l/")

ALIASES = os.path.join(MYDIR, "share/aliases")
ANSI2HTML = os.path.join(MYDIR, "share/ansi2html.sh")
Expand Down Expand Up @@ -55,8 +55,9 @@

PLAIN_TEXT_PAGES = [':help', ':bash.function', ':translation']

IP2LOCATION_KEY = ''

_IP2LOCATION_KEY_FILE = os.environ['HOME'] + '/.ip2location.key'
if os.path.exists(_IP2LOCATION_KEY_FILE):
IP2LOCATION_KEY = open(_IP2LOCATION_KEY_FILE, 'r').read().strip()

def error(text):
"log error `text` and raise a RuntimeError exception"
Expand Down
28 changes: 16 additions & 12 deletions lib/location.py
Expand Up @@ -89,21 +89,25 @@ def ip2location(ip_addr):
if not os.path.exists(IP2LCACHE):
os.makedirs(IP2LCACHE)

location = None

if os.path.exists(cached):
location = open(cached, 'r').read()
return location
else:
try:
ip2location_response = requests\
.get('http://api.ip2location.com/?ip=%s&key=%s&package=WS10' \
% (ip_addr, IP2LOCATION_KEY)).text
if ';' in ip2location_response:
open(cached, 'w').write(ip2location_response)
location = ip2location_response
except requests.exceptions.ConnectionError:
pass

if ';' in location:
location = "%s,%s" % (location.split(';')[3], location.split(';')[1])

try:
ip2location_response = requests\
.get('http://api.ip2location.com/?ip=%s&key=%s&package=WS10' \
% (IP2LOCATION_KEY, ip_addr)).text
if ';' in ip2location_response:
location = ip2location_response.split(';')[3]
open(cached, 'w').write(location)
print "ip2location says: %s" % location
return location
except requests.exceptions.ConnectionError:
return None
return location

def get_location(ip_addr):
"""
Expand Down

0 comments on commit 0c67b15

Please sign in to comment.