#!/usr/bin/env bash
# check_certs.sh
# 用法：
#   sudo bash check_certs.sh example.com foo.com bar.cn
# 行为：
#   仅打印没有证书的域名；如果都存在证书，不输出并以 0 退出。
# 说明：
#   判定标准：/etc/letsencrypt/live 下存在 *<domain>* 的目录，
#   且该目录中有 cert.pem 或 fullchain.pem 文件（非空）。

set -euo pipefail
LC_ALL=C

BASE="/etc/letsencrypt/live"

if [[ $# -lt 1 ]]; then
  echo "用法: $0 DOMAIN [DOMAIN ...]" >&2
  exit 2
fi

if [[ ! -d "$BASE" ]]; then
  echo "错误: 未找到目录 $BASE，请确认本机是否使用 certbot/letsencrypt 生成证书。" >&2
  exit 3
fi

missing=()

for domain in "$@"; do
  # 在 /etc/letsencrypt/live 下找名字里“包含”该域名的目录（匹配你给的规则）
  dir="$(find "$BASE" -mindepth 1 -maxdepth 1 -type d -name "*${domain}*" -print -quit 2>/dev/null || true)"

  if [[ -z "${dir:-}" ]]; then
    missing+=("$domain")
    continue
  fi

  # 检查证书文件是否存在且非空
  if [[ -s "$dir/fullchain.pem" || -s "$dir/cert.pem" ]]; then
    # 有证书 -> 不输出
    :
  else
    # 找到了目录但没有证书文件
    missing+=("$domain")
  fi
done

if (( ${#missing[@]} )); then
  printf '%s\n' "${missing[@]}"
  exit 1
else
  # 全都有证书：按你的需求，不输出任何内容
  exit 0
fi
