sfun commited on
Commit
9b85d7b
1 Parent(s): 2ab6cd2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -9
app.py CHANGED
@@ -77,24 +77,28 @@ async def extract_and_transform_proxies(input_text):
77
 
78
  return "\n".join(transformed_proxies) if transformed_proxies else "未找到有效的SS或Trojan代理配置"
79
 
80
- async def log_request(request, response):
81
  timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
82
  client_ip = request.remote
 
83
  request_line = f"{request.method} {request.path}"
84
  if request.query_string:
85
  request_line += f"?{request.query_string}"
86
  status_code = response.status
87
  content_length = response.content_length
88
 
89
- log_message = f"{timestamp} - {client_ip} - \"{request_line}\" {status_code} {content_length}"
 
 
 
90
  print(log_message, flush=True)
91
 
92
  @web.middleware
93
  async def logging_middleware(request, handler):
94
  start_time = datetime.datetime.now()
95
  try:
96
- response = await handler(request)
97
- await log_request(request, response)
98
  end_time = datetime.datetime.now()
99
  print(f"Request processing time: {end_time - start_time}", flush=True)
100
  return response
@@ -115,7 +119,7 @@ async def handle_request(request):
115
 
116
  if not force_refresh and url in cache:
117
  print(f"Cache hit for URL: {url}", flush=True)
118
- return web.Response(text=cache[url], content_type='text/plain')
119
 
120
  try:
121
  print(f"Fetching URL: {url}", flush=True)
@@ -128,11 +132,11 @@ async def handle_request(request):
128
  # 将结果存入缓存
129
  cache[url] = result
130
 
131
- return web.Response(text=result, content_type='text/plain')
132
  except Exception as e:
133
  print(f"Error processing request: {str(e)}", flush=True)
134
  traceback.print_exc()
135
- return web.Response(text=f"Error: {str(e)}", status=500)
136
  else:
137
  usage_guide = """
138
  <html>
@@ -144,9 +148,9 @@ async def handle_request(request):
144
  </body>
145
  </html>
146
  """
147
- return web.Response(text=usage_guide, content_type='text/html')
148
  else:
149
- return web.Response(text="Not Found", status=404)
150
 
151
  async def init_app():
152
  app = web.Application(middlewares=[logging_middleware])
 
77
 
78
  return "\n".join(transformed_proxies) if transformed_proxies else "未找到有效的SS或Trojan代理配置"
79
 
80
+ async def log_request(request, response, cache_status):
81
  timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
82
  client_ip = request.remote
83
+ user_agent = request.headers.get('User-Agent', 'Unknown')
84
  request_line = f"{request.method} {request.path}"
85
  if request.query_string:
86
  request_line += f"?{request.query_string}"
87
  status_code = response.status
88
  content_length = response.content_length
89
 
90
+ log_message = (
91
+ f"{timestamp} - {client_ip} - \"{request_line}\" {status_code} {content_length} - "
92
+ f"User-Agent: {user_agent} - Cache: {cache_status}"
93
+ )
94
  print(log_message, flush=True)
95
 
96
  @web.middleware
97
  async def logging_middleware(request, handler):
98
  start_time = datetime.datetime.now()
99
  try:
100
+ response, cache_status = await handler(request)
101
+ await log_request(request, response, cache_status)
102
  end_time = datetime.datetime.now()
103
  print(f"Request processing time: {end_time - start_time}", flush=True)
104
  return response
 
119
 
120
  if not force_refresh and url in cache:
121
  print(f"Cache hit for URL: {url}", flush=True)
122
+ return web.Response(text=cache[url], content_type='text/plain'), "Hit"
123
 
124
  try:
125
  print(f"Fetching URL: {url}", flush=True)
 
132
  # 将结果存入缓存
133
  cache[url] = result
134
 
135
+ return web.Response(text=result, content_type='text/plain'), "Miss"
136
  except Exception as e:
137
  print(f"Error processing request: {str(e)}", flush=True)
138
  traceback.print_exc()
139
+ return web.Response(text=f"Error: {str(e)}", status=500), "Error"
140
  else:
141
  usage_guide = """
142
  <html>
 
148
  </body>
149
  </html>
150
  """
151
+ return web.Response(text=usage_guide, content_type='text/html'), "Guide"
152
  else:
153
+ return web.Response(text="Not Found", status=404), "NotFound"
154
 
155
  async def init_app():
156
  app = web.Application(middlewares=[logging_middleware])