mirror of
https://github.com/jxxghp/MoviePilot-Plugins.git
synced 2026-06-02 23:16:46 +00:00
- 数据模型重构: 全面引入 Pydantic 模型(ClashConfig, Proxy, ProxyGroup 等)替代原有字典结构,提供更严格的数据验证与类型安全。 - 数据迁移机制: 新增 v2.1.0 数据升级脚本,支持将旧版代理、策略组及规则数据自动迁移至新架构。 - 配置补丁系统: 实现基于 JSON Patch 的细粒度配置修补机制,替代旧版覆盖逻辑,提升配置修改的灵活性。 - 服务层优化: 重写 ClashRuleProviderService 以适配新对象模型,增强代码可维护性与扩展性。 - API模型同步: 更新相关 API 数据模型以保持与内部数据结构的一致性。 - 用户界面: 批量规则管理和数据项隐藏支持
42 lines
1.2 KiB
Python
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')
|