g1_TX2ZEN.sh zen_MAKE.sh zen_READ.sh

This commit is contained in:
qo-op 2020-03-20 18:37:56 +01:00
parent 0e9374677c
commit 9d9172b4b6
4 changed files with 102 additions and 86 deletions

@ -1 +1 @@
Subproject commit 0f2cf9f36d5653f3b7c836c6b2ceb9a09b737216 Subproject commit 06e1a72d039d478a3fcf1341c1f7db1cae75b0e9

View File

@ -4,12 +4,17 @@
# Version: 1.0 # Version: 1.0
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
######################################################################## ########################################################################
# == Transform incoming G1 TX into IPFS ZenTAG == MY_PATH="`dirname \"$0\"`" # relative
# SCAN NODE G1 Wallet FOR "ZEN" Command received (or pending) TX/IN MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
echo "
######################################################################## ########################################################################
# \\/// # \\///
# qo-op # 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) # [ASTROPORT](https://astroport.com)
######################################################################## ########################################################################
MY_PATH="`dirname \"$0\"`" # relative "
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized DELAY="$1"
ME="${0##*/}"
########################################################################
if [[ ! $(which silkaj) ]]; then
echo "$USER please Install SILKAJ !!" && exit 1
fi
# GET DUNITER SERVER # 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='<id>\n') IPFSNODEID=$(ipfs id -f='<id>\n')
[[ $IPFSNODEID == "" ]] && echo "$USER Please Install IPFS !!" && exit 1 [[ $IPFSNODEID == "" ]] && echo "$USER Please Install IPFS !!" && exit 1
@ -41,7 +41,6 @@ IPFSNODEID=$(ipfs id -f='<id>\n')
######################################################################################################### #########################################################################################################
# GET G1 PUBKEY FROM SCUTTLEBUTT or $2 (DEBUG) # GET G1 PUBKEY FROM SCUTTLEBUTT or $2 (DEBUG)
DELAY=$1
[[ $DELAY == "" ]] && DELAY="30 days" && echo "*** HELP ***" && echo "./$ME \"duration\" (default $DELAY)" && echo "************" && echo [[ $DELAY == "" ]] && DELAY="30 days" && echo "*** HELP ***" && echo "./$ME \"duration\" (default $DELAY)" && echo "************" && echo
DELAYUNIT=$(echo $DELAY | cut -d ' ' -f 2) 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; [[ "$NODE_G1PUBKEY" == "" ]] && echo "$USER Missing ~/.ssb/secret : Please Install Scuttlebutt server !" && exit 1;
######################################################################################################### #########################################################################################################
echo "CHECKING G1WALLET LAST TX/IN ($DELAY)"
echo "=======================================" echo "======================================="
echo "DUNITER URL = $DUNITERURL" echo "IPFS ID = $IPFSNODEID"
echo "G1 PUBKEY = $NODE_G1PUBKEY" echo "G1 PUBKEY = $NODE_G1PUBKEY"
echo "SSB ID = %$ssbpub.ed25519" echo "SSB ID = %$ssbpub.ed25519"
echo "IPFS ID = $IPFSNODEID" echo "
# 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)" # GET G1 WALLET AMOUNT
silkaj -p $DUNITERNODE balance $NODE_G1PUBKEY
#############################################"
echo "Checking G1 Wallet received TX ($DELAY) for ZEN command"
# PREPARE TIMESTAMP LIMITS # PREPARE TIMESTAMP LIMITS
TIMEBEFORE=$(date -u --date="-$DELAY" +"%s") TIMEBEFORE=$(date -u --date="-$DELAY" +"%s")
@ -109,11 +111,9 @@ if [[ $DELAYUNIT != "minutes" && $DELAYUNIT != "minute" ]]; then
###### CREATE ZEN VALUE IN IPFS ######### ###### CREATE ZEN VALUE IN IPFS #########
[[ $CMD == "ZEN" ]] && $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER [[ $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 # 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 fi
((line++)) ((line++))
done done
@ -142,12 +142,12 @@ else
###### CREATE ZEN VALUE IN IPFS ######### ###### CREATE ZEN VALUE IN IPFS #########
[[ $CMD == "ZEN" ]] && $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER [[ $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 # 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 fi
((line++)) ((line++))
done done
fi fi
echo "FINISH"
exit 0

View File

@ -6,15 +6,35 @@
######################################################################## ########################################################################
MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
echo "
######################################################################## ########################################################################
# \\/// # \\///
# qo-op # qo-op
############# ############# $ME ZEN TXHASH PASSENGER READZEN PARKZEN
##########################
######################################################################## ########################################################################
# ./zen_MAKE.sh $ZEN $TXHASH # ex: ./$ME 1000 TEST ./myfile.wav 1 10
# Create ~/.zen/tag/... & IPNS key publish # 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 # ZenTag is an IPFS/IPNS datastructure put into IPFS, publish
# ~~~ Draft ~~~~ # ~~~ Draft ~~~~
@ -25,25 +45,23 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
# _g1.node.creator # G1SSB wallet pubkey # _g1.node.creator # G1SSB wallet pubkey
# _g1.issuer # G1TX ISSUER pubkey # _g1.issuer # G1TX ISSUER pubkey
# _g1.txhash # G1TX HASH # _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.BB.aes # BB SYMcypher of IPNS publish key
# _ipfs.publishkey.crypt # G1SSB ASYMcypher 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.uid # ZenTag UID
# _tag.zen # ZentTag balance # _tag.zen # ZentTag balance
# _ipns # /ipns/ address # _ipns # /ipns/ address
# _passenger.filename # Passenger filename # _passenger.filename # Passenger filename
# _passenger.ipfs.crypt # G1SSB cyphered IPFS Passenger link # _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 # 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 #[[ ! -f ~/.zen/scan/zen.$TXHASH ]] && echo "ERROR# UNKNOWN TX $TXHASH !!" && exit 1
# G1TX ISSUER CONTROL
#ISSUER=$(cat ~/.zen/scan/zen.$TXHASH) #ISSUER=$(cat ~/.zen/scan/zen.$TXHASH)
#[[ $ISSUER == "" ]] && echo "ERROR# NO ISSUER FOUND FOR TX $TXHASH !!" && exit 1 #[[ $ISSUER == "" ]] && echo "ERROR# NO ISSUER FOUND FOR TX $TXHASH !!" && exit 1
@ -72,7 +90,7 @@ done
# PASSWORD FOR WRITE ACTION # PASSWORD FOR WRITE ACTION
BB=$($MY_PATH/tools/diceware.sh 4 | xargs); 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 # 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 # Symetric Encrypt and Decrypt with openssl
# openssl aes-256-cbc -k "$BB" -salt -in file -out file.aes # Encrypt # openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in file -out file.aes # Encrypt
# openssl aes-256-cbc -k "$BB" -d -salt -in file.aes -out file # Decrypt # openssl aes-256-cbc -pbkdf2 -k "$BB" -d -salt -in file.aes -out file # Decrypt
# tar zip and encrypt a whole directory # # tar.gz and encrypt a whole directory #
# tar -zcf - directory | openssl aes-128-cbc -k "$BB" -salt -out directory.tar.gz.aes # Encrypt # tar -zcf - directory | openssl aes-128-cbc -pbkdf2 -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-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 # [[ -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 # [[ -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 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 # Delete cleartext _passenger.ipfs
rm -r ~/.zen/tag/${AAH}/_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 fi
echo " echo "
################################################################## ##################################################################
# READ PASSENGER $PASSENGERNAME # READ PASSENGER $PASSENGERNAME :: READ=$READ, PARK=$PARK Zen
# Get _passenger.ipfs with NODE CREATOR secret.dunikey # 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 $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 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 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
##################################################################" ##################################################################"
########################################################### ###########################################################

View File

@ -1,50 +1,44 @@
#!/bin/bash #!/bin/bash
################################################################################ ########################################################################
# Author: Fred (support@qo-op.com) # Author: Fred (support@qo-op.com)
# Version: 0.1 # Version: 2020.03.20
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################################### ########################################################################
########################################################################################### MY_PATH="`dirname \"$0\"`" # relative
# Lit les données reçues depuis un lecteur de QR Code branché en USB/SERIE (/dev/ttyACM0) MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
# Interpète les G1QRcodes et les G1Tag (R/W) ME="${0##*/}"
# Saisie du montant à transférer par pavé numérique echo "
########################################################################################### ########################################################################
echo "__SUB:tag_READ_XY.sh: QRCODE READER : START" # \\///
function log () { # qo-op
echo "$line ############# $ME QREAD QWRITE
$1" >> /tmp/tag_READ_XY.log ########################################################################
} # ex: ./$ME RJ:AAH#J1 BJ:BB#J2
############################################# # Apply READ value before allow PASSENGER ipfs decoding
# No external dependance !!!! ########################################################################
#source ./shell/init.sh # _(_)_ _(_)_
#source ./shell/functions.sh # @@@@ (_)@(_) @@@@ (_)@(_) @@@@
# @@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw
# @@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___)
# / Y \| / Y \| / Y
# \ | \ |/ | / \ | \ |/ | / \ | \ |/
# \\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|///
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# [ASTROPORT](https://astroport.com)
########################################################################
"
QREAD="$1"
QWRITE="$2"
############################################## ##############################################
# NODE ENVIRONEMENT DETECTION # 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=$(ipfs id -f='<id>\n')
IPFSNODEID=$(su $YOU -c "ipfs id -f='<id>\n'") [[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh
NODE_UIDNA=$(cat "./wallets/.$IPFSNODEID/_uidna") 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 # TABLEAU MEMOIRE DE SCAN
declare -a act declare -a act
declare -a obj declare -a obj