68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
|
|
""" TEST_CONFIG
|
|||
|
|
{
|
|||
|
|
"name": "base_deny_test",
|
|||
|
|
"network": {
|
|||
|
|
"allowInternet": false,
|
|||
|
|
"allowLocalNetwork": false,
|
|||
|
|
"allowListen": [9990],
|
|||
|
|
"allowList": ["111.63.65.247:80"]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
"""
|
|||
|
|
import os, sys, json, socket, platform
|
|||
|
|
|
|||
|
|
def run_test():
|
|||
|
|
is_darwin = platform.system().lower() == "darwin"
|
|||
|
|
|
|||
|
|
results = {
|
|||
|
|
"listen_9990_ok": False,
|
|||
|
|
"listen_9991_denied": False,
|
|||
|
|
"whitelist_ip_port_ok": False,
|
|||
|
|
"whitelist_ip_wrong_port_denied": False,
|
|||
|
|
"wrong_ip_denied": True # Mac 默认设为 True,跳过检查
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 1. 监听对比测试
|
|||
|
|
# 9990 (Allowed)
|
|||
|
|
try:
|
|||
|
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
|||
|
|
s.bind(('0.0.0.0', 9990))
|
|||
|
|
results["listen_9990_ok"] = True
|
|||
|
|
except: pass
|
|||
|
|
|
|||
|
|
# 9991 (Denied)
|
|||
|
|
try:
|
|||
|
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
|||
|
|
s.bind(('0.0.0.0', 9991))
|
|||
|
|
except:
|
|||
|
|
results["listen_9991_denied"] = True
|
|||
|
|
|
|||
|
|
# 2. 网络访问对比测试
|
|||
|
|
# 111.63.65.247:80 (Allowed)
|
|||
|
|
try:
|
|||
|
|
with socket.create_connection(("111.63.65.247", 80), timeout=1):
|
|||
|
|
results["whitelist_ip_port_ok"] = True
|
|||
|
|
except: pass
|
|||
|
|
|
|||
|
|
# 111.63.65.247:443 (Wrong Port - Denied)
|
|||
|
|
try:
|
|||
|
|
with socket.create_connection(("111.63.65.247", 443), timeout=1):
|
|||
|
|
pass
|
|||
|
|
except:
|
|||
|
|
results["whitelist_ip_wrong_port_denied"] = True
|
|||
|
|
|
|||
|
|
# 3. 跨 IP 拦截测试 (仅 Linux)
|
|||
|
|
if not is_darwin:
|
|||
|
|
results["wrong_ip_denied"] = False
|
|||
|
|
try:
|
|||
|
|
# 61.135.164.50:80 不在白名单
|
|||
|
|
with socket.create_connection(("61.135.164.50", 80), timeout=1):
|
|||
|
|
pass
|
|||
|
|
except:
|
|||
|
|
results["wrong_ip_denied"] = True
|
|||
|
|
|
|||
|
|
test_success = all(results.values())
|
|||
|
|
print(json.dumps({"testSuccess": test_success, "details": results}, indent=2))
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
run_test()
|