93 lines
3.1 KiB
Bash
Executable File
93 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
################################################################################
|
|
# Author: Fred (support@qo-op.com)
|
|
# Version: 1.0
|
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
|
################################################################################
|
|
source ./init.sh
|
|
source ./functions.sh
|
|
log "__SUB:sms_PAY.sh: START ($1=PHONE, $2=PHONEDEST, $3=AMOUNT)"
|
|
|
|
phone="$1"
|
|
PHONEDEST="$2"
|
|
|
|
# Initialise PHONE, PIN, PUBKEY, UNIT
|
|
sms_INIT_ACCOUNT "$phone" "NOSMS"
|
|
pin=$PIN
|
|
if [[ $UNKNOWN == "unknown" ]]; then
|
|
sms_ERROR "$phone" "Porte-monnaie inconnu. Envoyez N (suivi de votre Pseudo membre) pour le créer."
|
|
exit 1
|
|
fi
|
|
|
|
###########################################################
|
|
# CALCULATE if wallet have enough for VIR+PERCENT
|
|
AMOUNT="$3"
|
|
accounting=($(make_accounting))
|
|
log "__SUB:sms_PAY.sh: $(declare -p accounting)"
|
|
testmin=${accounting[0]}
|
|
VIR=${accounting[1]}
|
|
PERCENT=${accounting[2]}
|
|
CHARGE=${accounting[3]}
|
|
if [[ $testmin -eq 0 ]]; then
|
|
sms_ERROR "$phone" "Solde de votre Porte-monnaie G1sms insuffisant. Minimum: $CHARGE G1! Rechargez avec https://cesium.app"
|
|
exit 1
|
|
fi
|
|
|
|
# Add COUNTRY code to PHONEDEST + PHONEDEST INIT
|
|
PHONEDEST="$COUNTRY${PHONEDEST:1:10}"
|
|
|
|
HPHONE=$(echo -n $PHONEDEST | sha256sum | cut -d ' ' -f 1)
|
|
# CHECK if PHONEDEST have an account in IPFS G1sms+ SWARM
|
|
if [[ -f /home/$YOU/.zen/ipfs_swarm/G1SMS/$HPHONE@*/_pub ]]
|
|
then
|
|
PUBKEYDEST=$(cat /home/$YOU/.zen/ipfs_swarm/G1SMS/$HPHONE@*/_pub)
|
|
UNITDEST=$(cat /home/$YOU/.zen/ipfs_swarm/G1SMS/$HPHONE@*/_unit)
|
|
else
|
|
# NO, then create NEW Wallet
|
|
sms_INIT_ACCOUNT "$PHONEDEST"
|
|
# Refreshed new values
|
|
PUBKEYDEST="$PUBKEY"
|
|
UNITDEST="$UNIT"
|
|
fi
|
|
|
|
duniter_server=$(./tools/duniter_getnode.sh)
|
|
# Payement
|
|
PAY=$(silkaj -p "$duniter_server" -af --file /home/$YOU/.zen/g1sms_wallets/$PHONE/secret.dunikey tx --output "$PUBKEYDEST" --amount "$VIR" --comment "[G1sms+] PAY" -y)
|
|
if [[ "$(echo $PAY | grep 'successful')" == "" || "$PAY" == "" ]]; then
|
|
sms_ERROR "$phone" "Problème de payement $PAY";
|
|
log "__SUB:sms_PAY.sh: Problème $PAY"
|
|
exit
|
|
fi
|
|
|
|
sleep 2
|
|
|
|
# + G1SMS Commission
|
|
COM=$(silkaj -p "$duniter_server" -af --file /home/$YOU/.zen/g1sms_wallets/$PHONE/secret.dunikey tx --output "$NODE_G1PUBKEY" --amount "$PERCENT" --comment "[G1sms+] Commission" -y)
|
|
if [[ "$(echo $COM | grep 'successful')" == "" || "$PAY" == "" ]]; then
|
|
sms_ERROR "$phone" "Problème de payement $COM";
|
|
log "__SUB:sms_PAY.sh: Problème $COM"
|
|
exit
|
|
fi
|
|
|
|
# LOG
|
|
log "__SUB:sms_PAY.sh: $1 => $2 = $3 $UNIT / SILKAJ == TxPay $PAY + TxCom $COM /"
|
|
|
|
# Send response SMS
|
|
mess_src="[G1sms+]
|
|
Envoi de $VIR G1 vers $PHONEDEST effectué!
|
|
+ Commission: $PERCENT G1"
|
|
sms_SEND "$phone" "$mess_src"
|
|
|
|
# Send dest SMS
|
|
mess_dest="[G1sms+] Bonjour.
|
|
Un(e) ami(e) ($phone) vient de vous envoyer $VIR G1 sur votre portefeuille G1SMS!
|
|
Envoyez D pour (D)étail.
|
|
A pour (A)ide..."
|
|
sms_SEND "$PHONEDEST" "$mess_dest"
|
|
|
|
[[ -f /home/$YOU/.zen/g1sms_wallets/$PHONEDEST ]] && chown -R $YOU /home/$YOU/.zen/g1sms_wallets/$PHONEDEST
|
|
[[ -f /home/$YOU/.zen/g1sms_wallets/$phone ]] && chown -R $YOU /home/$YOU/.zen/g1sms_wallets/$phone
|
|
|
|
log "__SUB:sms_PAY.sh: END ~~~~~~~~~~~~~~~~~~~~~~~~~~ "
|
|
exit
|