完善
This commit is contained in:
+21
-12
@@ -346,6 +346,7 @@ async def list_logs(status: str | None = None, db: AsyncSession = Depends(get_db
|
||||
"id": log.id,
|
||||
"domain": log.domain.domain if log.domain else None,
|
||||
"server": log.domain.server.name if log.domain and log.domain.server else None,
|
||||
"hostname": log.hostname,
|
||||
"status": log.status,
|
||||
"message": log.message,
|
||||
"created_at": log.created_at.isoformat(),
|
||||
@@ -488,19 +489,22 @@ async def issue_cert(domain_id: int, db: AsyncSession = Depends(get_db), _: bool
|
||||
await db.flush()
|
||||
|
||||
try:
|
||||
success, msg = service.issue_certificate(domain.domain)
|
||||
success, msg, cert_info, raw_output = service.issue_certificate(domain.domain)
|
||||
log.status = "success" if success else "failed"
|
||||
log.message = msg
|
||||
log.detail = raw_output[-5000:] if raw_output else None # 截断防止过大
|
||||
|
||||
if success:
|
||||
info = service.get_cert_info(domain.domain)
|
||||
if info:
|
||||
domain.cert_not_after = datetime.fromisoformat(info["not_after"])
|
||||
if cert_info.get("not_after"):
|
||||
domain.cert_not_after = datetime.fromisoformat(cert_info["not_after"])
|
||||
domain.version = str(int(domain.version or "0") + 1)
|
||||
logger.info(f"证书信息已更新: {domain.domain}, 过期时间: {info['not_after']}")
|
||||
log.cert_not_after = domain.cert_not_after
|
||||
log.cert_serial = cert_info.get("serial_number", "")
|
||||
log.cert_san = ", ".join(cert_info.get("san", []))
|
||||
logger.info(f"证书信息已更新: {domain.domain}, 过期时间: {cert_info['not_after']}")
|
||||
else:
|
||||
logger.warning(f"无法获取证书信息: {domain.domain}")
|
||||
domain.version = str(int(domain.version or "0") + 1)
|
||||
logger.warning(f"无法获取证书信息: {domain.domain}")
|
||||
|
||||
await db.flush()
|
||||
return {"success": success, "message": msg}
|
||||
@@ -550,15 +554,17 @@ async def auto_renew_all(db: AsyncSession = Depends(get_db), _: bool = Depends(r
|
||||
db.add(log)
|
||||
await db.flush()
|
||||
|
||||
success, msg = service.renew_certificate(d.domain)
|
||||
success, msg, cert_info, raw_output = service.renew_certificate(d.domain)
|
||||
log.status = "success" if success else "failed"
|
||||
log.message = msg
|
||||
log.detail = raw_output[-5000:] if raw_output else None
|
||||
|
||||
if success:
|
||||
info = service.get_cert_info(d.domain)
|
||||
if info:
|
||||
d.cert_not_after = datetime.fromisoformat(info["not_after"])
|
||||
d.version = str(int(d.version or "0") + 1)
|
||||
if success and cert_info.get("not_after"):
|
||||
d.cert_not_after = datetime.fromisoformat(cert_info["not_after"])
|
||||
d.version = str(int(d.version or "0") + 1)
|
||||
log.cert_not_after = d.cert_not_after
|
||||
log.cert_serial = cert_info.get("serial_number", "")
|
||||
log.cert_san = ", ".join(cert_info.get("san", []))
|
||||
|
||||
results.append({"domain": d.domain, "success": success, "message": msg, "days_left": days_left})
|
||||
else:
|
||||
@@ -589,6 +595,9 @@ async def list_acme_logs(status: str | None = None, db: AsyncSession = Depends(g
|
||||
"status": log.status,
|
||||
"message": log.message,
|
||||
"detail": log.detail,
|
||||
"cert_not_after": log.cert_not_after.isoformat() if log.cert_not_after else None,
|
||||
"cert_serial": log.cert_serial,
|
||||
"cert_san": log.cert_san,
|
||||
"created_at": log.created_at.isoformat(),
|
||||
}
|
||||
for log in logs
|
||||
|
||||
@@ -133,6 +133,7 @@ async def report_deploy(
|
||||
domain: str,
|
||||
status: str,
|
||||
message: str = "",
|
||||
hostname: str = "",
|
||||
server: Server = Depends(verify_token),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
@@ -144,6 +145,6 @@ async def report_deploy(
|
||||
if not d:
|
||||
raise HTTPException(status_code=404, detail="Domain not found for this server")
|
||||
|
||||
log = DeployLog(domain_id=d.id, server_id=server.id, status=status, message=message)
|
||||
log = DeployLog(domain_id=d.id, server_id=server.id, hostname=hostname, status=status, message=message)
|
||||
db.add(log)
|
||||
return {"ok": True}
|
||||
|
||||
Reference in New Issue
Block a user