#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
支持 CORS 的 HTTP 服务器
用于本地开发和调试，允许跨域请求
"""

import http.server
import socketserver
import sys
import os

class CORSRequestHandler(http.server.SimpleHTTPRequestHandler):
    """支持 CORS 的 HTTP 请求处理器"""
    
    def end_headers(self):
        """添加 CORS 响应头"""
        # 允许所有来源（开发环境）
        self.send_header('Access-Control-Allow-Origin', '*')
        # 允许的 HTTP 方法
        self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE')
        # 允许的请求头
        self.send_header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With')
        # 允许携带凭证（如果需要）
        self.send_header('Access-Control-Allow-Credentials', 'true')
        # 预检请求的缓存时间（秒）
        self.send_header('Access-Control-Max-Age', '3600')
        
        # 调用父类方法，发送其他标准响应头
        super().end_headers()
    
    def do_OPTIONS(self):
        """处理 OPTIONS 预检请求"""
        self.send_response(200)
        self.end_headers()
    
    def log_message(self, format, *args):
        """自定义日志格式"""
        # 可以在这里自定义日志输出格式
        super().log_message(format, *args)

def main():
    """主函数"""
    PORT = 8003
    
    # 获取脚本所在目录作为服务器根目录
    os.chdir(os.path.dirname(os.path.abspath(__file__)))
    
    # 创建服务器
    with socketserver.TCPServer(("0.0.0.0", PORT), CORSRequestHandler) as httpd:
        print("=" * 40)
        print("启动支持 CORS 的 HTTP 服务器")
        print("=" * 40)
        print(f"[*] 端口: {PORT}")
        print(f"[*] 根目录: {os.getcwd()}")
        print(f"[*] 本地访问: http://localhost:{PORT}/Ui.html")
        print(f"[*] 外部访问: http://0.0.0.0:{PORT}/Ui.html")
        print()
        print("=" * 40)
        print("按 Ctrl+C 停止服务器")
        print("=" * 40)
        print()
        
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print("\n[*] 服务器已停止")
            sys.exit(0)

if __name__ == '__main__':
    main()
