Files
Nexus/server/api/btpanel_schemas.py
T
r 82426b1941 feat(btpanel): 独立宝塔模块与 SSH 自动获取 API
新增侧栏「宝塔面板」菜单、代理 API 与连接配置页;通过 SSH 读写子机
api.json 自动写入凭据,5 分钟后台重试,含审计修复、检测缓存与并发锁。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-21 09:13:14 +08:00

91 lines
2.0 KiB
Python

"""Pydantic models for Baota panel API."""
from typing import Optional
from pydantic import BaseModel, Field
class BtPanelConfigUpdate(BaseModel):
base_url: Optional[str] = Field(None, max_length=500)
api_key: Optional[str] = Field(None, max_length=256)
verify_ssl: Optional[bool] = None
auto_bootstrap: Optional[bool] = None
class BtPanelGlobalSettingsUpdate(BaseModel):
bt_panel_source_ip: Optional[str] = Field(None, max_length=64)
bt_panel_auto_bootstrap_enabled: Optional[bool] = None
class BtPanelBatchBootstrap(BaseModel):
server_ids: list[int] = Field(..., min_length=1, max_length=500)
class BtPanelSiteAction(BaseModel):
site_id: int
name: str = Field(..., min_length=1, max_length=255)
class BtPanelCreateSite(BaseModel):
webname: str = Field(..., min_length=1)
path: str = Field(..., min_length=1)
type_id: int = 0
type: str = "PHP"
version: str = "74"
port: str = "80"
ps: str = ""
ftp: bool = False
sql: bool = False
class BtPanelDomainAdd(BaseModel):
id: int
webname: str
domain: str
port: str = "80"
class BtPanelDomainDelete(BaseModel):
id: int
webname: str
domain: str
port: str = "80"
class BtPanelSetSsl(BaseModel):
siteName: str
key: str
csr: str
class BtPanelApplyCert(BaseModel):
domains: str
auth_type: str = "http"
id: int
class BtPanelCreateDatabase(BaseModel):
name: str = Field(..., min_length=1, max_length=64)
codeing: str = "utf8mb4"
db_user: str = ""
password: str = ""
ps: str = ""
dtype: str = "MySQL"
dataAccess: str = "127.0.0.1"
address: str = "127.0.0.1"
class BtPanelDbPassword(BaseModel):
id: int
name: str
password: str = Field(..., min_length=6)
class BtPanelDbBackup(BaseModel):
id: int
class BtPanelServiceAction(BaseModel):
name: str = Field(..., min_length=1, max_length=64)
type: str = Field(..., pattern=r"^(start|stop|restart|reload)$")