From 8a550eb9f4dfc4ea93803e066420a178b0e06c68 Mon Sep 17 00:00:00 2001 From: poka Date: Thu, 23 Jul 2020 02:16:31 +0200 Subject: [PATCH] Add history, cleanup pubkey function, forebiden unwanted silkaj commands --- .gitignore | 1 + src/g1-info.js | 4 ++-- src/gbanque.js | 4 ++-- src/shell/functions.sh | 26 ++++++++++++++++++++++++-- src/shell/g1-infos.sh | 31 ++++++++++++------------------- src/shell/gbanque.sh | 2 +- 6 files changed, 42 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index 59160a5..a8a11df 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,4 @@ memo.txt # BoG src/shell/.env +core diff --git a/src/g1-info.js b/src/g1-info.js index 37d475b..975d992 100644 --- a/src/g1-info.js +++ b/src/g1-info.js @@ -42,9 +42,9 @@ bot.global.text({ process.env.hb_cmd = cmd pubkey = exec("src/shell/g1-infos.sh silkaj $hb_cmd", function(err, stdout, stderr) { if (err) { - b.respond("Une erreur est survenu :" + err) + b.respond("Une erreur est survenu :" + stderr) } else { - b.respond("```" + stdout + "```") + b.respond(stdout) } }); }, { diff --git a/src/gbanque.js b/src/gbanque.js index 0eccba6..aedac0e 100644 --- a/src/gbanque.js +++ b/src/gbanque.js @@ -4,7 +4,7 @@ const fs = require('fs'); const util = require('util') bot.global.text({ - starts: ['./gbanque', 'biz ./gbanque', 'biz gb'] + starts: ['./gbanque', 'biz ./gbanque', 'biz gb', 'gb'] }, (b) => { username = b.message.user.name process.env.hb_username = username @@ -15,7 +15,7 @@ bot.global.text({ gbanque = exec("src/shell/gbanque.sh ~~~$hb_cmd~~~$hb_username~~~$hb_room", function(err, stdout, stderr) { if (err) { - b.respond("Une erreur est survenu: " + err) + b.respond("Une erreur est survenu: " + stderr) } else { b.respond(stdout) } diff --git a/src/shell/functions.sh b/src/shell/functions.sh index 88549ae..67b4450 100755 --- a/src/shell/functions.sh +++ b/src/shell/functions.sh @@ -18,6 +18,24 @@ sendmsg() { -d "{ \"channel\": \"$chan\", \"text\": \"$msg\" }" > /dev/null 2>&1 } +getPubkey() { + url="$node/wot/members" + [[ -z $username || $username == "bot" ]] && username=$(echo $1 | tr -d '@') +# old way: local pubkey=$(curl -m 5 -s $url | grep -wiB 1 $username | grep "pubkey" | awk -F '"' '{ print $4 }') + local pubkey=$(curl -m 10 -s $url | jq -r --arg username "$username" '.results[] | select(.uid==$username) | .pubkey') + [[ $pubkey ]] && echo "$pubkey" || echo "none" +} + +getPseudo() { + url="$node/wot/members" + args=$(echo $@ | tr ' ' '\n' | grep -v 'biz' | tr '\n' ' ') + [ $(echo $args | wc -w) -ge 2 ] && pubkey=$(echo $args | awk '{ print $2 }') || pubkey=$1 +# pubkey="$1" + pubkey=$(echo $pubkey | tr -d '@') + local pseudo=$(curl -m 10 -s $url | jq -r --arg pubkey "$pubkey" '.results[] | select(.pubkey==$pubkey) | .uid') + [[ $pseudo ]] && echo "Le pseudo correspondant à la clé publique $pubkey est: @$pseudo" || echo "La clé publique $pubkey n'a pas de pseudo associé." +} + info_account() { local chan="$1" [[ ! $chan ]] && echo "Please select user." && exit 0 @@ -93,16 +111,20 @@ tx() { #This shoudl works, but accents are ok and should not... [[ ! "$comment" =~ [^a-zA-Z0-9\ ] ]] && echo OK [[ "$comment" =~ [^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-?:'('')'.+\ ] ]] && echo "Votre commentaire contient des charactères non autorisés." && exit 0 [[ -z "$comment" ]] && local comment="Transaction effectuee avec BoG." + [[ $amount =~ '-' ]] && echo "La somme de votre transaction ne peut être négative: **$amount** Ḡ1" && exit 0 + [[ $(echo $dest | wc -c) -le 43 ]] && local dest=$(getPubkey $dest) + [[ $dest == "none" ]] && echo "Ce pseudo ne correspond à aucun membre Ḡ1 connu." && exit 0 local result=$($silkaj --auth-file --file ~/.bog/ids/axiomchat/$chan/secret.dunikey tx --amount $amount --output $dest --comment "$comment" -y) - echo "\`\`\`$result\`\`\`" + [[ -n $result ]] && echo "\`\`\`$result\`\`\`" || echo "Une erreur est survenu, votre transaction n'a pas été effecutée." && exit 0 } -history() { +history_account() { local chan="$1" local homedir="$HOME/.bog/ids/axiomchat/$chan" source $homedir/db +# echo "$silkaj history $pubkey" local result=$($silkaj history $pubkey) echo "\`\`\`$result\`\`\`" } diff --git a/src/shell/g1-infos.sh b/src/shell/g1-infos.sh index 57ec490..5756cf3 100755 --- a/src/shell/g1-infos.sh +++ b/src/shell/g1-infos.sh @@ -7,36 +7,29 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized source $MY_PATH/functions.sh # Get Ḡ1 pubkey base on pseudo + pubkey() { - url="$node/wot/members" - args=$(echo $@ | tr ' ' '\n' | grep -v 'biz' | tr '\n' ' ') - [ $(echo $args | wc -w) -ge 3 ] && username=$(echo $args | awk '{ print $3 }') || username=$1 - username=$(echo $username | tr -d '@') -# old way: local pubkey=$(curl -m 5 -s $url | grep -wiB 1 $username | grep "pubkey" | awk -F '"' '{ print $4 }') - local pubkey=$(curl -m 5 -s $url | jq -r --arg username "$username" '.results[] | select(.uid==$username) | .pubkey') - [[ $pubkey ]] && echo "@$username Ta clé publique Ğ1 est: $pubkey" || echo "@$username n'est pas pseudo membre de la Ḡ1" + local args=$(echo $@ | tr ' ' '\n' | grep -v 'biz' | tr '\n' ' ') + [ $(echo $args | wc -w) -ge 3 ] && local username=$(echo $args | awk '{ print $3 }') || local username=$1 + local username=$(echo $username | tr -d '@') + local pubkey=$(getPubkey $@) + [[ $pubkey ]] && echo "@$username Ta clé publique Ğ1 est: $pubkey" || echo "@$username n'est pas un pseudo membre de la Ḡ1" } # Get Ḡ1 pseudo base on pubkey -pseudo() { - url="$node/wot/members" - args=$(echo $@ | tr ' ' '\n' | grep -v 'biz' | tr '\n' ' ') - [ $(echo $args | wc -w) -ge 2 ] && pubkey=$(echo $args | awk '{ print $2 }') || pubkey=$1 -# pubkey="$1" - pubkey=$(echo $pubkey | tr -d '@') -# old way: local pubkey=$(curl -m 5 -s $url | grep -wiB 1 $username | grep "pubkey" | awk -F '"' '{ print $4 }') - local pseudo=$(curl -m 5 -s $url | jq -r --arg pubkey "$pubkey" '.results[] | select(.pubkey==$pubkey) | .uid') - [[ $pseudo ]] && echo "Le pseudo correspondant à la clé publique $pubkey est: @$pseudo" || echo "La clé publique $pubkey n'a pas de pseudo associé." -} +pseudo() { getPseudo $@; } silkaj() { args=$(echo "$@" | tr ' ' '\n' | grep -vEw 'silkaj|biz' | tr '\n' ' ') - $silkaj $args || echo "Silkaj ne comprends cette commande." + cmd=$(echo $args | tr ' ' '\n' | grep -v '-' | head -n1) + [[ $cmd =~ ^(tx|authfile|cert)$ ]] && echo "BoḠ refuse d'executer la commande \`$cmd\` ... :eyes:" && exit 0 + result=$($silkaj $args) || echo "Silkaj ne comprends cette commande." + echo "\`\`\`$result\`\`\`" } membres() { url="$node/blockchain/current" - local nbr_membres=$(curl -m 5 -s $url | jq '.membersCount') + local nbr_membres=$(curl -m 10 -s $url | jq '.membersCount') [[ $nbr_membres ]] && echo "Il y a actuellement $nbr_membres membres de la Ğ1 !" || echo "Service en maintenance, réessayez dans un instant :coffee:" } diff --git a/src/shell/gbanque.sh b/src/shell/gbanque.sh index 413e9cb..030b2d9 100755 --- a/src/shell/gbanque.sh +++ b/src/shell/gbanque.sh @@ -28,7 +28,7 @@ init() { remove() { rm_account $dest; } info() { info_account $dest; } pay() { tx $dest $args; } -history() { history $dest; } +history() { history_account $dest; } [[ "$cmd" =~ ^(init|remove|info|pay|history)$ ]] && "$cmd" || echo "Veuillez indiquer une commande valide"