mirror of
https://github.com/shmilylty/OneForAll.git
synced 2026-08-26 04:47:48 +08:00
完善更新检查
This commit is contained in:
+1
-8
@@ -190,13 +190,6 @@ def get_connector():
|
|||||||
limit_per_host=setting.limit_per_host)
|
limit_per_host=setting.limit_per_host)
|
||||||
|
|
||||||
|
|
||||||
def get_header():
|
|
||||||
header = None
|
|
||||||
if setting.fake_header:
|
|
||||||
header = utils.gen_fake_header()
|
|
||||||
return header
|
|
||||||
|
|
||||||
|
|
||||||
async def bulk_request(data, port):
|
async def bulk_request(data, port):
|
||||||
ports = get_ports(port)
|
ports = get_ports(port)
|
||||||
no_req_data = utils.get_filtered_data(data)
|
no_req_data = utils.get_filtered_data(data)
|
||||||
@@ -205,7 +198,7 @@ async def bulk_request(data, port):
|
|||||||
logger.log('INFOR', f'Use {method} method to request')
|
logger.log('INFOR', f'Use {method} method to request')
|
||||||
logger.log('INFOR', f'Async subdomains request in progress')
|
logger.log('INFOR', f'Async subdomains request in progress')
|
||||||
connector = get_connector()
|
connector = get_connector()
|
||||||
header = get_header()
|
header = utils.get_random_header()
|
||||||
async with ClientSession(connector=connector, headers=header) as session:
|
async with ClientSession(connector=connector, headers=header) as session:
|
||||||
tasks = []
|
tasks = []
|
||||||
for i, data in enumerate(to_req_data):
|
for i, data in enumerate(to_req_data):
|
||||||
|
|||||||
+38
-10
@@ -66,6 +66,16 @@ def gen_fake_header():
|
|||||||
return headers
|
return headers
|
||||||
|
|
||||||
|
|
||||||
|
def get_random_header():
|
||||||
|
"""
|
||||||
|
Get random proxy
|
||||||
|
"""
|
||||||
|
header = None
|
||||||
|
if setting.fake_header:
|
||||||
|
header = gen_fake_header()
|
||||||
|
return header
|
||||||
|
|
||||||
|
|
||||||
def get_random_proxy():
|
def get_random_proxy():
|
||||||
"""
|
"""
|
||||||
Get random proxy
|
Get random proxy
|
||||||
@@ -76,6 +86,15 @@ def get_random_proxy():
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def get_proxy():
|
||||||
|
"""
|
||||||
|
Get proxy
|
||||||
|
"""
|
||||||
|
if setting.enable_proxy:
|
||||||
|
return get_random_proxy()
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def split_list(ls, size):
|
def split_list(ls, size):
|
||||||
"""
|
"""
|
||||||
Split list
|
Split list
|
||||||
@@ -542,18 +561,27 @@ def check_env():
|
|||||||
check_pre()
|
check_pre()
|
||||||
|
|
||||||
|
|
||||||
def check_version(version):
|
def check_version(local):
|
||||||
from distutils.version import LooseVersion
|
logger.log('INFOR', 'Checking for the latest version')
|
||||||
|
api = 'https://api.github.com/repos/shmilylty/OneForAll/releases/latest'
|
||||||
|
header = get_random_header()
|
||||||
|
proxy = get_proxy()
|
||||||
|
timeout = setting.request_timeout
|
||||||
|
verify = setting.request_verify
|
||||||
try:
|
try:
|
||||||
resp = requests.get('https://api.github.com/repos/shmilylty/OneForAll/releases/latest')
|
resp = requests.get(url=api, headers=header, proxies=proxy,
|
||||||
latest_version = resp.json()['tag_name']
|
timeout=timeout, verify=verify)
|
||||||
if LooseVersion(latest_version) > LooseVersion(version):
|
|
||||||
logger.log('ALERT', f'The current OneForAll version is {version}, and the latest version is {latest_version}.')
|
|
||||||
logger.log('ALERT', f'{resp.json()["body"]}')
|
|
||||||
else:
|
|
||||||
return
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.log('FATAL', e.args)
|
logger.log('ERROR', 'An error occurred while checking the latest version')
|
||||||
|
logger.log('ERROR', e.args)
|
||||||
|
return
|
||||||
|
latest = resp.json()['tag_name']
|
||||||
|
if latest > local:
|
||||||
|
change = resp.json()["body"]
|
||||||
|
logger.log('ALERT', f'The current version is {local} but the latest version is {latest}')
|
||||||
|
logger.log('ALERT', f'The {latest} version mainly has the following changes\n{change}')
|
||||||
|
else:
|
||||||
|
logger.log('INFOR', f'The current version {local} is already the latest version')
|
||||||
|
|
||||||
|
|
||||||
def get_maindomain(domain):
|
def get_maindomain(domain):
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ result_save_dir = relative_directory.joinpath('results') # 结果保存目录
|
|||||||
|
|
||||||
|
|
||||||
# OneForAll入口参数设置
|
# OneForAll入口参数设置
|
||||||
|
enable_check_version = True # 开启最新版本检查
|
||||||
enable_dns_resolve = True # 使用DNS解析子域(默认True)
|
enable_dns_resolve = True # 使用DNS解析子域(默认True)
|
||||||
enable_http_request = True # 使用HTTP请求子域(默认True)
|
enable_http_request = True # 使用HTTP请求子域(默认True)
|
||||||
enable_takeover_check = False # 开启子域接管风险检查(默认False)
|
enable_takeover_check = False # 开启子域接管风险检查(默认False)
|
||||||
|
|||||||
+16
-3
@@ -28,8 +28,8 @@ blue = '\033[01;34m'
|
|||||||
red = '\033[1;31m'
|
red = '\033[1;31m'
|
||||||
end = '\033[0m'
|
end = '\033[0m'
|
||||||
|
|
||||||
version = 'v0.3.0#dev'
|
version = 'v0.3.0'
|
||||||
message = white + '{' + red + version + white + '}'
|
message = white + '{' + red + version + ' #dev' + white + '}'
|
||||||
|
|
||||||
banner = f"""
|
banner = f"""
|
||||||
OneForAll is a powerful subdomain integration tool{yellow}
|
OneForAll is a powerful subdomain integration tool{yellow}
|
||||||
@@ -50,6 +50,7 @@ class OneForAll(object):
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
python3 oneforall.py version
|
python3 oneforall.py version
|
||||||
|
python3 oneforall.py check
|
||||||
python3 oneforall.py --target example.com run
|
python3 oneforall.py --target example.com run
|
||||||
python3 oneforall.py --target ./domains.txt run
|
python3 oneforall.py --target ./domains.txt run
|
||||||
python3 oneforall.py --target example.com --alive False run
|
python3 oneforall.py --target example.com --alive False run
|
||||||
@@ -232,6 +233,8 @@ class OneForAll(object):
|
|||||||
dt = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
dt = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||||
print(f'[*] Starting OneForAll @ {dt}\n')
|
print(f'[*] Starting OneForAll @ {dt}\n')
|
||||||
utils.check_env()
|
utils.check_env()
|
||||||
|
if setting.enable_check_version:
|
||||||
|
utils.check_version(version)
|
||||||
logger.log('DEBUG', 'Python ' + utils.python_version())
|
logger.log('DEBUG', 'Python ' + utils.python_version())
|
||||||
logger.log('DEBUG', 'OneForAll ' + version)
|
logger.log('DEBUG', 'OneForAll ' + version)
|
||||||
logger.log('INFOR', f'Start running OneForAll')
|
logger.log('INFOR', f'Start running OneForAll')
|
||||||
@@ -247,12 +250,22 @@ class OneForAll(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def version():
|
def version():
|
||||||
|
"""
|
||||||
|
Print version information and exit
|
||||||
|
"""
|
||||||
print(banner)
|
print(banner)
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def check():
|
||||||
|
"""
|
||||||
|
Check if there is a new version and exit
|
||||||
|
"""
|
||||||
|
utils.check_version(version)
|
||||||
|
exit(0)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
utils.check_version(version)
|
|
||||||
fire.Fire(OneForAll)
|
fire.Fire(OneForAll)
|
||||||
# OneForAll('example.com').run()
|
# OneForAll('example.com').run()
|
||||||
# OneForAll('./domains.txt').run()
|
# OneForAll('./domains.txt').run()
|
||||||
|
|||||||
Reference in New Issue
Block a user