40 lines
902 B
Bash
Executable File
40 lines
902 B
Bash
Executable File
#!/bin/bash
|
|
# Certbot 部署钩子脚本
|
|
# 当证书申请或续期成功后,自动同步到 APISIX
|
|
|
|
set -e
|
|
|
|
# 配置
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SSL_MANAGER="${SCRIPT_DIR}/ssl_manager.py"
|
|
LOG_FILE="/var/log/apisix-certbot-deploy.log"
|
|
|
|
# 日志函数
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
# 获取域名(从 certbot 环境变量)
|
|
DOMAIN="${RENEWED_DOMAINS%% *}"
|
|
|
|
if [ -z "$DOMAIN" ]; then
|
|
# 尝试从证书路径获取
|
|
if [ -n "$RENEWED_LINEAGE" ]; then
|
|
DOMAIN=$(basename "$RENEWED_LINEAGE")
|
|
else
|
|
log "错误: 无法获取域名"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
log "开始部署证书到 APISIX: $DOMAIN"
|
|
|
|
# 调用 SSL 管理器同步证书
|
|
if python3 "$SSL_MANAGER" sync --domain "$DOMAIN"; then
|
|
log "证书部署成功: $DOMAIN"
|
|
exit 0
|
|
else
|
|
log "证书部署失败: $DOMAIN"
|
|
exit 1
|
|
fi
|