#!/usr/bin/env python3
"""微信代理服务器 - 用有效 Cookie/Token 转发请求到 mp.weixin.qq.com"""
import http.server
import urllib.request
import urllib.parse
import sys, os, json

sys.path.insert(0, '/home/ubuntu/project/we-mp-rss-main')
from driver.token import get as get_token_val

class ProxyHandler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        # 解析目标 URL
        parsed = urllib.parse.urlparse(self.path)
        params = urllib.parse.parse_qs(parsed.query)
        target_url = params.get('url', [None])[0]
        
        if not target_url:
            self.send_error(400, "Missing ?url= parameter")
            return
        
        # 获取微信 Cookie/Token
        cookie = get_token_val('cookie', '')
        token = get_token_val('token', '')
        
        # 构建请求
        req = urllib.request.Request(target_url)
        req.add_header('Cookie', cookie)
        req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36')
        req.add_header('Referer', 'https://mp.weixin.qq.com/')
        
        try:
            resp = urllib.request.urlopen(req, timeout=30)
            body = resp.read()
            self.send_response(resp.status)
            self.send_header('Content-Type', resp.headers.get('Content-Type', 'application/json'))
            self.send_header('Access-Control-Allow-Origin', '*')
            self.end_headers()
            self.wfile.write(body)
        except Exception as e:
            self.send_error(502, str(e))
    
    def log_message(self, format, *args):
        print(f"[{self.log_date_time_string()}] {args[0]}")

if __name__ == '__main__':
    port = int(sys.argv[1]) if len(sys.argv) > 1 else 8090
    server = http.server.HTTPServer(('127.0.0.1', port), ProxyHandler)
    print(f"Proxy running on http://127.0.0.1:{port}")
    server.serve_forever()
