main.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from typing import Optional
  2. from datetime import datetime
  3. from fastapi import FastAPI
  4. from fastapi.middleware.cors import CORSMiddleware
  5. from pydantic import BaseModel
  6. from db import DB
  7. app = FastAPI(title='梅州插件日志记录', description='梅州插件日志记录')
  8. app.add_middleware(
  9. CORSMiddleware,
  10. # 允许跨域的源列表
  11. allow_origins=["*"],
  12. # 跨域请求是否支持cookie
  13. allow_credentials=False,
  14. # 允许跨域的请求方法
  15. allow_methods=["*"],
  16. # 允许跨域请求的请求头列表
  17. allow_headers=["*"],
  18. # 可以被浏览器访问的响应头
  19. expose_headers=["*"],
  20. # 设定浏览器缓存CORS响应的最长时间
  21. max_age=1000
  22. )
  23. class Recorder(BaseModel):
  24. record_Time: datetime
  25. current_Url: str
  26. full_Url: str
  27. sim_Url: Optional[str] = None
  28. user_Id: str
  29. device_Id: str
  30. request_Method: str
  31. event_Type: str
  32. form_Data: Optional[str] = None
  33. json_Data: Optional[str] = None
  34. value_Data: Optional[str] = None
  35. status_Code: Optional[str] = None
  36. target_Url: Optional[str] = None
  37. iframe_Url: Optional[str] = None
  38. button_Text: Optional[str] = None
  39. @app.post(path='/record', summary='日志记录', description='接收插件日志记录')
  40. def record(recorder: Recorder):
  41. recorder_dict = recorder.dict()
  42. # print(recorder_dict)
  43. 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']
  44. db, cursor = DB().get_cursor()
  45. db.ping(reconnect=True)
  46. try:
  47. sql = """INSERT INTO recoder(
  48. 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
  49. ) VALUES (
  50. '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'
  51. )""" % (
  52. 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
  53. )
  54. # print(sql)
  55. cursor.execute(sql)
  56. db.commit()
  57. except Exception as e:
  58. print('--->', e)
  59. db.rollback()
  60. return {"status": "failed"}
  61. cursor.close()
  62. db.close()
  63. return {"status": "success"}
  64. # if __name__ == '__main__':
  65. # # uvicorn main:app --host 0.0.0.0 --port 8000 --workers 20 --log-level warning
  66. # uvicorn.run(app, host='0.0.0.0', port=7900, workers=1)
  67. # # db, cursor = DB().get_cursor()