#!/bin/bash

# DNS监控脚本 - 每10秒检查dns.conf是否有变化
# 如果有变化则执行update-dns.sh脚本

DNS_CONF="/private/argus/etc/dns.conf"
DNS_BACKUP="/tmp/dns.conf.backup"
UPDATE_SCRIPT="/private/argus/etc/update-dns.sh"
LOG_FILE="/var/log/supervisor/dns-monitor.log"

# 确保日志文件存在
touch "$LOG_FILE"

log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') [DNS-Monitor] $1" >> "$LOG_FILE"
}

log_message "DNS监控脚本启动"

while true; do
    if [ -f "$DNS_CONF" ]; then
        if [ -f "$DNS_BACKUP" ]; then
            # 比较文件内容
            if ! cmp -s "$DNS_CONF" "$DNS_BACKUP"; then
                log_message "检测到DNS配置变化"

                # 更新备份文件
                cp "$DNS_CONF" "$DNS_BACKUP"

                # 执行更新脚本
                if [ -x "$UPDATE_SCRIPT" ]; then
                    log_message "执行DNS更新脚本: $UPDATE_SCRIPT"
                    "$UPDATE_SCRIPT" >> "$LOG_FILE" 2>&1
                    if [ $? -eq 0 ]; then
                        log_message "DNS更新脚本执行成功"
                    else
                        log_message "DNS更新脚本执行失败"
                    fi
                else
                    log_message "警告: 更新脚本不存在或不可执行: $UPDATE_SCRIPT"
                fi
            fi
        else

            # 第一次检测到配置文件，执行更新脚本
            if [ -x "$UPDATE_SCRIPT" ]; then
                log_message "执行DNS更新脚本: $UPDATE_SCRIPT"
                "$UPDATE_SCRIPT" >> "$LOG_FILE" 2>&1
                if [ $? -eq 0 ]; then
                    log_message "DNS更新脚本执行成功"

		    # 第一次运行，创建备份并执行更新
		    cp "$DNS_CONF" "$DNS_BACKUP"
		    log_message "创建DNS配置备份文件"

                else
                    log_message "DNS更新脚本执行失败"
                fi
            else
                log_message "警告: 更新脚本不存在或不可执行: $UPDATE_SCRIPT"
            fi
        fi
    else
        log_message "警告: DNS配置文件不存在: $DNS_CONF"
    fi

    sleep 10
done
