()
| 14 | |
| 15 | |
| 16 | def 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( |
no test coverage detected