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

27 lines
994 B
Python

from typing import Optional, Literal
from pydantic import Field, validator
from .proxybase import ProxyBase
class MieruProxy(ProxyBase):
type: Literal['mieru'] = 'mieru'
username: str
password: str
port_range: Optional[str] = Field(None, alias='port-range')
transport: Literal['TCP'] = 'TCP'
multiplexing: Optional[Literal[
'MULTIPLEXING_OFF', 'MULTIPLEXING_LOW', 'MULTIPLEXING_MIDDLE', 'MULTIPLEXING_HIGH']] = 'MULTIPLEXING_LOW'
handshake_mode: Optional[Literal['HANDSHAKE_STANDARD', 'HANDSHAKE_NO_WAIT']] = 'HANDSHAKE_STANDARD'
@validator('port', 'port_range', allow_reuse=True)
def validate_port_config(cls, v, values):
port = values.get('port')
port_range = values.get('port_range')
if not port and not port_range:
raise ValueError("either port or port-range must be set")
if port and port_range:
raise ValueError("port and port-range cannot be set at the same time")
return v