2020-05-01 15:19:51 +02:00
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# 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
# Get AMOUNTG1, AMOUNTLOVE, AMOUNTDU
AMOUNTG1 = $( ./silkaj/silkaj amount " $PUBKEY " )
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 "
# silkaj NODE CHANGE !!!
2020-05-03 23:37:47 +02:00
#SILKAJNODE=$(./checknodes.sh)
2020-05-01 15:19:51 +02:00
#log "NEW SILKAJ NODE: $SILKAJNODE"
if [ [ " $testmin " -eq "1" ] ]
then
# Clean MEMBER directory
rm -f ./billets/MEMBERS/$MEMBER /*.jpg
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
while [ -d " ./billets/ $bpath " ]
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 " )
log " __SUB:sms_BILLET.sh: ->BILLET: $PHONE : $NUMBER : $VALbillet : $UNIT "
# CREATE "NUMBER SECRET" ACCOUNT for G1 transfert
TRANSAC = $( bc -l <<< " scale=2; $VIR / $NBbillets " )
BILLETPUBKEY = $( ./silkaj/silkaj generate_auth_file --auth-scrypt -salt= " $NUMBER " -password= " $SECRET " )
# COPY authfile for Usage in 6 month...
log " __SUB:sms_BILLET.sh: authfile KEY : ./billets/ $bpath /note.authfile.GPGPASS.gpg "
mkdir -p " ./billets/ $bpath "
echo " ${ GPGPASS } " | gpg -q --output " ./billets/ $bpath /note.authfile.GPGPASS.gpg " --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "./authfile"
2020-05-03 23:37:47 +02:00
./natools.py encrypt -p $NODE_G1PUBKEY -i "./authfile" -o " ./billets/ $bpath /note.authfile. $NODE_UIDNA .crypt "
2020-05-01 15:19:51 +02:00
rm -f "./authfile"
log_history $PHONE " G1BILLET, $TRANSAC , $BILLETPUBKEY "
sleep 3
# Fill BILLET with TRANSAC amount
PAY = $( ./silkaj/silkaj transaction --auth-scrypt -salt= " $PHONE " -password= " $PIN " --amount= " $TRANSAC " --output= " $BILLETPUBKEY " --comment= " G1Billet $NUMBER " -y)
if [ [ " $( echo $PAY | cut -d '|' -f 1) " != "KO" ] ] ; then
# NOTES ARE FILES STORED IN DICEWARE COMPOSED SUBDIR
echo " $( date +%Y%m%d) " > " ./billets/ $bpath /note.creationdate "
echo " $MEMBER " > " ./billets/ $bpath /note.creator "
echo " $MEMRIB " > " ./billets/ $bpath /note.memrib "
echo " $NUMBER " > " ./billets/ $bpath /note.number "
echo " $PHONE " > " ./billets/ $bpath /note.phone "
echo " $SECRET " > " ./billets/ $bpath /note.secret "
echo " $VALbillet " > " ./billets/ $bpath /note.love "
echo " $TRANSAC " > " ./billets/ $bpath /note.g1 "
echo " $BILLETPUBKEY " > " ./billets/ $bpath /note.pubkey "
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
zip /tmp/$PHONE_Bills_ $bpath .zip ./billets/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 ./billets/MEMBERS/$MEMBER / && log "__SUB:sms_BILLET.sh: ALERT sent....."
log " __SUB:sms_BILLET.sh: ERROR SILKAJ $( cat ./silkaj/src/constants.py) "
exit
fi
done
# + G1SMS Commission
sleep 2
COM = $( ./silkaj/silkaj transaction --auth-scrypt -salt= " $PHONE " -password= " $PIN " --amount= " $BILLCOM " --output= " $NODE_G1PUBKEY " --comment= "[G1sms+] Achat G1Billets" -y)
# 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 "
montage ./billets/MEMBERS/$MEMBER /*.jpg -tile 2x3 -geometry 964x459 /tmp/$PHONE_Bills_ $bpath .pdf && rm -f ./billets/MEMBERS/$MEMBER /*.jpg && log " __SUB:sms_BILLET.sh: PDF made /tmp/ $PHONE_Bills_ $bpath .pdf "
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 "
cat ./email.txt | sed s/EMAIL/frenault@linkeo.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"
#####################################
# 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