You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
801 B
38 lines
801 B
#!/usr/bin/env bash
|
|
set -o errexit
|
|
set -o pipefail
|
|
|
|
main() {
|
|
if [[ "${DEBUG}" ]]; then
|
|
set -o xtrace
|
|
fi
|
|
_get_lat_lon
|
|
}
|
|
|
|
_get_lat_lon() {
|
|
: "${IP_LOOKUP_URL:=https://ifconfig.co/ip}"
|
|
: "${GEOIP_LOOKUP_HOST:=http://api.geoiplookup.net}"
|
|
|
|
local ipaddr
|
|
ipaddr="$(curl -fsSL "${IP_LOOKUP_URL}")"
|
|
|
|
local geoip_xml
|
|
geoip_xml="$(curl -fsSL "${GEOIP_LOOKUP_HOST}?query=${ipaddr}")"
|
|
|
|
_extract_lat_long "${geoip_xml}"
|
|
}
|
|
|
|
_extract_lat_long() {
|
|
python <<EOPYTHON
|
|
from __future__ import print_function
|
|
import sys
|
|
from xml.dom.minidom import parseString as parse_xml_string
|
|
dom = parse_xml_string("""${1}""")
|
|
lat = dom.getElementsByTagName('latitude')[0].firstChild.data
|
|
lon = dom.getElementsByTagName('longitude')[0].firstChild.data
|
|
print('{}:{}'.format(lat, lon))
|
|
EOPYTHON
|
|
}
|
|
|
|
main "${@}"
|