Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Made-with: Cursor
154 lines
9.9 KiB
Bash
Executable File
154 lines
9.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# List all NPMplus proxy host mappings with VMID, Service, IP, Port, and FQDN
|
|
|
|
set -euo pipefail
|
|
|
|
# Load IP configuration
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
|
|
|
|
|
PROXMOX_HOST="${1:-192.168.11.11}"
|
|
CONTAINER_ID="${2:-10233}"
|
|
|
|
# IP to VMID mapping
|
|
declare -A IP_TO_VMID
|
|
IP_TO_VMID["${IP_NGINX_LEGACY:-192.168.11.26}"]="105"
|
|
IP_TO_VMID["192.168.11.27"]="130"
|
|
IP_TO_VMID["192.168.11.30"]="103"
|
|
IP_TO_VMID["192.168.11.31"]="104"
|
|
IP_TO_VMID["192.168.11.32"]="100"
|
|
IP_TO_VMID["192.168.11.33"]="101"
|
|
IP_TO_VMID["${IP_SERVICE_35:-${IP_SERVICE_35:-${IP_SERVICE_35:-${IP_SERVICE_35:-192.168.11.35}}}}"]="6200"
|
|
IP_TO_VMID["${IP_SERVICE_36:-${IP_SERVICE_36:-${IP_SERVICE_36:-${IP_SERVICE_36:-192.168.11.36}}}}"]="7811"
|
|
IP_TO_VMID["${IP_MIM_WEB:-192.168.11.37}"]="7810"
|
|
IP_TO_VMID["${IP_SERVICE_50:-${IP_SERVICE_50:-${IP_SERVICE_50:-${IP_SERVICE_50:-192.168.11.50}}}}"]="7800"
|
|
IP_TO_VMID["${IP_SERVICE_51:-${IP_SERVICE_51:-${IP_SERVICE_51:-${IP_SERVICE_51:-192.168.11.51}}}}"]="7801"
|
|
IP_TO_VMID["192.168.11.52"]="7802"
|
|
IP_TO_VMID["${DB_HOST:-192.168.11.53}"]="7803"
|
|
IP_TO_VMID["192.168.11.57"]="6201"
|
|
IP_TO_VMID["192.168.11.64"]="6400"
|
|
IP_TO_VMID["192.168.11.65"]="6000"
|
|
IP_TO_VMID["${IP_VALIDATOR_0:-${IP_VALIDATOR_0:-${IP_VALIDATOR_0:-${IP_VALIDATOR_0:-192.168.11.100}}}}"]="1000"
|
|
IP_TO_VMID["${IP_VALIDATOR_1:-${IP_VALIDATOR_1:-${IP_VALIDATOR_1:-${IP_VALIDATOR_1:-192.168.11.101}}}}"]="1001"
|
|
IP_TO_VMID["${IP_VALIDATOR_2:-${IP_VALIDATOR_2:-${IP_VALIDATOR_2:-${IP_VALIDATOR_2:-192.168.11.102}}}}"]="1002"
|
|
IP_TO_VMID["${IP_VALIDATOR_3:-${IP_VALIDATOR_3:-${IP_VALIDATOR_3:-${IP_VALIDATOR_3:-192.168.11.103}}}}"]="1003"
|
|
IP_TO_VMID["${IP_VALIDATOR_4:-${IP_VALIDATOR_4:-${IP_VALIDATOR_4:-${IP_VALIDATOR_4:-192.168.11.104}}}}"]="1004"
|
|
IP_TO_VMID["${DBIS_POSTGRES_PRIMARY:-192.168.11.105}"]="10100"
|
|
IP_TO_VMID["${DBIS_POSTGRES_REPLICA:-192.168.11.106}"]="10101"
|
|
IP_TO_VMID["192.168.11.110"]="106"
|
|
IP_TO_VMID["192.168.11.111"]="107"
|
|
IP_TO_VMID["192.168.11.112"]="108"
|
|
IP_TO_VMID["192.168.11.125"]="10120"
|
|
IP_TO_VMID["${IP_DBIS_FRONTEND:-${IP_SERVICE_13:-${IP_SERVICE_13:-${IP_SERVICE_13:-192.168.11.13}}}0}"]="10130"
|
|
IP_TO_VMID["${IP_BLOCKSCOUT:-${IP_DEVICE_14:-${IP_DEVICE_14:-${IP_DEVICE_14:-192.168.11.14}}}0}"]="5000"
|
|
IP_TO_VMID["${IP_BESU_RPC_0:-${IP_BESU_RPC_0:-${IP_BESU_RPC_0:-${IP_BESU_RPC_0:-192.168.11.150}}}}"]="1500"
|
|
IP_TO_VMID["${IP_BESU_RPC_1:-${IP_BESU_RPC_1:-${IP_BESU_RPC_1:-${IP_BESU_RPC_1:-192.168.11.151}}}}"]="1501"
|
|
IP_TO_VMID["${IP_BESU_RPC_2:-${IP_BESU_RPC_2:-${IP_BESU_RPC_2:-${IP_BESU_RPC_2:-192.168.11.152}}}}"]="1502"
|
|
IP_TO_VMID["${IP_BESU_RPC_3:-${IP_BESU_RPC_3:-${IP_BESU_RPC_3:-${IP_BESU_RPC_3:-192.168.11.153}}}}"]="1503"
|
|
IP_TO_VMID["${IP_BESU_SENTRY:-192.168.11.154}"]="1504"
|
|
IP_TO_VMID["${IP_DBIS_API:-192.168.11.155}"]="10150"
|
|
IP_TO_VMID["${IP_DBIS_API_2:-192.168.11.156}"]="10151"
|
|
IP_TO_VMID["${IP_NPMPLUS_ETH0:-192.168.11.166}"]="10233"
|
|
IP_TO_VMID["${IP_NPMPLUS:-192.168.11.167}"]="10234"
|
|
IP_TO_VMID["${RPC_CORE_1:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}1}"]="2101"
|
|
IP_TO_VMID["${RPC_PUBLIC_1:-192.168.11.221}"]="2201"
|
|
IP_TO_VMID["${RPC_PRIVATE_1:-192.168.11.232}"]="2301"
|
|
IP_TO_VMID["${RPC_NODE_233:-${RPC_NODE_233:-${RPC_NODE_233:-${RPC_NODE_233:-192.168.11.233}}}}"]="2303"
|
|
IP_TO_VMID["${RPC_NODE_234:-${RPC_NODE_234:-${RPC_NODE_234:-${RPC_NODE_234:-192.168.11.234}}}}"]="2304"
|
|
IP_TO_VMID["${RPC_NODE_235:-${RPC_NODE_235:-${RPC_NODE_235:-${RPC_NODE_235:-192.168.11.235}}}}"]="2305"
|
|
IP_TO_VMID["${RPC_NODE_236:-${RPC_NODE_236:-${RPC_NODE_236:-${RPC_NODE_236:-192.168.11.236}}}}"]="2306"
|
|
IP_TO_VMID["192.168.11.237"]="2307"
|
|
IP_TO_VMID["192.168.11.238"]="2308"
|
|
IP_TO_VMID["${RPC_THIRDWEB_PRIMARY:-192.168.11.240}"]="2400"
|
|
IP_TO_VMID["${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-192.168.11.241}}}}"]="2401"
|
|
IP_TO_VMID["${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-192.168.11.242}}}}"]="2402"
|
|
IP_TO_VMID["192.168.11.243"]="2403"
|
|
|
|
# IP to hostname mapping
|
|
declare -A IP_TO_HOSTNAME
|
|
IP_TO_HOSTNAME["${IP_NGINX_LEGACY:-192.168.11.26}"]="nginxproxymanager"
|
|
IP_TO_HOSTNAME["192.168.11.27"]="monitoring-1"
|
|
IP_TO_HOSTNAME["192.168.11.30"]="omada"
|
|
IP_TO_HOSTNAME["192.168.11.31"]="gitea"
|
|
IP_TO_HOSTNAME["192.168.11.32"]="proxmox-mail-gateway"
|
|
IP_TO_HOSTNAME["192.168.11.33"]="proxmox-datacenter-manager"
|
|
IP_TO_HOSTNAME["${IP_SERVICE_35:-${IP_SERVICE_35:-${IP_SERVICE_35:-${IP_SERVICE_35:-192.168.11.35}}}}"]="firefly-1"
|
|
IP_TO_HOSTNAME["${IP_SERVICE_36:-${IP_SERVICE_36:-${IP_SERVICE_36:-${IP_SERVICE_36:-192.168.11.36}}}}"]="mim-api-1"
|
|
IP_TO_HOSTNAME["${IP_MIM_WEB:-192.168.11.37}"]="mim-web-1"
|
|
IP_TO_HOSTNAME["${IP_SERVICE_50:-${IP_SERVICE_50:-${IP_SERVICE_50:-${IP_SERVICE_50:-192.168.11.50}}}}"]="sankofa-api-1"
|
|
IP_TO_HOSTNAME["${IP_SERVICE_51:-${IP_SERVICE_51:-${IP_SERVICE_51:-${IP_SERVICE_51:-192.168.11.51}}}}"]="sankofa-portal-1"
|
|
IP_TO_HOSTNAME["192.168.11.52"]="sankofa-keycloak-1"
|
|
IP_TO_HOSTNAME["${DB_HOST:-192.168.11.53}"]="sankofa-postgres-1"
|
|
IP_TO_HOSTNAME["192.168.11.57"]="firefly-ali-1"
|
|
IP_TO_HOSTNAME["192.168.11.64"]="indy-1"
|
|
IP_TO_HOSTNAME["192.168.11.65"]="fabric-1"
|
|
IP_TO_HOSTNAME["${IP_VALIDATOR_0:-${IP_VALIDATOR_0:-${IP_VALIDATOR_0:-${IP_VALIDATOR_0:-192.168.11.100}}}}"]="besu-validator-1"
|
|
IP_TO_HOSTNAME["${IP_VALIDATOR_1:-${IP_VALIDATOR_1:-${IP_VALIDATOR_1:-${IP_VALIDATOR_1:-192.168.11.101}}}}"]="besu-validator-2"
|
|
IP_TO_HOSTNAME["${IP_VALIDATOR_2:-${IP_VALIDATOR_2:-${IP_VALIDATOR_2:-${IP_VALIDATOR_2:-192.168.11.102}}}}"]="besu-validator-3"
|
|
IP_TO_HOSTNAME["${IP_VALIDATOR_3:-${IP_VALIDATOR_3:-${IP_VALIDATOR_3:-${IP_VALIDATOR_3:-192.168.11.103}}}}"]="besu-validator-4"
|
|
IP_TO_HOSTNAME["${IP_VALIDATOR_4:-${IP_VALIDATOR_4:-${IP_VALIDATOR_4:-${IP_VALIDATOR_4:-192.168.11.104}}}}"]="besu-validator-5"
|
|
IP_TO_HOSTNAME["${DBIS_POSTGRES_PRIMARY:-192.168.11.105}"]="dbis-postgres-primary"
|
|
IP_TO_HOSTNAME["${DBIS_POSTGRES_REPLICA:-192.168.11.106}"]="dbis-postgres-replica-1"
|
|
IP_TO_HOSTNAME["192.168.11.110"]="redis-rpc-translator"
|
|
IP_TO_HOSTNAME["192.168.11.111"]="web3signer-rpc-translator"
|
|
IP_TO_HOSTNAME["192.168.11.112"]="vault-rpc-translator"
|
|
IP_TO_HOSTNAME["192.168.11.125"]="dbis-redis"
|
|
IP_TO_HOSTNAME["${IP_DBIS_FRONTEND:-${IP_SERVICE_13:-${IP_SERVICE_13:-${IP_SERVICE_13:-192.168.11.13}}}0}"]="dbis-frontend"
|
|
IP_TO_HOSTNAME["${IP_BLOCKSCOUT:-${IP_DEVICE_14:-${IP_DEVICE_14:-${IP_DEVICE_14:-192.168.11.14}}}0}"]="blockscout-1"
|
|
IP_TO_HOSTNAME["${IP_BESU_RPC_0:-${IP_BESU_RPC_0:-${IP_BESU_RPC_0:-${IP_BESU_RPC_0:-192.168.11.150}}}}"]="besu-sentry-1"
|
|
IP_TO_HOSTNAME["${IP_BESU_RPC_1:-${IP_BESU_RPC_1:-${IP_BESU_RPC_1:-${IP_BESU_RPC_1:-192.168.11.151}}}}"]="besu-sentry-2"
|
|
IP_TO_HOSTNAME["${IP_BESU_RPC_2:-${IP_BESU_RPC_2:-${IP_BESU_RPC_2:-${IP_BESU_RPC_2:-192.168.11.152}}}}"]="besu-sentry-3"
|
|
IP_TO_HOSTNAME["${IP_BESU_RPC_3:-${IP_BESU_RPC_3:-${IP_BESU_RPC_3:-${IP_BESU_RPC_3:-192.168.11.153}}}}"]="besu-sentry-4"
|
|
IP_TO_HOSTNAME["${IP_BESU_SENTRY:-192.168.11.154}"]="besu-sentry-ali"
|
|
IP_TO_HOSTNAME["${IP_DBIS_API:-192.168.11.155}"]="dbis-api-primary"
|
|
IP_TO_HOSTNAME["${IP_DBIS_API_2:-192.168.11.156}"]="dbis-api-secondary"
|
|
IP_TO_HOSTNAME["${IP_NPMPLUS_ETH0:-192.168.11.166}"]="npmplus"
|
|
IP_TO_HOSTNAME["${IP_NPMPLUS:-192.168.11.167}"]="npmplus-secondary"
|
|
IP_TO_HOSTNAME["${RPC_CORE_1:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}1}"]="besu-rpc-core-1"
|
|
IP_TO_HOSTNAME["${RPC_PUBLIC_1:-192.168.11.221}"]="besu-rpc-public-1"
|
|
IP_TO_HOSTNAME["${RPC_PRIVATE_1:-192.168.11.232}"]="besu-rpc-private-1"
|
|
IP_TO_HOSTNAME["${RPC_NODE_233:-${RPC_NODE_233:-${RPC_NODE_233:-${RPC_NODE_233:-192.168.11.233}}}}"]="besu-rpc-ali-0x8a"
|
|
IP_TO_HOSTNAME["${RPC_NODE_234:-${RPC_NODE_234:-${RPC_NODE_234:-${RPC_NODE_234:-192.168.11.234}}}}"]="besu-rpc-ali-0x1"
|
|
IP_TO_HOSTNAME["${RPC_NODE_235:-${RPC_NODE_235:-${RPC_NODE_235:-${RPC_NODE_235:-192.168.11.235}}}}"]="besu-rpc-luis-0x8a"
|
|
IP_TO_HOSTNAME["${RPC_NODE_236:-${RPC_NODE_236:-${RPC_NODE_236:-${RPC_NODE_236:-192.168.11.236}}}}"]="besu-rpc-luis-0x1"
|
|
IP_TO_HOSTNAME["192.168.11.237"]="besu-rpc-putu-0x8a"
|
|
IP_TO_HOSTNAME["192.168.11.238"]="besu-rpc-putu-0x1"
|
|
IP_TO_HOSTNAME["${RPC_THIRDWEB_PRIMARY:-192.168.11.240}"]="thirdweb-rpc-1"
|
|
IP_TO_HOSTNAME["${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-${RPC_THIRDWEB_1:-192.168.11.241}}}}"]="besu-rpc-thirdweb-0x8a-1"
|
|
IP_TO_HOSTNAME["${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-${RPC_THIRDWEB_2:-192.168.11.242}}}}"]="besu-rpc-thirdweb-0x8a-2"
|
|
IP_TO_HOSTNAME["192.168.11.243"]="besu-rpc-thirdweb-0x8a-3"
|
|
|
|
# Get proxy hosts from database
|
|
PROXY_HOSTS_JSON=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" "pct exec $CONTAINER_ID -- docker exec npmplus node -e \"
|
|
const Database = require('better-sqlite3');
|
|
const db = new Database('/data/npmplus/database.sqlite', { readonly: true });
|
|
const hosts = db.prepare('SELECT id, domain_names, forward_scheme, forward_host, forward_port FROM proxy_host ORDER BY id').all();
|
|
console.log(JSON.stringify(hosts));
|
|
db.close();
|
|
\" 2>&1" || echo "[]")
|
|
|
|
# Print header
|
|
printf "%-8s %-40s %-18s %-6s %-60s\n" "VMID" "Service/Hostname" "IP Address" "Port" "FQDN"
|
|
printf "%-8s %-40s %-18s %-6s %-60s\n" "--------" "----------------------------------------" "------------------" "------" "------------------------------------------------------------"
|
|
|
|
# Process each proxy host
|
|
echo "$PROXY_HOSTS_JSON" | jq -r '.[] | "\(.id)|\(.domain_names)|\(.forward_scheme)|\(.forward_host)|\(.forward_port)"' 2>/dev/null | while IFS='|' read -r host_id domain_names_json scheme forward_host forward_port; do
|
|
# Parse domain names (JSON array)
|
|
fqdn=$(echo "$domain_names_json" | jq -r '.[0] // empty' 2>/dev/null || echo "$domain_names_json")
|
|
|
|
# Get VMID from IP
|
|
vmid=${IP_TO_VMID[$forward_host]:-}
|
|
|
|
# Get service name/hostname
|
|
if [ -n "$vmid" ]; then
|
|
service=${IP_TO_HOSTNAME[$forward_host]:-VMID-$vmid}
|
|
else
|
|
service="External/$forward_host"
|
|
fi
|
|
|
|
# Print row
|
|
printf "%-8s %-40s %-18s %-6s %-60s\n" "${vmid:-N/A}" "$service" "$forward_host" "$forward_port" "$fqdn"
|
|
done | sort -k1 -n -t' '
|