#!/bin/bash

# 设置 SSH 登录提示与连接前 Banner
# 兼容 CentOS / RHEL / Debian / Ubuntu 等主流发行版
# 作者：程星
# 功能：
#   - 设置登录后提示（/etc/motd）
#   - 设置 SSH 连接前 Banner（法律警告）
#   - 自动适配不同发行版

set -e

WELCOME_MSG="欢迎使用程星云服务器，严禁搭建VPN，代理等违法行为"

# 检测发行版
if [ -f /etc/os-release ]; then
    . /etc/os-release
    DISTRO=$ID
else
    # 回退检测
    if grep -q "CentOS" /etc/redhat-release 2>/dev/null; then
        DISTRO="centos"
    elif grep -q "Red Hat" /etc/redhat-release 2>/dev/null; then
        DISTRO="rhel"
    else
        DISTRO="unknown"
    fi
fi

echo "检测到系统: $DISTRO"

# =============== 第一步：设置登录后提示（MOTD）===============
echo "$WELCOME_MSG" > /etc/motd
echo "✅ 已写入 /etc/motd（登录后显示）"

# 如果是 Debian/Ubuntu 且存在 update-motd.d，则也写入动态 MOTD 脚本
if [ "$DISTRO" = "ubuntu" ] || [ "$DISTRO" = "debian" ] || command -v lsb_release >/dev/null 2>&1; then
    if [ -d /etc/update-motd.d ]; then
        SCRIPT="/etc/update-motd.d/10-welcome"
        cat > "$SCRIPT" <<EOF
#!/bin/sh
echo "$WELCOME_MSG"
EOF
        chmod +x "$SCRIPT" 2>/dev/null || true
        echo "✅ 已配置 /etc/update-motd.d/10-welcome"
    fi
fi

# =============== 第二步：设置 SSH Banner（连接前显示）===============
BANNER_FILE="/etc/ssh/banner.txt"
mkdir -p /etc/ssh

echo "$WELCOME_MSG" > "$BANNER_FILE"

SSHD_CONFIG="/etc/ssh/sshd_config"

# 备份原配置（仅当文件存在且可读）
if [ -f "$SSHD_CONFIG" ] && [ -r "$SSHD_CONFIG" ]; then
    cp "$SSHD_CONFIG" "${SSHD_CONFIG}.bak.$(date +%Y%m%d%H%M%S)"
fi

# 配置 Banner
if grep -qE '^\s*Banner\s*/' "$SSHD_CONFIG" 2>/dev/null; then
    sed -i "s|^\s*Banner\s.*|Banner $BANNER_FILE|" "$SSHD_CONFIG"
else
    echo "Banner $BANNER_FILE" >> "$SSHD_CONFIG"
fi

echo "✅ 已配置 SSH Banner（连接时显示）"

# =============== 第三步：重载 SSH 服务 ===============
echo "正在重载 SSH 服务配置..."

RELOAD_SUCCESS=false

if command -v systemctl >/dev/null 2>&1; then
    if systemctl is-active --quiet sshd 2>/dev/null; then
        systemctl reload sshd && RELOAD_SUCCESS=true
    elif systemctl is-active --quiet ssh 2>/dev/null; then
        systemctl reload ssh && RELOAD_SUCCESS=true
    fi
elif command -v service >/dev/null 2>&1; then
    if service sshd status >/dev/null 2>&1; then
        service sshd reload && RELOAD_SUCCESS=true
    elif service ssh status >/dev/null 2>&1; then
        service ssh reload && RELOAD_SUCCESS=true
    fi
fi

if [ "$RELOAD_SUCCESS" = "true" ]; then
    echo "✅ SSH 服务配置已重载"
else
    echo "⚠️ 无法自动重载 SSH 服务，请手动执行："
    echo "   sudo systemctl reload sshd    # 或 ssh"
fi

echo ""
echo "🎉 配置完成！"
echo "   - 用户连接 SSH 时将看到法律提示（Banner）"
echo "   - 登录成功后也会显示提示（MOTD）"
echo "宁波v6云服务器低至5r"
echo "📌 注意：请确保您的行为符合国家法律法规。"