2020-05-12 01:50:53 +02:00
#!/bin/bash -x
2020-05-01 15:19:51 +02:00
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
# G1SMS COMMUN FUNCTIONS
# TODO: REWRITE AND MAKE FULL IPFS get wallet value through IPNS links
# ipfs cat /ipns/QmUrUdfz5hWJ6354D3N6DT64tbs5CLEndSYYiqrj9Wa4Ax/+33647683646/+33647683646.uidna
###################################################################################################################################
###################################################################################################################################
MY_PATH = " `dirname \" $0 \"` " # relative
MY_PATH = " `( cd \" $MY_PATH \" && pwd )` " # absolutized and normalized
2020-05-11 08:21:08 +02:00
YOU = $( ps auxf --sort= +utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) ;
2020-05-01 15:19:51 +02:00
## Récupère les données du profile
2020-05-11 06:01:47 +02:00
source /home/$YOU /.zen/secret.astroport.key
2020-05-01 15:19:51 +02:00
function sms_SEND ( ) {
# sms_SEND ($1=phone, $2=message)
local dest = " $1 "
local mess = " $2 "
if [ [ ${# dest } -eq 10 || ${# dest } -eq 12 ] ] ; then
2020-05-21 02:34:16 +02:00
if [ [ -d /home/$YOU /.zen/g1sms/$dest ] ] ; then
2020-05-01 15:19:51 +02:00
# TEST IF $dest IS ON CURRENT NODE
2020-05-11 05:31:39 +02:00
sudo gammu-smsd-inject TEXT " $dest " -text " $mess " 1>& 2
2020-05-11 05:49:52 +02:00
else
log " >>>>>>>>>> INCONNU $dest "
2020-05-01 15:19:51 +02:00
fi
else
log " >>>>>>>>>>SMS ERROR BAD DESTINATION $dest "
fi
log " >>>>>>>>>> SENDING SMS $mess TO $dest ( $DESTNODEID ) "
}
#################################################################################################################################
function sms_ERROR ( ) {
# sms_ERROR ($1=phone, $2=message)
local dest = " $1 "
local mess = " [ERREUR]
$2 "
if [ [ ${# dest } -eq 10 || ${# dest } -eq 12 ] ] ; then
2020-05-11 05:31:39 +02:00
sudo gammu-smsd-inject TEXT " $dest " -text " $mess " 1>& 2
2020-05-01 15:19:51 +02:00
else
log " >>>>>>>>>>SMS ERROR BAD DESTINATION $dest "
fi
log " >>>>>>>>>> SENDING SMS $mess TO $dest "
# SEND ERROR COPY TO ADMINPHONE
if [ [ " $CPERROR " = = "YES" ] ] ; then sms_SEND " $ADMINPHONE " " ADMIN! ERROR ( $dest ): $mess " ; fi
}
#################################################################################################################################
function security ( ) {
if [ [ " $G1SMS " = = "YES" ] ] ; then # ONLY OF gammu is really sending SMS on that NODE
# No Reply to MySelf (or enjoy SMS LOOP of the death) Nobody neither
if [ [ " $PHONE " = = " $MASTERPHONE " || " $PHONE " = = "" ] ] ; then log " __SUB:security: SMS REJECTED !! $PHONE $TEXT " ; exit; fi
# ADAPT TO YOUR PHONE COMPANY / ADVERT ANNOYANCE
if [ [ " $PHONE " = = "Orange Info" ] ] ; then log " __SUB:security: SMS REJECTED !! $PHONE ADVERT $TEXT " ; exit; fi
if [ [ ${# PHONE } -ne 12 && ${# PHONE } -ne 46 ] ] ; then log " !! SMS REJECTED !! $PHONE BAD $TEXT " ; exit; fi
fi
# ANTI SPAM SMS (1 mn entre chaque commande)
find /tmp -cmin +1 -type f -name "sms_received_*" -exec rm -f '{}' \;
# Do not consider SPAM, Delivered notification
if [ [ " $CMD " != "DELIVERED" && " $CMD " != "PENDING" ] ] ; then
if [ [ -f " /tmp/sms_received_ $PHONE " ] ] ; then
# Send response SMS
if [ [ ! -f " /tmp/sms_SPAM_ $PHONE " ] ] ; then
sms_ERROR " $PHONE " "Je ne le dirai pas 2 fois... Laissez moi au moins 1 minute entre chacune de vos commandes SMS! Autrement je n'y répondrai pas. Merci!"
echo $( date) > " /tmp/sms_SPAM_ $PHONE "
fi
log "__SUB:security: ################################"
log " __SUB:security: $PHONE COMMAND REJECTED: $TEXT "
exit
fi
echo " $TEXT " > " /tmp/sms_received_ $PHONE "
# Remove SPAM flag older than one day
find /tmp -ctime +1 -type f -name "sms_SPAM_*" -exec rm -f '{}' \;
else
# THIS IS AN AKNOWLEGEMENT
log "__SUB:security: ################################"
log " __SUB:security: $PHONE COMMAND REJECTED: $TEXT "
exit
fi
# Remove SPAM flag older than one day
find /tmp -ctime +1 -type f -name "sms_SPAM_*" -exec rm -f '{}' \;
}
#################################################################################################################################
function ipfs_node_wallets_add ( ) {
##########################
2020-05-05 04:41:17 +02:00
log "TODO ipfs_node_wallets_add"
2020-05-01 15:19:51 +02:00
##########################
2020-05-21 02:34:16 +02:00
# IWALLETS=$(su $YOU -c "ipfs add -rHq '/home/$YOU/.zen/g1sms' | tail -n 1")
2020-05-01 15:19:51 +02:00
# CHAIN STATE FOR $IPFSNODEID
2020-05-11 06:01:47 +02:00
# echo $IWALLETS > /home/$YOU/.zen/ipfs/.$IPFSNODEID.wallets.chain
2020-05-21 02:34:16 +02:00
# log "__SUB:ipfs_node_wallets_add: NEW '/home/$YOU/.zen/g1sms' HASH ipfs ls $IWALLETS"
2020-05-01 15:19:51 +02:00
# PUBLISH IPNS NODE WALLETS
2020-05-05 04:41:17 +02:00
# NODEWALLETS=$(su $YOU -c "ipfs name publish --quieter /ipfs/$IWALLETS")
# log "__SUB:ipfs_node_wallets_add: G1smsWallet = ipfs cat /ipns/$NODEWALLETS/$PHONE/$PHONE.g1cents Zen"
2020-05-01 15:19:51 +02:00
2020-05-05 04:41:17 +02:00
# echo $IWALLETS
2020-05-01 15:19:51 +02:00
}
#################################################################################################################################
function sms_uid2key ( ) {
2020-05-07 02:27:11 +02:00
# sms_uid2key "$MEMBERUID" "$PHONE" "$PIN"
2020-05-21 02:34:16 +02:00
RIBFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_uidrib "
NAMEFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_uidname "
UIDNAFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_uidna "
2020-05-01 15:19:51 +02:00
# New related wallet asked
ASKWALLET = " $1 "
#For micro payement
PHONE = " $2 "
PIN = " $3 "
2020-05-07 02:27:11 +02:00
[ [ -f $UIDNAFILE ] ] && UIDNA = $( cat $UIDNAFILE ) || UIDNA = ""
2020-05-01 15:19:51 +02:00
log " __SUB:sms_uid2key: $UIDNA Try to associate $ASKWALLET with $PHONE ... SEARCHING... "
if [ [ $UIDNA && " $ASKWALLET " = = " $UIDNA " ] ] ; then
log "__SUB:sms_uid2key: " $ASKWALLET " == " $UIDNA " !!"
sms_SEND " $PHONE " " [G1sms+] $UIDNA est le nom de votre porte monnaie libre pour $PHONE . Il ne peut également être compte maître! "
fi
# Test if member files exists
if [ -f " $NAMEFILE " ] ; then
UIDNAME = $( cat " $NAMEFILE " )
log " __SUB:sms_uid2key: ALREADY $UIDNAME related Wallet for $PHONE Wallet change to $ASKWALLET !! "
if [ [ " $UIDNAME " != " $ASKWALLET " ] ] ; then
sms_SEND " $ADMINPHONE " " ADMIN! INFO: $PHONE Wallet associé à $UIDNAME change en $ASKWALLET !! "
sms_SEND " $PHONE " " [G1sms+] Votre portefeuille maitre va passer de $UIDNAME à $ASKWALLET ! "
fi
fi
# Search fo duplicate
2020-05-21 02:34:16 +02:00
DUP = $( grep -Rwl " $ASKWALLET " /home/$YOU /.zen/g1sms/*/_uidname 2>/dev/null | cut -f 6 -d '/' )
2020-05-01 15:19:51 +02:00
if [ [ " $DUP " != "" && " $DUP " != " $PHONE " ] ] ; then
sms_SEND " $ADMINPHONE " " ADMIN! INFO: $PHONE prend le même $ASKWALLET , que $DUP "
sms_SEND " $DUP " " Vous devez savoir que $ASKWALLET est associé à un autre téléphone que le votre également! "
fi
###########################################################
# FIND ASKWALLET into wallets, wallest_swarm OR duniter (silkaj)
2020-05-12 02:10:26 +02:00
DESTMEM = " $VIRDEST "
# SEARCH IN WALLETS
2020-05-21 02:34:16 +02:00
LOCAL = $( grep -Rwl " $ASKWALLET " /home/$YOU /.zen/g1sms/*/_uidna 2>/dev/null | cut -f 6 -d '/' )
2020-05-12 02:10:26 +02:00
if [ [ " $LOCAL " != "" ] ] ; then
# LOCAL G1sms account
2020-05-21 02:34:16 +02:00
DESTRIB = $( cat /home/$YOU /.zen/g1sms/$LOCAL /_pub)
2020-05-12 02:10:26 +02:00
DESTPHONE = $LOCAL
log " __SUB:sms_uid2key: FOUND LOCAL ( $MASTERPHONE ) G1sms+ wallet: $DESTRIB ( $LOCAL ) "
else
2020-05-07 02:27:11 +02:00
##################### REWRITE TODO
2020-05-01 15:19:51 +02:00
# SEARCH IN WALLETS SWARM
2020-05-11 06:01:47 +02:00
# INSWARM=$(grep -Rwl "$ASKWALLET" /home/$YOU/.zen/ipfs_swarm/*/_uidna | cut -f 6 -d '/' )
2020-05-07 02:27:11 +02:00
# MYCHAN=$( echo $INSWARM | cut -f 6 -d '/' )
# MYHASH=$( echo $MYCHAN | cut -f 1 -d '@' )
# if [[ "$INSWARM" != "" ]]; then
2020-05-11 06:01:47 +02:00
# REMOTENODE=$(cat /home/$YOU/.zen/ipfs_swarm/$MYIPFS/MASTERPHONE.sms)
# DESTRIB=$(cat /home/$YOU/.zen/ipfs_swarm/$MYHASH/_pub)
2020-05-07 02:27:11 +02:00
# DESTPHONE=$INSWARM
# log "__SUB:sms_uid2key: FOUND SWARM ($REMOTENODE) G1sms+ wallet: $DESTRIB ($INSWARM)"
# else
##################### REWRITE TODO
2020-05-12 02:10:26 +02:00
# SEARCH WITH SILKAJ
log "__SUB:sms_uid2key: GETTING FROM SILKAJ MEMBER ID"
DESTRIB = $( silkaj id " $ASKWALLET " | grep -w " $ASKWALLET " | awk '{print $2}' | tail -n 1)
log " __SUB:sms_uid2key: OUT OFF SWARM MEMBER wallet: $DESTRIB "
# GET CESIUM+ geoPoint DATA (TODO: cron for GCHANGE SMS Alert)
2020-05-21 02:34:16 +02:00
curl -s ${ CESIUM } /user/profile/${ DESTRIB } | jq '._source.geoPoint' > " /home/ $YOU /.zen/g1sms/ $PHONE /_uidgeo.json "
log " __SUB:sms_uid2key: GET CESIUM+ geoPoint and AVATAR : $( cat /home/$YOU /.zen/g1sms/$PHONE /_uidgeo.json) "
curl -s ${ CESIUM } /user/profile/${ DESTRIB } | jq '._source.avatar._content' | sed 's/\"//g' | base64 -d > " /home/ $YOU /.zen/g1sms/ $PHONE /_avatar.png "
2020-05-12 02:10:26 +02:00
fi
2020-05-01 15:19:51 +02:00
if [ " $DESTRIB " != "" ] ; then
echo " $DESTRIB " > " $RIBFILE "
echo " $ASKWALLET " > " $NAMEFILE "
log " __SUB:sms_uid2key: NEW EXTERNAL RELATED $DESTRIB / FOR MEMBER OR WALLET = $ASKWALLET - INIT 0.1 TX "
2020-05-12 02:36:54 +02:00
duniter_server = $( /home/$YOU /.zen/astroport/zen/tools/tools/duniter_getnode.sh)
2020-05-21 02:34:16 +02:00
INIT = $( silkaj -p " $duniter_server " -af --file /home/$YOU /.zen/g1sms/$PHONE /secret.dunikey tx --output $DESTRIB --amount 1 --comment " [G1sms+] Porte Monnaie $( cat $UIDNAFILE ) -> $( cat $NAMEFILE ) " -y)
2020-05-05 04:41:17 +02:00
2020-05-01 15:19:51 +02:00
log " __SUB:sms_uid2key: INIT = $INIT | Create Connection with related Wallet. "
sms_SEND " $ADMINPHONE " " ADMIN! LOG: $PHONE Nouveau compte lié $UIDNA -- $ASKWALLET ( $INIT ) "
else
sms_SEND " $ADMINPHONE " " ADMIN! LOG: $PHONE / $ASKWALLET ABSENT "
fi
log " __SUB:sms_uid2key: $MEMBER ( $DESTRIB ) "
echo " $DESTRIB "
}
2020-05-11 06:44:21 +02:00
#################################################################################################################################
function silkaj_balance ( ) {
pubkey = " $1 "
2020-05-12 01:48:20 +02:00
[ [ ! $pubkey ] ] && echo "0" && exit
2020-05-11 06:44:21 +02:00
silkajQuantitativeAmountPattern = 'Total\sQuantitative\s+=\s+(.*)\s+Ğ1'
silkajExitCode = 1
2020-05-12 02:48:45 +02:00
myi = 1
2020-05-11 06:44:21 +02:00
while [ $silkajExitCode -ne 0 ]
do
2020-05-12 02:36:54 +02:00
duniter_server = $( /home/$YOU /.zen/astroport/zen/tools/duniter_getnode.sh)
2020-05-12 02:48:45 +02:00
log "Running silkaj -p " ${ duniter_server } " balance $pubkey "
2020-05-11 06:44:21 +02:00
silkajOutput = $( silkaj -p " ${ duniter_server } " balance $pubkey 2>/dev/null)
2020-05-12 02:54:33 +02:00
log " $silkajOutput "
2020-05-11 06:44:21 +02:00
silkajExitCode = $?
2020-05-12 02:48:45 +02:00
( ( myi++) )
2020-05-12 22:37:53 +02:00
[ $myi -gt 4 ] && break
2020-05-11 06:44:21 +02:00
done
if [ [ $silkajOutput = ~ $silkajQuantitativeAmountPattern ] ]
then
echo " ${ BASH_REMATCH [1] } "
else
echo "0"
fi
}
2020-05-01 15:19:51 +02:00
#################################################################################################################################
function sms_INIT_ACCOUNT ( ) {
log " __SUB:sms_INIT_ACCOUNT: ( $1 =phone, $2 =NOSMS) "
PHONE = " $1 "
UNKNOWN = 0
# TODO Optimize GLOBAL/local variables use, use more function array output ?!
# Initiate PHONE settings files and values
2020-05-21 02:34:16 +02:00
IPFSNODEIDFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /MASTERPHONE.ipfsid " # Contains G1sms+ NODE IPFS id
SMSNODE = " /home/ $YOU /.zen/g1sms/ $PHONE /MASTERPHONE.sms " # Contains G1sms+ SMS phone number
PINFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_pin " # Contains phone wallet diceware password
GPGPINFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_pin.gpg " # Contains g1smsnode cypher phone wallet diceware password
DUNIKEYFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /secret.dunikey " # secret.dunikey
PUBKEYFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_pub " # Contains phone wallet public key (RIB)
UNITFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_unit " # Contains phone wallet prefered unit (LOVE,G1,DU)
RIBFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_uidrib " # Contains phone wallet related UID Pubkey
NAMEFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_uidname " # Contains the member UID related to wallet
MAILFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_email " # Contains the member EMAIL (Send BILLET)
GPGMAILFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_email.gpg " # Contains the member EMAIL (Send BILLET)
UIDNAFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_uidna " # Contains the G1sms+ UID Name for recursive VIR
GEOFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /_uidgeo.json " # Contains the member GeoPoint from member Cesium+ related to wallet
RECFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /VIREMENTS " # File showing recurrent payements are left to be done with this G1sms Wallet
GPGRECFILE = " /home/ $YOU /.zen/g1sms/ $PHONE /VIREMENTS.gpg " # Cypher file with IPFSPrivKey (Node .Identity.PrivKey)
DABUIDF = " /home/ $YOU /.zen/g1sms/ $PHONE /uidna.G1TAGNODE " # Contains G1Dab Name
2020-05-01 15:19:51 +02:00
# GET CURRENT NODE UIDNA (default DABUID)
2020-05-11 06:01:47 +02:00
NODEUIDNA = $( cat /home/$YOU /.zen/ipfs/.$IPFSNODEID /G1SSB/_uidna)
2020-05-01 15:19:51 +02:00
######################################################################
# (NO PIN) = FIRST ACCOUNT: Create wallet
if [ ! -f " $PINFILE " ] ; then
# NOSMS mode?
if [ [ $2 = = "NOSMS" ] ] ; then UNKNOWN = "unknown" ; return ; fi
2020-05-21 02:34:16 +02:00
mkdir -p /home/$YOU /.zen/g1sms/$PHONE /
2020-05-11 06:01:47 +02:00
2020-05-01 15:19:51 +02:00
#######################
# GIVE NAME TO WALLET
#######################
2020-05-13 13:03:56 +02:00
# 6 derniers chiffres du numéro de téléphone (login > 8 char)
2020-05-11 06:01:47 +02:00
TAIL = ${ PHONE : 6 : 6 }
2020-05-01 15:19:51 +02:00
# No UIDNA yet. Create new
2020-05-11 06:01:47 +02:00
UIDNA = $( /home/$YOU /.zen/astroport/zen/tools/diceware.sh 1 | xargs)
2020-05-01 15:19:51 +02:00
# Check if already existing among all swarm wallets
2020-05-12 03:56:22 +02:00
while [ [ $( grep -Rwl " $UIDNA $TAIL " /home/$YOU /.zen/ipfs_swarm/.*/G1SMS/_uidna 2>/dev/null) ] ] ; do
UIDNA = $( /home/$YOU /.zen/astroport/zen/tools/diceware.sh 1 | xargs) ; done
2020-05-05 04:41:17 +02:00
UIDNA = " $UIDNA $TAIL "
echo " $UIDNA " > " $UIDNAFILE "
#######################
# Create Account Files
#######################
2020-05-11 06:01:47 +02:00
PIN = $( /home/$YOU /.zen/astroport/zen/tools/diceware.sh | xargs)
2020-05-05 04:41:17 +02:00
2020-05-12 02:01:55 +02:00
python3 /home/$YOU /.zen/astroport/zen/tools/key_create_dunikey.py " $UIDNA " " $PIN " ## Copy PubSec file to /tmp/secret.dunikey
2020-05-21 02:34:16 +02:00
mv /tmp/secret.dunikey /home/$YOU /.zen/g1sms/$PHONE /
2020-05-11 06:44:21 +02:00
PUBKEY = $( cat $DUNIKEYFILE | grep 'pub:' | cut -d ' ' -f 2)
2020-05-13 22:58:10 +02:00
2020-05-05 04:41:17 +02:00
log " __SUB:sms_INIT_ACCOUNT: !! G1 Wallet CREATED: $PHONE = $UIDNA $PIN : $PUBKEY "
2020-05-12 02:25:03 +02:00
[ [ $PUBKEY = = "" ] ] && log "__SUB:sms_INIT_ACCOUNT: Problem making secret.dunikey" && exit 1
2020-05-13 22:58:10 +02:00
2020-05-01 15:19:51 +02:00
#######################
2020-05-13 22:58:10 +02:00
# ACTIVATE G1SMS WALLET SEND 3.14 G1
2020-05-01 15:19:51 +02:00
#######################
2020-05-10 19:59:35 +02:00
# log "$NODE_PUBSECFILE $PUBKEY THIRD_PARTY_MANAGER:$NODE_G1PUBKEY"
2020-05-12 02:36:54 +02:00
duniter_server = $( /home/$YOU /.zen/astroport/zen/tools/duniter_getnode.sh)
2020-05-12 18:46:41 +02:00
[ [ $MEMBERUID != "" ] ] && combieng1 = "4.24" || combieng1 = "3.24"
TX_IN = $( silkaj -p " $duniter_server " -af --file /home/$YOU /.ssb/secret.dunikey tx --output $PUBKEY --amount $combieng1 --comment " [G1sms+] $UIDNA $TAIL 3RD: $NODE_G1PUBKEY " -y)
2020-05-01 15:19:51 +02:00
log " __SUB:sms_INIT_ACCOUNT: G1 Wallet TX IN: $TX_IN "
sleep 2
2020-05-05 04:41:17 +02:00
2020-05-21 02:34:16 +02:00
TX_OUT = $( silkaj -p " $duniter_server " -af --file /home/$YOU /.zen/g1sms/$PHONE /secret.dunikey tx --output $NODE_G1PUBKEY --amount 0.1 --comment " [G1sms+] $UIDNA $TAIL 3RD: $NODE_G1PUBKEY :ACK " -y)
2020-05-01 15:19:51 +02:00
log " __SUB:sms_INIT_ACCOUNT: G1 Wallet TX OUT: $TX_OUT "
################
2020-05-13 22:58:10 +02:00
# GPG cypher PIN so ONLY CREATOR NODE CAN ACCESS IT !)
2020-05-01 15:19:51 +02:00
################
echo " $PIN " > " $PINFILE "
2020-05-05 04:41:17 +02:00
echo " ${ IPFSPrivKey } " | gpg -q --output " $GPGPINFILE " --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 " $PINFILE "
2020-05-12 02:36:54 +02:00
/home/$YOU /.zen/astroport/zen/tools/natools.py encrypt -p $NODE_G1PUBKEY -i " $PINFILE " -o " ${ PINFILE } .crypt "
2020-05-01 15:19:51 +02:00
PIN = $( cat " $PINFILE " | xargs)
[ [ " $PIN " != "" ] ] && echo "" > " $PINFILE " || log "SYSTEM ERROR :: PIN EMPTY !!! GPG???"
echo " $PUBKEY " > " $PUBKEYFILE "
echo " $COIN " > " $UNITFILE "
echo " $MASTERPHONE " > " $SMSNODE "
fi
#################################################
# PUBLISH G1sms+ WALLET PROPERTIES MAIN PROCESS
#################################################
######################################################################
2020-05-12 23:25:52 +02:00
log "__SUB:sms_INIT_ACCOUNT: RECUPERATION PARAMETRES"
2020-05-05 04:41:17 +02:00
# GPG decypher PIN
# TODO make decypher less stress on filesystem, use /tmp and ramdisk
2020-05-12 23:25:52 +02:00
# /home/$YOU/.zen/astroport/zen/tools/natools.py encrypt -p $NODE_G1PUBKEY -i "$DUNIKEYFILE" -o "$DUNIKEYFILE.crypt"
2020-05-20 23:42:40 +02:00
# /home/$YOU/.zen/astroport/zen/tools/natools.py decrypt -f pubsec -k "$NODE_PUBSECFILE" -i "$DUNIKEYFILE.crypt" -o "$DUNIKEYFILE"
2020-05-11 06:44:21 +02:00
# EMAIL
2020-05-11 06:49:28 +02:00
[ [ $SMSEMAIL = = "" ] ] && [ [ -f " $GPGMAILFILE " ] ] && echo " ${ IPFSPrivKey } " | gpg -d -q --output " $MAILFILE " --yes --pinentry-mode loopback --passphrase-fd 0 " $GPGMAILFILE " && SMSEMAIL = $( cat $MAILFILE )
2020-05-20 23:42:40 +02:00
[ [ $SMSEMAIL = = "" ] ] && [ [ -f " $MAILFILE .crypt " ] ] && /home/$YOU /.zen/astroport/zen/tools/natools.py decrypt -f pubsec -k " $NODE_PUBSECFILE " -i " $MAILFILE .crypt " -o " $MAILFILE " && SMSEMAIL = $( cat $MAILFILE )
2020-05-11 08:17:26 +02:00
log " __SUB:sms_INIT_ACCOUNT: Déchiffrage EMAIL $SMSEMAIL "
2020-05-11 06:44:21 +02:00
# EMPTY CLEAR EMAIL FILE
2020-05-11 07:09:23 +02:00
[ [ $SMSEMAIL != "" ] ] && echo "" > " $MAILFILE "
2020-05-01 15:19:51 +02:00
# PUBLISH GLOBAL VARS FROM ACCOUNT FILES
echo $IPFSNODEID > $IPFSNODEIDFILE
PUBKEY = $( cat " $PUBKEYFILE " | xargs)
UNIT = $( cat " $UNITFILE " | xargs)
if [ -f " $NAMEFILE " ] ; then MEMBER = $( cat " $NAMEFILE " ) ; else MEMBER = "" ; fi
if [ -f " $RIBFILE " ] ; then MEMRIB = $( cat " $RIBFILE " ) ; else MEMRIB = "" ; fi
if [ -f " $UIDNAFILE " ] ; then UIDNA = $( cat " $UIDNAFILE " ) ; else UIDNA = "" ; fi
if [ -f " $DABUIDF " ] ; then DABID = $( cat " $DABUIDF " ) ; else DABID = " $NODEUIDNA " ; fi
2020-05-11 06:44:21 +02:00
AMOUNTG1 = $( silkaj_balance $PUBKEY )
2020-05-01 15:19:51 +02:00
AMOUNTDU = $( bc <<< " scale=2; $AMOUNTG1 / $DUFACTOR " )
AMOUNTLOVE = $( bc <<< " $AMOUNTG1 * 100 / $DUFACTOR " )
case " $UNIT " in
G1)
AMOUNT = $AMOUNTG1
; ;
DU)
AMOUNT = $AMOUNTDU
; ;
*)
AMOUNT = $AMOUNTLOVE
; ;
esac
log " __SUB:sms_INIT_ACCOUNT: $AMOUNTG1 = $AMOUNT $UNIT "
2020-05-05 04:41:17 +02:00
# LOG # TODO SECURITY REMOVE PIN LOG!!
2020-05-01 15:19:51 +02:00
log "#####################"
log " PHONE: $PHONE "
log " PIN: $PIN "
log " PUBKEY: $PUBKEY "
log " G1: $AMOUNTG1 "
log " AMOUNT: $AMOUNT $UNIT "
log " UIDNA: $UIDNA "
log " MEMBER: $MEMBER "
log " MEMRIB: $MEMRIB "
2020-05-11 06:49:28 +02:00
log " SMSEMAIL: $SMSEMAIL "
2020-05-01 15:19:51 +02:00
log " DABID: $DABID "
log "#####################"
log "__SUB:sms_INIT_ACCOUNT: END"
}
2020-05-07 02:27:11 +02:00
#################################################################################################################################
function check_account ( ) {
AMOUNTG1 = $( silkaj_balance $PUBKEY )
2020-05-01 15:19:51 +02:00
AMOUNTDU = $( bc <<< " scale=2; $AMOUNTG1 / $DUFACTOR " )
AMOUNTLOVE = $( bc <<< " $AMOUNTG1 * 100 / $DUFACTOR " )
case " $UNIT " in
G1)
AMOUNT = $AMOUNTG1
; ;
DU)
AMOUNT = $AMOUNTDU
; ;
*)
AMOUNT = $AMOUNTLOVE
; ;
esac
declare -a aaa
aaa = ( " $AMOUNTG1 " " $AMOUNT " " $UNIT " )
log " __SUB:check_account: $( declare -p aaa) "
echo ${ aaa [@] }
}
#################################################################################################################################
function make_accounting ( ) {
# CONVERT AMOUNT UNIT to VIR G1
case " $UNIT " in
G1)
VIR = $AMOUNT ;
; ;
DU)
VIR = $( bc -l <<< " scale=2; $AMOUNT * $DUFACTOR " )
; ;
LOVE)
VIR = $( bc -l <<< " scale=2; $AMOUNT * $DUFACTOR / 100 " )
; ;
*)
VIR = $( bc -l <<< " scale=2; $AMOUNT * $DUFACTOR / 100 " )
; ;
esac
###########################################################
# GET G1sms wallet AMOUNTG1 and CHECK for right balance
log " __SUB:make_accounting: LOCAL $VIR amount for $PHONE : $PUBKEY "
2020-05-07 02:27:11 +02:00
AMOUNTG1 = $( silkaj_balance $PUBKEY )
2020-05-01 15:19:51 +02:00
if [ [ " $AMOUNTG1 " = = "" ] ] ; then AMOUNTG1 = 0; fi
2020-05-07 02:27:11 +02:00
2020-05-01 15:19:51 +02:00
# TAX AND MINIMUM WALLET ACCOUNT CALCULATION
PERCENT = 0$( bc -l <<< " scale=2; $VIR / $SWARMCOMM " )
MIN = $( bc -l <<< " $AMOUNTG1 - $PERCENT - $LIMIT " )
CHARGE = $( bc -l <<< " scale=2; $VIR + $PERCENT + $LIMIT " )
TESTMIN = $( echo " ${ VIR } < ${ MIN } " | bc -l )
log " __SUB:make_accounting: TEST $AMOUNT $UNIT :: $VIR + $PERCENT + $LIMIT = $CHARGE < $AMOUNTG1 ? $TESTMIN "
declare -a myarray
myarray = ( " $TESTMIN " " $VIR " " $PERCENT " " $CHARGE " )
log " __SUB:make_accounting: $( declare -p myarray) "
echo ${ myarray [@] }
}
#################################################################################################################################
#################################################################################################################################
# Contact database management
function add_contact( ) {
userDB = "gammu"
pwdDB = $( cat /etc/gammu-smsdrc | grep "password =" | awk '{ print $3 }' || exit 1)
local sql = " mysql -N -u $userDB -p $pwdDB gammu -e "
local PHONE = $1
local MEMBERUID = $2
[ [ -z $MEMBERUID ] ] && MEMBERUID = $PHONE
[ [ -z $( $sql "SELECT * FROM pbk_groups WHERE ID='1'" ) ] ] && $sql " INSERT INTO pbk_groups (ID, Name, id_user, is_public) VALUES ('1', ' $( grep "ADRESSE" $MY_PATH /../.profile | awk -F= '{ print $2 }' | tr -d '"' ) ', '1', 'false') "
2020-05-21 02:34:16 +02:00
if [ [ $( $sql " SELECT * FROM pbk WHERE Number= $PHONE " ) ] ] ; then
$sql " DELETE FROM pbk WHERE Number= $PHONE " || exit 1
$sql " DELETE FROM user_group WHERE id_group=' $id_user ' " || exit 1
log " ${ red } Contact already exist refreshing $c_ "
2020-05-01 15:19:51 +02:00
fi
2020-05-21 02:34:16 +02:00
$sql " INSERT INTO pbk (GroupID, Name, Number, id_user, is_public) VALUES ('1', ' $MEMBERUID ', ' $PHONE ', '1', 'false') " || exit 1
local id_user = $( $sql " SELECT ID FROM pbk WHERE Number= $PHONE " || exit 1)
$sql " INSERT INTO user_group (id_group, id_pbk, id_pbk_groups, id_user) VALUES (' $id_user ', ' $id_user ', '1', '1') " || exit 1
2020-05-01 15:19:51 +02:00
}
function rm_contact( ) {
userDB = "gammu"
pwdDB = $( cat /etc/gammu-smsdrc | grep "password =" | awk '{ print $3 }' || exit 1)
local sql = " mysql -N -u $userDB -p $pwdDB gammu -e "
local PHONE = $1
local MEMBERUID = $2
[ [ -z $MEMBERUID ] ] && MEMBERUID = $PHONE
if [ [ ! -z $( $sql " SELECT * FROM pbk WHERE Number= $PHONE " ) ] ] ; then
local id_user = $( $sql " SELECT ID FROM pbk WHERE Number= $PHONE " || exit 1)
$sql " DELETE FROM pbk WHERE Number= $PHONE " || exit 1
$sql " DELETE FROM user_group WHERE id_group=' $id_user ' " || exit 1
else
log " ${ red } Contact doesn't exist $c_ "
fi
}