79 lines
3.2 KiB
Python
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)
|