|
@@ -0,0 +1,76 @@
|
|
|
+from typing import Optional
|
|
|
+from datetime import datetime
|
|
|
+from fastapi import FastAPI
|
|
|
+from fastapi.middleware.cors import CORSMiddleware
|
|
|
+from pydantic import BaseModel
|
|
|
+from db import DB
|
|
|
+
|
|
|
+
|
|
|
+app = FastAPI(title='梅州插件日志记录', description='梅州插件日志记录')
|
|
|
+
|
|
|
+app.add_middleware(
|
|
|
+ CORSMiddleware,
|
|
|
+ # 允许跨域的源列表
|
|
|
+ allow_origins=["*"],
|
|
|
+ # 跨域请求是否支持cookie
|
|
|
+ allow_credentials=False,
|
|
|
+ # 允许跨域的请求方法
|
|
|
+ allow_methods=["*"],
|
|
|
+ # 允许跨域请求的请求头列表
|
|
|
+ allow_headers=["*"],
|
|
|
+ # 可以被浏览器访问的响应头
|
|
|
+ expose_headers=["*"],
|
|
|
+ # 设定浏览器缓存CORS响应的最长时间
|
|
|
+ max_age=1000
|
|
|
+)
|
|
|
+
|
|
|
+class Recorder(BaseModel):
|
|
|
+ record_Time: datetime
|
|
|
+ current_Url: str
|
|
|
+ full_Url: str
|
|
|
+ sim_Url: Optional[str] = None
|
|
|
+ user_Id: str
|
|
|
+ device_Id: str
|
|
|
+ request_Method: str
|
|
|
+ event_Type: str
|
|
|
+ form_Data: Optional[str] = None
|
|
|
+ json_Data: Optional[str] = None
|
|
|
+ value_Data: Optional[str] = None
|
|
|
+ status_Code: Optional[str] = None
|
|
|
+ target_Url: Optional[str] = None
|
|
|
+ iframe_Url: Optional[str] = None
|
|
|
+ button_Text: Optional[str] = None
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@app.post(path='/record', summary='日志记录', description='接收插件日志记录')
|
|
|
+def record(recorder: Recorder):
|
|
|
+ recorder_dict = recorder.dict()
|
|
|
+ # print(recorder_dict)
|
|
|
+ record_time, current_url, full_url, sim_url, user_id, device_id, request_nethod,event_type, form_data, json_data, value_data, status_code, target_url, iframe_url, button_text = recorder_dict['record_Time'], recorder_dict['current_Url'], recorder_dict['full_Url'], recorder_dict['sim_Url'], recorder_dict['user_Id'], recorder_dict['device_Id'], recorder_dict['request_Method'], recorder_dict['event_Type'], recorder_dict['form_Data'], recorder_dict['json_Data'], recorder_dict['value_Data'], recorder_dict['status_Code'], recorder_dict['target_Url'], recorder_dict['iframe_Url'], recorder_dict['button_Text']
|
|
|
+ db, cursor = DB().get_cursor()
|
|
|
+ db.ping(reconnect=True)
|
|
|
+ try:
|
|
|
+ sql = """INSERT INTO recoder(
|
|
|
+ record_time, current_url, full_url, sim_url, user_id, device_id, request_method,event_type, form_data, json_data, value_data, status_code, target_url, iframe_url, button_text
|
|
|
+ ) VALUES (
|
|
|
+ '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'
|
|
|
+ )""" % (
|
|
|
+ record_time, current_url, full_url, sim_url, user_id, device_id, request_nethod,event_type, form_data, json_data, value_data, status_code, target_url, iframe_url, button_text
|
|
|
+ )
|
|
|
+ # print(sql)
|
|
|
+ cursor.execute(sql)
|
|
|
+ db.commit()
|
|
|
+ except Exception as e:
|
|
|
+ print('--->', e)
|
|
|
+ db.rollback()
|
|
|
+ return {"status": "failed"}
|
|
|
+ cursor.close()
|
|
|
+ db.close()
|
|
|
+ return {"status": "success"}
|
|
|
+
|
|
|
+# if __name__ == '__main__':
|
|
|
+# # uvicorn main:app --host 0.0.0.0 --port 8000 --workers 20 --log-level warning
|
|
|
+# uvicorn.run(app, host='0.0.0.0', port=7900, workers=1)
|
|
|
+# # db, cursor = DB().get_cursor()
|