HEX
Server: nginx/1.29.3
System: Linux 11979.bigscoots-wpo.com 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 01:02:46 UTC 2025 x86_64
User: nginx (1068)
PHP: 7.4.33
Disabled: exec,system,passthru,shell_exec,proc_open,proc_close,popen,show_source,cmd# Do not modify this line # 1684243876
Upload Files
File: //bigscoots/cpanel/migrate_to_secondary_ip.sh
#!/usr/bin/env bash

# --- CONFIGURATION & ARGUMENTS ---
if [ -z "$1" ]; then
    echo "ERROR: No NEWIP provided."
    echo "Usage: bash $0 <NEWIP>"
    exit 1
fi

NEWIP="$1"
NET_DIR="/etc/sysconfig/network-scripts"

echo "--------------------------------------------------------"
echo " Starting cPanel IP Migration to: $NEWIP"
echo "--------------------------------------------------------"

# 1. DEPENDENCY CHECK
echo -n "[*] Checking for jq... "
if ! command -v jq &> /dev/null || ! jq --version &> /dev/null; then
    echo "Broken/Missing. Installing static binary..."
    wget -q -O /usr/local/bin/jq https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux64
    chmod +x /usr/local/bin/jq
else
    echo "OK."
fi

# 2. IDENTIFY OLD IP
echo -n "[*] Identifying current public IP... "
OLD_IP=$(curl -s https://ifconfig.me)
if [[ -z "$OLD_IP" ]]; then
    echo "FAILED!"
    exit 1
fi
echo "DONE ($OLD_IP)"

# 3. APACHE TEMPLATES
echo -n "[*] Downloading Apache vhost templates... "
wget -q -O /var/cpanel/templates/apache2_4/ssl_vhost.local https://gist.githubusercontent.com/jcatello/e19c6feef89bc73c6cd87e2327278771/raw/c1c0130fbab0a882691263f1f0c5bf1488b67370/gistfile1.txt
wget -q -O /var/cpanel/templates/apache2_4/vhost.local https://gist.githubusercontent.com/jcatello/b4da693fef7fbb2c7c08a73939ce6e73/raw/9d0344f3ce2c85f7f3929753e441ddfbb8327e2c/gistfile1.txt
wget -q -O /var/cpanel/templates/apache2_4/ea4_main.local https://gist.githubusercontent.com/jcatello/802909296df0c1e0bece7f2fa1ffae5d/raw/fb3a0f31b62696d835acf103743f98b1fb5c512e/gistfile1.txt
echo "OK."

# 4. REBUILD APACHE
echo -n "[*] Rebuilding Apache configuration... "
/scripts/rebuildhttpdconf &> /dev/null
echo "OK."
echo -n "[*] Restarting Apache service... "
/scripts/restartsrv_apache &> /dev/null
echo "OK."

# 5. CRONTAB UPDATE (FIXED WITH BASH)
echo -n "[*] Ensuring /bigscoots apache conf-check cron is correct... "
# Remove any existing versions (with or without bash) to prevent duplicates
CURRENT_CRON=$(crontab -l 2>/dev/null | grep -v "/bigscoots/cpanel/apache/conf-check.sh")

# Add the correct version back in
(echo "$CURRENT_CRON"; echo "*/5 * * * * bash /bigscoots/cpanel/apache/conf-check.sh > /dev/null 2>&1") | crontab -
echo "OK."

# 6. WWWACCT.CONF
echo -n "[*] Updating ADDR in /etc/wwwacct.conf... "
sed -i "s/^ADDR .*/ADDR $NEWIP/" /etc/wwwacct.conf
echo "OK."

# 9. LICENSE TRANSFER
echo "[*] Triggering License Transfer via Manage2 API (n8n)..."
TRANSFER_JSON=$(curl -s -X POST https://n8n.bigscoots.dev/webhook/cpanel-license-transfer \
     -H "Content-Type: application/json" \
     -d "{\"old_ip\": \"$OLD_IP\", \"new_ip\": \"$NEWIP\"}")

if command -v jq &> /dev/null && jq --version &> /dev/null; then
    echo "$TRANSFER_JSON" | jq
else
    echo "Raw Response: $TRANSFER_JSON"
fi

# 10. NETWORK SWAP
NEWIP_FILE_PATH=$(grep -l "IPADDR=$NEWIP" $NET_DIR/ifcfg-venet0:*)
NEWIP_FILE=$(basename "$NEWIP_FILE_PATH")

if [ ! -z "$NEWIP_FILE" ] && [ "$NEWIP_FILE" != "ifcfg-venet0:0" ]; then
    echo "[*] Found $NEWIP on $NEWIP_FILE. Swapping to primary..."
    
    mv "$NET_DIR/ifcfg-venet0:0" "$NET_DIR/ifcfg-venet0:old_temp"
    mv "$NET_DIR/$NEWIP_FILE" "$NET_DIR/ifcfg-venet0:0"
    mv "$NET_DIR/ifcfg-venet0:old_temp" "$NET_DIR/$NEWIP_FILE"

    sed -i "s/^DEVICE=.*/DEVICE=venet0:0/" "$NET_DIR/ifcfg-venet0:0"
    sed -i "s/^DEVICE=.*/DEVICE=${NEWIP_FILE#ifcfg-}/" "$NET_DIR/$NEWIP_FILE"
    
    echo "--------------------------------------------------------"
    echo " FINALIZING: Restarting Network & Background Refresh"
    echo "--------------------------------------------------------"

    nohup bash -c "sleep 12 && /usr/local/cpanel/cpkeyclt && logger 'cPanel migration license refresh complete'" > /dev/null 2>&1 &
    service network restart
    /scripts/restartsrv_apache
    /scripts/restartsrv_apache_php_fpm
    /scripts/restartsrv_dovecot
    /scripts/restartsrv_exim
    /scripts/restartsrv_bind
    /scripts/mainipcheck
    whmlogin

    if ps aux|grep -v grep | grep -q nginx ; then echo nginx detected ; fi
else
    echo "[!] No network swap required. Refreshing license locally..."
    /usr/local/cpanel/cpkeyclt &> /dev/null
    echo "--------------------------------------------------------"
    echo " MIGRATION COMPLETE"
    echo "--------------------------------------------------------"
fi