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
|
source ./shell/functions.sh
|
||||||
|
|
||||||
timebar=$(date +%H:%M)
|
timebar=$(date +%H:%M)
|
||||||
|
minut=$(date +%M)
|
||||||
##################################################################
|
##################################################################
|
||||||
if [[ "$1" == "" ]]; then
|
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
|
exit
|
||||||
fi
|
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
|
RIBFILE="./wallets/$PHONE/$PHONE.uidrib" # Contains phone wallet related UID Pubkey
|
||||||
NAMEFILE="./wallets/$PHONE/$PHONE.uidname" # Contains the member UID related to wallet
|
NAMEFILE="./wallets/$PHONE/$PHONE.uidname" # Contains the member UID related to wallet
|
||||||
MAILFILE="./wallets/$PHONE/$PHONE.email" # Contains the member EMAIL (Send BILLET)
|
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)
|
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
|
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
|
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
|
# CYPHER EMAIL FILE
|
||||||
if [[ ! -f "$GPGMAILFILE" ]]; then
|
if [[ ! -f "$GPGMAILFILE" ]]; then
|
||||||
# ------------8<------------------
|
# ------------8<------------------
|
||||||
log "__SUB:sms_INIT_ACCOUNT: NO EMAIL .gpg file, CREATING it"
|
|
||||||
if [ -f "$MAILFILE" ]; then
|
if [ -f "$MAILFILE" ]; then
|
||||||
|
log "__SUB:sms_INIT_ACCOUNT: NO EMAIL .gpg file, CREATING it"
|
||||||
MAIL=$(cat "$MAILFILE");
|
MAIL=$(cat "$MAILFILE");
|
||||||
echo "${GPGPASS}" | gpg -q --output "$GPGMAILFILE" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "$MAILFILE";
|
echo "${GPGPASS}" | gpg -q --output "$GPGMAILFILE" --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 "$MAILFILE";
|
||||||
else
|
else
|
||||||
|
@ -441,9 +442,12 @@ log "__SUB:sms_INIT_ACCOUNT: ($1=phone, $2=NOSMS)"
|
||||||
log "__SUB:sms_INIT_ACCOUNT: DECODING EMAIL .gpg... "
|
log "__SUB:sms_INIT_ACCOUNT: DECODING EMAIL .gpg... "
|
||||||
echo "${GPGPASS}" | gpg -d -q --output "$MAILFILE" --yes --pinentry-mode loopback --passphrase-fd 0 "$GPGMAILFILE"
|
echo "${GPGPASS}" | gpg -d -q --output "$MAILFILE" --yes --pinentry-mode loopback --passphrase-fd 0 "$GPGMAILFILE"
|
||||||
MAIL=$(cat "$MAILFILE");
|
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");
|
[[ $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
|
# 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
|
fi
|
||||||
|
|
||||||
# ------------8<------------------
|
# ------------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
|
$sql "INSERT INTO user_group (id_group, id_pbk, id_pbk_groups, id_user) VALUES ('$id_user', '$id_user', '1', '1')" || exit 1
|
||||||
else
|
else
|
||||||
log "${red}Contact already exist$c_"
|
log "${red}Contact already exist$c_"
|
||||||
|
#TODO: UPDATE Kalkun Contact database
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
source ./shell/init.sh
|
source ./shell/init.sh
|
||||||
source ./shell/functions.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"
|
phone="$1"
|
||||||
mail="$2"
|
mail="$2"
|
||||||
|
@ -30,7 +30,7 @@ if [[ "$mail" != "" ]]; then
|
||||||
echo "$mail" > "$MAILFILE"
|
echo "$mail" > "$MAILFILE"
|
||||||
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "$MAILFILE" -o "$MAILFILE.node.crypt"
|
./shell/natools.py encrypt -p $NODE_G1PUBKEY -i "$MAILFILE" -o "$MAILFILE.node.crypt"
|
||||||
echo "" > "$MAILFILE"
|
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
|
ipfs_node_wallets_add
|
||||||
else
|
else
|
||||||
mail=$MAIL
|
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}
|
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}
|
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"
|
log_history $PHONE "EMAIL, $mail"
|
||||||
|
|
||||||
mess="[G1sms+]
|
mess="[G1sms+]
|
||||||
|
|
|
@ -14,8 +14,10 @@ function log () {
|
||||||
echo "$line
|
echo "$line
|
||||||
$1" >> /tmp/tag_READ_XY.log
|
$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
|
# NODE ENVIRONEMENT DETECTION
|
||||||
##############################################
|
##############################################
|
||||||
|
|
|
@ -4,17 +4,19 @@
|
||||||
# PUBKEY G1 DU SWARMMASTER: 8qs69HriAdytcCLzvQGJ15XBwpjAVFx8JoVM2ahue1y7
|
# PUBKEY G1 DU SWARMMASTER: 8qs69HriAdytcCLzvQGJ15XBwpjAVFx8JoVM2ahue1y7
|
||||||
# ipfs ls /ipns/QmZHTne3bjtMgaXWRqSbdKchJbgq2NaAeVSzFUN7ceYpif
|
# 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é.
|
# G1sms+ est constitué de multiples essaims (SWARM) qui évoluent de façon décentralisé.
|
||||||
# Puis se mettent à jour autour des $ADMINPHONE par consensus d'utilisateurs ;)
|
# Ils se mettent à jour autour des $ADMINPHONE par consensus d'utilisateurs ;)
|
||||||
#
|
#
|
||||||
# Log => tail -f /tmp/g1sms.log -n 200
|
# Log => tail -f /tmp/g1sms.log -n 200
|
||||||
# gammu => tail -f /tmp/smsd.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
|
# 2 commands needed to make the ramdisk if planning to run from ramdisk to gain some speed
|
||||||
# sudo mkdir /mnt/ramdisk
|
# sudo mkdir /mnt/ramdisk
|
||||||
# sudo mount -t tmpfs -o size=50m tmpfs /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
|
# 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
|
# 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...
|
# ELLE EST PROVISION EN CAS DE FRAUDE ET SA REATRIBUTION POURRA EVOLUER...
|
||||||
#
|
#
|
||||||
# Author: Fred (support@qo-op.com)
|
# Author: Fred (support@qo-op.com)
|
||||||
# Version: 0.1
|
# Version: 0.2
|
||||||
# License: GPL (http://www.google.com/search?q=GPL)
|
# License: GPL (http://www.google.com/search?q=GPL)
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
@ -109,7 +111,7 @@ case "$CMD" in
|
||||||
;;
|
;;
|
||||||
VIR)
|
VIR)
|
||||||
montant=$(echo "$TEXT" | awk '{print $2}' | grep -E "^\-?[0-9]+$")
|
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
|
if [[ "$montant" != "" && "$membre" != "" ]]; then
|
||||||
./shell/sms_VIR.sh "$PHONE" "$montant" "$membre" &
|
./shell/sms_VIR.sh "$PHONE" "$montant" "$membre" &
|
||||||
else
|
else
|
||||||
|
@ -204,8 +206,7 @@ case "$CMD" in
|
||||||
*)
|
*)
|
||||||
#./shell/sms_ERROR.sh "$PHONE" "$TEXT" &
|
#./shell/sms_ERROR.sh "$PHONE" "$TEXT" &
|
||||||
log "SMS forward to $ADMINPHONE"
|
log "SMS forward to $ADMINPHONE"
|
||||||
sms_SEND "$ADMINPHONE" "ADMIN! BAD SMS FROM $PHONE
|
sms_SEND "$ADMINPHONE" "$PHONE !! BAD CMD: $TEXT"
|
||||||
$TEXT"
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue