创建 xiequ_white_list.py

谐趣白名单
This commit is contained in:
XiaoGe-LiBai
2024-05-03 18:04:52 +08:00
parent d1987e3b8b
commit 678f0f8d96

134
xiequ_white_list.py Normal file
View File

@@ -0,0 +1,134 @@
"""
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")