#!/bin/bash set -uo pipefail # Publish latest /private/argus/etc/dns.conf to ${FTP_BASE_PATH}/share/dns.conf SRC="/private/argus/etc/dns.conf" FTP_BASE_PATH="${FTP_BASE_PATH:-/private/argus/ftp}" DST_DIR="${FTP_BASE_PATH}/share" DST="${DST_DIR}/dns.conf" UID_VAL="${ARGUS_BUILD_UID:-2133}" GID_VAL="${ARGUS_BUILD_GID:-2015}" INTERVAL="${DNS_PUBLISH_INTERVAL:-10}" log() { echo "$(date '+%Y-%m-%d %H:%M:%S') [DNS-Publish] $*"; } mkdir -p "$DST_DIR" 2>/dev/null || true log "service start: SRC=$SRC DST=$DST interval=${INTERVAL}s" while true; do if [[ -f "$SRC" ]]; then # Only sync when content differs if ! cmp -s "$SRC" "$DST" 2>/dev/null; then tmp="${DST}.tmp" if cp "$SRC" "$tmp" 2>/dev/null; then mv -f "$tmp" "$DST" chown "$UID_VAL":"$GID_VAL" "$DST" 2>/dev/null || true chmod 0644 "$DST" 2>/dev/null || true ts_src=$(date -r "$SRC" '+%Y-%m-%dT%H:%M:%S%z' 2>/dev/null || echo "?") log "synced dns.conf (src mtime=$ts_src) -> $DST" else log "ERROR: copy failed $SRC -> $tmp" fi fi else log "waiting for source $SRC" fi sleep "$INTERVAL" done