Files
archived-MoviePilot-Plugins/plugins.v2/clashruleprovider/models/proxy/tlsmixin.py
wumode e15733b7de refactor(ClashRuleProvider): 重构后端核心逻辑与数据模型
- 数据模型重构: 全面引入 Pydantic 模型(ClashConfig, Proxy, ProxyGroup 等)替代原有字典结构,提供更严格的数据验证与类型安全。
- 数据迁移机制: 新增 v2.1.0 数据升级脚本,支持将旧版代理、策略组及规则数据自动迁移至新架构。
- 配置补丁系统: 实现基于 JSON Patch 的细粒度配置修补机制,替代旧版覆盖逻辑,提升配置修改的灵活性。
- 服务层优化: 重写 ClashRuleProviderService 以适配新对象模型,增强代码可维护性与扩展性。
- API模型同步: 更新相关 API 数据模型以保持与内部数据结构的一致性。
- 用户界面: 批量规则管理和数据项隐藏支持
2026-01-10 19:23:32 +08:00

42 lines
1.2 KiB
Python

from enum import StrEnum
from typing import List, Optional
from pydantic import BaseModel, Field
class ClientFingerprint(StrEnum):
chrome = 'chrome'
firefox = 'firefox'
safari = 'safari'
ios = 'ios'
android = 'android'
edge = 'edge'
n360 = '360'
qq = 'qq'
random = 'random'
class RealityOpts(BaseModel):
public_key: str = Field(..., alias='public-key')
short_id: Optional[str] = Field(None, alias='short-id')
support_x25519mlkem768: Optional[bool] = Field(None, alias='support-x25519mlkem768')
class EchOpts(BaseModel):
enable: bool = False
config: str
class TLSMixin(BaseModel):
"""TLS 配置混入类"""
# TLS settings
tls: Optional[bool] = None
sni: Optional[str] = None
servername: Optional[str] = None
fingerprint: Optional[str] = None
alpn: Optional[List[str]] = None
skip_cert_verify: Optional[bool] = Field(None, alias='skip-cert-verify')
client_fingerprint: Optional[ClientFingerprint] = Field(None, alias='client-fingerprint')
reality_opts: Optional[RealityOpts] = Field(None, alias='reality-opts')
ech_opts: Optional[EchOpts] = Field(None, alias='ech-opts')