mirror of
https://github.com/shmilylty/OneForAll.git
synced 2026-08-26 04:47:48 +08:00
重构deal_output函数
This commit is contained in:
+59
-52
@@ -9,6 +9,12 @@ from common.ipgeo import IpGeoInfo
|
|||||||
from common.ipreg import IpRegInfo
|
from common.ipreg import IpRegInfo
|
||||||
|
|
||||||
|
|
||||||
|
ip_asn = IPAsnInfo()
|
||||||
|
ip_geo = IpGeoInfo()
|
||||||
|
db_path = settings.data_storage_dir.joinpath('ip2region.db')
|
||||||
|
ip_reg = IpRegInfo(db_path)
|
||||||
|
|
||||||
|
|
||||||
def filter_subdomain(data):
|
def filter_subdomain(data):
|
||||||
"""
|
"""
|
||||||
过滤出无解析内容的子域到新的子域列表
|
过滤出无解析内容的子域到新的子域列表
|
||||||
@@ -71,13 +77,61 @@ def save_subdomains(save_path, subdomain_list):
|
|||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def gen_infos(data, qname, info, infos):
|
||||||
|
flag = False
|
||||||
|
cname = list()
|
||||||
|
ips = list()
|
||||||
|
public = list()
|
||||||
|
ttls = list()
|
||||||
|
cidrs = list()
|
||||||
|
asns = list()
|
||||||
|
orgs = list()
|
||||||
|
locs = list()
|
||||||
|
regs = list()
|
||||||
|
answers = data.get('answers')
|
||||||
|
for answer in answers:
|
||||||
|
if answer.get('type') == 'A':
|
||||||
|
flag = True
|
||||||
|
cname.append(answer.get('name')[:-1]) # 去除最右边的`.`点号
|
||||||
|
ip = answer.get('data')
|
||||||
|
ips.append(ip)
|
||||||
|
ttl = answer.get('ttl')
|
||||||
|
ttls.append(str(ttl))
|
||||||
|
is_public = utils.ip_is_public(ip)
|
||||||
|
public.append(str(is_public))
|
||||||
|
asn_info = ip_asn.find(ip)
|
||||||
|
cidrs.append(asn_info.get('cidr'))
|
||||||
|
asns.append(asn_info.get('asn'))
|
||||||
|
orgs.append(asn_info.get('org'))
|
||||||
|
loc = f'{ip_geo.get_country_long(ip)} ' \
|
||||||
|
f'{ip_geo.get_region(ip)} ' \
|
||||||
|
f'{ip_geo.get_city(ip)}'
|
||||||
|
locs.append(loc)
|
||||||
|
reg = ip_reg.memory_search(ip).get('region').decode('utf-8')
|
||||||
|
regs.append(reg)
|
||||||
|
info['resolve'] = 1
|
||||||
|
info['reason'] = 'OK'
|
||||||
|
info['cname'] = ','.join(cname)
|
||||||
|
info['content'] = ','.join(ips)
|
||||||
|
info['public'] = ','.join(public)
|
||||||
|
info['ttl'] = ','.join(ttls)
|
||||||
|
info['cidr'] = ','.join(cidrs)
|
||||||
|
info['asn'] = ','.join(asns)
|
||||||
|
info['org'] = ','.join(orgs)
|
||||||
|
info['ip2location'] = ','.join(locs)
|
||||||
|
info['ip2region'] = ','.join(regs)
|
||||||
|
infos[qname] = info
|
||||||
|
if not flag:
|
||||||
|
info['alive'] = 0
|
||||||
|
info['resolve'] = 0
|
||||||
|
info['reason'] = 'NoARecord'
|
||||||
|
infos[qname] = info
|
||||||
|
return infos
|
||||||
|
|
||||||
|
|
||||||
def deal_output(output_path):
|
def deal_output(output_path):
|
||||||
logger.log('INFOR', f'Processing resolved results')
|
logger.log('INFOR', f'Processing resolved results')
|
||||||
infos = dict() # 用来记录所有域名有关信息
|
infos = dict() # 用来记录所有域名有关信息
|
||||||
ip_asn = IPAsnInfo()
|
|
||||||
ip_geo = IpGeoInfo()
|
|
||||||
db_path = settings.data_storage_dir.joinpath('ip2region.db')
|
|
||||||
ip_reg = IpRegInfo(db_path)
|
|
||||||
with open(output_path) as fd:
|
with open(output_path) as fd:
|
||||||
for line in fd:
|
for line in fd:
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
@@ -100,54 +154,7 @@ def deal_output(output_path):
|
|||||||
info['reason'] = 'NoAnswer'
|
info['reason'] = 'NoAnswer'
|
||||||
infos[qname] = info
|
infos[qname] = info
|
||||||
continue
|
continue
|
||||||
flag = False
|
infos = gen_infos(data, qname, info, infos)
|
||||||
cname = list()
|
|
||||||
ips = list()
|
|
||||||
public = list()
|
|
||||||
ttls = list()
|
|
||||||
cidrs = list()
|
|
||||||
asns = list()
|
|
||||||
orgs = list()
|
|
||||||
locs = list()
|
|
||||||
regs = list()
|
|
||||||
answers = data.get('answers')
|
|
||||||
for answer in answers:
|
|
||||||
if answer.get('type') == 'A':
|
|
||||||
flag = True
|
|
||||||
cname.append(answer.get('name')[:-1]) # 去除最右边的`.`点号
|
|
||||||
ip = answer.get('data')
|
|
||||||
ips.append(ip)
|
|
||||||
ttl = answer.get('ttl')
|
|
||||||
ttls.append(str(ttl))
|
|
||||||
is_public = utils.ip_is_public(ip)
|
|
||||||
public.append(str(is_public))
|
|
||||||
asn_info = ip_asn.find(ip)
|
|
||||||
cidrs.append(asn_info.get('cidr'))
|
|
||||||
asns.append(asn_info.get('asn'))
|
|
||||||
orgs.append(asn_info.get('org'))
|
|
||||||
loc = f'{ip_geo.get_country_long(ip)} ' \
|
|
||||||
f'{ip_geo.get_region(ip)} ' \
|
|
||||||
f'{ip_geo.get_city(ip)}'
|
|
||||||
locs.append(loc)
|
|
||||||
reg = ip_reg.memory_search(ip).get('region').decode('utf-8')
|
|
||||||
regs.append(reg)
|
|
||||||
info['resolve'] = 1
|
|
||||||
info['reason'] = status
|
|
||||||
info['cname'] = ','.join(cname)
|
|
||||||
info['content'] = ','.join(ips)
|
|
||||||
info['public'] = ','.join(public)
|
|
||||||
info['ttl'] = ','.join(ttls)
|
|
||||||
info['cidr'] = ','.join(cidrs)
|
|
||||||
info['asn'] = ','.join(asns)
|
|
||||||
info['org'] = ','.join(orgs)
|
|
||||||
info['ip2location'] = ','.join(locs)
|
|
||||||
info['ip2region'] = ','.join(regs)
|
|
||||||
infos[qname] = info
|
|
||||||
if not flag:
|
|
||||||
info['alive'] = 0
|
|
||||||
info['resolve'] = 0
|
|
||||||
info['reason'] = 'NoARecord'
|
|
||||||
infos[qname] = info
|
|
||||||
return infos
|
return infos
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user