158 lines
5.5 KiB
Bash
158 lines
5.5 KiB
Bash
|
#!/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
|
||
|
source ./shell/init.sh
|
||
|
source ./shell/functions.sh
|
||
|
log "X 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 "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 - 21")
|
||
|
testmin=$( echo "${VIR} < ${MIN}" | bc -l )
|
||
|
log "TEST : $VIR < $MIN ? $testmin"
|
||
|
|
||
|
# silkaj NODE CHANGE !!!
|
||
|
SILKAJNODE=$(./shell/checknodes.sh)
|
||
|
log "NEW SILKAJ NODE: $SILKAJNODE"
|
||
|
|
||
|
if [[ "$testmin" -eq "1" ]]
|
||
|
then
|
||
|
boucle=0;
|
||
|
while [ $boucle -lt $NBbillets ]
|
||
|
do
|
||
|
# Creation du numéro de billet
|
||
|
NUMBER=$(./shell/diceware.sh 4 | xargs)
|
||
|
bpath=$(echo $NUMBER | sed 's/ /_/g')
|
||
|
|
||
|
# Cas d'un billet existant
|
||
|
while [ -d "./billets/$bpath" ]
|
||
|
do
|
||
|
NUMBER=$(./shell/diceware.sh 4 | xargs)
|
||
|
bpath=$(echo $NUMBER | sed 's/ /_/g')
|
||
|
done
|
||
|
|
||
|
SECRET=$(./shell/diceware.sh 3 | xargs)
|
||
|
SALT=$(./shell/diceware.sh 3 | xargs)
|
||
|
|
||
|
boucle=$(bc -l <<< "$boucle + 1")
|
||
|
|
||
|
log "->BILLET:$PHONE:$NUMBER:$VALbillet:$UNIT"
|
||
|
# CREATE "NUMBER SECRET SALT" ACCOUNT for G1 transfert
|
||
|
TRANSAC=$(bc -l <<< "scale=2; $VIR / $NBbillets")
|
||
|
BILLETPUBKEY=$(./silkaj/silkaj generate_auth_file --auth-scrypt -salt="$NUMBER" -password="$SECRET $SALT")
|
||
|
log_history $PHONE "BILLET, $TRANSAC, $BILLETPUBKEY"
|
||
|
sleep 3
|
||
|
# Fill BILLET with TRANSAC amount
|
||
|
PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$TRANSAC" --output="$BILLETPUBKEY" --comment="THIRD_PARTY_MANAGER:$MASTERPUB:G1SMS:BILLET" -y)
|
||
|
if [[ "$(echo $PAY | cut -d '|' -f 1)" != "KO" ]]; then
|
||
|
mkdir -p "./billets/$bpath"
|
||
|
# NOTES ARE FILES STORED IN DICEWARE COMPOSED SUBDIR
|
||
|
echo "$MEMBER" > "./billets/$bpath/note.creator"
|
||
|
echo "$NUMBER" > "./billets/$bpath/note.number"
|
||
|
echo "$PHONE" > "./billets/$bpath/note.phone"
|
||
|
echo "$SECRET" > "./billets/$bpath/note.secret"
|
||
|
echo "$SALT" > "./billets/$bpath/note.salt"
|
||
|
echo "$VALbillet" > "./billets/$bpath/note.value"
|
||
|
echo "$UNIT" > "./billets/$bpath/note.unit"
|
||
|
echo "$BILLETPUBKEY" > "./billets/$bpath/note.pubkey"
|
||
|
log "Remplissage: $TRANSAC G1... $BILLETPUBKEY = $PAY"
|
||
|
|
||
|
# CREATION FICHIER IMAGE BILLET
|
||
|
$(./shell/sms_BILLET_MAKE.sh "$NUMBER" "$SECRET" "$VALbillet" "$UNIT" "$DUFACTOR" "$BILLETPUBKEY" "$MEMBER" "$TRANSAC")
|
||
|
log "./shell/sms_BILLET_MAKE.sh \"$NUMBER\" \"$SECRET\" \"$VALbillet\" \"$UNIT\" \"$DUFACTOR\" \"$BILLETPUBKEY\" \"$MEMBER\" \"$TRANSAC\""
|
||
|
|
||
|
# Transaction to create Link BILLET <-> MEMBER RIB => Decrease BILLET value !
|
||
|
sleep 2
|
||
|
# PAY=$(./silkaj/silkaj transaction --auth-scrypt -salt="$NUMBER" -password="$SECRET $SALT" --amount="0.05" --output="$MEMRIB" --comment="THIRD_PARTY_MANAGER:$MASTERPUB:G1SMS:BILLET:$VALbillet:$UNIT:$NUMBER" -y)
|
||
|
else
|
||
|
sms_ERROR "$PHONE" "Un problème est survenu. Contactez $ADMINPSEUDO au $ADMINPHONE"
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# + G1SMS Commission
|
||
|
sleep 2
|
||
|
COM=$(./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$BILLCOM" --output="$MASTERPUB" --comment="[G1SMS] G1billet Commission" -y)
|
||
|
|
||
|
# IMPRIMER LES BILLETS! Brancher votre imprimante et configurer cups avant ;)
|
||
|
num=$(date +%Y%m%d)
|
||
|
log "PRINT $num $MEMBER"
|
||
|
montage ./billets/MEMBERS/$MEMBER/*.jpg -tile 2x3 -geometry 964x459 /tmp/$PHONE_Bills_$bpath.pdf
|
||
|
# lp /tmp/$PHONE_Bills_$bpath.pdf
|
||
|
cp /tmp/$PHONE_Bills_$bpath.pdf ./billets/MEMBERS/$MEMBER/
|
||
|
zip ./_Bill_$MEMBER_$num.zip ./billets/MEMBERS/$MEMBER/*.jpg && rm -f ./billets/MEMBERS/$MEMBER/*.jpg
|
||
|
|
||
|
# SEND EMAIL
|
||
|
# Détruit ce mail et le pdf après impression et fabrication des billets au code caché.
|
||
|
# Créer la monnaie implique une grande responsabilité!
|
||
|
|
||
|
mess="[G1SMS]
|
||
|
$NBbillets billet(s) de $VALbillet $UNIT ($TRANSAC G1) créé(s).
|
||
|
Contactez $ADMINPSEUDO au $ADMINPHONE pour les recevoir...
|
||
|
http://g1sms.fr/g1sms/aide"
|
||
|
|
||
|
sms_SEND "$phone" "$mess"
|
||
|
|
||
|
#####################################
|
||
|
# 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 "END sms_BILLET.sh"
|
||
|
log "~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
||
|
|
||
|
exit
|