完善ui/完善执行步骤
This commit is contained in:
+2
-1
@@ -19,7 +19,7 @@ from backend.routers.admin import (
|
||||
list_logs,
|
||||
list_acme_configs, get_acme_config, create_acme_config, update_acme_config, delete_acme_config,
|
||||
issue_cert, renew_cert, auto_renew_all, list_acme_logs, get_cert_info,
|
||||
download_cert_file, admin_generate_script,
|
||||
download_cert_file, admin_generate_script, admin_download_script,
|
||||
)
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
@@ -94,6 +94,7 @@ app.get("/admin/api/acme/logs")(list_acme_logs)
|
||||
app.get("/admin/api/cert-info/{domain_id}")(get_cert_info)
|
||||
app.get("/admin/api/cert-download/{domain_id}/{file_type}")(download_cert_file)
|
||||
app.get("/admin/api/script")(admin_generate_script)
|
||||
app.get("/admin/api/script/download")(admin_download_script)
|
||||
|
||||
logger.info("=== 路由注册完成 ===")
|
||||
for route in app.routes:
|
||||
|
||||
+40
-10
@@ -582,15 +582,8 @@ async def list_acme_logs(status: str | None = None, db: AsyncSession = Depends(g
|
||||
|
||||
# ──────────────── 部署脚本 ────────────────
|
||||
|
||||
@router.get("/script")
|
||||
async def admin_generate_script(
|
||||
domain: str,
|
||||
server_name: str,
|
||||
os: str = "linux",
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_: bool = Depends(require_auth),
|
||||
):
|
||||
"""管理端生成部署脚本"""
|
||||
async def _render_script(domain: str, server_name: str, os: str, db: AsyncSession) -> tuple[str, Server, Domain]:
|
||||
"""渲染部署脚本,返回 (script, server, domain_obj)"""
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
|
||||
template_dir = Path(__file__).parent.parent / "templates_cert"
|
||||
@@ -619,7 +612,44 @@ async def admin_generate_script(
|
||||
check_cmd=d.check_cmd,
|
||||
reload_cmd=d.reload_cmd,
|
||||
)
|
||||
return {"script": script}
|
||||
return script, server, d
|
||||
|
||||
|
||||
@router.get("/script")
|
||||
async def admin_generate_script(
|
||||
domain: str,
|
||||
server_name: str,
|
||||
os: str = "linux",
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_: bool = Depends(require_auth),
|
||||
):
|
||||
"""管理端生成部署脚本(JSON)"""
|
||||
script, server, d = await _render_script(domain, server_name, os, db)
|
||||
return {
|
||||
"script": script,
|
||||
"token": server.token,
|
||||
"cert_dir": d.cert_dir,
|
||||
"check_cmd": d.check_cmd,
|
||||
"reload_cmd": d.reload_cmd,
|
||||
}
|
||||
|
||||
|
||||
@router.get("/script/download")
|
||||
async def admin_download_script(
|
||||
domain: str,
|
||||
server_name: str,
|
||||
os: str = "linux",
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_: bool = Depends(require_auth),
|
||||
):
|
||||
"""下载脚本文件(纯文本,供 curl 使用)"""
|
||||
script, _, _ = await _render_script(domain, server_name, os, db)
|
||||
ext = "ps1" if os == "windows" else "sh"
|
||||
filename = f"deploy-{domain.replace('*', '_')}.{ext}"
|
||||
return PlainTextResponse(
|
||||
script,
|
||||
headers={"Content-Disposition": f'attachment; filename="{filename}"'},
|
||||
)
|
||||
|
||||
|
||||
# ──────────────── 证书信息 ────────────────
|
||||
|
||||
Reference in New Issue
Block a user