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/solusvm/get.sh
#!/bin/bash

OPTION="$1"
MYSQL_PASS="$(cut -d':' -f3 /usr/local/solusvm/includes/solusvm.conf)"
MYSQL_USER="$(cut -d':' -f2 /usr/local/solusvm/includes/solusvm.conf)"
MYSQL_DB="$(cut -d':' -f1 /usr/local/solusvm/includes/solusvm.conf)"

MYSQL_COMMAND="mysql -u "${MYSQL_USER}" -p"${MYSQL_PASS}" "${MYSQL_DB}" -sNe"

if [[ "$OPTION" == node_info ]]
then
    NODE_ID="$2"
    if [[ "$NODE_ID" == "ALL" ]]
    then
        ${MYSQL_COMMAND} "SELECT nodeid, name, ip, fname FROM nodes WHERE groupid IN (4, 9);" --batch --raw \
        | jq -R -s 'split("\n")[:-1] | map(split("\t")) | map({"node_id": .[0], "name": .[1], "ip": .[2], "fname": .[3]})'
    else
        ${MYSQL_COMMAND} "SELECT nodeid, name, ip, fname FROM nodes WHERE nodeid = '${NODE_ID}' LIMIT 1;" --batch --raw \
        | jq -R 'split("\t") | {"node_id": .[0], "name": .[1], "ip": .[2], "fname": .[3]}'
    fi
elif [[ "$OPTION" == vm_info ]]
then
    VM_ID="$2"
    # Define variables to capture CTID and ONLINE statuses
    CTID=$(${MYSQL_COMMAND} "SELECT ctid FROM vservers WHERE vserverid = '${VM_ID}' LIMIT 1;" --batch --raw)
    ONLINE=$(${MYSQL_COMMAND} "SELECT cachestatus FROM vservers WHERE vserverid = '${VM_ID}' LIMIT 1;" --batch --raw)
    
    ${MYSQL_COMMAND} "SELECT nodeid FROM vservers WHERE vserverid = '${VM_ID}' LIMIT 1;" \
    | while read -r NODEID
    do
        NODEIP=$(${MYSQL_COMMAND} "SELECT ip FROM nodes WHERE nodeid = '${NODEID}' LIMIT 1;" --batch --raw)
        echo '{ "nodeId":"'"$NODEID"'", "nodeIP":"'"$NODEIP"'", "ctid":"'"$CTID"'", "ctid_status":"'"$ONLINE"'" },'
    done \
    | tr -s '\n' ' ' \
    | sed "s/, $// ; s/$/ ] }/g ; s/^/{ \"$VM_ID\": [/g" \
    | jq
elif [[ "$OPTION" == sync_vm_from_node ]]
then
    CTID="$2"
    NODEIP="$3"

    # Check if CTID and NODEIP are provided
    if [[ -z "$CTID" || -z "$NODEIP" ]]
    then
        echo "Usage: $0 sync_vm_from_node <CTID> <NODEIP>"
        exit 1
    fi

    # Get the node ID based on the NODEIP
    NODE_ID=$(bash /bigscoots/solusvm/get.sh node_info ALL | jq -r --arg ip "$NODEIP" '.[] | select(.ip == $ip) | .node_id')
    if [[ -z "$NODE_ID" ]]
    then
        echo "Error: Unable to find node ID for IP $NODEIP"
        exit 1
    fi

    # Get the SolusVM ID from the database
    SOLUS_VM_ID=$(mysql -u "${MYSQL_USER}" -p"${MYSQL_PASS}" "${MYSQL_DB}" -sNe "select vserverid from vservers where ctid = '${CTID}';")
    if [[ -z "$SOLUS_VM_ID" ]]
    then
        echo "Error: Unable to find SolusVM ID for CTID $CTID"
        exit 1
    fi

    # Get the current node ID
    NODE_ID_CURRENT=$(bash /bigscoots/solusvm/get.sh vm_info "$SOLUS_VM_ID" | jq -r --arg id "$SOLUS_VM_ID" '.[$id][0].nodeId')
    if [[ -z "$NODE_ID_CURRENT" ]]
    then
        echo "Error: Unable to get current node ID for SolusVM ID $SOLUS_VM_ID"
        exit 1
    fi

    echo "Container ID: $CTID"
    echo "SolusVM ID: $SOLUS_VM_ID"
    echo "Node ID Current: $NODE_ID_CURRENT"
    echo "Node ID Actual : $NODE_ID"
    echo "Node IP: $NODEIP"

    # Compare and update node ID if needed
    if [[ "$NODE_ID_CURRENT" != "$NODE_ID" ]]
    then
        echo "Updating the Node ID on https://manage.securedserverspace.com:5656/admincp/manage.php?id=$SOLUS_VM_ID"
        /scripts/vm-migrate "$SOLUS_VM_ID" "$NODE_ID"
    else
        echo "$SOLUS_VM_ID already assigned to the correct node."
    fi
else
    echo "Command not found."
    exit
fi