IPFS ZenTag passenger file & ssb INIT
This commit is contained in:
parent
e0f29e076a
commit
99a59a1325
Binary file not shown.
After Width: | Height: | Size: 9.4 KiB |
2
iptubes
2
iptubes
|
@ -1 +1 @@
|
||||||
Subproject commit 3c360cfd585dfafb973012a33b7664c66a0b7501
|
Subproject commit 06e1a72d039d478a3fcf1341c1f7db1cae75b0e9
|
|
@ -16,14 +16,15 @@ echo "
|
||||||
# ex: ./$ME \"10 days\"
|
# ex: ./$ME \"10 days\"
|
||||||
# SCAN NODE G1 Wallet FOR ZEN Command received (or pending) TX/IN
|
# SCAN NODE G1 Wallet FOR ZEN Command received (or pending) TX/IN
|
||||||
########################################################################
|
########################################################################
|
||||||
# _(_)_ _(_)_
|
|
||||||
# @@@@ (_)@(_) @@@@ (_)@(_) @@@@
|
_(_)_ _(_)_
|
||||||
# @@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw
|
@@@@ (_)@(_) @@@@ (_)@(_) @@@@
|
||||||
# @@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___)
|
@@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw
|
||||||
# / Y \| / Y \| / Y
|
@@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___)
|
||||||
# \ | \ |/ | / \ | \ |/ | / \ | \ |/
|
/ Y \| / Y \| / Y
|
||||||
# \\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|///
|
\ | \ |/ | / \ | \ |/ | / \ | \ |/
|
||||||
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
\\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|///
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
# [ASTROPORT](https://astroport.com)
|
# [ASTROPORT](https://astroport.com)
|
||||||
########################################################################
|
########################################################################
|
||||||
"
|
"
|
||||||
|
|
|
@ -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 o | o
|
||||||
|
<\__ __/> __|>_ <\__ __/> <\__ __/> / \ __/>
|
||||||
|
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
# [ASTROPORT](https://astroport.com)
|
||||||
|
########################################################################
|
||||||
|
'
|
||||||
|
##############################################
|
||||||
|
# NODE ENVIRONEMENT DETECTION
|
||||||
|
##############################################
|
||||||
|
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)
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
|
@ -15,7 +15,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
DUNKEYFILE="$1"
|
DUNKEYFILE="$1"
|
||||||
[[ ! ${DUNIKEYFILE} ]] && DUNKEYFILE="./secret.dunikey"
|
[[ ! ${DUNIKEYFILE} ]] && DUNKEYFILE="./secret.dunikey"
|
||||||
[[ ! ${DUNIKEYFILE} ]] && DUNKEYFILE="~/.ssb/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)
|
pub=$(cat ${DUNIKEYFILE} | grep "pub" | cut -d ' ' -f 2)
|
||||||
priv=$(cat ${DUNIKEYFILE} | grep "sec" | cut -d ' ' -f 2)
|
priv=$(cat ${DUNIKEYFILE} | grep "sec" | cut -d ' ' -f 2)
|
||||||
|
@ -41,3 +41,4 @@ cat > ~/.ssb/secret.ssb <<EOF
|
||||||
# instead, share your public name
|
# instead, share your public name
|
||||||
# your public name: @$ssbpub.ed25519
|
# your public name: @$ssbpub.ed25519
|
||||||
EOF
|
EOF
|
||||||
|
exit 0
|
||||||
|
|
|
@ -7,26 +7,26 @@
|
||||||
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##*/}"
|
ME="${0##*/}"
|
||||||
echo "
|
echo '
|
||||||
########################################################################
|
########################################################################
|
||||||
# \\///
|
# \\///
|
||||||
# qo-op
|
# qo-op
|
||||||
############# $ME ZEN TXHASH PASSENGER READZEN PARKZEN
|
############# '$ME' ZEN TXHASH PASSENGER READZEN PARKZEN
|
||||||
########################################################################
|
########################################################################
|
||||||
# ex: ./$ME 1000 TEST ./myfile.wav 1 10
|
# ex: ./'$ME' 1000 TEST ./myfile.wav 1 10
|
||||||
# IPFS DATASTRUCTURE ~/.zen/tag/sha256sum(_tag.uid)
|
# IPFS DATASTRUCTURE ~/.zen/tag/sha256sum(_tag.uid)
|
||||||
########################################################################
|
########################################################################
|
||||||
# _(_)_ _(_)_
|
__ __
|
||||||
# @@@@ (_)@(_) @@@@ (_)@(_) @@@@
|
_____ _______/ |________ ____ ______ ____________/ |_
|
||||||
# @@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw
|
\__ \ / ___/\ __\_ __ \/ _ \\____ \ / _ \_ __ \ __\
|
||||||
# @@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___)
|
/ __ \_\___ \ | | | | \( <_> ) |_> > <_> ) | \/| |
|
||||||
# / Y \| / Y \| / Y
|
(____ /____ > |__| |__| \____/| __/ \____/|__| |__|
|
||||||
# \ | \ |/ | / \ | \ |/ | / \ | \ |/
|
\/ \/ |__|
|
||||||
# \\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|///
|
|
||||||
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
# [ASTROPORT](https://astroport.com)
|
# [ASTROPORT](https://astroport.com)
|
||||||
########################################################################
|
########################################################################
|
||||||
"
|
'
|
||||||
ZEN="$1" # Zen amount
|
ZEN="$1" # Zen amount
|
||||||
TXHASH="$2" # G1 TX HASH
|
TXHASH="$2" # G1 TX HASH
|
||||||
PASSENGER="$3" # /path/file.ext to include into ZenTag (add to IPFS datastructure)
|
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
|
PARK="$5" # Zen amount payed for IPFS PIN by passenger everyday
|
||||||
[[ $READ == "" ]] && READ=1
|
[[ $READ == "" ]] && READ=1
|
||||||
[[ $PARK == "" ]] && PARK=10
|
[[ $PARK == "" ]] && PARK=10
|
||||||
|
[[ $ZEN == "" || $TXHASH == "" ]] && exit 1
|
||||||
|
##############################################
|
||||||
|
# NODE ENVIRONEMENT DETECTION
|
||||||
|
##############################################
|
||||||
|
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)
|
||||||
########################################################################
|
########################################################################
|
||||||
# ZenTag is an IPFS/IPNS datastructure put into IPFS, publish
|
# ZenTag is an IPFS/IPNS datastructure put into IPFS, publish
|
||||||
# ~~~ Draft ~~~~
|
# ~~~ Draft ~~~~
|
||||||
|
@ -45,13 +51,14 @@ PARK="$5" # Zen amount payed for IPFS PIN by passenger everyday
|
||||||
# _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.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.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 sha512sum
|
# _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 FILE OPTIONNAL
|
||||||
# _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.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
|
# TODO: Could be converted into yaml or json if you like
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
|
|
||||||
# UNCOMMENT TO ACTIVATE (G1 <=> ZEN) STRICT RELATION
|
# 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
|
||||||
#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
|
||||||
|
|
||||||
# IPFSNODEID
|
|
||||||
########################################################################
|
########################################################################
|
||||||
IPFSNODEID=$(ipfs id -f='<id>\n')
|
# CREATE ZEN TAG => name AA + key BB => ~/.zen/tag/${AAH}
|
||||||
########################################################################
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# ~/.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
|
|
||||||
########################################################################
|
########################################################################
|
||||||
AA=$(echo $($MY_PATH/tools/diceware.sh 6 | xargs) | sed s/\ /_/g ) # ZenTag Name = Diceware_6_words
|
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
|
AAH=$(echo -n ${AA} | sha256sum | cut -d ' ' -f 1) # ZenTag Name SHA256
|
||||||
|
|
|
@ -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='<id>\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"
|
296
zen/zen_READ.sh
296
zen/zen_READ.sh
|
@ -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='<id>\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
|
|
Loading…
Reference in New Issue