|
3 | 3 | from re import compile
|
4 | 4 | from os import name as os_name, popen
|
5 | 5 | from socket import socket, getaddrinfo, gethostname, AF_INET, AF_INET6, SOCK_DGRAM
|
6 |
| -from logging import debug, error |
| 6 | +from logging import debug, warning, error |
7 | 7 | try:
|
8 | 8 | # python2
|
9 | 9 | from urllib2 import urlopen, Request
|
|
19 | 19 |
|
20 | 20 |
|
21 | 21 | def default_v4(): # 默认连接外网的ipv4
|
22 |
| - s = socket(AF_INET, SOCK_DGRAM) |
23 |
| - s.connect(("1.1.1.1", 53)) |
24 |
| - ip = s.getsockname()[0] |
25 |
| - s.close() |
26 |
| - return ip |
| 22 | + try: |
| 23 | + s = socket(AF_INET, SOCK_DGRAM) |
| 24 | + s.connect(("1.1.1.1", 53)) |
| 25 | + ip = s.getsockname()[0] |
| 26 | + s.close() |
| 27 | + return ip |
| 28 | + except Exception as e: |
| 29 | + debug(e) |
| 30 | + warning('This device not have IPv4 default route, cannot get valid IPv4 address for DDNS.') |
| 31 | + return False |
27 | 32 |
|
28 | 33 |
|
29 | 34 | def default_v6(): # 默认连接外网的ipv6
|
30 |
| - s = socket(AF_INET6, SOCK_DGRAM) |
31 |
| - s.connect(('1:1:1:1:1:1:1:1', 8)) |
32 |
| - ip = s.getsockname()[0] |
33 |
| - s.close() |
34 |
| - return ip |
| 35 | + try: |
| 36 | + s = socket(AF_INET6, SOCK_DGRAM) |
| 37 | + s.connect(("2606:4700:4700::1111", 53)) |
| 38 | + ip = s.getsockname()[0] |
| 39 | + s.close() |
| 40 | + return ip |
| 41 | + except Exception as e: |
| 42 | + debug(e) |
| 43 | + warning('This device not have IPv6 default route, cannot get valid IPv6 address for DDNS.') |
| 44 | + return False |
35 | 45 |
|
36 | 46 |
|
37 | 47 | def local_v6(i=0): # 本地ipv6地址
|
|
0 commit comments