Files
XiaoGe-LiBai-yangmao/xiequ_white_list.py
XiaoGe-LiBai 678f0f8d96 创建 xiequ_white_list.py
谐趣白名单
2024-05-03 18:04:52 +08:00

135 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
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")