sfun commited on
Commit
0c67134
1 Parent(s): baeb3e3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -18
app.py CHANGED
@@ -5,10 +5,6 @@ from http.server import HTTPServer, BaseHTTPRequestHandler
5
  from urllib.parse import urlparse, parse_qs
6
 
7
  def extract_and_transform_proxies(input_text):
8
- print("原始输入数据:")
9
- print(input_text)
10
- print("------------------------")
11
-
12
  proxies_match = re.search(r'proxies:\s*\n((?:[-\s]*{.*\n?)*)', input_text, re.MULTILINE)
13
  if not proxies_match:
14
  return "未找到proxies部分"
@@ -18,7 +14,6 @@ def extract_and_transform_proxies(input_text):
18
  try:
19
  proxies_list = yaml.safe_load(proxies_text)
20
  except yaml.YAMLError:
21
- # 如果YAML解析失败,使用正则表达式解析
22
  proxies_list = []
23
  for proxy_str in re.findall(r'{(.*?)}', proxies_text, re.DOTALL):
24
  proxy_dict = {}
@@ -36,7 +31,7 @@ def extract_and_transform_proxies(input_text):
36
  if proxy.get('type') == 'ss':
37
  name = proxy.get('name', '').strip()
38
  server = proxy.get('server', '').strip()
39
- port = str(proxy.get('port', '')).strip() # 转换为字符串
40
  cipher = proxy.get('cipher', '').strip()
41
  password = proxy.get('password', '').strip()
42
  udp = 'true' if proxy.get('udp') in [True, 'true', 'True'] else 'false'
@@ -51,21 +46,37 @@ class RequestHandler(BaseHTTPRequestHandler):
51
  parsed_path = urlparse(self.path)
52
  query_params = parse_qs(parsed_path.query)
53
 
54
- if 'url' in query_params:
55
- url = query_params['url'][0]
56
- try:
57
- response = requests.get(url)
58
- response.raise_for_status()
59
- input_text = response.text
60
- result = extract_and_transform_proxies(input_text)
 
 
 
 
 
 
 
 
 
61
  self.send_response(200)
62
- self.send_header('Content-type', 'text/plain; charset=utf-8')
63
  self.end_headers()
64
- self.wfile.write(result.encode('utf-8'))
65
- except requests.RequestException as e:
66
- self.send_error(500, f"Error fetching data: {str(e)}")
 
 
 
 
 
 
 
67
  else:
68
- self.send_error(400, "Missing 'url' parameter")
69
 
70
  def log_message(self, format, *args):
71
  # 重写此方法以禁用默认的服务器日志
 
5
  from urllib.parse import urlparse, parse_qs
6
 
7
  def extract_and_transform_proxies(input_text):
 
 
 
 
8
  proxies_match = re.search(r'proxies:\s*\n((?:[-\s]*{.*\n?)*)', input_text, re.MULTILINE)
9
  if not proxies_match:
10
  return "未找到proxies部分"
 
14
  try:
15
  proxies_list = yaml.safe_load(proxies_text)
16
  except yaml.YAMLError:
 
17
  proxies_list = []
18
  for proxy_str in re.findall(r'{(.*?)}', proxies_text, re.DOTALL):
19
  proxy_dict = {}
 
31
  if proxy.get('type') == 'ss':
32
  name = proxy.get('name', '').strip()
33
  server = proxy.get('server', '').strip()
34
+ port = str(proxy.get('port', '')).strip()
35
  cipher = proxy.get('cipher', '').strip()
36
  password = proxy.get('password', '').strip()
37
  udp = 'true' if proxy.get('udp') in [True, 'true', 'True'] else 'false'
 
46
  parsed_path = urlparse(self.path)
47
  query_params = parse_qs(parsed_path.query)
48
 
49
+ if parsed_path.path == '/':
50
+ if 'url' in query_params:
51
+ url = query_params['url'][0]
52
+ print(f"处理URL: {url}") # 记录输入的URL
53
+ try:
54
+ response = requests.get(url)
55
+ response.raise_for_status()
56
+ input_text = response.text
57
+ result = extract_and_transform_proxies(input_text)
58
+ self.send_response(200)
59
+ self.send_header('Content-type', 'text/plain; charset=utf-8')
60
+ self.end_headers()
61
+ self.wfile.write(result.encode('utf-8'))
62
+ except requests.RequestException as e:
63
+ self.send_error(500, f"Error fetching data: {str(e)}")
64
+ else:
65
  self.send_response(200)
66
+ self.send_header('Content-type', 'text/html; charset=utf-8')
67
  self.end_headers()
68
+ usage_guide = """
69
+ <html>
70
+ <body>
71
+ <h1>代理配置转换工具</h1>
72
+ <p>使用方法:在URL参数中提供包含代理配置的网址。</p>
73
+ <p>示例:<code>http://localhost:8080/?url=https://example.com/path-to-proxy-config</code></p>
74
+ </body>
75
+ </html>
76
+ """
77
+ self.wfile.write(usage_guide.encode('utf-8'))
78
  else:
79
+ self.send_error(404, "Not Found")
80
 
81
  def log_message(self, format, *args):
82
  # 重写此方法以禁用默认的服务器日志