Files
kefu/wechat_rpa/tmp/check_packaged_https.py
T
2026-09-21 10:34:06 +08:00

37 lines
1.8 KiB
Python

"""Use only release OpenSSL binaries for an anonymous HTTPS connectivity probe."""
import ctypes
import os
import sys
from pathlib import Path
bundle = Path(__file__).resolve().parents[1] / "dist/ZhenAI-WeCom-Assistant-v1.4.4/_internal"
if "_ssl" in sys.modules:
raise RuntimeError("Run with -S before SSL is imported")
handle = os.add_dll_directory(str(bundle))
sys.path.insert(0, str(bundle))
import ssl
import _ssl
import urllib.request
import urllib.error
if Path(_ssl.__file__).resolve().parent != bundle.resolve():
raise RuntimeError("SSL extension did not load from the release bundle")
api = ctypes.WinDLL("kernel32", use_last_error=True)
api.GetModuleHandleW.argtypes = [ctypes.c_wchar_p]
api.GetModuleHandleW.restype = ctypes.c_void_p
api.GetModuleFileNameW.argtypes = [ctypes.c_void_p, ctypes.c_wchar_p, ctypes.c_uint]
api.GetModuleFileNameW.restype = ctypes.c_uint
for name in ("libssl-3-x64.dll", "libcrypto-3-x64.dll"):
module = api.GetModuleHandleW(name)
filename = ctypes.create_unicode_buffer(32768)
if not module or not api.GetModuleFileNameW(module, filename, len(filename)):
raise RuntimeError("Required OpenSSL library did not load")
if Path(filename.value).resolve().parent != bundle.resolve():
raise RuntimeError("OpenSSL library was loaded from outside release bundle")
print("Release SSL extension and OpenSSL libraries loaded from bundle", flush=True)
request = urllib.request.Request("https://admin.zhenyangtang.com.cn/", method="HEAD")
try:
with urllib.request.urlopen(request, timeout=15) as response:
print("Anonymous identity-service HTTPS request returned HTTP", response.status, flush=True)
except urllib.error.HTTPError as exc:
print("Anonymous identity-service HTTPS request returned HTTP", exc.code, flush=True)