#!/bin/bash

# 群晖登陆http端口
port="xxx"
# 要更新的域名列表
domains=("域名1" "域名2")

# DNS提供商 dns_dp,dns_ali
DNS_server="dns_dp"

# DNSpod 信息
DP_Id="xxxxxx"
DP_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# Ali DNS信息
Ali_Key="xxx"
Ali_Secret="xxx"

# 企业微信群机器人webhook
Webhook="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxx"

#####################
# 以下为程序代码，不懂勿动 #
#####################

if [ "$DNS_server" == "dns_dp" ]; then
    export DP_Id="${DP_Id}"
    export DP_Key="${DP_Key}"
elif [ "$DNS_server" == "dns_ali" ]; then
    export Ali_Key="${Ali_Key}"
    export Ali_Secret="${Ali_Secret}"
fi

# 生成随机邮箱
generate_random_email() {
    local random_str=$(head /dev/urandom | tr -dc a-z0-9 | head -c 8)
    echo "${random_str}@163.com"
}
email=$(generate_random_email)

# 注册CA
if [ ! -d "./ca" ]; then
    ./acme.sh --register-account -m "${email}" --server zerossl --home .
fi

# 循环处理每个域名
for domain in "${domains[@]}"; do
    echo "正在处理域名: ${domain}"
	echo "证书申请中..."
	
    # 删除旧的证书文件
    if [ -d "${domain}" ]; then
        echo "检测到旧目录 ${domain}，正在删除..."
        rm -rf "${domain}"
        echo "旧目录已删除"
    fi

    # 创建独立的目录
    mkdir -p "${domain}"
	cp -rf ca "${domain}"
	
	echo "证书申请中..."
    # 申请证书，指定独立的 home 目录
    ./acme.sh --issue --dns ${DNS_server} -d "${domain}" --home "${domain}"
	echo "证书申请成功！"
	
	# 写入登陆信息
	cat <<EOF > "./${domain}/account.conf"
SYNO_USE_TEMP_ADMIN=1
SYNO_CREATE=1
SYNO_PORT=${port}
SYNO_CERTIFICATE="${domain}"
EOF
	echo "登陆信息已保存！"
	
	# 重命名证书目录名
    mv "${domain}/${domain}_ecc" "${domain}/${domain}"
	
    echo "已为 ${domain} 整理好所需文件！"
	echo "正在为 ${domain} 更新证书到系统..."
    # 更新证书，指定独立的 home 目录
    ./acme.sh --deploy --home "${domain}" --deploy-hook synology_dsm -d "${domain}"
    echo "域名 ${domain} 的证书已更新完成"
	
	# 微信通知
	curl -s "${Webhook}" -H "Content-Type: application/json" -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"${domain}证书已更新。\"}}" > /dev/null 2>&1
   
done
