From 9d9172b4b61be4eeb8eedab98589ece992088687 Mon Sep 17 00:00:00 2001 From: qo-op Date: Fri, 20 Mar 2020 18:37:56 +0100 Subject: [PATCH] g1_TX2ZEN.sh zen_MAKE.sh zen_READ.sh --- iptubes | 2 +- zen/{zen_G1TXtoZenTag.sh => g1_TX2ZEN.sh} | 52 ++++++++-------- zen/zen_MAKE.sh | 62 ++++++++++++------- zen/zen_READ.sh | 72 +++++++++++------------ 4 files changed, 102 insertions(+), 86 deletions(-) rename zen/{zen_G1TXtoZenTag.sh => g1_TX2ZEN.sh} (86%) diff --git a/iptubes b/iptubes index 0f2cf9f..06e1a72 160000 --- a/iptubes +++ b/iptubes @@ -1 +1 @@ -Subproject commit 0f2cf9f36d5653f3b7c836c6b2ceb9a09b737216 +Subproject commit 06e1a72d039d478a3fcf1341c1f7db1cae75b0e9 diff --git a/zen/zen_G1TXtoZenTag.sh b/zen/g1_TX2ZEN.sh similarity index 86% rename from zen/zen_G1TXtoZenTag.sh rename to zen/g1_TX2ZEN.sh index bfb3c25..5abb8ce 100755 --- a/zen/zen_G1TXtoZenTag.sh +++ b/zen/g1_TX2ZEN.sh @@ -4,12 +4,17 @@ # Version: 1.0 # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) ######################################################################## -# == Transform incoming G1 TX into IPFS ZenTAG == -# SCAN NODE G1 Wallet FOR "ZEN" Command received (or pending) TX/IN +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" +echo " ######################################################################## # \\/// # qo-op -############# +############# $ME DELAY +######################################################################## +# ex: ./$ME \"10 days\" +# SCAN NODE G1 Wallet FOR ZEN Command received (or pending) TX/IN ######################################################################## # _(_)_ _(_)_ # @@@@ (_)@(_) @@@@ (_)@(_) @@@@ @@ -21,17 +26,12 @@ #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # [ASTROPORT](https://astroport.com) ######################################################################## -MY_PATH="`dirname \"$0\"`" # relative -MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized -ME="${0##*/}" -######################################################################## - -if [[ ! $(which silkaj) ]]; then - echo "$USER please Install SILKAJ !!" && exit 1 -fi +" +DELAY="$1" # GET DUNITER SERVER -DUNITERURL="https://$($MY_PATH/tools/duniter_getnode.sh)" +DUNITERNODE=$($MY_PATH/tools/duniter_getnode.sh) +DUNITERURL="https://$DUNITERNODE" IPFSNODEID=$(ipfs id -f='\n') [[ $IPFSNODEID == "" ]] && echo "$USER Please Install IPFS !!" && exit 1 @@ -41,7 +41,6 @@ IPFSNODEID=$(ipfs id -f='\n') ######################################################################################################### # GET G1 PUBKEY FROM SCUTTLEBUTT or $2 (DEBUG) -DELAY=$1 [[ $DELAY == "" ]] && DELAY="30 days" && echo "*** HELP ***" && echo "./$ME \"duration\" (default $DELAY)" && echo "************" && echo DELAYUNIT=$(echo $DELAY | cut -d ' ' -f 2) @@ -64,14 +63,17 @@ fi [[ "$NODE_G1PUBKEY" == "" ]] && echo "$USER Missing ~/.ssb/secret : Please Install Scuttlebutt server !" && exit 1; ######################################################################################################### -echo "CHECKING G1WALLET LAST TX/IN ($DELAY)" echo "=======================================" -echo "DUNITER URL = $DUNITERURL" +echo "IPFS ID = $IPFSNODEID" + echo "G1 PUBKEY = $NODE_G1PUBKEY" echo "SSB ID = %$ssbpub.ed25519" -echo "IPFS ID = $IPFSNODEID" -# SPECIAL ONE LINE BASH BONUS -# HOW MUCH = silkaj -p $($MY_PATH/tools/duniter_getnode.sh) balance $(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)" +echo " +############################################# +# GET G1 WALLET AMOUNT +silkaj -p $DUNITERNODE balance $NODE_G1PUBKEY +#############################################" +echo "Checking G1 Wallet received TX ($DELAY) for ZEN command" # PREPARE TIMESTAMP LIMITS TIMEBEFORE=$(date -u --date="-$DELAY" +"%s") @@ -109,11 +111,9 @@ if [[ $DELAYUNIT != "minutes" && $DELAYUNIT != "minute" ]]; then ###### CREATE ZEN VALUE IN IPFS ######### [[ $CMD == "ZEN" ]] && $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER ############################################ - echo "DEBUG! $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER" - ############################################ - else +# else # STILL OLD TX - [[ $TXhash != "" ]] && echo "ALREADY TREATED TX/IN: $TXhash $(cat ~/.zen/scan/zen.$TXhash)" || echo "NO TX" +# [[ $TXhash != "" ]] && echo "ALREADY TREATED TX/IN: $TXhash $(cat ~/.zen/scan/zen.$TXhash)" || echo "NO TX" fi ((line++)) done @@ -142,12 +142,12 @@ else ###### CREATE ZEN VALUE IN IPFS ######### [[ $CMD == "ZEN" ]] && $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER ############################################ - echo "DEBUG! $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER" - ############################################ - else +# else # STILL OLD TX - [[ $TXhash != "" ]] && echo "ALREADY TREATED TX/IN: $TXhash $(cat ~/.zen/scan/zen.$TXhash)" || echo "NO TX" +# [[ $TXhash != "" ]] && echo "ALREADY TREATED TX/IN: $TXhash $(cat ~/.zen/scan/zen.$TXhash)" || echo "NO TX" fi ((line++)) done fi +echo "FINISH" +exit 0 diff --git a/zen/zen_MAKE.sh b/zen/zen_MAKE.sh index 0bca472..8e61a98 100755 --- a/zen/zen_MAKE.sh +++ b/zen/zen_MAKE.sh @@ -6,15 +6,35 @@ ######################################################################## MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" +echo " ######################################################################## # \\/// # qo-op -############# -########################## +############# $ME ZEN TXHASH PASSENGER READZEN PARKZEN ######################################################################## -# ./zen_MAKE.sh $ZEN $TXHASH -# Create ~/.zen/tag/... & IPNS key publish +# ex: ./$ME 1000 TEST ./myfile.wav 1 10 +# IPFS DATASTRUCTURE ~/.zen/tag/sha256sum(_tag.uid) ######################################################################## +# _(_)_ _(_)_ +# @@@@ (_)@(_) @@@@ (_)@(_) @@@@ +# @@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw +# @@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___) +# / Y \| / Y \| / Y +# \ | \ |/ | / \ | \ |/ | / \ | \ |/ +# \\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|/// +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# [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) +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 + ######################################################################## # ZenTag is an IPFS/IPNS datastructure put into IPFS, publish # ~~~ Draft ~~~~ @@ -25,25 +45,23 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized # _g1.node.creator # G1SSB wallet pubkey # _g1.issuer # G1TX ISSUER pubkey # _g1.txhash # G1TX HASH -# _ipfs.node.creator # NODE IPFS ID +# _ipfs.node.creatorcat /dev/ttyACM0 | while read line; do # 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 sha256sum +# _tag.BB.sha # BB sha512sum # _tag.uid # ZenTag UID # _tag.zen # ZentTag balance # _ipns # /ipns/ address # _passenger.filename # Passenger filename # _passenger.ipfs.crypt # G1SSB cyphered IPFS Passenger link +# _passenger.read # Zen value asked for READING +# _passenger.park # Zen value paid for PARKING # TODO: Could be converted into yaml or json if you like ######################################################################## -ZEN="$1" # Zen amount -TXHASH="$2" # G1 TX HASH -PASSENGER="$3" # /path/file.ext to include into ZenTag (add to IPFS datastructure) -# ACTIVATE G1 <=> ZEN STRICT RELATION -# G1TX HASH CONTROL + +# UNCOMMENT TO ACTIVATE (G1 <=> ZEN) STRICT RELATION #[[ ! -f ~/.zen/scan/zen.$TXHASH ]] && echo "ERROR# UNKNOWN TX $TXHASH !!" && exit 1 -# G1TX ISSUER CONTROL #ISSUER=$(cat ~/.zen/scan/zen.$TXHASH) #[[ $ISSUER == "" ]] && echo "ERROR# NO ISSUER FOUND FOR TX $TXHASH !!" && exit 1 @@ -72,7 +90,7 @@ done # PASSWORD FOR WRITE ACTION BB=$($MY_PATH/tools/diceware.sh 4 | xargs); -BBH=$(echo -n "$BB" | sha256sum | cut -d ' ' -f 1) +BBH=$(echo -n "$BB" | sha512sum | cut -d ' ' -f 1) ######################################################################## # CREATE ZENTAG FILES DATA STRUCTURE @@ -103,11 +121,11 @@ $MY_PATH/tools/natools.py encrypt -p $NODE_G1PUBKEY -i ~/.ipfs/keystore/${AA}.ke ####################################################################### # Symetric Encrypt and Decrypt with openssl -# openssl aes-256-cbc -k "$BB" -salt -in file -out file.aes # Encrypt -# openssl aes-256-cbc -k "$BB" -d -salt -in file.aes -out file # Decrypt -# tar zip and encrypt a whole directory # -# tar -zcf - directory | openssl aes-128-cbc -k "$BB" -salt -out directory.tar.gz.aes # Encrypt -# openssl aes-128-cbc -k "$BB" -d -salt -in directory.tar.gz.aes | tar -xz -f - # Decrypt +# openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in file -out file.aes # Encrypt +# openssl aes-256-cbc -pbkdf2 -k "$BB" -d -salt -in file.aes -out file # Decrypt +# tar.gz and encrypt a whole directory # +# tar -zcf - directory | openssl aes-128-cbc -pbkdf2 -k "$BB" -salt -out directory.tar.gz.aes # Encrypt +# openssl aes-128-cbc -pbkdf2 -k "$BB" -d -salt -in directory.tar.gz.aes | tar -xz -f - # Decrypt ####################################################################### # [[ -f $PASSENGER ]] && openssl aes-256-cbc -k "$BB" -salt -in $PASSENGER -out ~/.zen/tag/${AAH}/passenger.aes # [[ -d $PASSENGER ]] && tar -zcf - $PASSENGER | openssl aes-128-cbc -k "$BB" -salt -out ~/.zen/tag/${AAH}/passenger.tgz.aes @@ -123,11 +141,14 @@ if [[ -f $PASSENGER ]]; then openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in ~/.zen/tag/${AAH}/_passenger.ipfs -out ~/.zen/tag/${AAH}/_passenger.ipfs.BB.aes # Delete cleartext _passenger.ipfs rm -r ~/.zen/tag/${AAH}/_passenger.ipfs + # FILE ZEN ECONOMY + echo "$READ" > ~/.zen/tag/${AAH}/_passenger.read + echo "$PARK" > ~/.zen/tag/${AAH}/_passenger.park fi echo " ################################################################## -# READ PASSENGER $PASSENGERNAME +# READ PASSENGER $PASSENGERNAME :: READ=$READ, PARK=$PARK Zen # Get _passenger.ipfs with NODE CREATOR secret.dunikey $MY_PATH/tools/natools.py decrypt --pubsec -k ~/.ssb/secret.dunikey -i ~/.zen/tag/${AAH}/_passenger.ipfs.crypt -o /tmp/_passenger.ipfs @@ -135,7 +156,8 @@ $MY_PATH/tools/natools.py decrypt --pubsec -k ~/.ssb/secret.dunikey -i ~/.zen/ta openssl aes-256-cbc -pbkdf2 -k \"$BB\" -d -salt -in ~/.zen/tag/${AAH}/_passenger.ipfs.BB.aes -out /tmp/_passenger.ipfs # IPFS get file and read with VLC -ipfs get -o /tmp /ipfs/$(cat /tmp/_passenger.ipfs)/$(cat ~/.zen/tag/${AAH}/_passenger.filename) && vlc /tmp/$(cat ~/.zen/tag/${AAH}/_passenger.filename) 2>/dev/null +ipfs get -o /tmp /ipfs/$IPASSENGER/$PASSENGERNAME && vlc /tmp/$PASSENGERNAME 2>/dev/null +# ipfs get -o /tmp /ipfs/$(cat /tmp/_passenger.ipfs)/$(cat ~/.zen/tag/${AAH}/_passenger.filename) && vlc /tmp/$(cat ~/.zen/tag/${AAH}/_passenger.filename) 2>/dev/null ##################################################################" ########################################################### diff --git a/zen/zen_READ.sh b/zen/zen_READ.sh index 9f6596f..973d800 100755 --- a/zen/zen_READ.sh +++ b/zen/zen_READ.sh @@ -1,50 +1,44 @@ #!/bin/bash -################################################################################ +######################################################################## # Author: Fred (support@qo-op.com) -# Version: 0.1 +# Version: 2020.03.20 # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) -########################################################################################### -########################################################################################### -# Lit les données reçues depuis un lecteur de QR Code branché en USB/SERIE (/dev/ttyACM0) -# Interpète les G1QRcodes et les G1Tag (R/W) -# Saisie du montant à transférer par pavé numérique -########################################################################################### -echo "__SUB:tag_READ_XY.sh: QRCODE READER : START" -function log () { - echo "$line -$1" >> /tmp/tag_READ_XY.log -} -############################################# -# No external dependance !!!! -#source ./shell/init.sh -#source ./shell/functions.sh +######################################################################## +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 ############################################## -YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1); -IPFSNODEID=$(su $YOU -c "ipfs id -f='\n'") -NODE_UIDNA=$(cat "./wallets/.$IPFSNODEID/_uidna") +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) -MY_PATH="`dirname \"$0\"`" # relative -MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized - -SWARM_G1PUBKEY=$(cat "${GPATH}/g1sms.pub.key") -SWARM_G1AUTHFILE="${GPATH}/g1sms.priv.key" -if [[ ! -f $SWARM_G1AUTHFILE ]]; then echo "ERREUR CLEF DECHIFFRAGE!"; exit; fi - -## INIT NODE G1 PUB & PRIV KEY -NODE_G1PUBKEY=$(cat "${GPATH}/g1sms.preoni.pub.key") -NODE_G1AUTHFILE="${GPATH}/g1sms.preoni.priv.key" - - -if [[ ! -e "/dev/ttyACM0" ]]; then echo "Branchez votre lecteur de QR code!"; exit; fi ############################################## - -# DOUCHETTE ES TU LA? -./shell/tools/4LETTER.scroll.py "G1TX START" -./shell/tools/4LETTER.clock.py & -clockpid=$! - # TABLEAU MEMOIRE DE SCAN declare -a act declare -a obj