MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / cron_shell

Function cron_shell

script/firewall_domain.py:16–134  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

14
15
16def cron_shell():
17 from safeModel import firewallModel
18 firewallobj = firewallModel.main()
19 conf = public.M('firewall_domain').select()
20 domain_name_dict = {}
21 old_a_ip_dict = {}
22 #整理所有的域名规则
23 for ii in conf:
24 domain_name = ii['domain'].split('|')[0]
25 if domain_name not in domain_name_dict.keys():
26 domain_name_dict[domain_name] = []
27 old_a_ip_dict[domain_name] = []
28 domain_name_dict[domain_name].append(ii)
29 old_a_ip_dict[domain_name].append(ii['address'])
30 is_reload = False
31 # print(domain_name_dict)
32 for i3 in domain_name_dict.keys():
33 a_ip = firewallobj.get_a_ip(i3)
34 # a_ip = firewallobj.check_a_ip(a_ip)
35 if a_ip and len(a_ip) < 2 and public.is_domain(a_ip[0]):
36 # return 111
37 a_ip = [firewallobj.check_a_ip(a_ip[0])]
38 # 当域名解析IP为空,跳过
39 if not a_ip: continue
40 #域名解析IP数量
41 a_ip_num = len(a_ip)
42 old_num = len(domain_name_dict[i3])
43 #取交集
44 intersection_list = list(set(old_a_ip_dict[i3]).intersection(a_ip))
45 # print(a_ip)
46 #取a_ip中不在old_a_ip_dict[i3]中的IP
47 a_ip_difference = list(set(a_ip).difference(old_a_ip_dict[i3]))
48 #取old_a_ip_dict[i3]中不在a_ip中的IP
49 i3_difference = list(set(old_a_ip_dict[i3]).difference(a_ip))
50 #当域名解析IP比原来减少时
51 if a_ip_num < old_num:
52 pass
53 #当域名解析IP比原来增加时
54 elif a_ip_num > old_num:
55 pass
56 #当域名解析IP数量不变时
57 else:
58 #当交集为空时,说明域名全部解析IP发生变化
59 if not intersection_list:
60 for i4 in domain_name_dict[i3]:
61 # if i4['address'] not in intersection_list:
62 is_reload = True
63 args = public.dict_obj()
64 args.id = i4['sid']
65 args.domain = i4['domain']
66 #取A记录中不在交集中的IP
67 for i7 in a_ip:
68 if i7 not in intersection_list:
69 args.address = i7
70 a_ip.remove(i7)
71 break
72 if args.domain.split('|')[1] != args.address:
73 args.domain = args.domain.split(

Callers 1

firewall_domain.pyFile · 0.85

Calls 15

check_a_ipMethod · 0.80
modify_rulesMethod · 0.80
modify_ip_rulesMethod · 0.80
setFunction · 0.50
mainMethod · 0.45
selectMethod · 0.45
MMethod · 0.45
splitMethod · 0.45
keysMethod · 0.45
appendMethod · 0.45
get_a_ipMethod · 0.45
is_domainMethod · 0.45

Tested by

no test coverage detected