ShiErFeng/shierfeng-fastapi-backend/module_admin/controller/transport_crypto_controller.py
2026-07-24 09:43:10 +08:00

79 lines
3.2 KiB
Python

from fastapi import Request, Response
from common.annotation.rate_limit_annotation import ApiRateLimit, ApiRateLimitPreset
from common.aspect.interface_auth import UserInterfaceAuthDependency
from common.aspect.pre_auth import PreAuthDependency
from common.constant import ApiNamespace
from common.router import APIRouterPro
from common.vo import DataResponseModel
from module_admin.entity.vo.transport_crypto_vo import (
TransportCryptoFrontendConfigModel,
TransportCryptoMonitorModel,
TransportCryptoPublicKeyModel,
)
from module_admin.service.transport_crypto_service import TransportCryptoService
from utils.log_util import logger
from utils.response_util import ResponseUtil
transport_crypto_controller = APIRouterPro(prefix='/transport/crypto', order_num=15, tags=['传输加密模块'])
@transport_crypto_controller.get(
'/frontend-config',
summary='获取前端传输加密配置接口',
description='公开接口,用于向前端下发当前传输层加解密启用状态与运行模式,供前端统一跟随后端策略',
response_model=DataResponseModel[TransportCryptoFrontendConfigModel],
)
@ApiRateLimit(namespace=ApiNamespace.TRANSPORT_CRYPTO_FRONTEND_CONFIG, preset=ApiRateLimitPreset.ANON_PUBLIC_METADATA)
async def get_transport_frontend_config(request: Request) -> Response:
"""
获取当前前端传输层加解密运行配置
:param request: 当前请求对象
:return: 前端传输层加解密运行配置响应
"""
transport_frontend_config = await TransportCryptoService.get_transport_frontend_config_services()
logger.info('获取成功')
return ResponseUtil.success(data=transport_frontend_config)
@transport_crypto_controller.get(
'/public-key',
summary='获取传输加密公钥接口',
description='公开接口,用于向前端下发当前可用的传输层加密公钥,已配置匿名限流保护',
response_model=DataResponseModel[TransportCryptoPublicKeyModel],
)
@ApiRateLimit(namespace=ApiNamespace.TRANSPORT_CRYPTO_PUBLIC_KEY, preset=ApiRateLimitPreset.ANON_PUBLIC_METADATA)
async def get_transport_public_key(request: Request) -> Response:
"""
获取当前传输层加密公钥
:param request: 当前请求对象
:return: 公钥下发响应
"""
transport_public_key = await TransportCryptoService.get_transport_public_key_services()
logger.info('获取成功')
return ResponseUtil.success(data=transport_public_key)
@transport_crypto_controller.get(
'/monitor',
summary='获取传输层加解密监控信息接口',
description='用于获取基于Redis聚合的传输层加解密运行状态与统计信息',
response_model=DataResponseModel[TransportCryptoMonitorModel],
dependencies=[PreAuthDependency(), UserInterfaceAuthDependency('monitor:transportCrypto:list')],
)
async def get_transport_crypto_monitor_info(request: Request) -> Response:
"""
获取基于Redis聚合的传输层加解密监控信息
:param request: 当前请求对象
:return: 传输层加解密监控信息响应
"""
transport_crypto_monitor_info = await TransportCryptoService.get_transport_crypto_monitor_info_services(request)
logger.info('获取成功')
return ResponseUtil.success(data=transport_crypto_monitor_info)