]> git.ipfire.org Git - ipfire.org.git/blame - src/backend/geoip.py
people: Move ongoing calls into calls section
[ipfire.org.git] / src / backend / geoip.py
CommitLineData
940227cb
MT
1#!/usr/bin/python
2
638e9782
MT
3import re
4
11347e46 5from . import countries
940227cb 6
11347e46 7from .misc import Object
940227cb 8
9068dba1
MT
9class GeoIP(Object):
10 def guess_address_family(self, addr):
11 if ":" in addr:
12 return 6
940227cb 13
9068dba1 14 return 4
65afea2f 15
9068dba1
MT
16 def get_country(self, addr):
17 ret = self.get_all(addr)
940227cb 18
9068dba1
MT
19 if ret:
20 return ret.country
119f55d7 21
9068dba1 22 def get_location(self, addr):
5488a9f4
MT
23 query = "SELECT * FROM geoip \
24 WHERE %s BETWEEN start_ip AND end_ip LIMIT 1"
0673d1b0 25
c89084ce 26 return self.db.get(query, addr)
0673d1b0 27
9068dba1 28 def get_asn(self, addr):
5488a9f4
MT
29 query = "SELECT asn FROM geoip_asn \
30 WHERE %s BETWEEN start_ip AND end_ip LIMIT 1"
0673d1b0 31
9068dba1 32 ret = self.db.get(query, addr)
0673d1b0 33
9068dba1
MT
34 if ret:
35 return ret.asn
0673d1b0 36
9068dba1
MT
37 def get_all(self, addr):
38 location = self.get_location(addr)
0673d1b0 39
9068dba1
MT
40 if location:
41 location["asn"] = self.get_asn(addr)
940227cb 42
9068dba1 43 return location
119f55d7 44
9068dba1
MT
45 _countries = {
46 "A1" : "Anonymous Proxy",
47 "A2" : "Satellite Provider",
48 "AP" : "Asia/Pacific Region",
49 "EU" : "Europe",
50 }
119f55d7 51
9068dba1 52 def get_country_name(self, code):
df731215 53 return countries.get_name(code)