#!/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