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

61 lines
1.9 KiB
Python

from typing import List, Optional, Literal
from pydantic import BaseModel, Field
from .proxybase import ProxyBase
class WireGuardPeerOption(BaseModel):
server: str
port: int
public_key: str = Field(..., alias='public-key')
pre_shared_key: Optional[str] = Field(None, alias='pre-shared-key')
reserved: Optional[List[int]] = None
allowed_ips: Optional[List[str]] = Field(None, alias='allowed-ips')
class AmneziaWGOption(BaseModel):
jc: Optional[int] = None
jmin: Optional[int] = None
jmax: Optional[int] = None
s1: Optional[int] = None
s2: Optional[int] = None
h1: Optional[int] = None
h2: Optional[int] = None
h3: Optional[int] = None
h4: Optional[int] = None
# AmneziaWG v1.5
i1: Optional[str] = None
i2: Optional[str] = None
i3: Optional[str] = None
i4: Optional[str] = None
i5: Optional[str] = None
j1: Optional[str] = None
j2: Optional[str] = None
j3: Optional[str] = None
itime: Optional[int] = None
class WireGuardProxy(ProxyBase):
type: Literal['wireguard'] = 'wireguard'
ip: Optional[str] = None
ipv6: Optional[str] = None
private_key: str = Field(..., alias='private-key')
public_key: str = Field(..., alias='public-key')
pre_shared_key: Optional[str] = Field(None, alias='pre-shared-key')
reserved: Optional[List[int]] = None
workers: Optional[int] = None
mtu: Optional[int] = None
persistent_keepalive: Optional[int] = Field(None, alias='persistent-keepalive')
# 多 peer 配置
peers: Optional[List[WireGuardPeerOption]] = None
# DNS 配置
remote_dns_resolve: Optional[bool] = Field(None, alias='remote-dns-resolve')
dns: Optional[List[str]] = None
refresh_server_ip_interval: Optional[int] = Field(None, alias='refresh-server-ip-interval')
# AmneziaWG 扩展
amnezia_wg_option: Optional[AmneziaWGOption] = Field(None, alias='amnezia-wg-option')