ShiErFeng/shierfeng-fastapi-backend/module_admin/entity/vo/transport_crypto_vo.py
2026-07-24 09:43:10 +08:00

100 lines
5.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
class TransportCryptoFrontendConfigModel(BaseModel):
"""
传输层加解密前端运行配置模型
"""
model_config = ConfigDict(alias_generator=to_camel)
transport_crypto_enabled: bool = Field(description='后端是否启用传输层加解密')
transport_crypto_mode: str = Field(description='当前传输层加解密模式')
transport_crypto_active: bool = Field(description='前端当前是否应启用传输层加解密')
envelope_version: str = Field(description='当前传输层加密信封协议版本')
public_key_url: str = Field(description='传输层公钥接口路径')
request_envelope_algorithm: str = Field(description='前端请求信封算法标识')
response_envelope_algorithm: str = Field(description='前端响应信封算法标识')
enabled_paths: list[str] = Field(description='启用传输层加解密的路径列表')
required_paths: list[str] = Field(description='强制要求加密传输的路径列表')
exclude_paths: list[str] = Field(description='排除传输层加解密的路径列表')
max_encrypted_get_url_length: int = Field(description='前端执行加密GET/DELETE请求时允许的最大URL长度')
config_expire_at: int = Field(description='前端配置建议刷新时间戳')
class TransportCryptoPublicKeyModel(BaseModel):
"""
传输层加解密公钥下发模型
"""
model_config = ConfigDict(alias_generator=to_camel)
kid: str = Field(description='当前启用的密钥版本标识')
envelope_version: str = Field(description='当前传输层加密信封协议版本')
alg: str = Field(description='当前传输层加密算法标识')
public_key: str = Field(description='当前可用的传输层公钥')
supported_kids: list[str] = Field(description='当前支持解密的密钥版本列表')
expire_at: int = Field(description='当前公钥建议刷新时间戳')
class TransportCryptoKidStatModel(BaseModel):
"""
传输层加解密按密钥版本统计模型
"""
model_config = ConfigDict(alias_generator=to_camel)
kid: str | None = Field(default=None, description='密钥版本标识')
encrypted_requests: int | None = Field(default=0, description='加密请求次数')
decrypt_success: int | None = Field(default=0, description='请求解密成功次数')
decrypt_failure: int | None = Field(default=0, description='请求解密失败次数')
encrypted_responses: int | None = Field(default=0, description='加密响应次数')
class TransportCryptoFailureRecordModel(BaseModel):
"""
传输层加解密最近失败记录模型
"""
model_config = ConfigDict(alias_generator=to_camel)
time: datetime | None = Field(default=None, description='失败时间')
method: str | None = Field(default=None, description='请求方法')
path: str | None = Field(default=None, description='请求路径')
reason: str | None = Field(default=None, description='失败原因分类')
kid: str | None = Field(default=None, description='密钥版本标识')
class TransportCryptoMonitorModel(BaseModel):
"""
传输层加解密监控模型
"""
model_config = ConfigDict(alias_generator=to_camel)
monitor_scope: str | None = Field(default=None, description='监控统计范围默认基于Redis聚合')
started_at: datetime | None = Field(default=None, description='当前监控统计起始时间')
app_env: str | None = Field(default=None, description='当前应用环境')
transport_crypto_enabled: bool | None = Field(default=None, description='是否启用传输层加解密')
transport_crypto_mode: str | None = Field(default=None, description='当前传输层加解密模式')
current_kid: str | None = Field(default=None, description='当前启用的密钥版本')
supported_kids: list[str] | None = Field(default=[], description='当前支持的密钥版本列表')
enabled_paths: list[str] | None = Field(default=[], description='启用传输层加解密的路径列表')
required_paths: list[str] | None = Field(default=[], description='强制要求加密传输的路径列表')
exclude_paths: list[str] | None = Field(default=[], description='排除传输层加解密的路径列表')
requests_total: int | None = Field(default=0, description='命中传输层加解密规则的请求总数')
plain_requests_total: int | None = Field(default=0, description='明文请求总数')
encrypted_requests_total: int | None = Field(default=0, description='加密请求总数')
required_rejected_total: int | None = Field(default=0, description='强制加密接口被拒绝的次数')
decrypt_success_total: int | None = Field(default=0, description='请求解密成功次数')
decrypt_failure_total: int | None = Field(default=0, description='请求解密失败次数')
plain_responses_total: int | None = Field(default=0, description='明文响应次数')
encrypted_responses_total: int | None = Field(default=0, description='加密响应次数')
encrypted_error_responses_total: int | None = Field(default=0, description='加密错误响应次数')
failure_reasons: dict[str, int] | None = Field(default={}, description='按失败原因归类的次数统计')
kid_stats: list[TransportCryptoKidStatModel] | None = Field(default=[], description='按密钥版本归类的统计信息')
recent_failures: list[TransportCryptoFailureRecordModel] | None = Field(default=[], description='最近失败事件列表')