From e850ed9aeaee304b963f518a0088bcf19b78c1cd Mon Sep 17 00:00:00 2001 From: Uncle Stinky Date: Fri, 11 Oct 2024 02:16:33 +0300 Subject: [PATCH] session key helper added Signed-off-by: Uncle Stinky --- scripts/starter.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/scripts/starter.sh b/scripts/starter.sh index 51476d5..477e4cf 100755 --- a/scripts/starter.sh +++ b/scripts/starter.sh @@ -2,6 +2,8 @@ set -Ee +CHECK_KEYS=false +INSERT_KEYS=false UNIT_FILE=false SKIP_BUILD=false SET_ENVIRONMENT=false @@ -46,6 +48,8 @@ help() { echo -e "-u, --unit-file\n\tCreation of systemd unit file." echo -e "-m, --make-global\n\tStore compiled ghost executable and chain specification globally." echo -e "-a, --set-arguments\n\tPrepare CLI arguments for running ghost node." + echo -e "-k, --check-keys\n\tCheck if your keys are already included in 'ghosties' file." + echo -e "-r, --insert-keys\n\tInsert session keys to the keystore via JSON RPC." echo -e "-r, --release\n\tCompile node with '--release' flag." echo -e "-p, --profile\n\tCompile node with '--profile [PROFILE]' flag." echo -e "-f, --features\n\tCompilation features '--features=\"FEATURE1,FEATURE2\"'" @@ -79,6 +83,12 @@ while [ $# -gt 0 ]; do --set-arguments|-a) ARGUMENTS=true ;; + --check-keys|-k) + CHECK_KEYS=true + ;; + --insert-keys|-k) + INSERT_KEYS=true + ;; --release|-r) RELEASE="--release" TARGET="release" @@ -292,6 +302,11 @@ if [[ $ARGUMENTS = true ]]; then CLI_ARGS+=("--no-prometheus") fi + read -p "[?] list of bootnodes if any: " bootnodes + if [ ! -z $bootnodes ]; then + CLI_ARGS+=("--bootnodes=$bootnodes") + fi + # default for now CLI_ARGS+=("--base-path=$NODE_PATH") CLI_ARGS+=("--state-pruning=archive") @@ -308,3 +323,49 @@ if [[ $ARGUMENTS = true ]]; then echo "[+] new CLI arguments stored in '/etc/default/ghost'" cat /etc/default/ghost fi + +if [ $CHECK_KEYS = true ]; then + read -p "[?] path to the file with session key: (default: /etc/ghost/session-key) " seed_path + seed_path="${seed_path:-/etc/ghost/session-key}" + if [ ! -f $seed_path ]; then + echo "[-] path to session keys not valid" + exit 1 + fi + echo "[+] path $seed_path is valid" + seed=$(cat $seed_path) + + if [ $INSERT_KEYS = true ]; then + read -p "[?] JSON RPC endpoint to the node: (default: localhost:9945) " rpc_endpoint + rpc_endpoint="${rpc_endpoint:-localhost:9945}" + fi + + for type in $(echo audi babe gran slow); do + echo "[+] parsing session key for [$type]" + scheme="sr25519" + if [ $type = "gran" ]; then + scheme="ed25519" + fi + + secret_seed=$(ghost key inspect --scheme="$scheme" "$seed//$type" | grep "Secret seed" | awk '{ print $3 }') + account_id=$(ghost key inspect --scheme="$scheme" "$seed//$type" | grep "Account ID" | awk '{ print $3 }') + + echo "[+] inspected account id: $account_id" + num_keys=$(grep $account_id "$PROJECT_FOLDER/service/ghosties" | wc -l) + num_types=$(grep $account_id "$PROJECT_FOLDER/service/ghosties" | grep $type | wc -l) + if [ ! $num_keys = 1 ] || [ ! $num_types = 1 ]; then + echo "[-] inspected account id not found on 'ghosties' file or wrong key type" + exit 1 + fi + + echo "[+] inspected account id found in 'ghosties' file with correct key type" + + if [ $INSERT_KEYS = true ]; then + echo "[+] trying to make an 'author_insertKey' RPC call to $rpc_endpoint..." + curl --location $rpc_endpoint \ + --header "Content-Type: application/json" \ + --data '{ "id":1, "jsonrpc":"2.0", "method":"author_insertKey", "params": ["'"$type"'", "'"$secret_seed"'", "'"$account_id"'"] }' + fi + echo + done +fi +