From 8edca7d4414f1357d467356f457f2ee09e9b05b0 Mon Sep 17 00:00:00 2001 From: poka Date: Wed, 22 Jul 2020 21:12:27 +0200 Subject: [PATCH] Add pay meca --- src/shell/functions.sh | 62 ++++++++++++++++++++++++++++++++---------- src/shell/g1-infos.sh | 10 +++++-- src/shell/gbanque.sh | 27 ++++++------------ 3 files changed, 64 insertions(+), 35 deletions(-) diff --git a/src/shell/functions.sh b/src/shell/functions.sh index ee77ff2..88549ae 100755 --- a/src/shell/functions.sh +++ b/src/shell/functions.sh @@ -6,8 +6,8 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized [[ -n $MY_PATH/.env ]] && source $MY_PATH/.env || (echo "Please create $MY_PATH/.env as $MY_PATH/.env.example" && exit 1) sendmsg() { - chan="$1" - msg="${@:2}" + local chan="$1" + local msg="${@:2}" [[ ! $chan || ! $msg ]] && echo "Please select user and message." && exit 0 @@ -19,35 +19,41 @@ sendmsg() { } info_account() { - chan="$1" + local chan="$1" [[ ! $chan ]] && echo "Please select user." && exit 0 - homedir="$HOME/.bog/ids/axiomchat/$chan" + local homedir="$HOME/.bog/ids/axiomchat/$chan" if [[ -d $homedir ]]; then source $homedir/db - echo "Voici les identifiants de connexion de votre ḠCompte:" - echo -e "Login: **$salt**\nMot de passe: **$pepper**\nClé publique: **$pubkey**" + sendmsg $chan "Voici les identifiants de connexion de votre ḠCompte: \n \ +Login: **$salt**\nMot de passe: **$pepper**\nClé publique: **$pubkey** \n \ +Calcul du solde de votre compte en cours ..." + + local solde=$($silkaj balance $pubkey | grep "Total Quantitative" | awk -F= '{ print $2 }' | cut -c2-) + echo "Votre solde est de **$solde**" else echo "Vous n'avez pas de compte chez nous." fi } init_account() { - chan="$1" + local chan="$1" [[ ! $chan ]] && echo "Please select user." && exit 0 - homedir="$HOME/.bog/ids/axiomchat/$chan" + local homedir="$HOME/.bog/ids/axiomchat/$chan" if [[ -f $homedir/secret.dunikey ]]; then pubkey=$(cat $homedir/secret.dunikey| grep "pub: " | awk '{ print $2 }') echo "Vous disposez déjà d'un portefeuille Ḡ1: **$pubkey**" exit 0 + else + sendmsg $dest "Création de votre portefeuille..." fi # LOGIN (=SALT) - salt="$($MY_PATH/../dunikey/diceware.sh 6)" + local salt="$($MY_PATH/../dunikey/diceware.sh 6)" # PASS (=PEPPER) - pepper="$($MY_PATH/../dunikey/diceware.sh 4)" + local pepper="$($MY_PATH/../dunikey/diceware.sh 4)" # The pubkey for this salt/papper peer - pubkey=$(python3 $MY_PATH/../dunikey/key_create_dunikey.py "$salt" "$pepper") + local pubkey=$(python3 $MY_PATH/../dunikey/key_create_dunikey.py "$salt" "$pepper") [[ ! -f /tmp/secret.dunikey ]] && echo "Arf, problem happens making your secret.dunikey" && exit 0 [[ ! -d $homedir ]] && mkdir -p $homedir @@ -55,14 +61,14 @@ init_account() { echo -e "salt=\"$salt\"\npepper=\"$pepper\"\npubkey=\"$pubkey\"" > $homedir/db - info_account $chan -# echo "Pubkey: **$pubkey**" +# info_account $chan + echo -e "Votre ḠCompte a bien été créé.\nPubkey: **$pubkey**" } rm_account() { - chan="$1" + local chan="$1" [[ ! $chan ]] && echo "Please select user." && exit 0 - homedir="$HOME/.bog/ids/axiomchat/$chan" + local homedir="$HOME/.bog/ids/axiomchat/$chan" if [[ -d $homedir ]]; then source $homedir/db @@ -75,4 +81,30 @@ rm_account() { fi } +tx() { + local chan="$1" + local dest="$2" + local amount=$(echo "$3" | tr ',' '.') + local comment="${@:4}" + local homedir="$HOME/.bog/ids/axiomchat/$chan" + + ! [[ $dest && $amount ]] && echo "Des arguments sont manquants. Ex: pay Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3p 10 Merci pour la tarte" && exit 0 + + #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." + + local result=$($silkaj --auth-file --file ~/.bog/ids/axiomchat/$chan/secret.dunikey tx --amount $amount --output $dest --comment "$comment" -y) + echo "\`\`\`$result\`\`\`" +} + +history() { + local chan="$1" + local homedir="$HOME/.bog/ids/axiomchat/$chan" + source $homedir/db + + local result=$($silkaj history $pubkey) + echo "\`\`\`$result\`\`\`" +} + #[[ $(type $@ | grep "est une fonction") ]] && $@ || echo "Veuillez préciser votre commande" diff --git a/src/shell/g1-infos.sh b/src/shell/g1-infos.sh index 6d3a200..57ec490 100755 --- a/src/shell/g1-infos.sh +++ b/src/shell/g1-infos.sh @@ -1,7 +1,12 @@ #!/bin/bash -node="http://192.168.9.54:45000" +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +[[ -n $MY_PATH/.env ]] && source $MY_PATH/.env || (echo "Please create $MY_PATH/.env as $MY_PATH/.env.example" && exit 1) +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' ' ') @@ -12,6 +17,7 @@ pubkey() { [[ $pubkey ]] && echo "@$username Ta clé publique Ğ1 est: $pubkey" || echo "@$username n'est pas 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' ' ') @@ -25,7 +31,7 @@ pseudo() { silkaj() { args=$(echo "$@" | tr ' ' '\n' | grep -vEw 'silkaj|biz' | tr '\n' ' ') - /usr/bin/silkaj $args || echo "Silkaj ne comprends cette commande." + $silkaj $args || echo "Silkaj ne comprends cette commande." } membres() { diff --git a/src/shell/gbanque.sh b/src/shell/gbanque.sh index 95e76b7..413e9cb 100755 --- a/src/shell/gbanque.sh +++ b/src/shell/gbanque.sh @@ -5,24 +5,19 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized source $MY_PATH/functions.sh -#args=$(echo "$@" | tr ' ' '\n' | grep -vEwi 'gbanque|gb|biz' | tr '\n' ' ') args=$(echo "$@" | awk -F '~~~' '{ print $2 }' | tr ' ' '\n' | grep -vEwi 'gbanque|gb|biz' | tr '\n' ' ') -cmd=$(echo $args | awk '{ print $1 }') -user=$(echo $@ | awk -F '~~~' '{ print $3 }') -room=$(echo $@ | awk -F '~~~' '{ print $4 }') +cmd=$(echo "$args" | awk '{ print $1 }') +args=$(echo "$args" | awk '{$1=""; print $0}') +user=$(echo "$@" | awk -F '~~~' '{ print $3 }') +room=$(echo "$@" | awk -F '~~~' '{ print $4 }') [[ $room == "undefined" ]] && dest="@$user" || dest="#$room" -test() { - echo "Je suis là." -} - init() { ## Récupération depuis Ḡ1SMS ## ./shell/sms_NEW.sh "$PHONE" "$MEMBERUID" & ## ./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$PHONE" -password="$PIN" - sendmsg $dest "Création de votre portefeuille..." # echo "Cette conversation continue en privé @$user - @biz" ## TODO: Définir le workflow g1sms @@ -30,15 +25,11 @@ init() { } -remove() { - rm_account $dest -} +remove() { rm_account $dest; } +info() { info_account $dest; } +pay() { tx $dest $args; } +history() { history $dest; } -info() { - info_account $dest -} - -[[ "$cmd" =~ ^(init|remove|info)$ ]] && $cmd || echo "Veuillez indiquer une commande valide" -#[[ $(type $cmd | grep "est une fonction") ]] && $cmd || echo "Veuillez préciser votre commande" +[[ "$cmd" =~ ^(init|remove|info|pay|history)$ ]] && "$cmd" || echo "Veuillez indiquer une commande valide" exit 0