Add cron_MINUTE.sh : Execute G1sms CMD from EMAIL received on vir@g1sms.fr
This commit is contained in:
parent
bf8a2c626f
commit
73eca2426c
|
@ -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
|
||||
##################################################################
|
||||
|
||||
##################################################################
|
||||
|
|
|
@ -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
|
||||
|
||||
}
|
||||
|
|
|
@ -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+]
|
||||
|
|
|
@ -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
|
||||
##############################################
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue