From 99a59a132586851c5d26afa8e48e7569a66489de Mon Sep 17 00:00:00 2001 From: qo-op Date: Sat, 21 Mar 2020 05:02:16 +0100 Subject: [PATCH] IPFS ZenTag passenger file & ssb INIT --- doc/images/zoran.png | Bin 0 -> 9663 bytes iptubes | 2 +- zen/g1_TX2ZEN.sh | 17 ++- zen/ssb_INIT.sh | 64 ++++++++ zen/tools/dunitey2secret.sh | 3 +- zen/zen_MAKE.sh | 50 +++--- zen/zen_PASSENGER_READ.sh | 72 +++++++++ zen/zen_READ.sh | 296 ------------------------------------ 8 files changed, 170 insertions(+), 334 deletions(-) create mode 100644 doc/images/zoran.png create mode 100755 zen/ssb_INIT.sh create mode 100755 zen/zen_PASSENGER_READ.sh delete mode 100755 zen/zen_READ.sh diff --git a/doc/images/zoran.png b/doc/images/zoran.png new file mode 100644 index 0000000000000000000000000000000000000000..a38af5145ccd08869abacd54ccd627cdc060db89 GIT binary patch literal 9663 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 G^#1@TK*{$2 literal 0 HcmV?d00001 diff --git a/iptubes b/iptubes index 3c360cf..06e1a72 160000 --- a/iptubes +++ b/iptubes @@ -1 +1 @@ -Subproject commit 3c360cfd585dfafb973012a33b7664c66a0b7501 +Subproject commit 06e1a72d039d478a3fcf1341c1f7db1cae75b0e9 diff --git a/zen/g1_TX2ZEN.sh b/zen/g1_TX2ZEN.sh index 5abb8ce..2769db9 100755 --- a/zen/g1_TX2ZEN.sh +++ b/zen/g1_TX2ZEN.sh @@ -16,14 +16,15 @@ echo " # ex: ./$ME \"10 days\" # SCAN NODE G1 Wallet FOR ZEN Command received (or pending) TX/IN ######################################################################## -# _(_)_ _(_)_ -# @@@@ (_)@(_) @@@@ (_)@(_) @@@@ -# @@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw -# @@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___) -# / Y \| / Y \| / Y -# \ | \ |/ | / \ | \ |/ | / \ | \ |/ -# \\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|/// -#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + _(_)_ _(_)_ + @@@@ (_)@(_) @@@@ (_)@(_) @@@@ + @@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw + @@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___) + / Y \| / Y \| / Y + \ | \ |/ | / \ | \ |/ | / \ | \ |/ + \\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|/// +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # [ASTROPORT](https://astroport.com) ######################################################################## " diff --git a/zen/ssb_INIT.sh b/zen/ssb_INIT.sh new file mode 100755 index 0000000..00d5601 --- /dev/null +++ b/zen/ssb_INIT.sh @@ -0,0 +1,64 @@ +#!/bin/bash +######################################################################## +# Author: Fred (support@qo-op.com) +# Version: 2020.03.21 +# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" +echo ' +######################################################################## +# \\/// +# qo-op +############# '$ME' +######################################################################## +# ex: ./'$ME' +# Initialize G1SSB account + IPFS Publish +######################################################################## + o__ __o __o o__ __o o__ __o o__ __o + /v v\ __|> /v v\ /v v\ <| v\ + /> <\ | /> <\ /> <\ / \ <\ + o/ _\o____ _\o____ \o/ o/ + <| _\__o__ | \_\__o__ \_\__o__ |__ _<| + \\ | < > \ \ | \ + \ / | \ / \ / / + o o o o o o o | o + <\__ __/> __|>_ <\__ __/> <\__ __/> / \ __/> + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# [ASTROPORT](https://astroport.com) +######################################################################## +' +############################################## +# NODE ENVIRONEMENT DETECTION +############################################## +IPFSNODEID=$(ipfs id -f='\n') +[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh +NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) + +# CREATE ~/.zen/wallets/.$IPFSNODEID/G1SSB +############################################## +[[ $IPFSNODEID == "" ]] && echo "ERROR missing IPFSNODEID NODE_G1PUBKEY" && exit 1 +mkdir -p ~/.zen/wallets/.$IPFSNODEID/G1SSB + +## PUBLISH ABOUT MESSAGE +############################################## +ssbpub=$(sbotc whoami | jq -r .id) +[[ $ssbpub == "" ]] && echo "ERROR missing ssb-server ?" && exit 1 +# G1 wallet QRCode +qrcodefile=~/.zen/wallets/.$IPFSNODEID/G1SSB/_g1.qrcode.png +qrencode -s 5 -o $qrcodefile "$NODE_G1PUBKEY" +# Publish About message +name=${qrcodefile##*/} +id="$(sbotc blobs.add < $qrcodefile)" +type="$(file -b --mime-type $qrcodefile)" +size="$(wc -c < $qrcodefile)" +# Publish About message +sbot publish --type about --about $ssbpub --description "Astroport G1SSB Node\nipfs ls /ipns/$IPFSNODEID" --name "$USER@$(cat /etc/hostname)" --image "$id" +sbotc publish '{"type":"post","text":"['"$name"']('"$id"')","mentions":[{"link":"'"$id"'","name":"'"$name"'","size":'"$size"',"type":"'"$type"'"}]}' + +# COPY NODE G1SSB ID to IPFS +echo "$ssbpub" > ~/.zen/wallets/.$IPFSNODEID/G1SSB/_ssb.whoami +echo "$NODE_G1PUBKEY" > ~/.zen/wallets/.$IPFSNODEID/G1SSB/_g1.pubkey + diff --git a/zen/tools/dunitey2secret.sh b/zen/tools/dunitey2secret.sh index b5d6aea..2888fb9 100755 --- a/zen/tools/dunitey2secret.sh +++ b/zen/tools/dunitey2secret.sh @@ -15,7 +15,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized DUNKEYFILE="$1" [[ ! ${DUNIKEYFILE} ]] && DUNKEYFILE="./secret.dunikey" [[ ! ${DUNIKEYFILE} ]] && DUNKEYFILE="~/.ssb/secret.dunikey" -[[ ! -f ${DUNIKEYFILE} ]] && exit +[[ ! -f ${DUNIKEYFILE} ]] && echo "ERROR secret.dunikey unfound" && exit 1 pub=$(cat ${DUNIKEYFILE} | grep "pub" | cut -d ' ' -f 2) priv=$(cat ${DUNIKEYFILE} | grep "sec" | cut -d ' ' -f 2) @@ -41,3 +41,4 @@ cat > ~/.ssb/secret.ssb < ) |_> > <_> ) | \/| | +(____ /____ > |__| |__| \____/| __/ \____/|__| |__| + \/ \/ |__| + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # [ASTROPORT](https://astroport.com) ######################################################################## -" +' ZEN="$1" # Zen amount TXHASH="$2" # G1 TX HASH PASSENGER="$3" # /path/file.ext to include into ZenTag (add to IPFS datastructure) @@ -34,7 +34,13 @@ READ="$4" # Zen amount asked to allow passenger reading PARK="$5" # Zen amount payed for IPFS PIN by passenger everyday [[ $READ == "" ]] && READ=1 [[ $PARK == "" ]] && PARK=10 - +[[ $ZEN == "" || $TXHASH == "" ]] && exit 1 +############################################## +# NODE ENVIRONEMENT DETECTION +############################################## +IPFSNODEID=$(ipfs id -f='\n') +[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh +NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) ######################################################################## # ZenTag is an IPFS/IPNS datastructure put into IPFS, publish # ~~~ Draft ~~~~ @@ -45,13 +51,14 @@ PARK="$5" # Zen amount payed for IPFS PIN by passenger everyday # _g1.node.creator # G1SSB wallet pubkey # _g1.issuer # G1TX ISSUER pubkey # _g1.txhash # G1TX HASH -# _ipfs.node.creatorcat /dev/ttyACM0 | while read line; do # NODE IPFS ID +# _ipfs.node.creatorcat # NODE IPFS ID # _ipfs.publishkey.BB.aes # BB SYMcypher of IPNS publish key # _ipfs.publishkey.crypt # G1SSB ASYMcypher of IPNS publish key # _tag.BB.sha # BB sha512sum # _tag.uid # ZenTag UID # _tag.zen # ZentTag balance # _ipns # /ipns/ address +# PASSENGER FILE OPTIONNAL # _passenger.filename # Passenger filename # _passenger.ipfs.crypt # G1SSB cyphered IPFS Passenger link # _passenger.read # Zen value asked for READING @@ -59,26 +66,13 @@ PARK="$5" # Zen amount payed for IPFS PIN by passenger everyday # TODO: Could be converted into yaml or json if you like ######################################################################## - # UNCOMMENT TO ACTIVATE (G1 <=> ZEN) STRICT RELATION #[[ ! -f ~/.zen/scan/zen.$TXHASH ]] && echo "ERROR# UNKNOWN TX $TXHASH !!" && exit 1 #ISSUER=$(cat ~/.zen/scan/zen.$TXHASH) #[[ $ISSUER == "" ]] && echo "ERROR# NO ISSUER FOUND FOR TX $TXHASH !!" && exit 1 -# IPFSNODEID ######################################################################## -IPFSNODEID=$(ipfs id -f='\n') -######################################################################## - -######################################################################## -# ~/.ssb/secret.dunikey => NODE_G1PUBKEY -######################################################################## -[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh -NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) -######################################################################## - -######################################################################## -# CREATE ZEN TAG => name AA + key BB +# CREATE ZEN TAG => name AA + key BB => ~/.zen/tag/${AAH} ######################################################################## AA=$(echo $($MY_PATH/tools/diceware.sh 6 | xargs) | sed s/\ /_/g ) # ZenTag Name = Diceware_6_words AAH=$(echo -n ${AA} | sha256sum | cut -d ' ' -f 1) # ZenTag Name SHA256 diff --git a/zen/zen_PASSENGER_READ.sh b/zen/zen_PASSENGER_READ.sh new file mode 100755 index 0000000..8fe6138 --- /dev/null +++ b/zen/zen_PASSENGER_READ.sh @@ -0,0 +1,72 @@ +#!/bin/bash +######################################################################## +# Author: Fred (support@qo-op.com) +# Version: 2020.03.20 +# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" +echo ' +######################################################################## +# \\/// +# qo-op +############# '$ME' QREAD QWRITE +######################################################################## +# ex: ./'$ME' RJ:AAH#JR BJ:BB#JW +# RQR=RAAH#JR PASSENGER ZenTag read with WQR=BB#JW ZenTag +######################################################################## + + /| + = = = / | + ____| || || |____/ | -_-_-_-_-_-_ +|)----| || || |____ | AH + (( | || || | ))\ | _-_-_-_-_-_- + \\_|_||_||_|_// \ | + \___________/ \| + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# [ASTROPORT](https://astroport.com) +######################################################################## +' +QREAD="$1" +QWRITE="$2" +############################################## +# NODE ENVIRONEMENT DETECTION +############################################## +IPFSNODEID=$(ipfs id -f='\n') +[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh +NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) + +############################################################### +# ZenTag READ Passenger with ZenTag WRITE + +# Check ZenTag +[[ $(echo $QREAD | cut -d ":" -f 1) != "RJ" ]] && echo "ERROR BAD $QREAD" && exit 1 +[[ $(echo $QWRITE | cut -d ":" -f 1) != "BJ" ]] && echo "ERROR BAD $QWRITE" && exit 1 + +# Get ZenTag READ +RQR=$(echo $QREAD | cut -d ":" -f 2) +RAAH=$(echo $RQR | cut -d "#" -f 1) +if [[ ! -d ~/.zen/tag/$RAAH ]]; then + mkdir -p ~/.zen/tag/$RAAH + RJ=$(echo $RQR | cut -d "#" -f 2) + ipfs get -o ~/.zen/tag/$RAAH /ipns/$RJ +fi + +PASSENGERNAME=$(cat ~/.zen/tag/$RAAH/_passenger.filename) +READPRICE=$(cat ~/.zen/tag/$RAAH/_passenger.read) + + +# Get ZenTag WRITE +WQR=$(echo $QWRITE | cut -d ":" -f 2) +BB=$(echo $WQR | cut -d "#" -f 1) +WJ=$(echo $WQR | cut -d "#" -f 2) +if [[ ! -d ~/.zen/tag/$RAAH ]]; then + mkdir -p ~/.zen/tag/$RAAH + + ipfs get -o ~/.zen/tag/$RAAH /ipns/$RJ +fi + + +./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$SWARM_G1AUTHFILE" diff --git a/zen/zen_READ.sh b/zen/zen_READ.sh deleted file mode 100755 index 973d800..0000000 --- a/zen/zen_READ.sh +++ /dev/null @@ -1,296 +0,0 @@ -#!/bin/bash -######################################################################## -# Author: Fred (support@qo-op.com) -# Version: 2020.03.20 -# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) -######################################################################## -MY_PATH="`dirname \"$0\"`" # relative -MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized -ME="${0##*/}" -echo " -######################################################################## -# \\/// -# qo-op -############# $ME QREAD QWRITE -######################################################################## -# ex: ./$ME RJ:AAH#J1 BJ:BB#J2 -# Apply READ value before allow PASSENGER ipfs decoding -######################################################################## -# _(_)_ _(_)_ -# @@@@ (_)@(_) @@@@ (_)@(_) @@@@ -# @@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw -# @@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___) -# / Y \| / Y \| / Y -# \ | \ |/ | / \ | \ |/ | / \ | \ |/ -# \\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|/// -#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -# [ASTROPORT](https://astroport.com) -######################################################################## -" -QREAD="$1" -QWRITE="$2" - - -############################################## -# NODE ENVIRONEMENT DETECTION -############################################## -IPFSNODEID=$(ipfs id -f='\n') -[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh -NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) - -############################################## -# TABLEAU MEMOIRE DE SCAN -declare -a act -declare -a obj -declare -a val - -cat /dev/ttyACM0 | while read line; do - kill $clockpid - - lon=${#line} - pref=$(echo $line | cut -d ":" -f 1) - qrvalue=$(echo $line | cut -d ":" -f 2) - log "__SUB:tag_READ_X.sh: SCAN /dev/ttyACM0 ($lon) :: $line" - - case $pref in - RJ) - R=$(echo $qrvalue | cut -d '#' -f 1) - J=$(echo $qrvalue | cut -d '#' -f 2) - log "__SUB:tag_READ_X.sh: Lecture G1Tag $R $J" - # IPFS READ - ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id"); - if [[ "$ID" == "" ]]; then - ./shell/tools/4LETTER.scroll.py ">> BAD G1TAG <<" - continue - fi - # Get First R Tag name word and remove space for RR - FID=$(echo $ID | awk '{print toupper($1)}') - RR=$(echo $ID | sed s/\ //g) - - ./shell/tools/4LETTER.scroll.py "${#act[@]} $FID > " - RVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount"); - CURRENCY=$(su $YOU -c "ipfs cat /ipns/$J/TAG_currency" | awk '{print tolower($1)}') - - PASSENGER=$(su $YOU -c "ipfs cat /ipns/$J/TAG_passenger"); - if [[ "$PASSENGER" != "" ]]; then - ./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $RVALUE ZEN" - else - G1VAL=$(bc -l <<< "scale=2; $RVALUE / 100" | cut -d '.' -f 1) - log "__SUB:tag_READ_X.sh: G1Tag $FID. Valeur $RVALUE $CURRENCY = $G1VAL G1" - ./shell/tools/4LETTER.scroll.py "$RVALUE ZEN *** $G1VAL G1" - fi - cmd="RJ" - CASHBACK="" - val+=("$RVALUE") - ;; - - BJ) - BB=$(echo $qrvalue | cut -d '#' -f 1) - J=$(echo $qrvalue | cut -d '#' -f 2) - log "__SUB:tag_READ_X.sh: Ouverture G1Tag $BB $J" - # - ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id"); - if [[ "$ID" == "" ]]; then - ./shell/tools/4LETTER.scroll.py ">> BAD G1TAG <<" - continue - fi - FID=$(echo $ID | awk '{print toupper($1)}') - RR=$(echo $ID | sed s/\ //g) - - ./shell/tools/4LETTER.scroll.py "${#act[@]} $FID TX >>" - BVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount") - CURRENCY=$(su $YOU -c "ipfs cat /ipns/$J/TAG_currency" | awk '{print tolower($1)}') - - PASSENGER=$(su $YOU -c "ipfs cat /ipns/$J/TAG_passenger"); - # DIG PUBLISHING KEY - if [[ -f /home/$YOU/.ipfs/keystore/$RR ]]; then - log "__SUB:tag_READ_X.sh: Clef de publication IPFS $RR déjà présente" - else - rm /tmp/TAG_publishkey.B.gpg - su $YOU -c "ipfs get -o /tmp/ /ipns/$J/TAG_publishkey.B.gpg" - ./shell/tools/4LETTER.scroll.py "** GPG **" - gpg -d --output /tmp/ipns.key --pinentry-mode=loopback --passphrase $BB /tmp/TAG_publishkey.B.gpg - # CHECK IF OK - if [[ ! -f /tmp/ipns.key ]]; then - ./shell/tools/4LETTER.scroll.py ">> BAD GPG KEY <<" - continue - fi - mv /tmp/ipns.key /home/$YOU/.ipfs/keystore/$RR - log "__SUB:tag_READ_X.sh: Récupération de la clef de publication $RR" - fi - if [[ "$PASSENGER" != "" ]]; then - log "__SUB:tag_READ_X.sh: !!!! $FID REC Tag = $BVALUE $CURRENCY" - ./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $BVALUE ZEN" - else - G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1) - log "__SUB:tag_READ_X.sh: Ce G1 Tag $FID contient $BVALUE $CURRENCY" - ./shell/tools/4LETTER.scroll.py "$BVALUE ZEN *** $G1VAL G1 MAX" - fi - cmd="BJ" - val+=("$BVALUE") - ;; - - *) - if [[ $lon -eq 44 ]]; then - ./shell/tools/4LETTER.scroll.py "PORTEFEUILLE G1 >>>>>>>> ${#act[@]}" & - J=$qrvalue - if [[ "$J" != "${obj[0]}" ]]; then - VALUE=$(./shell/timeout.sh -t 25 ./silkaj/silkaj amount $J) - - if [[ "$(echo $VALUE | cut -d ':' -f 1)" != "Error" && "$VALUE" != "" ]]; then - log "__SUB:tag_READ_X.sh: Ce compte monnaie libre contient $VALUE G1" - NOPOINT=$(echo $VALUE | cut -d '.' -f 1) - ./shell/tools/4LETTER.scroll.py " $NOPOINT G1 *** $NOPOINT G1 " - CASHBACK="$J" - cmd="G1" - val+=("$VALUE") - else - if [[ "$VALUE" == "" ]]; then - DUNITER=$(./shell/checknodes.sh 'BAN') - log "__SUB:tag_READ_X.sh: ERREUR TIMEOUT. CHANGE SILKAJ SERVER: $DUNITER" - ./shell/tools/4LETTER.scroll.py "ERREUR TIMEOUT SILKAJ" - ./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py - CASHBACK="" - else - log "__SUB:tag_READ_X.sh: ERREUR QRCODE ILLISIBLE. longueur $J = ${#J}" - ./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU" - ./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py - CASHBACK="" - fi - fi - else - ./shell/tools/4LETTER.scroll.py " 2 X " - fi - else - ./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU" - fi - - ;; - - esac - - ############################################################### - # APRES G1 CASHBACK : G1 Tag BJ WRITE => ENCAISSEMENT - if [[ "${cmd}" == "BJ" && "$CASHBACK" != "" && -f /home/$YOU/.ipfs/keystore/${RR} ]]; then - ./shell/tools/4LETTER.scroll.py "ZEN -> G1" - log "__SUB:tag_READ_X.sh: G1 tag de $BVALUE G1 ! /ipns/$J Virement vers $CASHBACK? " - - ./shell/tools/4LETTER.spinner.py & - spinnerpid=$! - - # ipfs get G1Tag vers ./TAG/${RR} - mkdir -p ./TAG/${RR}; rm -f ./TAG/${RR}/*; chown -R $YOU ./TAG/${RR}/ - log "__SUB:tag_READ_X.sh: ipfs get --output=./TAG/${RR} /ipns/$J" - su $YOU -c "ipfs get --output=./TAG/${RR} /ipns/$J" - - if [[ $(cat ./TAG/${RR}/TAG_passenger) != "" ]]; then ./shell/tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER $BVALUE ZEN"; continue; fi - - # Make Silkaj TX - G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1) - log "__SUB:tag_READ_X.sh: Silkaj TX $SWARM_G1AUTHFILE ($G1VAL) -> $CASHBACK" - PAY=$(./silkaj/silkaj transaction --auth-file -file="$SWARM_G1AUTHFILE" --amount=$G1VAL --output=$CASHBACK --comment="[G1sms+] G1Tag $RR ZEN -> G1" -y) - - log "__SUB:tag_READ_X.sh: Silkaj output = $PAY" - # Stop 1LETTER.spinner.py - kill $spinnerpid - - if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" && "$PAY" != "" ]]; then - new=$(./shell/checknodes.sh "BAN") - sms_ERROR "$ADMINPHONE" "Il est survenu un problème avec un virement. Retour silkaj: $PAY ... $new"; - ./shell/tools/4LETTER.scroll.py "ERREUR SILKAJ ERREUR" - else - # ENCAISSEMENT G1Tag - ./shell/tools/4LETTER.scroll.py "VIR ${FID} $G1VAL G1 -> OK " - # CAPTURE / DESTRUCTION du G1 Tag - echo "0" > "./TAG/${RR}/TAG_amount" - echo "${J}" > "./TAG/${RR}/TAG_ipns" - - # Iterate - if [[ -f ./TAG/${RR}/TAG_n ]]; then NN=$(cat ./TAG/${RR}/TAG_n); ((NN++)); else NN=0; fi - - # TAG_actions - echo "$NN" > "./TAG/${RR}/TAG_n" - echo "${NANODATE}" > "./TAG/${RR}/TAG_nanodate" - echo "${IPFSNODEID}" > "./TAG/${RR}/TAG_writerid" - - # EMPTY G1TAG ID AND REMOVE PUBLISHKEYS - echo "" > "./TAG/${RR}/TAG_id" - rm -f ./TAG/TAG_publishkey.* - - log "__SUB:tag_READ_X.sh: Destruction G1Tag TAG_id $NN.${NANODATE} (par NODE ${IPFSNODEID}) => Value = 0" - I=$(su $YOU -c "ipfs add -qr ./TAG/${RR} | tail -n 1") - # TAG_chain - echo "$I" > "./TAG/${RR}/TAG_chain" - I=$(su $YOU -c "ipfs add -qr ./TAG/${RR} | tail -n 1") - # IPNS $RR PUBLISH - J=$(su $YOU -c "ipfs name publish -k ${RR} --quieter /ipfs/${I}") - - log "__SUB:tag_READ_X.sh: Destruction de ce G1 Tag publish -k ${RR} --quieter /ipfs/${I} :: ipfs ls /ipns/$J" - ./shell/tools/4LETTER.scroll.py "DETRUIRE G1TAG ${FID}" - - # CLEAN IPFS keystore: remove NOT created NODE keys - SOURCENODEID=$(cat "./TAG/${RR}/TAG_nodeid") - if [[ "${SOURCENODEID}" != "${IPFSNODEID}" ]]; then - rm -f /home/$YOU/.ipfs/keystore/${RR} - fi - fi - else - # AJOUT MEMOIRE SCAN - ./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py - act+=("$cmd") - obj+=("$J") - fi - - - # FLUSH MEMOIRE 2 SCAN - if [[ ${#act[@]} -eq 2 ]]; then - echo "${act[@]}" - echo "${obj[@]}" - echo "${val[@]}" - ############################################################### - # PRESENTATION RJ puis BJ différents Tag WRITE = TRANSFERT G1 TAG - if [[ "${act[0]}" == "RJ" && "${act[1]}" == "BJ" && "${obj[0]}" != "${obj[1]}" ]]; then - PASSENGER=$(su $YOU -c "ipfs cat /ipns/${obj[1]}/TAG_passenger"); - if [[ "$PASSENGER" != "" ]]; then - ./shell/tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER"; - else - ########################################################### - # READ KEYBOARD VALUE !!! 4 DIGIT REMOVING LEADING 0 - COMBIEN=$(./shell/tools/matrixKeypad.py | sed 's/^0*//') - if [[ $COMBIEN -le ${val[1]} ]]; then - COMBIENZEN=$(bc -l <<< "$COMBIEN * 100") - log "__SUB:tag_READ_X.sh: Transfert de G1 Tag à G1 Tag. $COMBIEN" - ./shell/tools/4LETTER.scroll.py "G1TAG ${FID} -> TX $COMBIENZEN ZEN *** $COMBIEN G1" - log "__SUB:tag_READ_X.sh: ./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN $SWARM_G1AUTHFILE" - ./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$SWARM_G1AUTHFILE" - else - ./shell/tools/4LETTER.scroll.py "ERREUR $COMBIEN > VALEUR DE ${FID} *** ${val[1]} ZEN" - fi - fi - CASHBACK="" - fi - ############################################################### - # PRESENTATION BJ identiques TRANSFORMATION G1 TAG en REC TAG - if [[ "${act[0]}" == "BJ" && "${act[1]}" == "BJ" && "${obj[0]}" == "${obj[1]}" ]]; then - PASSENGER=$(su $YOU -c "ipfs cat /ipns/${obj[0]}/TAG_passenger"); - if [[ "$PASSENGER" != "" ]]; then - ./shell/tools/4LETTER.scroll.py "DEJA TAG PASSENGER"; - else - log "__SUB:tag_READ_X.sh: Transformation du G1 Tag en Rec Tag. ${val[0]} = ${val[1]}" - ./shell/tools/4LETTER.scroll.py "TRASNFORMATION G1TAG ${val[0]} ZEN EN PASSENGER ${FID}"; - log "__SUB:tag_READ_X.sh: $(./shell/tag_OP.sh ${obj[0]} ${obj[0]} 0 $SWARM_G1AUTHFILE)" - fi - CASHBACK="" - fi - - act=() - obj=() - val=() - # END OF 2-PASS READ - ./shell/timeout.sh -t 2 ./shell/tools/4LETTER.spinner.py - fi - - ./shell/tools/4LETTER.blink.py - ./shell/tools/4LETTER.clock.py & - clockpid=$! -done