storj/scripts/cert-gating.sh
2019-10-04 16:48:41 -04:00

83 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
source $(dirname $0)/utils.sh
basepath=$HOME/.storj/local-network
alpha_config=$basepath/config-alpha.yaml
unauthorized_config=$basepath/config-unauthorized.yaml
ca_whitelist=$basepath/ca-alpha-whitelist.cert
ca_count=5
ca_basepath=$basepath/ca-alpha-
ca_i_basepath() {
echo ${ca_basepath}${1}
}
rand_ca_basepath() {
let i="($RANDOM % $ca_count) + 1"
echo $(ca_i_basepath ${i})
}
case $1 in
--help)
echo "usage: $(basename $0) [setup|alpha|unauthorized]"
;;
setup)
temp_build "storj-sim" identity
echo "setting up storj-sim"
${storj_sim} network setup
echo "clearing whitelist"
echo > ${ca_whitelist}
echo -n "generating alpha certificate authorities.."
for i in $(seq 1 ${ca_count}); do
echo -n "$i.."
_basepath=$(ca_i_basepath ${i})
${identity} ca new --ca.overwrite \
--ca.cert-path ${_basepath}.cert \
--ca.key-path ${_basepath}.key
cat ${_basepath}.cert >> ${ca_whitelist}
done
echo "done"
echo -n "generating alpha identities"
for dir in ${basepath}/{satellite/*,storagenode/*,gateway/*}; do
echo -n "."
_ca_basepath=$(rand_ca_basepath)
_ca_cert=${dir}/ca-alpha.cert
_ca_key=${dir}/ca-alpha.key
${identity} ca new --ca.overwrite \
--ca.cert-path ${_ca_cert} \
--ca.key-path ${_ca_key} \
--ca.parent-cert-path ${_ca_basepath}.cert \
--ca.parent-key-path ${_ca_basepath}.key
${identity} id new --identity.overwrite \
--identity.cert-path ${dir}/identity-alpha.cert \
--identity.key-path ${dir}/identity-alpha.key \
--ca.cert-path ${_ca_cert} \
--ca.key-path ${_ca_key}
done
echo "done"
echo "writing alpha config"
cat ${basepath}/config.yaml | \
sed "s,peer-ca-whitelist-path: \"\",peer-ca-whitelist-path: $ca_whitelist,g" | \
sed -E 's,cert-path: (.+)\.cert,cert-path: \1-alpha.cert,g' | \
sed -E 's,key-path: (.+)\.key,key-path: \1-alpha.key,g' \
> ${alpha_config}
echo "writing unauthorized config"
cat ${basepath}/config.yaml | sed -E "s,peer-ca-whitelist-path: \"\",peer-ca-whitelist-path: $ca_whitelist,g" >"$unauthorized_config"
;;
alpha)
build "storj-sim"
${storj_sim} network run --config ${alpha_config}
;;
unauthorized)
build "storj-sim"
${storj_sim} network run --config ${unauthorized_config}
;;
run)
${storj_sim} network run
;;
*)
$@ --help
;;
esac
rm -rf ${tmp_dir}