|
|
|
@ -101,6 +101,7 @@ usage: ${progname} [-1ch] [-k KEYFILE] |
|
|
|
|
-s run setup env only (must run as root) |
|
|
|
|
-S run the ${progname} as non-root user (default: run as root) |
|
|
|
|
-p passfile use the given BLS passphrase file |
|
|
|
|
-d just download the Harmony binaries (default: off) |
|
|
|
|
-D do not download Harmony binaries (default: download when start) |
|
|
|
|
-m collect and upload node metrics to harmony prometheus + grafana |
|
|
|
|
-N network join the given network (main, beta, pangaea; default: main) |
|
|
|
@ -119,18 +120,23 @@ usage() { |
|
|
|
|
exit 64 # EX_USAGE |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# ======= |
|
|
|
|
BUCKET=pub.harmony.one |
|
|
|
|
OS=$(uname -s) |
|
|
|
|
|
|
|
|
|
unset start_clean loop run_as_root blspass do_not_download metrics network |
|
|
|
|
start_clean=false |
|
|
|
|
loop=true |
|
|
|
|
run_as_root=true |
|
|
|
|
do_not_download=false |
|
|
|
|
download_only=false |
|
|
|
|
metrics=false |
|
|
|
|
network=main |
|
|
|
|
${BLSKEYFILE=} |
|
|
|
|
|
|
|
|
|
unset OPTIND OPTARG opt |
|
|
|
|
OPTIND=1 |
|
|
|
|
while getopts :1chk:sSp:DmN:t opt |
|
|
|
|
while getopts :1chk:sSp:dDmN:t opt |
|
|
|
|
do |
|
|
|
|
case "${opt}" in |
|
|
|
|
'?') usage "unrecognized option -${OPTARG}";; |
|
|
|
@ -142,6 +148,7 @@ do |
|
|
|
|
s) setup_env; exit 0;; |
|
|
|
|
S) run_as_root=false ;; |
|
|
|
|
p) blspass="${OPTARG}";; |
|
|
|
|
d) download_only=true;; |
|
|
|
|
D) do_not_download=true;; |
|
|
|
|
m) metrics=true;; |
|
|
|
|
N) network="${OPTARG}";; |
|
|
|
@ -195,43 +202,6 @@ case $# in |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
|
|
|
|
|
if ${run_as_root}; then |
|
|
|
|
check_root |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
|
"") |
|
|
|
|
unset -v f |
|
|
|
|
for f in \ |
|
|
|
|
~/*--????-??-??T??-??-??.*Z--bls_???????????????????????????????????????????????????????????????????????????????????????????????? \ |
|
|
|
|
~/????????????????????????????????????????????????????????????????????????????????????????????????.key \ |
|
|
|
|
*--????-??-??T??-??-??.*Z--bls_???????????????????????????????????????????????????????????????????????????????????????????????? \ |
|
|
|
|
????????????????????????????????????????????????????????????????????????????????????????????????.key |
|
|
|
|
do |
|
|
|
|
[ -f "${f}" ] || continue |
|
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
|
"") |
|
|
|
|
BLSKEYFILE="${f}" |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
[ "${f}" -ef "${BLSKEYFILE}" ] || \ |
|
|
|
|
err 69 "multiple key files found (${f}, ${BLSKEYFILE}); please use -k to specify" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
done |
|
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
|
"") err 69 "could not autodetect BLS key file; please use -k to specify";; |
|
|
|
|
esac |
|
|
|
|
msg "autodetected BLS key file: ${BLSKEYFILE}" |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
msg "using manually specified BLS key file: ${BLSKEYFILE}" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
|
|
|
|
|
BUCKET=pub.harmony.one |
|
|
|
|
OS=$(uname -s) |
|
|
|
|
|
|
|
|
|
if [ "$OS" == "Darwin" ]; then |
|
|
|
|
FOLDER=release/darwin-x86_64/$REL/ |
|
|
|
|
BIN=( harmony libbls384_256.dylib libcrypto.1.0.0.dylib libgmp.10.dylib libgmpxx.4.dylib libmcl.dylib md5sum.txt ) |
|
|
|
@ -241,21 +211,6 @@ if [ "$OS" == "Linux" ]; then |
|
|
|
|
BIN=( harmony libbls384_256.so libcrypto.so.10 libgmp.so.10 libgmpxx.so.4 libmcl.so md5sum.txt ) |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
any_new_binaries() { |
|
|
|
|
local outdir |
|
|
|
|
${do_not_download} && return 0 |
|
|
|
|
outdir="${1:-.}" |
|
|
|
|
mkdir -p "${outdir}" |
|
|
|
|
curl -sSf http://${BUCKET}.s3.amazonaws.com/${FOLDER}md5sum.txt -o "${outdir}/md5sum.txt.new" || return $? |
|
|
|
|
if diff $outdir/md5sum.txt.new md5sum.txt |
|
|
|
|
then |
|
|
|
|
rm "${outdir}/md5sum.txt.new" |
|
|
|
|
else |
|
|
|
|
mv "${outdir}/md5sum.txt.new" "${outdir}/md5sum.txt" |
|
|
|
|
return 1 |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
extract_checksum() { |
|
|
|
|
awk -v basename="${1}" ' |
|
|
|
|
{ |
|
|
|
@ -291,7 +246,6 @@ verify_checksum() { |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
download_binaries() { |
|
|
|
|
local outdir |
|
|
|
|
${do_not_download} && return 0 |
|
|
|
@ -306,6 +260,60 @@ download_binaries() { |
|
|
|
|
(cd "${outdir}" && exec openssl sha256 "${BIN[@]}") > "${outdir}/harmony-checksums.txt" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ${download_only}; then |
|
|
|
|
download_binaries || err 69 "download node software failed" |
|
|
|
|
exit 0 |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
if ${run_as_root}; then |
|
|
|
|
check_root |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
|
"") |
|
|
|
|
unset -v f |
|
|
|
|
for f in \ |
|
|
|
|
~/*--????-??-??T??-??-??.*Z--bls_???????????????????????????????????????????????????????????????????????????????????????????????? \ |
|
|
|
|
~/????????????????????????????????????????????????????????????????????????????????????????????????.key \ |
|
|
|
|
*--????-??-??T??-??-??.*Z--bls_???????????????????????????????????????????????????????????????????????????????????????????????? \ |
|
|
|
|
????????????????????????????????????????????????????????????????????????????????????????????????.key |
|
|
|
|
do |
|
|
|
|
[ -f "${f}" ] || continue |
|
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
|
"") |
|
|
|
|
BLSKEYFILE="${f}" |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
[ "${f}" -ef "${BLSKEYFILE}" ] || \ |
|
|
|
|
err 69 "multiple key files found (${f}, ${BLSKEYFILE}); please use -k to specify" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
done |
|
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
|
"") err 69 "could not autodetect BLS key file; please use -k to specify";; |
|
|
|
|
esac |
|
|
|
|
msg "autodetected BLS key file: ${BLSKEYFILE}" |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
msg "using manually specified BLS key file: ${BLSKEYFILE}" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
|
|
|
|
|
any_new_binaries() { |
|
|
|
|
local outdir |
|
|
|
|
${do_not_download} && return 0 |
|
|
|
|
outdir="${1:-.}" |
|
|
|
|
mkdir -p "${outdir}" |
|
|
|
|
curl -sSf http://${BUCKET}.s3.amazonaws.com/${FOLDER}md5sum.txt -o "${outdir}/md5sum.txt.new" || return $? |
|
|
|
|
if diff $outdir/md5sum.txt.new md5sum.txt |
|
|
|
|
then |
|
|
|
|
rm "${outdir}/md5sum.txt.new" |
|
|
|
|
else |
|
|
|
|
mv "${outdir}/md5sum.txt.new" "${outdir}/md5sum.txt" |
|
|
|
|
return 1 |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if any_new_binaries |
|
|
|
|
then |
|
|
|
|
msg "binaries did not change" |
|
|
|
|