初始提交

This commit is contained in:
焦龙言
2026-07-24 09:43:10 +08:00
commit b5b4721456
793 changed files with 116305 additions and 0 deletions
@@ -0,0 +1,99 @@
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='最近失败事件列表')