Merge branch 'dev-fred' of https://git.p2p.legal/axiom-team/G1sms into dev-poka
This commit is contained in:
commit
3918e035da
2
_chain
2
_chain
|
@ -1 +1 @@
|
|||
Qmad8nh1sLJJS8UtyXQJ2GzYrv768dDsBfwhtFyBjXh8Z3
|
||||
QmRd3LFiGbA8s17vsYdwWftSnEnnEQGzAzCEPbJBLDrXEf
|
||||
|
|
|
@ -172,3 +172,4 @@ OK
|
|||
2019-12-14: COMMENT
|
||||
2019-12-14:
|
||||
2019-12-14:
|
||||
2019-12-17: Better G1Tx
|
||||
|
|
BIN
_publishkey.gpg
BIN
_publishkey.gpg
Binary file not shown.
|
@ -115,8 +115,9 @@ if [[ $PHONE ]]; then rm -Rf ./wallets_swarm/$PHONE; fi
|
|||
#log "__SUB:ipfs_swarm_wallets_refresh: IPFS: ipfs get --output=./wallets_swarm/ /ipns/$IPFSNODEID"
|
||||
su $YOU -c "ipfs get --output=./wallets_swarm/ /ipns/$IPFSNODEID"
|
||||
count=1
|
||||
#for id in $(su $YOU -c "ipfs swarm peers" | awk -F '/' '{print $7}');
|
||||
for id in ./wallets_swarm/.Qm*/;
|
||||
# Search for All peers Nodes. TODO: To be changed when Swarm is too bug or not expendanding
|
||||
#for id in ./wallets_swarm/.Qm*/;
|
||||
for id in $(su $YOU -c "ipfs swarm peers" | awk -F '/' '{print $7}');
|
||||
do
|
||||
count=$((count+1))
|
||||
id=$(echo $id | cut -d '.' -f 3 | cut -d '/' -f 1)
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
#!/bin/bash
|
||||
##################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.1
|
||||
# License: GPL (http://www.google.com/search?q=GPL)
|
||||
##################################################################
|
||||
# Adapter les valeurs au contexte spatio-temporel du NODE G1SMS
|
||||
function log () {
|
||||
# log ($1=text)
|
||||
if [ "$DOLOG" == "YES" ]
|
||||
then
|
||||
echo "$PHONE:$1" >> /tmp/g1sms.log
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
###################################################################################################################################
|
||||
fn_exists() {
|
||||
# appended double quote is an ugly trick to make sure we do get a string -- if $1 is not a known command, type does not output anything
|
||||
[ `type -t $1`"" == 'file' ]
|
||||
}
|
||||
# ATOMATIC gammu-smsd-inject desactivation if no gammu is installed on system
|
||||
if ! fn_exists gammu-smsd-inject; then
|
||||
log ":p) DESACTIVATION ENVOI DE SMS .............."
|
||||
function gammu-smsd-inject () {
|
||||
log "$PHONE: >>> SENDING SMS $4 TO $2 "
|
||||
}
|
||||
else
|
||||
export G1SMS="YES"
|
||||
fi
|
||||
|
||||
|
||||
export YOU=$(ps aux --sort=+utime | grep ipfs | tail -n 1 | cut -d " " -f 1)
|
||||
export CHEMIN="/home/$YOU/G1sms+"
|
||||
cd $CHEMIN
|
||||
##################################################################
|
||||
# Activate logging to /tmp/g1sms.log (YES/NO)
|
||||
export DOLOG="YES"
|
||||
export CPERROR="NOYES"
|
||||
##################################################################
|
||||
# Country Node Phone international prefix (TODO Worldwide)
|
||||
export COUNTRY="+33"
|
||||
##################################################################
|
||||
# DU has a G1 value changed every 6 month!
|
||||
# ./_DU Updated by cron_CODE.backup.sh
|
||||
if [[ -f "./_DU" ]]; then export DUFACTOR=$(bc <<< "scale=2; $(cat "./_DU") / 100"); else log "__SUB:init.sh: FAILING TO FIND ./_DU EXIT!!!"; exit; fi
|
||||
##################################################################
|
||||
# Choose Default Unit: G1, DU, LOVE (DU cents), ZEN (G1 cents)
|
||||
export COIN="G1"
|
||||
##################################################################
|
||||
# Limit and commission values
|
||||
export LIMIT=2 # Solde minimum = 2 G1
|
||||
# FIXED COMMISSION SYSTEM
|
||||
export COMMISSION=1 # transaction commission amount (G1)
|
||||
export BILLCOM=20
|
||||
##################################################################
|
||||
# COMMISSION PARTS FROM TX FOR NODE & G1SMS NETWORK
|
||||
# PART COMMISSION SYSTEM
|
||||
export SWARMCOMM=10
|
||||
# TODO: NODE G1sms Wallet can receive rewards from SWARM or WALLETS/FILES
|
||||
export NODECOMM=10
|
||||
##################################################################
|
||||
# SMS SIM Card Phone Number
|
||||
export MASTERPHONE="+33651136520"
|
||||
export ADRESSE="G1_Fablab_Toulouse"
|
||||
export G1DAB="NO"
|
||||
##################################################################
|
||||
# ADMIN COMMAND PHONE ORIGIN
|
||||
export ADMINPHONE="+33647683646"
|
||||
export ADMINPSEUDO="Fred"
|
||||
##################################################################
|
||||
# DUNITER/CESIUM+ DEFAULT SERVERS
|
||||
export DUNITER="https://g1.duniter.org"
|
||||
export CESIUM="https://g1.data.le-sou.org"
|
||||
|
||||
# TODO Use latest Silkaj from "sudo fredp3 install silkaj"
|
||||
# export SILKAJ="/usr/local/bin/silkaj"
|
||||
source $CHEMIN/shell/init_keys.sh
|
||||
|
|
@ -49,11 +49,11 @@ if [[ $UNKNOWN == "unknown" ]]; then
|
|||
fi
|
||||
|
||||
## NEEDED FOR Avatar + GeoPoint
|
||||
if [[ ! $PASSENGER && "$MEMBER" == "" ]]; then
|
||||
sms_ERROR "$PHONE" "Aucun membre associé à votre Portefeuille!? Envoyer N suivi de votre Pseudo membre pour activer la création de G1Tag..."
|
||||
log "__SUB:sms_G1TAG.sh: Aucun membre associé"
|
||||
exit
|
||||
fi
|
||||
#if [[ ! $PASSENGER && "$MEMBER" == "" ]]; then
|
||||
# sms_ERROR "$PHONE" "Aucun membre associé à votre Portefeuille!? Envoyer N suivi de votre Pseudo membre pour activer la création de G1Tag..."
|
||||
# log "__SUB:sms_G1TAG.sh: Aucun membre associé"
|
||||
# exit
|
||||
#fi
|
||||
|
||||
###########################################################
|
||||
# CALCULATE if wallet have enough for VIR+PERCENT
|
||||
|
@ -115,16 +115,19 @@ log "__SUB:sms_G1TAG.sh: CREATE $NUMBER x $2 $UNIT G1Tag(s) for $MEMBER ($PHONE)
|
|||
c=0
|
||||
while [[ $c -lt $NUMBER ]]; do
|
||||
((c++))
|
||||
# Create Unique SWARM G1tag!
|
||||
# Nom du G1Tag imprimé du le QRCode RJ
|
||||
AA=$(./shell/diceware.sh 6 | xargs); # Nom = Diceware de 6 mots
|
||||
RR=$(echo ${AA} | sed s/\ //g ); # Nom concaténé
|
||||
PR=$(echo ${AA} | cut -d ' ' -f 1 ); # Prénom du G1Tag
|
||||
# Create Unique G1tag!
|
||||
while [[ $(ls "./wallets_swarm/.Qm*/TAG/${RR}") ]]; do
|
||||
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
|
||||
AA=$(./shell/diceware.sh 6 | xargs);
|
||||
RR=$(echo ${AA} | sed s/\ //g );
|
||||
done
|
||||
# Clef de chiffrage PGP imprimée sur le QRCode BJ
|
||||
BB=$(date +%N | sha256sum | base64 | head -c 32) #YjY4MDc3OTVjNmUxN2JhYWVjYmU3MDcy
|
||||
# BB=$(openssl rand -base64 32 | base64) #Yk8yMnVtdzZmendJbHNoK2Q0b0liakRpNHNJUk9UQW5Dd042cFdDODlJTT0K
|
||||
|
||||
# G1Tag init
|
||||
# G1Tag init : Nom et usage des fichiers du G1Tag
|
||||
# TODO CHECK _nanodate to detect bad nodes/tx behaviour... and banish them)
|
||||
TAGDATE="./TAG/${RR}/TAG_nanodate" # Nanodate notification (ntpdate in init.sh for NODE sync in case of
|
||||
TAGNID="./TAG/${RR}/TAG_nodeid" # G1sms+ NODE IPFS ID managing that G1Tag
|
||||
|
@ -153,7 +156,7 @@ TAGCHAIN="./TAG/${RR}/TAG_chain" # contains IPFS current ipfs hash
|
|||
####################################################
|
||||
# IPFS files are created and calculated immutable I
|
||||
####################################################
|
||||
# A or R is the Human readable G1tag ID (kind of TAG pubkey)
|
||||
# A or R is Human readable G1tag Name
|
||||
echo "${AA}" > "$TAGID"
|
||||
echo "0" > "$TAGN"
|
||||
echo "${NANODATE}" > "$TAGDATE"
|
||||
|
|
|
@ -69,7 +69,7 @@ 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
|
||||
./shell/natools.py decrypt -k "$KEYFILE" -i "$JSOURCEPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JSOURCERR"
|
||||
else
|
||||
if [[ ! -f $KEYFILE ]] then
|
||||
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
|
||||
|
@ -90,7 +90,7 @@ FINALDEST=$(echo "${JDESTVALUE} + ${VALUE}" | bc -l)
|
|||
if [[ -f $KEYFILE && ! -f "/home/$YOU/.ipfs/keystore/$JDESTRR" ]]; then
|
||||
./shell/natools.py decrypt -k "$KEYFILE" -i "$JDESTPUBLISHKEY" -o "/home/$YOU/.ipfs/keystore/$JDESTRR"
|
||||
else
|
||||
if [[ ! -f $KEYFILE ]] then
|
||||
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
|
||||
|
|
|
@ -27,14 +27,16 @@ if [ ! -f $MASTERKEYFILE ]; then echo "ERREUR CLEF DECHIFFRAGE!"; exit; fi
|
|||
# DOUCHETTE ES TU LA?
|
||||
if [ ! $G1TX ]; then echo "Branchez votre lecteur de QR code!"; exit; fi
|
||||
./shell/tools/4LETTER.scroll.py "G1TX START"
|
||||
./shell/timeout.sh -t 2 ./shell/tools/4LETTER.spinner.py
|
||||
|
||||
./shell/tools/4LETTER.clock.py &
|
||||
clockpid=$!
|
||||
# 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)
|
||||
|
@ -55,7 +57,7 @@ cat /dev/ttyACM0 | while read line; do
|
|||
FID=$(echo $ID | awk '{print toupper($1)}')
|
||||
RR=$(echo $ID | sed s/\ //g)
|
||||
|
||||
./shell/tools/4LETTER.scroll.py "G1TAG $FID READ"
|
||||
./shell/tools/4LETTER.scroll.py "G1TAG $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)}')
|
||||
if [[ "$CURRENCY" == "zen" ]]; then CUR="zène"; else CUR=$CURRENCY; fi # Correction du défaut de prononciation.
|
||||
|
@ -65,7 +67,7 @@ cat /dev/ttyACM0 | while read line; do
|
|||
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 *** $RVALUE ZEN"
|
||||
./shell/tools/4LETTER.scroll.py "$RVALUE ZEN *** $G1VAL G1"
|
||||
fi
|
||||
cmd="RJ"
|
||||
CASHBACK=""
|
||||
|
@ -85,7 +87,7 @@ cat /dev/ttyACM0 | while read line; do
|
|||
FID=$(echo $ID | awk '{print toupper($1)}')
|
||||
RR=$(echo $ID | sed s/\ //g)
|
||||
|
||||
./shell/tools/4LETTER.scroll.py "G1TAG $FID >>TX>> "
|
||||
./shell/tools/4LETTER.scroll.py "G1TAG [TX] $FID >"
|
||||
BVALUE=$(su $YOU -c "ipfs cat /ipns/$J/TAG_amount")
|
||||
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.
|
||||
|
@ -110,8 +112,9 @@ cat /dev/ttyACM0 | while read line; do
|
|||
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 *** $BVALUE ZEN MAX"
|
||||
./shell/tools/4LETTER.scroll.py "$BVALUE ZEN *** $G1VAL G1 MAX"
|
||||
fi
|
||||
cmd="BJ"
|
||||
val+=("$BVALUE")
|
||||
|
@ -132,21 +135,21 @@ cat /dev/ttyACM0 | while read line; do
|
|||
cmd="G1"
|
||||
val+=("$VALUE")
|
||||
else
|
||||
log "__SUB:tag_READ_X.sh: ERREUR QR code illisible. longueur $J = ${#J}"
|
||||
if [[ "$VALUE" == "" ]]; then
|
||||
DUNITER=$(./shell/checknodes.sh 'BAN')
|
||||
echo "ERREUR TIMEOUT. CHANGE SILKAJ SERVER: $DUNITER"
|
||||
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 "G1 ${val[0]} / G1 ${val[0]}"
|
||||
./shell/tools/4LETTER.scroll.py " 2 X "
|
||||
fi
|
||||
else
|
||||
./shell/tools/4LETTER.scroll.py "ERREUR QRCODE INCONNU"
|
||||
|
@ -159,10 +162,12 @@ cat /dev/ttyACM0 | while read line; do
|
|||
###############################################################
|
||||
# APRES G1 CASHBACK : G1 Tag BJ WRITE => ENCAISSEMENT
|
||||
if [[ "${cmd}" == "BJ" && "$CASHBACK" != "" && -f /home/$YOU/.ipfs/keystore/${RR} ]]; then
|
||||
./shell/tools/4LETTER.scroll.py "ENCAISSEMENT G1TAG"
|
||||
./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.scroll.py "VERS PORTEFEUILLE G1"
|
||||
./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"
|
||||
|
@ -173,16 +178,19 @@ cat /dev/ttyACM0 | while read line; do
|
|||
# Make Silkaj TX
|
||||
G1VAL=$(bc -l <<< "scale=2; $BVALUE / 100" | cut -d '.' -f 1)
|
||||
log "__SUB:tag_READ_X.sh: Silkaj TX $MASTERKEYFILE ($G1VAL) -> $CASHBACK"
|
||||
PAY=$(./silkaj/silkaj transaction --auth-file -file="$MASTERKEYFILE" --amount=$G1VAL --output=$CASHBACK --comment="[G1sms+] CAPTURE G1Tag $RR" -y)
|
||||
PAY=$(./silkaj/silkaj transaction --auth-file -file="$MASTERKEYFILE" --amount=$G1VAL --output=$CASHBACK --comment="[G1sms+] G1Tag $RR ZEN -> G1" -y)
|
||||
|
||||
log "__SUB:tag_READ_X.sh: Silkaj output = $PAY"
|
||||
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" ]]; then
|
||||
# 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"
|
||||
./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"
|
||||
|
@ -208,7 +216,7 @@ cat /dev/ttyACM0 | while read line; do
|
|||
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 "${FID} G1TAG VIDE !! DETRUCTION !!"
|
||||
./shell/tools/4LETTER.scroll.py "DETRUIRE G1TAG ${FID}"
|
||||
|
||||
# CLEAN IPFS keystore: remove NOT created NODE keys
|
||||
SOURCENODEID=$(cat "./TAG/${RR}/TAG_nodeid")
|
||||
|
@ -236,14 +244,17 @@ cat /dev/ttyACM0 | while read line; do
|
|||
if [[ "$PASSENGER" != "" ]]; then
|
||||
./shell/tools/4LETTER.scroll.py "IMPOSSIBLE TAG PASSENGER";
|
||||
else
|
||||
# READ KEYBOARD VALUE !!!
|
||||
COMBIEN=$(./shell/tools/matrixKeypad.py)
|
||||
###########################################################
|
||||
# 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} TRANSFERT DE $COMBIEN ZEN"
|
||||
log "__SUB:tag_READ_X.sh: $(./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIEN $MASTERKEYFILE)"
|
||||
./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 $MASTERKEYFILE"
|
||||
./shell/tag_OP.sh ${obj[1]} ${obj[0]} $COMBIENZEN "$MASTERKEYFILE"
|
||||
else
|
||||
./shell/tools/4LETTER.scroll.py "$COMBIEN DEPASSE ${val[1]} $CUR DU G1TAG ${FID}"
|
||||
./shell/tools/4LETTER.scroll.py "ERREUR $COMBIEN > VALEUR DE ${FID} *** ${val[1]} ZEN"
|
||||
fi
|
||||
fi
|
||||
CASHBACK=""
|
||||
|
@ -265,9 +276,11 @@ cat /dev/ttyACM0 | while read line; do
|
|||
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
|
||||
|
|
|
@ -6,7 +6,7 @@ from time import sleep
|
|||
# Initialize the keypad class
|
||||
kp = keypad()
|
||||
|
||||
fourletterphat.print_str("ZEN?")
|
||||
fourletterphat.print_str(" G1?")
|
||||
fourletterphat.show()
|
||||
|
||||
def digit():
|
||||
|
|
Loading…
Reference in New Issue