HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/local/bin/dns-sync.sh
#!/bin/bash
# DNS Sync Script - Replicates DNS records from houston to ns1, ns2, ns3
# Run via cron every 5 minutes: */5 * * * * /usr/local/bin/dns-sync.sh

LOGFILE="/var/log/dns-sync.log"
LOCKFILE="/tmp/dns-sync.lock"
NAMESERVERS="91.99.165.130 5.223.58.55 5.161.96.70"

# Prevent concurrent runs
if [ -f "$LOCKFILE" ]; then
    exit 0
fi
trap "rm -f $LOCKFILE" EXIT
touch "$LOCKFILE"

log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOGFILE"
}

log "Starting DNS sync..."

# Export DNS tables from houston
DUMP_FILE="/tmp/dns_records_dump.sql"

mysqldump --single-transaction --quick \
    --no-create-info --replace \
    cyberpanel domains records domainmetadata \
    2>/dev/null > "$DUMP_FILE"

if [ ! -s "$DUMP_FILE" ]; then
    log "ERROR: Failed to dump DNS tables"
    exit 1
fi

# Sync to each nameserver
for NS in $NAMESERVERS; do
    log "Syncing to $NS..."
    
    # Transfer and import
    if scp -q "$DUMP_FILE" root@$NS:/tmp/dns_records_dump.sql 2>/dev/null; then
        ssh -o ConnectTimeout=10 root@$NS "mysql cyberpanel < /tmp/dns_records_dump.sql && pdns_control reload && rm /tmp/dns_records_dump.sql" 2>/dev/null
        if [ $? -eq 0 ]; then
            log "  ✓ $NS synced successfully"
        else
            log "  ✗ $NS import failed"
        fi
    else
        log "  ✗ $NS transfer failed"
    fi
done

# Cleanup
rm -f "$DUMP_FILE"

log "DNS sync completed"