]>
git.wh0rd.org - home.git/blob - .bin/google-wifi-he-dyn-dns
3 """Update HS DNS settings behind Google WiFi systems."""
14 WIFI_STATUS_URI
= 'http://192.168.86.1/api/v1/status'
18 with urllib
.request
.urlopen(WIFI_STATUS_URI
) as req
:
20 status
= json
.loads(data
)
21 return status
['wan']['localIpAddress']
24 def update_ip(hostname
, password
, ip
=None):
25 """Update HE DNS with new settings."""
32 body
= urllib
.parse
.urlencode(params
).encode()
34 url
= 'https://dyn.dns.he.net/nic/update'
35 req
= urllib
.request
.Request(url
, body
)
37 with urllib
.request
.urlopen(req
) as response
:
38 return response
.read()
43 parser
= argparse
.ArgumentParser(description
=__doc__
)
44 parser
.add_argument('--hostname', required
=True)
45 parser
.add_argument('-p', '--password', '--key', required
=True)
46 parser
.add_argument('-a', '--address', '--ip')
47 parser
.add_argument('-q', '--quiet', action
='store_true')
52 """The main entry point for scripts."""
54 opts
= parser
.parse_args(argv
)
57 p
= lambda *args
: None
61 curr_ip
= get_wan_ip()
62 p('Current IP', curr_ip
)
64 p('Looking up', opts
.hostname
, '...')
65 answers
= dns
.resolver
.resolve(opts
.hostname
, 'A')
67 p('Current DNS', msg
.to_text())
68 if curr_ip
!= msg
.to_text():
70 resp
= update_ip(opts
.hostname
, opts
.password
, opts
.address
)
77 if __name__
== '__main__':
78 sys
.exit(main(sys
.argv
[1:]))