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/)
|
|
|
|
################################################################################
|
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_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 $VIR + $LIMIT 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
|
2020-05-03 23:37:47 +02:00
|
|
|
LOCAL=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
|
|
|
|
if [[ "$LOCAL" == "" ]]; then LOCAL=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
|
2020-05-01 15:19:51 +02:00
|
|
|
if [[ "$LOCAL" != "" ]]; then
|
|
|
|
# LOCAL G1sms account
|
2020-05-03 23:37:47 +02:00
|
|
|
DESTRIB=$(cat ~/.zen/g1sms_wallets/$LOCAL/$LOCAL.pub)
|
2020-05-01 15:19:51 +02:00
|
|
|
DESTPHONE=$LOCAL
|
|
|
|
log "__SUB:sms_VIR.sh: FOUND LOCAL ($MASTERPHONE) G1sms+ wallet: $DESTRIB ($LOCAL)"
|
|
|
|
else
|
|
|
|
# SEARCH IN WALLETS SWARM (MEMBER THEN UIDNA)
|
2020-05-03 23:37:47 +02:00
|
|
|
INSWARM=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets_swarm/*/*.uidname | tail -n 1 | cut -f 3 -d '/')
|
|
|
|
if [[ "$INSWARM" == "" ]]; then INSWARM=$(grep -Rwl "$DESTMEM" ~/.zen/g1sms_wallets_swarm/*/*.uidna | tail -n 1 | cut -f 3 -d '/'); fi
|
2020-05-01 15:19:51 +02:00
|
|
|
if [[ "$INSWARM" != "" ]]; then
|
2020-05-03 23:37:47 +02:00
|
|
|
REMOTENODE=$(cat ~/.zen/g1sms_wallets_swarm/$INSWARM/MASTERPHONE.sms)
|
|
|
|
DESTRIB=$(cat ~/.zen/g1sms_wallets_swarm/$INSWARM/$INSWARM.pub)
|
2020-05-01 15:19:51 +02:00
|
|
|
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
|
2020-05-03 23:37:47 +02:00
|
|
|
PAY=$(./timeout.sh -t 30 ./silkaj/silkaj transaction --auth-scrypt -salt="$PHONE" -password="$PIN" --amount="$VIR" --output="$DESTRIB" --comment="[G1sms+] VIR $VIR G1" -y)
|
2020-05-01 15:19:51 +02:00
|
|
|
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"
|
|
|
|
fi
|
|
|
|
cents=$(echo $(bc -l <<< "scale=0; $VIR * 100") | cut -d '.' -f 1)
|
|
|
|
move_g1cents "$PHONE" "$DESTRIB" "$cents"
|
|
|
|
else
|
2020-05-03 23:37:47 +02:00
|
|
|
new=$(./checknodes.sh "BAN")
|
2020-05-01 15:19:51 +02:00
|
|
|
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
|