fix: harden proxied client installation
CI / Client installer (macos-latest) (push) Canceled after 0s
CI / Client installer (ubuntu-latest) (push) Canceled after 0s
CI / Client installer (windows-latest) (push) Canceled after 0s
CI / test (22) (push) Canceled after 0s
CI / test (24) (push) Canceled after 0s
CI / release-smoke (push) Canceled after 0s

This commit is contained in:
2026-08-18 16:01:06 +00:00
parent 40c5021c85
commit a08a2c1a96
15 changed files with 513 additions and 87 deletions
+22 -5
View File
@@ -2,11 +2,12 @@
set -eu
ding_source_bases='{{NODE_SOURCE_BASES_POSIX}}'
ding_installer_url='{{INSTALLER_URL}}'
ding_installer_urls='{{INSTALLER_URLS_POSIX}}'
ding_installer_sha256='{{INSTALLER_SHA256}}'
ding_public_key_url='{{PUBLIC_KEY_URL}}'
ding_public_key_urls='{{PUBLIC_KEY_URLS_POSIX}}'
ding_public_key_sha256='{{PUBLIC_KEY_SHA256}}'
ding_manifest_url='{{MANIFEST_URL}}'
ding_manifest_mirror_urls='{{MANIFEST_MIRROR_URLS_POSIX}}'
ding_temp_dir="$(mktemp -d "${TMPDIR:-/tmp}/dingmcp-install.XXXXXX")"
trap 'rm -rf "$ding_temp_dir"' EXIT HUP INT TERM
@@ -164,8 +165,24 @@ fi
ding_progress '3/4 下载并校验签名安装器与发布公钥'
ding_installer="$ding_temp_dir/installer.mjs"
ding_public_key="$ding_temp_dir/release-signing-public.pem"
ding_download_verified "$ding_installer" "$ding_installer_sha256" "$ding_installer_url"
ding_download_verified "$ding_public_key" "$ding_public_key_sha256" "$ding_public_key_url"
ding_download_verified "$ding_installer" "$ding_installer_sha256" $ding_installer_urls
ding_download_verified "$ding_public_key" "$ding_public_key_sha256" $ding_public_key_urls
ding_progress '4/4 执行安装器;最终 JSON 输出到 stdout,阶段进度输出到 stderr'
"$ding_node_path" "$ding_installer" install --manifest-url "$ding_manifest_url" --public-key "$ding_public_key" --json
set -- "$ding_installer" install --manifest-url "$ding_manifest_url"
for ding_manifest_mirror_url in $ding_manifest_mirror_urls; do
set -- "$@" --manifest-mirror-url "$ding_manifest_mirror_url"
done
set -- "$@" --public-key "$ding_public_key" --json
ding_node_proxy_arg=''
if [ -n "${HTTPS_PROXY:-}${https_proxy:-}${HTTP_PROXY:-}${http_proxy:-}${ALL_PROXY:-}${all_proxy:-}" ] \
&& ! printf '%s' "${NODE_OPTIONS:-}" | grep -Eq '(^|[[:space:]])--use-env-proxy($|[[:space:]])' \
&& ! printf '%s' "${NODE_USE_ENV_PROXY:-}" | grep -Eiq '^(1|true)$' \
&& "$ding_node_path" -e 'process.exit(process.allowedNodeEnvironmentFlags.has("--use-env-proxy") ? 0 : 1)'; then
ding_node_proxy_arg='--use-env-proxy'
fi
if [ -n "$ding_node_proxy_arg" ]; then
"$ding_node_path" "$ding_node_proxy_arg" "$@"
else
"$ding_node_path" "$@"
fi