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
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user