@@ -17,19 +17,19 @@ def __init__(self):
17
17
self .synology_webhook_allow_ip = security .get ('synology_webhook_allow_ip' ) or {}
18
18
19
19
def check_mediaserver_ip (self , ip ):
20
- return self .webhook_allow_access (self .media_server_webhook_allow_ip , ip )
20
+ return self .allow_access (self .media_server_webhook_allow_ip , ip )
21
21
22
22
def check_telegram_ip (self , ip ):
23
- return self .webhook_allow_access (self .telegram_webhook_allow_ip , ip )
23
+ return self .allow_access (self .telegram_webhook_allow_ip , ip )
24
24
25
25
def check_synology_ip (self , ip ):
26
- return self .webhook_allow_access (self .synology_webhook_allow_ip , ip )
26
+ return self .allow_access (self .synology_webhook_allow_ip , ip )
27
27
28
28
def check_slack_ip (self , ip ):
29
- return self .webhook_allow_access ({"ipve" : "127.0.0.1" }, ip )
29
+ return self .allow_access ({"ipve" : "127.0.0.1" }, ip )
30
30
31
31
@staticmethod
32
- def webhook_allow_access (allow_ips , ip ):
32
+ def allow_access (allow_ips , ip ):
33
33
"""
34
34
判断IP是否合法
35
35
:param allow_ips: 充许的IP范围 {"ipv4":, "ipv6":}
@@ -39,14 +39,19 @@ def webhook_allow_access(allow_ips, ip):
39
39
return True
40
40
try :
41
41
ipaddr = ipaddress .ip_address (ip )
42
- if ipaddr .version == 4 or ipaddr . ipv4_mapped :
42
+ if ipaddr .version == 4 :
43
43
if not allow_ips .get ('ipv4' ):
44
44
return True
45
45
allow_ipv4s = allow_ips .get ('ipv4' ).split ("," )
46
46
for allow_ipv4 in allow_ipv4s :
47
- if ipaddr . version == 4 and ipaddr in ipaddress .ip_network (allow_ipv4 ):
47
+ if ipaddr in ipaddress .ip_network (allow_ipv4 ):
48
48
return True
49
- if ipaddr .ipv4_mapped and ipaddr .ipv4_mapped in ipaddress .ip_network (allow_ipv4 ):
49
+ elif ipaddr .ipv4_mapped :
50
+ if not allow_ips .get ('ipv4' ):
51
+ return True
52
+ allow_ipv4s = allow_ips .get ('ipv4' ).split ("," )
53
+ for allow_ipv4 in allow_ipv4s :
54
+ if ipaddr .ipv4_mapped in ipaddress .ip_network (allow_ipv4 ):
50
55
return True
51
56
else :
52
57
if not allow_ips .get ('ipv6' ):
0 commit comments