2020-05-01 15:19:51 +02:00
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
2020-05-07 02:27:11 +02:00
# Version: 1.0
2020-05-01 15:19:51 +02:00
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
# Create and print 6 G1Billets de nn LOVE
2020-05-03 23:37:47 +02:00
source ./init.sh
source ./functions.sh
2020-05-01 15:19:51 +02:00
log " __SUB:sms_BILLET.sh: ( $1 =phone, $2 =VALbillet) "
phone = " $1 "
VALbillet = " $2 "
# 6 BILLETS DE $VALbillet LOVE PAR SMS !!
NBbillets = 6
# Initialise PHONE, PIN, PUBKEY, UNIT, HIST + MEMBER + MEMRIB +...
sms_INIT_ACCOUNT " $phone " "NOSMS"
# FIXED LOVE UNIT (6 month maximum validity)
UNIT = "LOVE"
log " __SUB:sms_BILLET.sh: MEMBER? $PHONE => $MEMBER "
if [ [ $UNKNOWN = = "unknown" || " $MEMBER " = = "" ] ] ; then
sms_ERROR " $phone " " Porte-monnaie non identifié.
Envoyez N suivi de votre pseudo membre ( en respectant Majuscule et minuscule) ."
exit
fi
if [ [ $MAIL = = "" ] ] ; then
sms_ERROR " $phone " " Impossible de réaliser votre commande.
Envoyez \" EMAIL votre_email\" pour pouvoir recevoir vos billets..."
exit
fi
if [ $VALbillet -lt 10 ] ; then
sms_ERROR " $phone " " Montant minimum 10 $UNIT !! "
exit
fi
if [ $VALbillet -gt 1000 ] ; then
sms_ERROR " $phone " " Montant maximum: 1000 $UNIT !! "
exit
fi
2020-05-07 02:27:11 +02:00
# Check account amount
declare -a accounting
accounting = ( $( check_account) )
log " $( declare -p accounting) "
AMOUNTG1 = ${ accounting [0] }
AMOUNT = ${ accounting [1] }
UNIT = ${ accounting [2] }
2020-05-01 15:19:51 +02:00
AMOUNTDU = $( bc -l <<< " scale=2; $AMOUNTG1 / $DUFACTOR " )
AMOUNTLOVE = $( bc -l <<< " scale=0; $AMOUNTG1 * 100 / $DUFACTOR " )
# Convert amount to G1 unit
amount = $( bc <<< " $NBbillets * $VALbillet " )
VIR = $( bc -l <<< " scale=2; $amount * $DUFACTOR / 100 " )
# Need at least $MIN G1 available! $BILLCOM G1 commission
MIN = $( bc -l <<< " $AMOUNTG1 - $LIMIT - $BILLCOM " )
testmin = $( echo " ${ VIR } < ${ MIN } " | bc -l )
log " __SUB:sms_BILLET.sh: TEST : $VIR < $MIN ? $testmin "
if [ [ " $testmin " -eq "1" ] ]
then
# Clean MEMBER directory
2020-05-07 02:27:11 +02:00
rm -f ~/.zen/g1billets/MEMBERS/$MEMBER /*.jpg
2020-05-01 15:19:51 +02:00
boucle = 0;
while [ $boucle -lt $NBbillets ]
do
# Creation du numéro de billet
2020-05-03 23:37:47 +02:00
NUMBER = $( ./diceware.sh 2 | xargs)
2020-05-01 15:19:51 +02:00
bpath = $( echo $NUMBER | sed 's/ /_/g' )
# Cas d'un billet existant
2020-05-07 02:27:11 +02:00
while [ -d " ~/.zen/g1billets/ $bpath " ]
2020-05-01 15:19:51 +02:00
do
2020-05-03 23:37:47 +02:00
NUMBER = $( ./diceware.sh 2 | xargs)
2020-05-01 15:19:51 +02:00
bpath = $( echo $NUMBER | sed 's/ /_/g' )
done
2020-05-03 23:37:47 +02:00
SECRET = $( ./diceware.sh 4 | xargs)
2020-05-01 15:19:51 +02:00
boucle = $( bc -l <<< " $boucle + 1 " )
2020-05-07 03:14:26 +02:00
log " __SUB:sms_BILLET.sh: ->BILLET: $PHONE : $NUMBER : $VALbillet : $UNIT "
2020-05-01 15:19:51 +02:00
# CREATE "NUMBER SECRET" ACCOUNT for G1 transfert
TRANSAC = $( bc -l <<< " scale=2; $VIR / $NBbillets " )
2020-05-07 02:27:11 +02:00
2020-05-07 03:14:26 +02:00
BILLETPUBKEY = $( python3 ./tools/key_create_dunikey.py " $NUMBER " " $SECRET " )
2020-05-01 15:19:51 +02:00
# COPY authfile for Usage in 6 month...
2020-05-07 03:14:26 +02:00
log " __SUB:sms_BILLET.sh: authfile KEY : ~/.zen/g1billets/ $bpath /note.dunikey.IPFSPrivKey.gpg "
2020-05-07 02:27:11 +02:00
mkdir -p " ~/.zen/g1billets/ $bpath "
2020-05-07 03:14:26 +02:00
echo " ${ IPFSPrivKey } " | gpg -q --output " ~/.zen/g1billets/ $bpath /note.dunikey.IPFSPrivKey.gpg " --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "/tmp/secret.dunikey"
./natools.py encrypt -p $NODE_G1PUBKEY -i "/tmp/secret.dunikey" -o " ~/.zen/g1billets/ $bpath /note.dunikey. $NODE_UIDNA .crypt "
rm -f /tmp/secret.dunikey
2020-05-01 15:19:51 +02:00
log_history $PHONE " G1BILLET, $TRANSAC , $BILLETPUBKEY "
sleep 3
# Fill BILLET with TRANSAC amount
2020-05-07 03:14:26 +02:00
duniter_server = $( ./tools/duniter_getnode.sh)
PAY = $( silkaj -p " $duniter_server " -af --file ~/.zen/g1sms_wallets/$PHONE /secret.dunikey tx --output " $BILLETPUBKEY " --amount " $TRANSAC " --comment " [G1sms+] G1Billet $NUMBER " -y)
if [ [ " $( echo $PAY | grep 'successful' ) " != "" && " $PAY " != "" ] ] ; then
2020-05-01 15:19:51 +02:00
# NOTES ARE FILES STORED IN DICEWARE COMPOSED SUBDIR
2020-05-07 02:27:11 +02:00
echo " $( date +%Y%m%d) " > " ~/.zen/g1billets/ $bpath /note.creationdate "
echo " $MEMBER " > " ~/.zen/g1billets/ $bpath /note.creator "
echo " $MEMRIB " > " ~/.zen/g1billets/ $bpath /note.memrib "
echo " $NUMBER " > " ~/.zen/g1billets/ $bpath /note.number "
echo " $PHONE " > " ~/.zen/g1billets/ $bpath /note.phone "
echo " $SECRET " > " ~/.zen/g1billets/ $bpath /note.secret "
echo " $VALbillet " > " ~/.zen/g1billets/ $bpath /note.love "
echo " $TRANSAC " > " ~/.zen/g1billets/ $bpath /note.g1 "
echo " $BILLETPUBKEY " > " ~/.zen/g1billets/ $bpath /note.pubkey "
2020-05-01 15:19:51 +02:00
log " Remplissage: $TRANSAC G1... $BILLETPUBKEY = $PAY "
# CREATION FICHIER IMAGE BILLET
2020-05-03 23:37:47 +02:00
$( ./sms_BILLET_MAKE.sh " $NUMBER " " $SECRET " " $VALbillet " " $UNIT " " $TRANSAC " " $BILLETPUBKEY " " $MEMBER " " $TRANSAC " " $PHONE " )
log " ./sms_BILLET_MAKE.sh \" $NUMBER \" \" $SECRET \" \" $VALbillet \" \" $UNIT \" \" $TRANSAC \" \" $BILLETPUBKEY \" \" $MEMBER \" \" $TRANSAC \" \" $PHONE \" "
2020-05-01 15:19:51 +02:00
# Transaction to create Link BILLET <-> MEMBER RIB => Decrease BILLET value !
sleep 2
# PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$NUMBER" -password="$SECRET" --amount="0.05" --output="$MEMRIB" --comment="THIRD_PARTY_MANAGER:$NODE_G1PUBKEY:G1SMS:BILLET:$VALbillet:$UNIT:$NUMBER" -y)
else
sms_ERROR " $PHONE " " Un problème est survenu. Contactez $ADMINPSEUDO au $ADMINPHONE "
# Copy & Send produced files
2020-05-07 02:27:11 +02:00
zip /tmp/$PHONE_Bills_ $bpath .zip ~/.zen/g1billets/MEMBERS/$MEMBER /*.*
mpack -s " [G1sms+]_G1Billets ( $bpath ) Erreur... création G1Billets... " -d /tmp/message_body.txt /tmp/$PHONE_Bills_ $bpath .zip $MAIL && mv /tmp/$PHONE_Bills_ $bpath .zip ~/.zen/g1billets/MEMBERS/$MEMBER / && log "__SUB:sms_BILLET.sh: ALERT sent....."
2020-05-01 15:19:51 +02:00
log " __SUB:sms_BILLET.sh: ERROR SILKAJ $( cat ./silkaj/src/constants.py) "
exit
fi
done
# + G1SMS Commission
sleep 2
2020-05-07 03:14:26 +02:00
COM = $( silkaj -p " $duniter_server " -af --file ~/.zen/g1sms_wallets/$PHONE /secret.dunikey tx --output " $NODE_G1PUBKEY " --amount " $BILLCOM " --comment "[G1sms+] Achat G1Billets" -y)
2020-05-01 15:19:51 +02:00
# POUR IMPRIMER LES BILLETS! Brancher votre imprimante, configurer cups, activer code lp ;)
num = $( date +%Y%m%d)
log " __SUB:sms_BILLET.sh: PRINT $num $MEMBER "
2020-05-07 02:27:11 +02:00
montage ~/.zen/g1billets/MEMBERS/$MEMBER /*.jpg -tile 2x3 -geometry 964x459 /tmp/$PHONE_Bills_ $bpath .pdf && rm -f ~/.zen/g1billets/MEMBERS/$MEMBER /*.jpg && log " __SUB:sms_BILLET.sh: PDF made /tmp/ $PHONE_Bills_ $bpath .pdf "
2020-05-01 15:19:51 +02:00
cd /tmp && zip $PHONE_Bills_ $bpath .zip $PHONE_Bills_ $bpath .pdf && log " __SUB:sms_BILLET.sh: Zip DONE :: /tmp $PHONE_Bills_ $bpath .zip !! " && cd -
# rm -f /tmp/$PHONE_Bills_$bpath.pdf
# SEND EMAIL ZIP attached
echo " Commande # $NANODATE / $bpath
>> Planche de 6 G1Billets : $VALbillet LOVE <<
Envoyez-nous vos remarques...
https://g1sms.fr" > /tmp/message_body.txt
mpack -s " [G1sms+]_G1Billets ( $bpath ) A IMPRIMER et détruire cet email... " -d /tmp/message_body.txt /tmp/$PHONE_Bills_ $bpath .zip $MAIL && log "__SUB:sms_BILLET.sh: EMAIL sent....."
log " __SUB:sms_BILLET.sh: G1Billets $PHONE_Bills_ $bpath .pdf envoyé par email à $MEMBER : $MAIL "
mess = " [G1SMS]
$NBbillets G1Billets de $VALbillet $UNIT ( $TRANSAC G1) créé( s) .
Envoyés vers $MAIL , vérifiez vos SPAM...
Support: $ADMINPSEUDO ( $ADMINPHONE )
"
sms_SEND " $phone " " $mess "
# ADMIN ALERT SMS + TODO Add ADMINEMAIL parameter in "install.sh"
sms_SEND " $ADMINPHONE " " $MEMBER vient de créer $NBbillets G1Billets de $VALbillet $UNIT ( $TRANSAC G1): $MAIL "
2020-05-07 03:14:26 +02:00
cat ./email.txt | sed s/EMAIL/support@qo-op.com/g | sed s/SUBJECT/Creation_G1Billets/g | sed s/MESSAGE/" $MEMBER ( $PHONE ) vient de creer $NBbillets G1Billets de $VALbillet $UNIT ( $TRANSAC G1) vers $MAIL " /g | ssmtp "frenault@linkeo.com"
2020-05-01 15:19:51 +02:00
#####################################
# Amount too High, solde insuffisant
else
text = " Solde: $AMOUNTLOVE LOVE ( $AMOUNTG1 G1 = $AMOUNTDU DU)
Insuffisant pour créer $NBbillets billet( s) de $VALbillet $UNIT
( = $VIR G1 + Commission $BILLCOM G1) "
sms_ERROR " $phone " " $text "
sms_SEND " $phone " " Rechargez votre porte-monnaie!
https://g1.duniter.fr/api/#/v1/payment/$PUBKEY ?amount= $VIR "
fi
log "__SUB:sms_BILLET.sh: END sms_BILLET.sh"
log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
exit