mirror of
https://github.com/XiaoGe-LiBai/yangmao.git
synced 2025-12-17 05:08:13 +08:00
135 lines
4.4 KiB
Python
135 lines
4.4 KiB
Python
"""
|
||
new Env('携趣IP白名单');
|
||
0 8 * * * xiequ_white_list.py
|
||
export XIEQU_UID='xxxxxx'
|
||
export XIEQU_UKEY='xxxxxxxxxxxxxxxxx'
|
||
by:xmo
|
||
"""
|
||
|
||
import requests
|
||
import time
|
||
import re
|
||
import sys
|
||
import os
|
||
|
||
print("")
|
||
|
||
# uid&ukey从配置读取
|
||
uid = os.getenv("XIEQU_UID")
|
||
ukey = os.getenv("XIEQU_UKEY")
|
||
|
||
# uid = ""
|
||
if not uid:
|
||
print(">>>无uid退出,请先export XIEQU_UID=你自己的uid")
|
||
sys.exit(0)
|
||
|
||
# ukey = ""
|
||
if not ukey:
|
||
print(">>>无ukey退出,请先export XIEQU_UKEY=你自己的ukey")
|
||
sys.exit(0)
|
||
|
||
# 加载通知
|
||
def load_send():
|
||
global send
|
||
cur_path = os.path.abspath(os.path.dirname(__file__))
|
||
sys.path.append(cur_path)
|
||
if os.path.exists(cur_path + "/sendNotify.py"):
|
||
try:
|
||
from sendNotify import send
|
||
except:
|
||
send=False
|
||
print(">>>加载通知服务失败~")
|
||
else:
|
||
send=False
|
||
print(">>>加载通知服务失败~")
|
||
load_send()
|
||
|
||
msg = ">>>开始执行……"
|
||
|
||
# 置空IP地址
|
||
ip = ""
|
||
|
||
# 尝试使用3322.org网站获取公网IP
|
||
try:
|
||
url = "http://members.3322.org/dyndns/getip/"
|
||
response = requests.get(url)
|
||
ip = response.text.strip()
|
||
print(f">>>使用3322.org获取公网IP成功:{ip}")
|
||
msg = msg + "\n" + f">>>使用3322.org获取公网IP成功:{ip}"
|
||
except requests.RequestException as e:
|
||
print(">>>使用3322.org获取公网IP失败,尝试其他方式...")
|
||
msg = msg + "\n" + ">>>使用3322.org获取公网IP失败,尝试其他方式..."
|
||
|
||
#ip = ""
|
||
|
||
# 尝试使用synology.com网站获取公网IP
|
||
if not ip:
|
||
url = "https://checkip.synology.com/"
|
||
def get_external_ip():
|
||
site = requests.get(url)
|
||
grab = re.findall('([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)', site.text)
|
||
address = grab[0]
|
||
return address
|
||
ip = get_external_ip()
|
||
if not ip:
|
||
print(">>>使用synology.com获取公网IP失败,尝试其他方式...")
|
||
msg = msg + "\n" + ">>>使用synology.com获取公网IP失败,尝试其他方式..."
|
||
else:
|
||
print(f">>>使用synology.com获取公网IP成功:{ip}")
|
||
msg = msg + "\n" + f">>>使用synology.com获取公网IP成功:{ip}"
|
||
|
||
#ip = ""
|
||
|
||
# 尝试使用httpbin.org网站获取公网IP
|
||
if not ip:
|
||
try:
|
||
url = "http://httpbin.org/ip"
|
||
response = requests.get(url)
|
||
data = response.json()
|
||
ip = data['origin']
|
||
print(f">>>使用httpbin.org获取公网IP成功:{ip}")
|
||
msg = msg + "\n" + f">>>使用httpbin.org获取公网IP成功:{ip}"
|
||
except requests.RequestException as e:
|
||
print(">>>使用httpbin.org获取公网IP失败,请检查网络连接或其他问题。")
|
||
msg = msg + "\n" + ">>>使用httpbin.org获取公网IP失败,请检查网络连接或其他问题。"
|
||
|
||
#ip = ""
|
||
|
||
# 判断是否获取到公网IP
|
||
if not ip:
|
||
print(">>>未获取到公网IP,过程终止...")
|
||
msg = msg + "\n" + ">>>未获取到公网IP,过程终止..."
|
||
else:
|
||
# 判断当前ip是否在白名单内
|
||
# 查询IP白名单
|
||
get_url = f"http://op.xiequ.cn/IpWhiteList.aspx?uid={uid}&ukey={ukey}&act=get"
|
||
response = requests.get(get_url)
|
||
print(f">>>执行前查询白名单IP:{response.text}")
|
||
msg = msg + "\n" + f">>>执行前查询白名单IP:{response.text}"
|
||
if ip in response.text:
|
||
print(">>>当前ip在白名单内,过程终止...")
|
||
msg = msg + "\n" + ">>>当前ip在白名单内,过程终止..."
|
||
else:
|
||
# 删除所有已有的白名单 IP
|
||
time.sleep(1)
|
||
delete_url = f"http://op.xiequ.cn/IpWhiteList.aspx?uid={uid}&ukey={ukey}&act=del&ip=all"
|
||
response = requests.get(delete_url)
|
||
print(f">>>清空白名单IP:{response.text}")
|
||
msg = msg + "\n" + f">>>清空白名单IP:{response.text}"
|
||
# 添加IP到白名单
|
||
time.sleep(1)
|
||
add_url = f"http://op.xiequ.cn/IpWhiteList.aspx?uid={uid}&ukey={ukey}&act=add&ip={ip}"
|
||
response = requests.get(add_url)
|
||
print(f">>>添加白名单IP:{response.text}")
|
||
msg = msg + "\n" + f">>>添加白名单IP:{response.text}"
|
||
time.sleep(10)
|
||
|
||
# 查询IP白名单
|
||
get_url = f"http://op.xiequ.cn/IpWhiteList.aspx?uid={uid}&ukey={ukey}&act=get"
|
||
response = requests.get(get_url)
|
||
print(f">>>执行后查询白名单IP:{response.text}")
|
||
msg = msg + "\n" + f">>>执行后查询白名单IP:{response.text}"
|
||
msg = msg + "\n" + ">>>执行结束……"
|
||
send("携趣IP白名单\n\n" + msg +"\n","本通知 by xmo")
|
||
|