- Update dbis_core, cross-chain-pmm-lps, explorer-monorepo, metamask-integration, pr-workspace/chains - Omit embedded publish git dirs and empty placeholders from index Made-with: Cursor
119 lines
4.1 KiB
Bash
Executable File
119 lines
4.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Update NPMplus forward targets for info.defi-oracle.io only (avoids full fleet run).
|
|
# Same upstreams as update-npmplus-proxy-hosts-api.sh (IP_INFO_DEFI_ORACLE_WEB :80).
|
|
set -euo pipefail
|
|
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
|
|
_orig_npm_url="${NPM_URL:-}"
|
|
_orig_npm_email="${NPM_EMAIL:-}"
|
|
_orig_npm_password="${NPM_PASSWORD:-}"
|
|
if [ -f "$PROJECT_ROOT/.env" ]; then
|
|
set +u
|
|
# shellcheck source=/dev/null
|
|
source "$PROJECT_ROOT/.env"
|
|
set -u
|
|
fi
|
|
if [ -f "$PROJECT_ROOT/smom-dbis-138/.env" ]; then
|
|
set +u
|
|
# shellcheck source=/dev/null
|
|
source "$PROJECT_ROOT/smom-dbis-138/.env"
|
|
set -u
|
|
fi
|
|
[ -n "$_orig_npm_url" ] && NPM_URL="$_orig_npm_url"
|
|
[ -n "$_orig_npm_email" ] && NPM_EMAIL="$_orig_npm_email"
|
|
[ -n "$_orig_npm_password" ] && NPM_PASSWORD="$_orig_npm_password"
|
|
[ -f "$PROJECT_ROOT/config/ip-addresses.conf" ] && source "$PROJECT_ROOT/config/ip-addresses.conf" 2>/dev/null || true
|
|
|
|
NPM_URL="${NPM_URL:-https://${IP_NPMPLUS}:81}"
|
|
NPM_EMAIL="${NPM_EMAIL:-}"
|
|
NPM_PASSWORD="${NPM_PASSWORD:-}"
|
|
if [ -z "$NPM_PASSWORD" ]; then
|
|
echo "NPM_PASSWORD is required (repo .env or export)."
|
|
exit 1
|
|
fi
|
|
|
|
NPM_CURL_MAX_TIME="${NPM_CURL_MAX_TIME:-300}"
|
|
curl_npm() { curl -s -k -L --connect-timeout 10 --max-time "$NPM_CURL_MAX_TIME" "$@"; }
|
|
|
|
try_connect() { curl -s -k -L -o /dev/null --connect-timeout 5 --max-time 15 "$1" 2>/dev/null; }
|
|
if ! try_connect "$NPM_URL/"; then
|
|
http_url="${NPM_URL/https:/http:}"
|
|
if try_connect "$http_url/"; then
|
|
NPM_URL="$http_url"
|
|
echo "Using HTTP NPM URL: $NPM_URL"
|
|
fi
|
|
fi
|
|
|
|
AUTH_JSON=$(jq -n --arg identity "$NPM_EMAIL" --arg secret "$NPM_PASSWORD" '{identity:$identity,secret:$secret}')
|
|
TOKEN_RESPONSE=$(curl_npm -X POST "$NPM_URL/api/tokens" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$AUTH_JSON")
|
|
TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r '.token // empty' 2>/dev/null || echo "")
|
|
if [ -z "$TOKEN" ] || [ "$TOKEN" = "null" ]; then
|
|
echo "NPM authentication failed."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Fetching proxy host list..."
|
|
PROXY_HOSTS_JSON=$(curl_npm -X GET "$NPM_URL/api/nginx/proxy-hosts" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
resolve_proxy_host_id() {
|
|
local domain="$1"
|
|
echo "$PROXY_HOSTS_JSON" | jq -r --arg d "$domain" '
|
|
.[] | select(.domain_names | type == "array") |
|
|
select(any(.domain_names[]; (. | tostring | ascii_downcase) == ($d | ascii_downcase))) |
|
|
.id' 2>/dev/null | head -n1
|
|
}
|
|
|
|
INFO_IP="${INFO_DEFI_ORACLE_UPSTREAM_IP:-${IP_INFO_DEFI_ORACLE_WEB:-192.168.11.218}}"
|
|
INFO_PORT="${INFO_DEFI_ORACLE_UPSTREAM_PORT:-80}"
|
|
|
|
put_forward() {
|
|
local domain="$1"
|
|
local canonical="${2:-}"
|
|
local HOST_ID
|
|
HOST_ID=$(resolve_proxy_host_id "$domain")
|
|
if [ -z "$HOST_ID" ] || [ "$HOST_ID" = "null" ]; then
|
|
echo "No NPM proxy host named $domain — add it in NPM UI or run full update-npmplus-proxy-hosts-api.sh"
|
|
return 1
|
|
fi
|
|
local adv_line="" manage_adv=false
|
|
if [ -n "$canonical" ]; then
|
|
adv_line="return 301 ${canonical}\$request_uri;"
|
|
manage_adv=true
|
|
fi
|
|
local UPDATE_PAYLOAD
|
|
UPDATE_PAYLOAD=$(jq -n \
|
|
--arg scheme "http" \
|
|
--arg hostname "$INFO_IP" \
|
|
--argjson port "$INFO_PORT" \
|
|
--argjson websocket false \
|
|
--argjson block_exploits false \
|
|
--arg adv "$adv_line" \
|
|
--argjson manage_adv "$manage_adv" \
|
|
'{
|
|
forward_scheme: $scheme,
|
|
forward_host: $hostname,
|
|
forward_port: $port,
|
|
allow_websocket_upgrade: $websocket,
|
|
block_exploits: $block_exploits
|
|
} + (if $manage_adv then {advanced_config: $adv} else {} end)')
|
|
local RESP
|
|
RESP=$(curl_npm -X PUT "$NPM_URL/api/nginx/proxy-hosts/$HOST_ID" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$UPDATE_PAYLOAD")
|
|
if ! echo "$RESP" | jq -e '.id' >/dev/null 2>&1; then
|
|
echo "PUT failed for $domain: $(echo "$RESP" | jq -c . 2>/dev/null || echo "$RESP" | head -c 300)"
|
|
return 1
|
|
fi
|
|
echo "OK $domain -> http://${INFO_IP}:${INFO_PORT}"
|
|
}
|
|
|
|
echo "Updating info.defi-oracle.io → http://${INFO_IP}:${INFO_PORT}"
|
|
put_forward "info.defi-oracle.io"
|
|
put_forward "www.info.defi-oracle.io" "https://info.defi-oracle.io"
|
|
echo "Done."
|