From 36e654c131ce976251799dea8676b43c0147a6d6 Mon Sep 17 00:00:00 2001 From: Hanh Date: Mon, 17 Oct 2022 23:33:00 +0800 Subject: [PATCH] Add fetch-params --- fetch-params.sh | 237 ++++++++++++++++++++++++++++++++++++++++++++++++ src/api/sync.rs | 1 - 2 files changed, 237 insertions(+), 1 deletion(-) create mode 100755 fetch-params.sh diff --git a/fetch-params.sh b/fetch-params.sh new file mode 100755 index 0000000..b60fecb --- /dev/null +++ b/fetch-params.sh @@ -0,0 +1,237 @@ +#!/bin/sh + +export LC_ALL=C +set -eu + +uname_S=$(uname -s 2>/dev/null || echo not) + +if [ "$uname_S" = "Darwin" ]; then + PARAMS_DIR="$HOME/Library/Application Support/ZcashParams" +else + PARAMS_DIR="$HOME/.zcash-params" +fi + +# Commented out because these are unused; see below. +#SPROUT_PKEY_NAME='sprout-proving.key' +#SPROUT_VKEY_NAME='sprout-verifying.key' +SAPLING_SPEND_NAME='sapling-spend.params' +SAPLING_OUTPUT_NAME='sapling-output.params' +SAPLING_SPROUT_GROTH16_NAME='sprout-groth16.params' +DOWNLOAD_URL="https://download.z.cash/downloads" +IPFS_HASH="/ipfs/QmXRHVGLQBiKwvNq7c2vPxAKz1zRVmMYbmt7G5TQss7tY7" + +SHA256CMD="$(command -v sha256sum || echo shasum)" +SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')" + +WGETCMD="$(command -v wget || echo '')" +IPFSCMD="$(command -v ipfs || echo '')" +CURLCMD="$(command -v curl || echo '')" + +# fetch methods can be disabled with ZC_DISABLE_SOMETHING=1 +ZC_DISABLE_WGET="${ZC_DISABLE_WGET:-}" +ZC_DISABLE_IPFS="${ZC_DISABLE_IPFS:-}" +ZC_DISABLE_CURL="${ZC_DISABLE_CURL:-}" + +LOCKFILE=/tmp/fetch_params.lock + +fetch_wget() { + if [ -z "$WGETCMD" ] || [ -n "$ZC_DISABLE_WGET" ]; then + return 1 + fi + + cat <&2 < "${dlname}" + rm "${dlname}.part.1" "${dlname}.part.2" + + "$SHA256CMD" $SHA256ARGS -c <&2 + exit 1 + fi + fi + + unset -v filename + unset -v output + unset -v dlname + unset -v expectedhash +} + +# Use flock to prevent parallel execution. +lock() { + if [ "$uname_S" = "Darwin" ]; then + if shlock -f ${LOCKFILE} -p $$; then + return 0 + else + return 1 + fi + else + # create lock file + eval "exec 9>$LOCKFILE" + # acquire the lock + flock -n 9 \ + && return 0 \ + || return 1 + fi +} + +exit_locked_error() { + echo "Only one instance of fetch-params.sh can be run at a time." >&2 + exit 1 +} + +main() { + + lock fetch-params.sh \ + || exit_locked_error + + cat <> "$README_PATH" <, ) -> anyhow::Result<()> {