Add cron_MINUTE.sh : Execute G1sms CMD from EMAIL received on vir@g1sms.fr

This commit is contained in:
qo-op 2020-01-24 18:58:24 +01:00
parent bf8a2c626f
commit 73eca2426c
5 changed files with 91 additions and 16 deletions

View File

@ -22,13 +22,80 @@ source ./shell/init.sh
source ./shell/functions.sh
timebar=$(date +%H:%M)
minut=$(date +%M)
##################################################################
if [[ "$1" == "" ]]; then
##################################################################
echo "It is $timebar in the morning, or in the night? It depends on your day..."
echo "$minut MN - It is $timebar in the morning, or in the night? It depends on your day..."
exit
fi
log "__CRON: $timebar $1"
##################################################################
##################################################################
##################################################################
##################################################################
# EVERY EVERY MINUTES
# START CHECK FOR EMAIL CMD
# START CHECK FOR TX CMD
EVERY=1
##################################################################
if [[ $(($minut%$EVERY)) == 0 ]]; then
##################################################################
# CHECK FOR TX COMMAND
TIMEBEFORE=$(date --date="-$EVERY minutes" +"%s")
[[ $NODE_G1PUBKEY == "" ]] && NODE_G1PUBKEY="5sdcypPRDrzEirtTqXwzvNnMwGpjXK6EhNdti8qsdS4h"
TIMESTAMP=$(date +"%s")
log "GETTING last $EVERY mn TX : https://duniter-g1.p2p.legal/tx/history/$NODE_G1PUBKEY/times/$TIMEBEFORE/$TIMESTAMP"
curl -s https://duniter-g1.p2p.legal/tx/history/$NODE_G1PUBKEY/times/$TIMEBEFORE/$TIMESTAMP | jq '.history.pending' | jq '.[].comment' > /tmp/scan.json
while read SMS_1_TEXT
do
export $SMS_1_TEXT
log "$NODE_G1PUBKEY TX RECEIVED !! COMMENT = " $SMS_1_TEXT
# TODO: VERIFY SOURCE PUBKEY IS RELATED TO A WALLET
# PUBKEY=
# WALLET=$(grep -Rwl "$PUBKEY" ./wallets/*/*.pub | head -n 1)
# export SMS_1_NUMBER=$(echo $WALLET | cut -d '/' -f 3) #TODO CHANGE ON NEXT SHA RELEASE
# TODO: GET PHONE G1SMS (OPTION: SEND SMS FOR AUTH CHALENGE?)
# TODO: EXTRACT CMD FROM TX AND RELAY TO SMS_RECEIVED API
# TODO: MEMORIZE CMD TO MAKE IT ONLY ONE TIME!!!!!!!
done < /tmp/scan.json
# CHECK FOR EMAIL COMMAND
FROM="None"
SUBJECT="None"
# LOOP ON EVERY mn received emails
while [[ $FROM != "" && $SUBJECT != "" ]]; do
# GET POP3 From Address (TODO: CREATE != EMAILs FOR EACH NODE = UIDNA@g1sms.fr )
FROM=$(curl -s --insecure --url "pop3://pop.bookmyname.com/1" --user "vir@g1sms.fr:Z1cG1V1r!" | grep From | head -n 1 | grep -i -o '[A-Z0-9._%+-]\+@[A-Z0-9.-]\+\.[A-Z]\{2,4\}' | tr -d '\r')
# GET POP3 Email Subject (remove carriage return | tr -d '\r' )
export SMS_1_TEXT=$(curl -s --insecure --url "pop3://pop.bookmyname.com/1" --user "vir@g1sms.fr:Z1cG1V1r!" | grep Subject | head -n 1 | cut -d ':' -f 2 | sed -e 's/^[[:space:]]*//' | tr -d '\r')
# SHA256(FROM) as Search ./wallets
[[ $FROM != "" ]] && HMAIL=$(echo -n $FROM | sha256sum | cut -d ' ' -f 1)
# SEARCH for FROM corresponding WALLET
[[ $HMAIL != "" ]] && WALLET=$(grep -Rwl "$HMAIL" ./wallets/*/_email.sha | head -n 1)
# HAVE WALLET SOURCE + CMD: OK
if [[ $WALLET ]]; then
# DELETE EMAIL 1
curl -s --user "vir@g1sms.fr:Z1cG1V1r!" pop3://pop.bookmyname.com/1 --request dele --list-only
# GET G1SMS PHONE NUMBER
export SMS_1_NUMBER=$(echo -n $WALLET | cut -d '/' -f 3) #TODO CHANGE ON NEXT SHA RELEASE
# $SMS_1_NUMBER && $SMS_1_TEXT => RUN ./sms_received.sh
[[ $SMS_1_TEXT != "" && $SMS_1_NUMBER ]] && log "EMAIL CMD = $SMS_1_NUMBER $SMS_1_TEXT" && ./sms_received.sh
cat ./email.txt | sed s/EMAIL/"${FROM}"/g | sed s/SUBJECT/"G1sms+ EMAIL ACK"/g | sed s/MESSAGE/"$SMS_1_TEXT OK"/g | ssmtp ${FROM}
else
if [[ $FROM != "" ]]; then
log "MAIL RECEIVED! NO GOOD SENDER: $FROM"
curl -s --user "vir@g1sms.fr:Z1cG1V1r!" pop3://pop.bookmyname.com/1 --request dele --list-only
cat ./email.txt | sed s/EMAIL/"${FROM}"/g | sed s/SUBJECT/"G1sms+ INCONNU"/g | sed s/MESSAGE/"Portefeuille G1sms inconnu"/g | ssmtp ${FROM}
fi
log "NO MAIL"
fi
done
##################################################################
fi # END CHECK FOR EMAIL CMD
##################################################################
##################################################################

View File

@ -320,6 +320,7 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
RIBFILE="./wallets/$PHONE/$PHONE.uidrib" # Contains phone wallet related UID Pubkey
NAMEFILE="./wallets/$PHONE/$PHONE.uidname" # Contains the member UID related to wallet
MAILFILE="./wallets/$PHONE/$PHONE.email" # Contains the member EMAIL (Send BILLET)
HMAILFILE="./wallets/$PHONE/_email.sha" # Contains sha256 EMAIL (Email CMD wallet owner search)
GPGMAILFILE="./wallets/$PHONE/$PHONE.email.gpg" # Contains the member EMAIL (Send BILLET)
UIDNAFILE="./wallets/$PHONE/$PHONE.uidna" # Contains the G1sms+ UID Name for recursive VIR
GEOFILE="./wallets/$PHONE/$PHONE.uidgeo.json" # Contains the member GeoPoint from member Cesium+ related to wallet
@ -429,8 +430,8 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
# CYPHER EMAIL FILE
if [[ ! -f "$GPGMAILFILE" ]]; then
# ------------8<------------------
log "__SUB:sms_INIT_ACCOUNT: NO EMAIL .gpg file, CREATING it"
if [ -f "$MAILFILE" ]; then
log "__SUB:sms_INIT_ACCOUNT: NO EMAIL .gpg file, CREATING it"
MAIL=$(cat "$MAILFILE");
echo "${GPGPASS}" | gpg -q --output "$GPGMAILFILE" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "$MAILFILE";
else
@ -441,9 +442,12 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
log "__SUB:sms_INIT_ACCOUNT: DECODING EMAIL .gpg... "
echo "${GPGPASS}" | gpg -d -q --output "$MAILFILE" --yes --pinentry-mode loopback --passphrase-fd 0 "$GPGMAILFILE"
MAIL=$(cat "$MAILFILE");
# Double decypher (TODO: stop PGP for email)
[[ $MAIL == "" && -f "$MAILFILE.node.crypt" ]] && ./shell/natools.py decrypt -k "$NODE_G1AUTHFILE" -i "$MAILFILE.node.crypt" -o "$MAILFILE" && MAIL=$(cat "$MAILFILE");
# EMPTY CLEAR EMAIL FILE
[[ $MAIL != "" ]] && echo "" > "$MAILFILE" || log "SYSTEM ERROR :: MAIL EMPTY !!! GPG???"
[[ $MAIL != "" ]] && echo "" > "$MAILFILE" || log "SYSTEM ERROR :: MAIL EMPTY !!! GPG PROBLEM???"
# Create _email.sha
[[ $MAIL != "" && ! -f $HMAILFILE ]] && echo -n $MAIL | sha256sum | cut -d ' ' -f 1 > $HMAILFILE
fi
# ------------8<------------------
@ -647,6 +651,7 @@ function add_contact(){
$sql "INSERT INTO user_group (id_group, id_pbk, id_pbk_groups, id_user) VALUES ('$id_user', '$id_user', '1', '1')" || exit 1
else
log "${red}Contact already exist$c_"
#TODO: UPDATE Kalkun Contact database
fi
}

View File

@ -11,7 +11,7 @@
source ./shell/init.sh
source ./shell/functions.sh
log "__SUB:sms_EMAIL.sh.sh: START ($1=phone, $2=mail)"
log "__SUB:sms_EMAIL.sh: START ($1=phone, $2=mail)"
phone="$1"
mail="$2"
@ -30,7 +30,7 @@ if [[ "$mail" != "" ]]; then
echo "$mail" > "$MAILFILE"
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "$MAILFILE" -o "$MAILFILE.node.crypt"
echo "" > "$MAILFILE"
log "__SUB:sms_EMAIL.sh.sh: EMAIL $MEMBER ($PHONE) NOUVEAU: $mail... Publishing to IPFS"
log "__SUB:sms_EMAIL.sh: EMAIL $MEMBER ($PHONE) NOUVEAU: $mail... Publishing to IPFS"
ipfs_node_wallets_add
else
mail=$MAIL
@ -42,7 +42,7 @@ MESSAGE="Bonjour $MEMBER\n\nVotre porte-monnaie G1sms $UIDNA ($PHONE) a choisi v
cat ./email.txt | sed s/EMAIL/"${mail}"/g | sed s/SUBJECT/"${SUBJECT}"/g | sed s/MESSAGE/"${MESSAGE}"/g | ssmtp ${mail}
mpack -s "[G1sms+] $PHONE, $UIDNA :: Envoyer 'BILL nnn' à $MASTERPHONE pour fabriquer des G1Billets (ci-joint exemple de verso)" ./Dos_G1Billets.odt ${mail}
log "__SUB:sms_EMAIL.sh.sh: Send welcome EMAIL to $mail via ssmtp"
log "__SUB:sms_EMAIL.sh: Send welcome EMAIL to $mail via ssmtp"
log_history $PHONE "EMAIL, $mail"
mess="[G1sms+]

View File

@ -14,8 +14,10 @@ function log () {
echo "$line
$1" >> /tmp/tag_READ_XY.log
}
source ./shell/init.sh
source ./shell/functions.sh
#############################################
# No external dependance !!!!
#source ./shell/init.sh
#source ./shell/functions.sh
##############################################
# NODE ENVIRONEMENT DETECTION
##############################################

View File

@ -4,17 +4,19 @@
# PUBKEY G1 DU SWARMMASTER: 8qs69HriAdytcCLzvQGJ15XBwpjAVFx8JoVM2ahue1y7
# ipfs ls /ipns/QmZHTne3bjtMgaXWRqSbdKchJbgq2NaAeVSzFUN7ceYpif
#
# G1sms+ est totalement décentralisé! Il peut être fait de multiples SWARM de Services dont les codes évoluent de façon décentralisé.
# Puis se mettent à jour autour des $ADMINPHONE par consensus d'utilisateurs ;)
# G1sms+ est constitué de multiples essaims (SWARM) qui évoluent de façon décentralisé.
# Ils se mettent à jour autour des $ADMINPHONE par consensus d'utilisateurs ;)
#
# Log => tail -f /tmp/g1sms.log -n 200
# gammu => tail -f /tmp/smsd.log -n 200
#
# PRODUCTION : RAM DISK / NO LOG
# 2 commands needed to make the ramdisk if planning to run from ramdisk to gain some speed
# sudo mkdir /mnt/ramdisk
# sudo mount -t tmpfs -o size=50m tmpfs /mnt/ramdisk
#
# Utiliser la commande ./search fournie pour fouiller dans le code, mais tout est ordonnancé d'ici, donc vous êtes au bon endroit pour commencer à farfouiller.
# Utiliser la commande ./search fournie pour fouiller dans le code,
# mais tout est ordonnancé à partir d'ici, vous êtes au bon endroit pour commencer à farfouiller.
###############################################################################
# EN FAISANT PARTIE DU SWARM G1sms+ VOUS VOUS ENGAGEZ A ASSURER LA SECURITE
# PHYSIQUE ET INFORMATIQUE DE VOTRE NOEUD ET NE PAS INTRODUIRE DE CODE MALVEILLANT
@ -23,7 +25,7 @@
# ELLE EST PROVISION EN CAS DE FRAUDE ET SA REATRIBUTION POURRA EVOLUER...
#
# Author: Fred (support@qo-op.com)
# Version: 0.1
# Version: 0.2
# License: GPL (http://www.google.com/search?q=GPL)
################################################################################
@ -109,7 +111,7 @@ case "$CMD" in
;;
VIR)
montant=$(echo "$TEXT" | awk '{print $2}' | grep -E "^\-?[0-9]+$")
membre=$(echo "$TEXT" | awk '{print $3}' | grep -E "([A-Za-z0-9\-\_]+$)")
membre=$(echo "$TEXT" | awk '{print $3}' | grep -E "([A-Za-z0-9\-\_]+$)") #TODO: UTF8 Char compatible? zöoma case
if [[ "$montant" != "" && "$membre" != "" ]]; then
./shell/sms_VIR.sh "$PHONE" "$montant" "$membre" &
else
@ -204,8 +206,7 @@ case "$CMD" in
*)
#./shell/sms_ERROR.sh "$PHONE" "$TEXT" &
log "SMS forward to $ADMINPHONE"
sms_SEND "$ADMINPHONE" "ADMIN! BAD SMS FROM $PHONE
$TEXT"
sms_SEND "$ADMINPHONE" "$PHONE !! BAD CMD: $TEXT"
;;
esac