121 lines
4.1 KiB
Python
121 lines
4.1 KiB
Python
|
# -*- coding:utf-8 -*-
|
|||
|
# @name: configuration
|
|||
|
# @auth: rainy-autumn@outlook.com
|
|||
|
# @version:
|
|||
|
from bson import ObjectId
|
|||
|
from fastapi import APIRouter, Depends
|
|||
|
from api.users import verify_token
|
|||
|
from core.db import get_mongo_db
|
|||
|
from core.redis_handler import refresh_config
|
|||
|
from core.config import set_timezone
|
|||
|
from loguru import logger
|
|||
|
router = APIRouter()
|
|||
|
|
|||
|
@router.get("/subfinder/data")
|
|||
|
async def get_subfinder_data(db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
|||
|
try:
|
|||
|
# Find document with name equal to "DomainDic"
|
|||
|
result = await db.config.find_one({"name": "SubfinderApiConfig"})
|
|||
|
return {
|
|||
|
"code": 200,
|
|||
|
"data": {
|
|||
|
"content": result.get("value", '')
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
logger.error(str(e))
|
|||
|
# Handle exceptions as needed
|
|||
|
return {"message": "error","code":500}
|
|||
|
|
|||
|
@router.post("/subfinder/save")
|
|||
|
async def save_subfinder_data(data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
|||
|
try:
|
|||
|
# Update the document with name equal to "DomainDic"
|
|||
|
result = await db.config.update_one({"name": "SubfinderApiConfig"}, {"$set": {"value": data.get('content','')}}, upsert=True)
|
|||
|
if result:
|
|||
|
await refresh_config('all', 'subfinder')
|
|||
|
return {"code": 200, "message": "Successfully updated SubfinderApiConfig value"}
|
|||
|
else:
|
|||
|
return {"code": 404, "message": "SubfinderApiConfig not found"}
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
logger.error(str(e))
|
|||
|
# Handle exceptions as needed
|
|||
|
return {"message": "error", "code": 500}
|
|||
|
|
|||
|
@router.get("/rad/data")
|
|||
|
async def get_rad_data(db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
|||
|
try:
|
|||
|
# Find document with name equal to "DomainDic"
|
|||
|
result = await db.config.find_one({"name": "RadConfig"})
|
|||
|
return {
|
|||
|
"code": 200,
|
|||
|
"data": {
|
|||
|
"content": result.get("value", '')
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
logger.error(str(e))
|
|||
|
# Handle exceptions as needed
|
|||
|
return {"message": "error","code":500}
|
|||
|
|
|||
|
@router.post("/rad/save")
|
|||
|
async def save_rad_data(data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
|||
|
try:
|
|||
|
# Update the document with name equal to "DomainDic"
|
|||
|
result = await db.config.update_one({"name": "RadConfig"}, {"$set": {"value": data.get('content','')}}, upsert=True)
|
|||
|
if result:
|
|||
|
await refresh_config('all', 'rad')
|
|||
|
return {"code": 200, "message": "Successfully updated RadConfig value"}
|
|||
|
else:
|
|||
|
return {"code": 404, "message": "SubfinderApiConfig not found"}
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
logger.error(str(e))
|
|||
|
# Handle exceptions as needed
|
|||
|
return {"message": "error", "code": 500}
|
|||
|
|
|||
|
|
|||
|
@router.get("/system/data")
|
|||
|
async def get_system_data(db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
|||
|
try:
|
|||
|
# 查询所有 type 为 "system" 的文档
|
|||
|
cursor = db.config.find({"type": "system"})
|
|||
|
system_data = {}
|
|||
|
|
|||
|
async for document in cursor:
|
|||
|
# 提取 name 和 value 字段,并添加到 system_data 中
|
|||
|
system_data[document["name"]] = document["value"]
|
|||
|
|
|||
|
return {
|
|||
|
"code": 200,
|
|||
|
"data": system_data
|
|||
|
}
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
logger.error(str(e))
|
|||
|
# 根据需要处理异常
|
|||
|
return {"message": "error", "code": 500}
|
|||
|
|
|||
|
@router.post("/system/save")
|
|||
|
async def save_system_data(data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
|||
|
try:
|
|||
|
for key, value in data.items():
|
|||
|
if key == 'timezone':
|
|||
|
set_timezone(value)
|
|||
|
# 使用键来查找并更新相应的文档
|
|||
|
await db.config.update_one(
|
|||
|
{"type": "system", "name": key},
|
|||
|
{"$set": {"value": value}},
|
|||
|
upsert=True
|
|||
|
)
|
|||
|
await refresh_config('all', 'system')
|
|||
|
return {"message": "Data saved successfully", "code": 200}
|
|||
|
|
|||
|
except Exception as e:
|
|||
|
return {"message": "error", "code": 500}
|
|||
|
|
|||
|
|