]>
git.ipfire.org Git - people/shoehn/ipfire.org.git/blob - webapp/backend/geoip.py
8 from misc
import Object
11 def guess_address_family(self
, addr
):
17 def get_country(self
, addr
):
18 ret
= self
.get_all(addr
)
23 def get_location(self
, addr
):
24 family
= self
.guess_address_family(addr
)
27 query
= "SELECT *, NULL AS city, NULL AS postal_code FROM geoip_ipv6 WHERE %s \
28 BETWEEN start_ip AND end_ip LIMIT 1"
30 query
= "SELECT * FROM geoip_ipv4 WHERE inet_to_bigint(%s) \
31 BETWEEN start_ip AND end_ip LIMIT 1"
33 return self
.db
.get(query
, addr
)
35 def get_asn(self
, addr
):
36 family
= self
.guess_address_family(addr
)
39 query
= "SELECT asn FROM geoip_asnv6 WHERE %s \
40 BETWEEN start_ip AND end_ip LIMIT 1"
42 query
= "SELECT asn FROM geoip_asnv4 WHERE inet_to_bigint(%s) \
43 BETWEEN start_ip AND end_ip LIMIT 1"
45 ret
= self
.db
.get(query
, addr
)
50 def get_all(self
, addr
):
51 location
= self
.get_location(addr
)
54 location
["asn"] = self
.get_asn(addr
)
59 "A1" : "Anonymous Proxy",
60 "A2" : "Satellite Provider",
61 "AP" : "Asia/Pacific Region",
65 def get_country_name(self
, code
):
66 # Return description of some exceptional codes.
68 return self
._countries
[code
]
72 country
= countries
.get_by_code(code
)