模块化

This commit is contained in:
riglen
2026-04-20 11:47:10 +08:00
parent 0a46ebf0a8
commit ee9cc6f429
8 changed files with 685 additions and 511 deletions

View File

@@ -82,6 +82,26 @@ class ProviderDocument(BaseModel):
proxies: list[dict[str, Any]]
class ProxyNode(BaseModel):
name: str
type: str
server: str | None = None
port: int | None = None
udp: bool = True
tags: list[str] = Field(default_factory=list)
attrs: dict[str, Any] = Field(default_factory=dict)
def to_proxy_dict(self) -> dict[str, Any]:
data = {"name": self.name, "type": self.type}
if self.server is not None:
data["server"] = self.server
if self.port is not None:
data["port"] = self.port
data["udp"] = self.udp
data.update(self.attrs)
return data
class SubscriptionUserInfo(BaseModel):
upload: int | None = None
download: int | None = None
@@ -110,3 +130,13 @@ class SourceSnapshot(BaseModel):
document: ProviderDocument
headers: dict[str, str] = Field(default_factory=dict)
quota: SubscriptionUserInfo | None = None
class ResolvedProfile(BaseModel):
client_type: str
client: ClientConfig
selected_sources: dict[str, SourceConfig] = Field(default_factory=dict)
rules: dict[str, RuleConfig] = Field(default_factory=dict)
regions: dict[str, RegionConfig] = Field(default_factory=dict)
selector_groups: list[ProxyGroupConfig] = Field(default_factory=list)
policy_groups: list[ProxyGroupConfig] = Field(default_factory=list)