tag_READ_X.sh

This commit is contained in:
qo-op 2019-12-15 21:35:51 +01:00
parent b8c8dacb4e
commit 9d1f20ec3b
16 changed files with 127 additions and 64 deletions

View File

@ -6,11 +6,11 @@ isARM=$(uname -a | grep arm)
# Basics # Basics
sudo apt update sudo apt update
sudo apt install curl jq zip unzip htop tree ntpdate gnupg ssmtp mpack imagemagick qrencode bc libttspico-utils libttspico0 libttspico-data -y sudo apt install curl jq zip unzip htop tree ntpdate gnupg ssmtp mpack imagemagick qrencode bc libttspico-utils libttspico0 libttspico-data python-fourletterphat -y
# Silkaj + Duniterpy # Silkaj + Duniterpy
libsodium=$(sudo apt search libsodium | grep -v "header" | grep -v "debug symbols" | grep "Network communication" -B1 | head -n1 | awk -F '/' '{ print $1 }') libsodium=$(sudo apt search libsodium | grep -v "header" | grep -v "debug symbols" | grep "Network communication" -B1 | head -n1 | awk -F '/' '{ print $1 }')
sudo apt install python3-pip $libsodium -y sudo apt install python-pip python3-pip $libsodium -y
pip3 install duniterpy pip3 install duniterpy
pip3 install silkaj --user pip3 install silkaj --user

View File

@ -11,7 +11,7 @@ isARM=$(uname -a | grep arm)
######## YOUTUBE-DL ########## ######## YOUTUBE-DL ##########
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl sudo chmod a+rx /usr/local/bin/youtube-dl
sudo apt install libid3-tools mpd mpc lame -y sudo apt install libid3-tools mpd mpc lame omxplayer -y
## CONFIG MPD ## CONFIG MPD
@ -57,8 +57,8 @@ sudo systemctl restart nginx
# etc.... # etc....
# INSTALL ROMPR WebSite LINKs # INSTALL ROMPR WebSite LINKs
#sudo ln -s /home/$USER/_CopyLaRadio/www/rompr /var/www/rompr sudo ln -s /home/$USER/_CopyLaRadio/www/rompr /var/www/rompr
#sudo chmod 777 /home/$USER/_CopyLaRadio/www/rompr/albumart sudo chmod 777 /home/$USER/_CopyLaRadio/www/rompr/albumart
#sudo chmod 777 /home/$USER/_CopyLaRadio/www/rompr/prefs sudo chmod 777 /home/$USER/_CopyLaRadio/www/rompr/prefs
exit 0 exit 0

2
_chain
View File

@ -1 +1 @@
QmYS8rkJee27cXLy6fbZAoweBFHNUkfTZ4V3YrWfNtWFwA Qmad8nh1sLJJS8UtyXQJ2GzYrv768dDsBfwhtFyBjXh8Z3

View File

@ -166,3 +166,9 @@ OK
2019-12-10: 2019-12-10:
2019-12-10: fourletterphat 2019-12-10: fourletterphat
2019-12-11: 2019-12-11:
2019-12-14: G1 Tag READ WRITE
2019-12-14: Install backup change
2019-12-14: backup
2019-12-14: COMMENT
2019-12-14:
2019-12-14:

View File

@ -1 +1 @@
1576059397859243783 1576284752579254475

Binary file not shown.

View File

@ -1,17 +1,28 @@
#!/bin/sh #!/bin/bash
# ######################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
# This script modify rc.local to start G1sms+ G1Tag, G1Tx and _CopyLaRadio scripts # This script modify rc.local to start G1sms+ G1Tag, G1Tx and _CopyLaRadio scripts
###################################################################### ######################################################################
# INJECT it self # INJECT it self into /etc/rc.local
######################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
######################################################################
#################### INCEPTION / INSERTION ###########################
###################################################################### ######################################################################
inserted=$(grep -Rw "rc.local.sh" /etc/rc.local) inserted=$(grep -Rw "rc.local.sh" /etc/rc.local)
if [[ ! $inserted ]]; then if [[ ! $inserted ]]; then
sed -i s/exit\ 0//g /etc/rc.local sudo sed -i s/exit\ 0//g /etc/rc.local
echo "include /home/pi/G1sms+/rc.local.sh" >> /etc/rc.local sudo echo "include $MY_PATH/rc.local.sh" >> /etc/rc.local
echo "exit 0" >> /etc/rc.local sudo echo "exit 0" >> /etc/rc.local
fi fi
######################################################################
######################################################################
#### WRITE SYSTEM STARTUP COMMANDS HERE........
######################################################################
# mpd Runs like pi and some rights are bad!! # mpd Runs like pi and some rights are bad!!
chown -R pi /var/run/mpd chown -R pi /var/run/mpd
chown -R pi /run/mpd chown -R pi /run/mpd
@ -28,33 +39,33 @@ chmod 664 /tmp/youtube-dl.log
chown pi:www-data /tmp/youtube-dl.log chown pi:www-data /tmp/youtube-dl.log
# LAUNCH BUTTONS WATCH # LAUNCH BUTTONS WATCH
su pi -c "/home/pi/G1sms+/_CopyLaRadio/watch.sh &" su pi -c "$MY_PATH/_CopyLaRadio/watch.sh &"
# LAUNCH COPY SCRIPT # LAUNCH COPY SCRIPT
su pi -c "/home/pi/G1sms+/_CopyLaRadio/copy.sh &" su pi -c "$MY_PATH/_CopyLaRadio/copy.sh &"
# Print the IP address # Print the IP address
_IP=$(hostname -I | cut -d " " -f 1) || true _IP=$(hostname -I | cut -d " " -f 1) || true
if [ "$_IP" ]; then if [ "$_IP" ]; then
printf "IP address is %s\n" "$_IP" printf "IP address is %s\n" "$_IP"
/home/pi/G1sms+/shell/parle.sh "Adresse IP: $_IP" $MY_PATH/shell/parle.sh "Adresse IP: $_IP"
youtube-dl -U youtube-dl -U
/home/pi/G1sms+/shell/parle.sh "Mise à jour de Youtube DL. Terminé!" $MY_PATH/shell/parle.sh "Mise à jour de Youtube DL. Terminé!"
#IPFS #IPFS
YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1) YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
if [[ "$YOU" != "" && "$YOU" != "root" ]]; then if [[ "$YOU" != "" && "$YOU" != "root" ]]; then
/home/pi/G1sms+/shell/parle.sh "IPFS OK. Système de fichier interplanétaire activé." $MY_PATH/shell/parle.sh "IPFS OK. Système de fichier interplanétaire activé."
fi fi
else else
/home/pi/G1sms+/shell/parle.sh "Connexion Internet Impossible!" $MY_PATH/shell/parle.sh "Connexion Internet Impossible!"
fi fi
# LANCEMENT G1Tag READ # LANCEMENT G1Tag READ
if [[ -e "/dev/ttyACM0" ]]; then if [[ -e "/dev/ttyACM0" ]]; then
cd /home/pi/G1sms+ && ./shell/tag_READ.sh & cd $MY_PATH && ./shell/tag_READ.sh &
/home/pi/G1sms+/shell/parle.sh "Lecteur G1 tag" $MY_PATH/shell/parle.sh "Lecteur G1 tag"
fi fi
if [[ -d "/home/pi/G1sms+/www/rompr" ]]; then if [[ -d "$MY_PATH/www/rompr" ]]; then
/home/pi/G1sms+/shell/parle.sh "Jukebox interplanétaire accessible" $MY_PATH/shell/parle.sh "Jukebox interplanétaire accessible"
fi fi

View File

@ -9,6 +9,9 @@ source ./shell/init.sh
source ./shell/functions.sh source ./shell/functions.sh
now=$(date +%Y-%m-%d) now=$(date +%Y-%m-%d)
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
echo "COMMENTAIRES?" echo "COMMENTAIRES?"
read COMMENT read COMMENT
@ -49,12 +52,10 @@ echo $(date +%s%N) > "./$dir/_nanodate"
echo "$now: $COMMENT" >> "./$dir/_comments" echo "$now: $COMMENT" >> "./$dir/_comments"
# TAR ALL ARCHIVE FILES # TAR G1sms+ FILES (WITH EXCLUSIONS!!)
tar -cvzf G1sms+_backup_$now.tar.gz --exclude 'authfile' --exclude 'init.sh' --exclude '.git' --exclude 'billets' --exclude 'constants.py' --exclude 'TAG' --exclude 'history*' --exclude 'trash' --exclude 'print' --exclude 'wallets' --exclude 'wallets_swarm' --exclude 'g1sms.priv.key' ./$dir tar -cvzf ~/G1sms+_backup_$now.tar.gz --exclude 'authfile' --exclude 'init.sh' --exclude '.git' --exclude 'billets' --exclude 'constants.py' --exclude 'TAG' --exclude 'history*' --exclude 'trash' --exclude 'print' --exclude 'wallets' --exclude 'wallets_swarm' --exclude 'g1sms.priv.key' ./$dir
mkdir -p /tmp/CODE/ mkdir -p /tmp/CODE/ && tar xzf ~/G1sms+_backup_$now.tar.gz -C /tmp/CODE/ && rm -f ~/G1sms+_backup_$now.tar.gz
mv G1sms+_backup_$now.tar.gz /tmp/CODE/G1sms+.latest.tgz
cp ./$dir/install*.sh /tmp/CODE/
# PUBLISH IT # PUBLISH IT
hash=$(su $YOU -c "ipfs add -rq /tmp/CODE/ -w | tail -n 1") hash=$(su $YOU -c "ipfs add -rq /tmp/CODE/ -w | tail -n 1")
@ -67,5 +68,3 @@ rm -Rf /tmp/CODE
echo "_CHAIN: NEW /ipfs/$hash // $hop PUBLISHED with \"SWARM_CODE_MASTER\" key echo "_CHAIN: NEW /ipfs/$hash // $hop PUBLISHED with \"SWARM_CODE_MASTER\" key
ipfs get --output=./ /ipns/$publish" ipfs get --output=./ /ipns/$publish"

View File

@ -358,7 +358,7 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
# ACTIVATE G1SMS WALLET # ACTIVATE G1SMS WALLET
####################### #######################
# log "$MASTERKEYFILE $PUBKEY THIRD_PARTY_MANAGER:$MASTERPUB" # log "$MASTERKEYFILE $PUBKEY THIRD_PARTY_MANAGER:$MASTERPUB"
TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$MASTERKEYFILE" --amount=3.15 --output=$PUBKEY --comment="[G1sms+] $UIDNA$TAIL 3RD:$MASTERPUB " -y) TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$MASTERKEYFILE" --amount=3.24 --output=$PUBKEY --comment="[G1sms+] $UIDNA$TAIL 3RD:$MASTERPUB " -y)
log "__SUB:sms_INIT_ACCOUNT: G1 Wallet TX IN: $TX_IN" log "__SUB:sms_INIT_ACCOUNT: G1 Wallet TX IN: $TX_IN"
sleep 2 sleep 2
TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount=0.1 --output=$MASTERPUB --comment="[G1sms+] $UIDNA$TAIL 3RD:$MASTERPUB:ACK" -y) TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount=0.1 --output=$MASTERPUB --comment="[G1sms+] $UIDNA$TAIL 3RD:$MASTERPUB:ACK" -y)

BIN
shell/g1tag-v0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -14,6 +14,7 @@ CHEMIN="/home/$YOU/G1sms+"
# G1sms+ Node KEYS (G1wallet, gpg, IPNS) # G1sms+ Node KEYS (G1wallet, gpg, IPNS)
################################################################## ##################################################################
export GPGPASS=$(cat "/home/$YOU/.ipfs/config" | jq '.Identity.PrivKey' | sed s/\"//g) export GPGPASS=$(cat "/home/$YOU/.ipfs/config" | jq '.Identity.PrivKey' | sed s/\"//g)
if [ ! $GPGPASS ]; then echo "FATAL ERROR:: IPFS Node.Identity.PrivKey GPGPASS EMPTY"; exit; fi
################################################################## ##################################################################
# G1sms+ Swarm KEYS # G1sms+ Swarm KEYS
@ -59,11 +60,25 @@ fi
# Create G1sms Wallet with that NODE G1 wallet as member reference # Create G1sms Wallet with that NODE G1 wallet as member reference
if [[ ! -f "./wallets/.$IPFSNODEID/$IPFSNODEID.pub" ]]; then if [[ ! -f "./wallets/.$IPFSNODEID/$IPFSNODEID.pub" ]]; then
mkdir -p ./wallets/.$IPFSNODEID/TASK mkdir -p ./wallets/.$IPFSNODEID/TASK
# TODO @poka ?? Place in install sequence: Create Node G1 Wallet (login=ipfsID pass=ipfsPrivKey)
NODEG1WALLET=$(./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$IPFSNODEID" -password="$GPGPASS") NODEG1WALLET=$(./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$IPFSNODEID" -password="$GPGPASS")
if [[ ! $NODEG1WALLET ]]; then echo "PROBLEME CREATION DU WALLET G1 DE $IPFSNODEID"; exit; fi if [[ ! $NODEG1WALLET ]]; then echo "PROBLEME CREATION DU WALLET G1 DE $IPFSNODEID"; exit; fi
# Backup authfile GPG with IPFS NODE PRIVATE KEY
echo "${GPGPASS}" | gpg -q --output "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.GPGPASS.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./authfile" echo "${GPGPASS}" | gpg -q --output "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.GPGPASS.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./authfile"
# Backup authfile CYPHER with NODE G1 WALLET PUB KEY
./shell/natools.py encrypt -p $NODEG1WALLET -i "./authfile" -o "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.crypt" ./shell/natools.py encrypt -p $NODEG1WALLET -i "./authfile" -o "./wallets/.$IPFSNODEID/$IPFSNODEID.authfile.crypt"
rm -f ./authfile
# TODO ADD ACCESS TO OTHER SWARM NODES CYPHERING WITH ALL ACTUAL NODES G1WALLET PUB KEYS
# USEFUL TO OPERATE G1TAG WITHOUT SHARING MASTERKEYFILE...
# for nodepubfile in ./wallets_swarm/.Qm*/*.pub; do
# nodeG1pub=$(cat $nodepubfile)
# nodeID=$(echo $all | cut -d '/' -f 3)
# ./shell/natools.py encrypt -p $nodeG1pub -i "./authfile" -o "./wallets/.$IPFSNODEID/$nodeID.authfile.crypt"
# done
# Keep Node G1 wallet authfile in G1sms+ root
mv -f ./authfile ../
echo $NODEG1WALLET > "./wallets/.$IPFSNODEID/$IPFSNODEID.pub" echo $NODEG1WALLET > "./wallets/.$IPFSNODEID/$IPFSNODEID.pub"
echo $IPFSNODEID > "./wallets/.$IPFSNODEID/$IPFSNODEID.ipfsid" echo $IPFSNODEID > "./wallets/.$IPFSNODEID/$IPFSNODEID.ipfsid"
@ -82,9 +97,11 @@ if [[ ! -f "./wallets/.$IPFSNODEID/$IPFSNODEID.pub" ]]; then
UIDNA=$(./shell/diceware.sh 1 | xargs) UIDNA=$(./shell/diceware.sh 1 | xargs)
# Check if already existing among all swarm wallets # Check if already existing among all swarm wallets
while [[ $(grep -Rwl "$UIDNA$TAIL" ./wallets_swarm/*/*.uidna) ]]; do UIDNA=$(./shell/diceware.sh 1 | xargs); done while [[ $(grep -Rwl "$UIDNA$TAIL" ./wallets_swarm/*/*.uidna) ]]; do UIDNA=$(./shell/diceware.sh 1 | xargs); done
# WRITE NODE uidna NAME TO /etc/hosts & .Qm*/Qm*.uidna file
echo "127.0.0.101 $UIDNA$TAIL" >> "/etc/hosts"
echo "$UIDNA$TAIL" > "./wallets/.$IPFSNODEID/$IPFSNODEID.uidna" echo "$UIDNA$TAIL" > "./wallets/.$IPFSNODEID/$IPFSNODEID.uidna"
# CREATE NODE WALLET LIKE A PHONE (Stored in wallets/.$IPFSNODEID) # TODO: MAYBE REMOVE THAT CREATE NODE WALLET LIKE A PHONE (Stored in wallets/.$IPFSNODEID) BUT CREATE & ATTACH G1TAG INSTEAD
echo "${GPGPASS}" > "./wallets/.$IPFSNODEID/$IPFSNODEID.pin" echo "${GPGPASS}" > "./wallets/.$IPFSNODEID/$IPFSNODEID.pin"
echo "${GPGPASS}" | gpg -q --output "./wallets/.$IPFSNODEID/$IPFSNODEID.pin.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./wallets/.$IPFSNODEID/$IPFSNODEID.pin" echo "${GPGPASS}" | gpg -q --output "./wallets/.$IPFSNODEID/$IPFSNODEID.pin.gpg" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./wallets/.$IPFSNODEID/$IPFSNODEID.pin"
echo "" > "./wallets/.$IPFSNODEID/$IPFSNODEID.pin" echo "" > "./wallets/.$IPFSNODEID/$IPFSNODEID.pin"
@ -93,7 +110,7 @@ if [[ ! -f "./wallets/.$IPFSNODEID/$IPFSNODEID.pub" ]]; then
echo $NODEG1WALLET > "./wallets/.$IPFSNODEID/$IPFSNODEID.pub" echo $NODEG1WALLET > "./wallets/.$IPFSNODEID/$IPFSNODEID.pub"
# SILKAJ INIT G1 NODE WALLET # SILKAJ INIT G1 NODE WALLET
TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$MASTERKEYFILE" --amount=3.15 --output=$NODEG1WALLET --comment="[G1sms+] G1NODE ($ADMINPSEUDO) $UIDNA$TAIL $IPFSNODEID" -y) TX_IN=$(./silkaj/silkaj transaction --auth-file -file="$MASTERKEYFILE" --amount=3.24 --output=$NODEG1WALLET --comment="[G1sms+] G1NODE ($ADMINPSEUDO) $UIDNA$TAIL $IPFSNODEID" -y)
TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$IPFSNODEID" -password="$GPGPASS" --amount=0.1 --output=$MASTERPUB --comment="[G1sms+] G1NODE $IPFSNODEID:ACK" -y) TX_OUT=$(./silkaj/silkaj transaction --auth-scrypt -salt="$IPFSNODEID" -password="$GPGPASS" --amount=0.1 --output=$MASTERPUB --comment="[G1sms+] G1NODE $IPFSNODEID:ACK" -y)
log "__SUB:initkeys.sh: [ADMIN] G1sms+ $ADMINPSEUDO-$UIDNA$TAIL OUVERT POUR NODE: ls ./wallet/.$IPFSNODEID" log "__SUB:initkeys.sh: [ADMIN] G1sms+ $ADMINPSEUDO-$UIDNA$TAIL OUVERT POUR NODE: ls ./wallet/.$IPFSNODEID"
gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "[ADMIN] G1sms+ $ADMINPSEUDO-$UIDNA$TAIL OUVERT POUR NODE: ls ./wallets/.$IPFSNODEID" 1>&2 gammu-smsd-inject -l TEXT "$ADMINPHONE" -text "[ADMIN] G1sms+ $ADMINPSEUDO-$UIDNA$TAIL OUVERT POUR NODE: ls ./wallets/.$IPFSNODEID" 1>&2

View File

@ -116,7 +116,7 @@ c=0
while [[ $c -lt $NUMBER ]]; do while [[ $c -lt $NUMBER ]]; do
((c++)) ((c++))
# Create Unique SWARM G1tag! # Create Unique SWARM G1tag!
AA=$(./shell/diceware.sh 6 | xargs); RR=$(echo ${AA} | sed s/\ //g ); AA=$(./shell/diceware.sh 6 | xargs); RR=$(echo ${AA} | sed s/\ //g ); PR=$(echo ${AA} | cut -d ' ' -f 1 );
while [ -d "./wallets_swarm/TAG/${RR}" ]; do while [ -d "./wallets_swarm/TAG/${RR}" ]; do
AA=$(./shell/diceware.sh 6 | xargs); AA=$(./shell/diceware.sh 6 | xargs);
RR=$(echo ${AA} | sed s/\ //g ); RR=$(echo ${AA} | sed s/\ //g );
@ -221,11 +221,10 @@ TAGCHAIN="./TAG/${RR}/TAG_chain" # contains IPFS current ipfs hash
fi fi
# WRITE G1Tag G1 amount # WRITE G1Tag G1 amount
convert -pointsize 150 -fill black -gravity Center -draw 'text 240,-140 "'"$2"'"' "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png" convert -pointsize 150 -fill black -gravity Center -draw 'text 300,-140 "'"$2"'"' "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
convert -pointsize 50 -fill black -gravity NorthEast -draw 'text -100,0 "'"G1"'"' "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png" convert -pointsize 50 -fill black -gravity North -draw 'text 20,0 "'"${PR}"'"' "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
# WRITE G1Tag RR # WRITE G1Tag RR
convert -pointsize 40 -fill black -gravity SouthWest -draw 'text 0,0 "'"${RR}"'"' "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png" convert -pointsize 40 -fill black -gravity SouthWest -draw 'text 3,0 "'"${RR}"'"' "./TAG/${RR}/${RR}.png" "./TAG/${RR}/${RR}.png"
# ROTATION (FIXE AVATAR & CHIFFRE)? # ROTATION (FIXE AVATAR & CHIFFRE)?
# convert "./TAG/${RR}/${RR}.png" -rotate -180 "./TAG/${RR}/${RR}.png" # convert "./TAG/${RR}/${RR}.png" -rotate -180 "./TAG/${RR}/${RR}.png"
@ -260,9 +259,9 @@ if [[ "$destnode" == "" || "$destnode" == "$IPFSNODEID" ]]; then
if [[ $(file "./wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then if [[ $(file "./wallets/$PHONE/$PHONE.avatar.png" | grep 'PNG') ]]; then
composite -compose Over -resize 150% -gravity Center "./wallets/$PHONE/$PHONE.avatar.png" "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png" composite -compose Over -resize 150% -gravity Center "./wallets/$PHONE/$PHONE.avatar.png" "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png"
fi fi
convert -pointsize 60 -fill black -gravity Center -draw 'text 320,-160 "'"$MEMBER"'"' "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png" convert -pointsize 60 -fill black -gravity Center -draw 'text 340,-160 "'"$MEMBER"'"' "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png"
convert -pointsize 70 -fill black -gravity Center -draw 'text 345, 0 "'"$UIDNA"'"' "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png" convert -pointsize 70 -fill black -gravity Center -draw 'text 345,-5 "'"$UIDNA"'"' "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png"
convert -pointsize 60 -fill black -gravity Center -draw 'text 330,160 "'"$PHONE"'"' "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png" convert -pointsize 60 -fill black -gravity Center -draw 'text 350,80 "'"$PHONE"'"' "/tmp/G1PubQR.$PHONE.png" "/tmp/G1PubQR.$PHONE.png"
brother_ql_create --model QL-700 "/tmp/G1PubQR.$PHONE.png" --label-size 62 > "/tmp/G1PubQR.$PHONE.bin" brother_ql_create --model QL-700 "/tmp/G1PubQR.$PHONE.png" --label-size 62 > "/tmp/G1PubQR.$PHONE.bin"
brother_ql_print "/tmp/G1PubQR.$PHONE.bin" /dev/usb/lp0 brother_ql_print "/tmp/G1PubQR.$PHONE.bin" /dev/usb/lp0
rm -f /tmp/G1PubQR.* rm -f /tmp/G1PubQR.*

View File

@ -69,7 +69,9 @@ if [[ $FINALSOURCE -lt 0 ]]; then echo "__SUB:tag_OP.sh: KO. La valeur de ce G1T
if [[ -f $KEYFILE && ! -f "/home/$YOU/.ipfs/keystore/$JSOURCERR" ]]; then if [[ -f $KEYFILE && ! -f "/home/$YOU/.ipfs/keystore/$JSOURCERR" ]]; then
./shell/natools.py decrypt -k "$KEYFILE" -i "$JSOURCEPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JSOURCERR" ./shell/natools.py decrypt -k "$KEYFILE" -i "$JSOURCEPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JSOURCERR"
else else
echo "__SUB:tag_OP.sh: KO. La clef $KEYFILE fournie pour ce G1Tag $JSOURCERR est inexistante. Contact: https://g1sms.fr" if [[ ! -f $KEYFILE ]] then
echo "__SUB:tag_OP.sh: KO. La clef de dévérouillage pour $JSOURCERR est inexistante. Contact: https://g1sms.fr"
fi
fi fi
############################################# #############################################
@ -88,7 +90,9 @@ FINALDEST=$(echo "${JDESTVALUE} + ${VALUE}" | bc -l)
if [[ -f $KEYFILE && ! -f "/home/$YOU/.ipfs/keystore/$JDESTRR" ]]; then if [[ -f $KEYFILE && ! -f "/home/$YOU/.ipfs/keystore/$JDESTRR" ]]; then
./shell/natools.py decrypt -k "$KEYFILE" -i "$JDESTPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JDESTRR" ./shell/natools.py decrypt -k "$KEYFILE" -i "$JDESTPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JDESTRR"
else else
echo "__SUB:tag_OP.sh: KO. La clef $KEYFILE fournie pour ce G1Tag $JDESTRR est inexistante. Be part of the G1sms+SWARM. https://g1sms.fr" if [[ ! -f $KEYFILE ]] then
echo "__SUB:tag_OP.sh: KO. La clef de dévérouillage pour $JDESTRR est inexistante. Contact: https://g1sms.fr"
fi
fi fi
###################################################################################################### ######################################################################################################

View File

@ -13,9 +13,20 @@ echo "__SUB:tag_READ_X.sh: QRCODE READER : START"
source ./shell/init.sh source ./shell/init.sh
source ./shell/functions.sh source ./shell/functions.sh
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
function log () {
echo "$line
$1" >> /tmp/tag_READ_X.log
}
MASTERKEYFILE="${MY_PATH}/../g1sms.priv.key"
if [ ! -f $MASTERKEYFILE ]; then echo "ERREUR CLEF DECHIFFRAGE!"; exit; fi
# TODO G1TAG: USE CREATOR NODE KEY FILE INSTEAD OF MASTERKEYFILE SWARM KEY
# DOUCHETTE ES TU LA? # DOUCHETTE ES TU LA?
if [ ! $G1TX ]; then echo "Branchez votre lecteur de QR code!"; exit; fi if [ ! $G1TX ]; then echo "Branchez votre lecteur de QR code!"; exit; fi
./shell/tools/4LETTER.scroll.py "G1TX SCAN QRCODE G1 + G1TAG PRET" ./shell/tools/4LETTER.scroll.py "G1TX START"
./shell/timeout.sh -t 2 ./shell/tools/4LETTER.spinner.py ./shell/timeout.sh -t 2 ./shell/tools/4LETTER.spinner.py
# TABLEAU MEMOIRE DE SCAN # TABLEAU MEMOIRE DE SCAN
@ -34,12 +45,13 @@ cat /dev/ttyACM0 | while read line; do
R=$(echo $qrvalue | cut -d '#' -f 1) R=$(echo $qrvalue | cut -d '#' -f 1)
J=$(echo $qrvalue | cut -d '#' -f 2) J=$(echo $qrvalue | cut -d '#' -f 2)
log "__SUB:tag_READ_X.sh: Lecture G1Tag $R $J" log "__SUB:tag_READ_X.sh: Lecture G1Tag $R $J"
# # IPFS READ
ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id"); ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id");
if [[ "$ID" == "" ]]; then if [[ "$ID" == "" ]]; then
./shell/tools/4LETTER.scroll.py "MAUVAIS G1TAG DETRUIRE OU RAPPORTER A SON CREATEUR" ./shell/tools/4LETTER.scroll.py ">> BAD G1TAG <<"
continue continue
fi fi
# Get First R Tag name word and remove space for RR
FID=$(echo $ID | awk '{print toupper($1)}') FID=$(echo $ID | awk '{print toupper($1)}')
RR=$(echo $ID | sed s/\ //g) RR=$(echo $ID | sed s/\ //g)
@ -49,11 +61,11 @@ cat /dev/ttyACM0 | while read line; do
if [[ "$CURRENCY" == "zen" ]]; then CUR="zène"; else CUR=$CURRENCY; fi # Correction du défaut de prononciation. if [[ "$CURRENCY" == "zen" ]]; then CUR="zène"; else CUR=$CURRENCY; fi # Correction du défaut de prononciation.
PASSENGER=$(su $YOU -c "ipfs cat /ipns/$J/TAG_passenger"); PASSENGER=$(su $YOU -c "ipfs cat /ipns/$J/TAG_passenger");
if [[ "$PASSENGER" != "" ]]; then if [[ "$PASSENGER" != "" ]]; then
./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $RVALUE" ./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $RVALUE ZEN"
else else
G1VAL=$(bc -l <<< "scale=2; $RVALUE / 100" | cut -d '.' -f 1) G1VAL=$(bc -l <<< "scale=2; $RVALUE / 100" | cut -d '.' -f 1)
log "__SUB:tag_READ_X.sh: G1Tag $FID. Valeur $RVALUE $CURRENCY = $G1VAL G1" log "__SUB:tag_READ_X.sh: G1Tag $FID. Valeur $RVALUE $CURRENCY = $G1VAL G1"
./shell/tools/4LETTER.scroll.py "ZEN $RVALUE" ./shell/tools/4LETTER.scroll.py "$RVALUE ZEN *** $RVALUE ZEN"
fi fi
cmd="RJ" cmd="RJ"
CASHBACK="" CASHBACK=""
@ -67,13 +79,13 @@ cat /dev/ttyACM0 | while read line; do
# #
ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id"); ID=$(su $YOU -c "ipfs cat /ipns/$J/TAG_id");
if [[ "$ID" == "" ]]; then if [[ "$ID" == "" ]]; then
./shell/tools/4LETTER.scroll.py "MAUVAIS G1TAG STOP" ./shell/tools/4LETTER.scroll.py ">> BAD G1TAG <<"
continue continue
fi fi
FID=$(echo $ID | awk '{print toupper($1)}') FID=$(echo $ID | awk '{print toupper($1)}')
RR=$(echo $ID | sed s/\ //g) RR=$(echo $ID | sed s/\ //g)
./shell/tools/4LETTER.scroll.py "G1TAG $FID WRITE" ./shell/tools/4LETTER.scroll.py "G1TAG $FID >>TX>> "
BVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount") BVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount")
CURRENCY=$(su $YOU -c "ipfs cat /ipns/$J/TAG_currency" | awk '{print tolower($1)}') CURRENCY=$(su $YOU -c "ipfs cat /ipns/$J/TAG_currency" | awk '{print tolower($1)}')
if [[ "$CURRENCY" == "zen" ]]; then CUR="zène"; else CUR=$CURRENCY; fi # Correction du défaut de prononciation. if [[ "$CURRENCY" == "zen" ]]; then CUR="zène"; else CUR=$CURRENCY; fi # Correction du défaut de prononciation.
@ -84,22 +96,22 @@ cat /dev/ttyACM0 | while read line; do
else else
rm /tmp/TAG_publishkey.B.gpg rm /tmp/TAG_publishkey.B.gpg
su $YOU -c "ipfs get -o /tmp/ /ipns/$J/TAG_publishkey.B.gpg" su $YOU -c "ipfs get -o /tmp/ /ipns/$J/TAG_publishkey.B.gpg"
# CHECK IF OK ./shell/tools/4LETTER.scroll.py "** GPG **"
gpg -d --output /tmp/ipns.key --pinentry-mode=loopback --passphrase $BB /tmp/TAG_publishkey.B.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 if [[ ! -f /tmp/ipns.key ]]; then
./shell/tools/4LETTER.scroll.py "ERREUR DECHIFFRAGE GPG" ./shell/tools/4LETTER.scroll.py ">> BAD GPG KEY <<"
continue continue
fi fi
mv /tmp/ipns.key /home/$YOU/.ipfs/keystore/$RR mv /tmp/ipns.key /home/$YOU/.ipfs/keystore/$RR
log "__SUB:tag_READ_X.sh: Récupération de la clef de publication $RR" log "__SUB:tag_READ_X.sh: Récupération de la clef de publication $RR"
./shell/tools/4LETTER.scroll.py "DECHIFFRAGE CLEF"
fi fi
if [[ "$PASSENGER" != "" ]]; then if [[ "$PASSENGER" != "" ]]; then
log "__SUB:tag_READ_X.sh: !!!! $FID REC Tag = $BVALUE $CURRENCY" log "__SUB:tag_READ_X.sh: !!!! $FID REC Tag = $BVALUE $CURRENCY"
./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $BVALUE ZEN" ./shell/tools/4LETTER.scroll.py "G1TAG PASSENGER $BVALUE ZEN"
else else
log "__SUB:tag_READ_X.sh: Ce G1 Tag $FID contient $BVALUE $CURRENCY" log "__SUB:tag_READ_X.sh: Ce G1 Tag $FID contient $BVALUE $CURRENCY"
./shell/tools/4LETTER.scroll.py "ZEN $BVALUE" ./shell/tools/4LETTER.scroll.py "$BVALUE ZEN *** $BVALUE ZEN MAX"
fi fi
cmd="BJ" cmd="BJ"
val+=("$BVALUE") val+=("$BVALUE")
@ -107,7 +119,7 @@ cat /dev/ttyACM0 | while read line; do
*) *)
if [[ $lon -eq 44 ]]; then if [[ $lon -eq 44 ]]; then
./shell/tools/4LETTER.scroll.py "PORTEFEUILLE G1" & ./shell/tools/4LETTER.scroll.py "PORTEFEUILLE G1 >>>>>>>>" &
J=$qrvalue J=$qrvalue
if [[ "$J" != "${obj[0]}" ]]; then if [[ "$J" != "${obj[0]}" ]]; then
VALUE=$(./shell/timeout.sh -t 25 ./silkaj/silkaj amount $J) VALUE=$(./shell/timeout.sh -t 25 ./silkaj/silkaj amount $J)
@ -115,7 +127,7 @@ cat /dev/ttyACM0 | while read line; do
if [[ "$(echo $VALUE | cut -d ':' -f 1)" != "Error" && "$VALUE" != "" ]]; then if [[ "$(echo $VALUE | cut -d ':' -f 1)" != "Error" && "$VALUE" != "" ]]; then
log "__SUB:tag_READ_X.sh: Ce compte monnaie libre contient $VALUE G1" log "__SUB:tag_READ_X.sh: Ce compte monnaie libre contient $VALUE G1"
NOPOINT=$(echo $VALUE | cut -d '.' -f 1) NOPOINT=$(echo $VALUE | cut -d '.' -f 1)
./shell/tools/4LETTER.scroll.py "CONTIENT $NOPOINT G1 *** $NOPOINT G1 " ./shell/tools/4LETTER.scroll.py " $NOPOINT G1 *** $NOPOINT G1 "
CASHBACK="$J" CASHBACK="$J"
cmd="G1" cmd="G1"
val+=("$VALUE") val+=("$VALUE")
@ -134,7 +146,7 @@ cat /dev/ttyACM0 | while read line; do
fi fi
fi fi
else else
./shell/tools/4LETTER.scroll.py "OUI CONTIENT ${val[0]} G1 !!" ./shell/tools/4LETTER.scroll.py "G1 ${val[0]} / G1 ${val[0]}"
fi fi
else else
./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU" ./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
@ -196,7 +208,7 @@ cat /dev/ttyACM0 | while read line; do
J=$(su $YOU -c "ipfs name publish -k ${RR} --quieter /ipfs/${I}") 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" 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 "${FID} G1TAG VIDE MERCI DE LE DETRUIRE" ./shell/tools/4LETTER.scroll.py "${FID} G1TAG VIDE !! DETRUCTION !!"
# CLEAN IPFS keystore: remove NOT created NODE keys # CLEAN IPFS keystore: remove NOT created NODE keys
SOURCENODEID=$(cat "./TAG/${RR}/TAG_nodeid") SOURCENODEID=$(cat "./TAG/${RR}/TAG_nodeid")
@ -206,7 +218,7 @@ cat /dev/ttyACM0 | while read line; do
fi fi
else else
# AJOUT MEMOIRE SCAN # AJOUT MEMOIRE SCAN
./shell/tools/4LETTER.scroll.py "ENSUITE" ./shell/timeout.sh -t 1 ./shell/tools/4LETTER.spinner.py
act+=("$cmd") act+=("$cmd")
obj+=("$J") obj+=("$J")
fi fi
@ -244,7 +256,7 @@ cat /dev/ttyACM0 | while read line; do
./shell/tools/4LETTER.scroll.py "DEJA TAG PASSENGER"; ./shell/tools/4LETTER.scroll.py "DEJA TAG PASSENGER";
else else
log "__SUB:tag_READ_X.sh: Transformation du G1 Tag en Rec Tag. ${val[0]} = ${val[1]}" 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]} $CUR EN PASSENGER ${FID}"; ./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 $MASTERKEYFILE)" log "__SUB:tag_READ_X.sh: $(./shell/tag_OP.sh ${obj[0]} ${obj[0]} 0 $MASTERKEYFILE)"
fi fi
CASHBACK="" CASHBACK=""
@ -256,6 +268,6 @@ cat /dev/ttyACM0 | while read line; do
./shell/timeout.sh -t 2 ./shell/tools/4LETTER.spinner.py ./shell/timeout.sh -t 2 ./shell/tools/4LETTER.spinner.py
fi fi
./shell/tools/4LETTER.scroll.py "FLASHER QRCODE" ./shell/tools/4LETTER.blink.py
done done

15
shell/tools/4LETTER.blink.py Executable file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env python
import time
import fourletterphat
fourletterphat.clear()
fourletterphat.print_str("SCAN")
fourletterphat.set_blink(fourletterphat.HT16K33_BLINK_HALFHZ)
fourletterphat.show()
time.sleep(1)
fourletterphat.set_blink(fourletterphat.HT16K33_BLINK_OFF)
fourletterphat.print_str("CODE")
fourletterphat.show()
time.sleep(0.5)