#!/usr/bin/env python3
"""本地 HTTP 服务器，自动显示 Cloudflare Tunnel 公网地址"""
import http.server
import socketserver
import os
import threading

PORT = 5188
TUNNEL_URL_FILE = os.path.expanduser("~/.cdn-tunnel-url.txt")

class Handler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path == "/tunnel-url":
            url = ""
            try:
                with open(TUNNEL_URL_FILE) as f:
                    url = f.read().strip()
            except:
                pass
            self.send_response(200)
            self.send_header("Content-Type", "text/plain")
            self.end_headers()
            self.wfile.write(url.encode())
            return
        # 去掉 /pp.html 等路径前缀，映射到当前目录
        super().do_GET()

    def log_message(self, format, *args):
        pass  # 静默日志

os.chdir(os.path.dirname(os.path.abspath(__file__)) or ".")
socketserver.TCPServer.allow_reuse_address = True
with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print(f"🚀 服务器已启动: http://localhost:{PORT}")
    try:
        with open(TUNNEL_URL_FILE) as f:
            print(f"🌐 公网地址: {f.read().strip()}/pp.html")
    except:
        pass
    httpd.serve_forever()
