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
# 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='<id>\n')
[[ $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)
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

View File

@ -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
##################################################################"
###########################################################

View File

@ -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='<id>\n'")
NODE_UIDNA=$(cat "./wallets/.$IPFSNODEID/_uidna")
IPFSNODEID=$(ipfs id -f='<id>\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