Files
archived-MoviePilot-Plugins/plugins.v2/clashruleprovider/models/proxy/proxybase.py
wumode 8a738b7684 refactor: ClashRuleProvider
- 优化插件目录结构和数据结构, 解耦API层和服务层
- 添加了一些Pydantic模型, 用于校验配置
- 支持独立的订阅链接配置
- 新增覆写代理组和出站代理操作
- 支持 smart 组和代理集合
- 代理组回环检测
- 使用异步调度器
- 显示规则更改日期
- 完善了对嵌套逻辑规则和子规则的配置和验证
2025-09-30 00:54:24 +08:00

39 lines
1.5 KiB
Python

from typing import Optional, Literal
from pydantic import BaseModel, Field
class SmuxBrutalOpts(BaseModel):
enabled: bool = False
up: Optional[str] = None
down: Optional[str] = None
class Smux(BaseModel):
enabled: bool = False
protocol: Literal['smux', 'yamux', 'h2mux'] = 'h2mux'
max_connections: Optional[int] = Field(None, alias='max-connections')
min_streams: Optional[int] = Field(None, alias='min-streams')
max_streams: Optional[int] = Field(None, alias='max-streams')
statistic: Optional[bool] = None
only_tcp: Optional[bool] = Field(None, alias='only-tcp')
padding: Optional[bool] = None
brutal_opts: Optional[SmuxBrutalOpts] = Field(None, alias='brutal-opts')
class ProxyBase(BaseModel):
name: str
type: Literal['direct', 'dns', 'http', 'ss', 'ssr', 'mieru', 'snell', 'vmess', 'vless', 'trojan', 'anytls',
'hysteria','hysteria2', 'tuic', 'wireguard', 'ssh', 'socks5']
server: str
port: int
ip_version: Optional[Literal['dual', 'ipv4', 'ipv6', 'ipv4-prefer', 'ipv6-prefer']] = Field(None,
alias='ip-version')
udp: bool = False
interface_name: Optional[str] = Field(None, alias='interface-name')
routing_mark: Optional[int] = Field(None, alias='routing-mark')
tfo: Optional[bool] = None
mptcp: Optional[bool] = None
dialer_proxy: Optional[str] = Field(None, alias='dialer-proxy')
smux: Optional[Smux] = None