mirror of
https://github.com/jxxghp/MoviePilot-Plugins.git
synced 2026-05-23 07:26:47 +00:00
- 优化插件目录结构和数据结构, 解耦API层和服务层 - 添加了一些Pydantic模型, 用于校验配置 - 支持独立的订阅链接配置 - 新增覆写代理组和出站代理操作 - 支持 smart 组和代理集合 - 代理组回环检测 - 使用异步调度器 - 显示规则更改日期 - 完善了对嵌套逻辑规则和子规则的配置和验证
61 lines
1.9 KiB
Python
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')
|