2019-11-27 23:43:32 +01:00
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
log " __SUB:sms_VIR.sh: START ( $1 =phone, $2 =AMOUNT, $3 =VIRDEST) "
phone = " $1 "
AMOUNT = " $2 "
VIRDEST = " $3 "
# Initialise PHONE, PIN, PUBKEY, UNIT
sms_INIT_ACCOUNT " $phone " "NOSMS"
if [ [ $MEMBER = = "" ] ] ; then MEMBER = $UIDNA ; fi
member = $MEMBER
if [ [ " $AMOUNT " = = "" ] ] ; then
sms_ERROR " $phone " " Montant incorrect!!
Ex:
VIR 100, pour virer 100 $UNIT vers votre compte relié.
VIR 100 $ADMINPSEUDO , pour virer 100 $UNIT au membre administrateur de ce NODE G1sms+ ; ) "
exit
fi
###########################################################
# CALCULATE if wallet have enough for VIR+PERCENT
AMOUNT = " $2 "
accounting = ( $( make_accounting) )
log " __SUB:sms_VIR.sh: $( declare -p accounting) "
testmin = ${ accounting [0] }
VIR = ${ accounting [1] }
PERCENT = ${ accounting [2] }
if [ [ $testmin -eq 0 ] ] ; then
sms_ERROR " $PHONE " " Solde de votre Porte-monnaie G1sms insuffisant. Minimum $charge G1! Rechargez par Cesium. "
exit
fi
###########################################################
# FIND VIRDEST into wallets, wallest-swarm OR duniter (silkaj)
if [ [ " $VIRDEST " = = "" || " $VIRDEST " = = " $MEMBER " ] ] ; then
# VIR TO MEMBER PHONE OWNER
DESTMEM = " $MEMBER "
DESTRIB = " $MEMRIB "
log " __SUB:sms_VIR.sh: SEND TO MEMBER related wallet!!! $DESTRIB "
else
log " __SUB:sms_VIR.sh: SEARCH $VIRDEST related wallet!!! $DESTRIB "
DESTMEM = " $VIRDEST "
# SEARCH IN WALLETS
2019-11-28 00:12:01 +01:00
LOCAL = $( grep -Rwl " $DESTMEM " ./wallets/*/*.uidna | tail -n 1 | cut -f 3 -d '/' )
2019-11-27 23:43:32 +01:00
if [ [ " $LOCAL " != "" ] ] ; then
# LOCAL G1sms account
DESTRIB = $( cat ./wallets/$LOCAL /$LOCAL .pub)
DESTPHONE = $LOCAL
log " __SUB:sms_VIR.sh: FOUND LOCAL ( $MASTERPHONE ) G1sms+ wallet: $DESTRIB ( $LOCAL ) "
else
# SEARCH IN WALLETS SWARM
2019-11-28 00:12:01 +01:00
INSWARM = $( grep -Rwl " $DESTMEM " ./wallets_swarm/*/*.uidna | tail -n 1 | cut -f 3 -d '/' )
2019-11-27 23:43:32 +01:00
if [ [ " $INSWARM " != "" ] ] ; then
REMOTENODE = $( cat ./wallets_swarm/$INSWARM /MASTERPHONE.sms)
DESTRIB = $( cat ./wallets_swarm/$INSWARM /$INSWARM .pub)
DESTPHONE = $INSWARM
log " __SUB:sms_VIR.sh: FOUND SWARM ( $REMOTENODE ) G1sms+ wallet: $DESTRIB ( $INSWARM ) "
else
# SEARCH WITH SILKAJ
DESTRIB = $( ./silkaj/silkaj id " $DESTMEM " | grep -w " $DESTMEM " | awk '{print $2}' )
log " __SUB:sms_VIR.sh: OUT OFF SWARM MEMBER wallet: $DESTRIB "
fi
fi
fi
if [ [ " $DESTRIB " != "" ] ] ; then
PAY = $( ./shell/timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt= " $PHONE " -password= " $PIN " --amount= " $VIR " --output= " $DESTRIB " --comment= " [G1sms+] VIR $VIR G1 " -y)
if [ [ " $( echo $PAY | cut -d '|' -f 1) " != "KO" && " $PAY " != "" ] ] ; then
log " __SUB:sms_VIR.sh: VIREMENT VERS $DESTMEM OK "
mess = " [G1sms+] $MEMBER
Virement de $AMOUNT $UNIT ( $VIR G1)
vers $DESTMEM ( $DESTRIB )
OK!
$PAY "
sms_SEND " $PHONE " " $mess "
log_history " $PHONE " " VIR, $VIR , $DESTRIB , $DESTMEM "
# Send DESTPHONE sms
if [ [ " $DESTPHONE " != "" ] ] ; then
sms_SEND " $DESTPHONE " " Bonjour $DESTMEM . Vous venez de recevoir un virement de $AMOUNT $UNIT ( $VIR G1) de la part de $member portefeuille $UIDNA ( $phone ) "
fi
cents = $( echo $( bc -l <<< " scale=0; $VIR * 100 " ) | cut -d '.' -f 1)
move_g1cents " $PHONE " " $DESTRIB " " $cents "
else
new = $( ./shell/checknodes.sh "BAN" )
sms_SEND " $ADMINPHONE " " ADMIN! Problème de payement avec silkaj (changement de serveur $new ): $PAY " ;
fi
else
log " __SUB:sms_VIR.sh: ERROR $MEMBER : $DESTMEM DESTRIB NOT FOUND "
mess = " [G1sms+] Virement annulé...
Membre: $DESTMEM inconnu! Vérifiez son existence."
sms_SEND " $PHONE " " $mess "
fi
log "__SUB:sms_VIR.sh: END ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
exit