#!/bin/bash ######################################################################## # Author: Fred (support@qo-op.com) # Version: 0.1 # License: GPL (http://www.google.com/search?q=GPL) ######################################################################## ## PUT YOUR PHONE COUNTRY CODE PREFIX HERE ## only works for station local country phone numbers! prefix="+33" ######################################################################## MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized ######################################################################## YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) || er+=" ipfs daemon not running" [[ ! -f /home/${YOU}/.zen/secret.dunikey ]] && echo "Crypto is missing... please provide /home/${YOU}/.zen/secret.dunikey by installing 'astrXbian' TestNet" && exit 1 G1PUB=$(cat /home/${YOU}/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) ######################################################################## # GET smsadmin PHONE NUMBER FROM ~/.zen/SMSADMIN FILE ######################################################################## [[ ! -f /home/${YOU}/.zen/SMSADMIN ]] && echo "EXIT. Indiquez votre numéro de mobile dans /home/${YOU}/.zen/SMSADMIN" && exit 1 SMSADMIN="$(cat /home/${YOU}/.zen/SMSADMIN)" ## FRENCH NUMBER [[ ${SMSADMIN#"$prefix"} != "${SMSADMIN}" ]] && smsadmin=0${SMSADMIN#"$prefix"} || smsadmin="${SMSADMIN}" ## 06 ######################################################################## ## CHECK MADEINZION INTERNET SERVICES CONNEXION ping -q -w 1 -c 1 data.gchange.fr 2>&1>/dev/null && echo "GCHANGE+ OK" && GCHANGE=1 || GCHANGE=0 ping -q -w 1 -c 1 g1.data.e-is.pro 2>&1>/dev/null && echo "CESIUM+ OK" && CESIUM=1 || CESIUM=0 ping -q -w 1 -c 1 oasis.astroport.com 2>&1>/dev/null && echo "OASIS OK" && OASIS=1 || OASIS=0 ping -q -w 1 -c 1 taurus.copylaradio.com 2>&1>/dev/null && echo "TAURUS OK" && TAURUS=1 || TAURUS=0 ######################################################################## ######################################################################## # GET INCOMING SMS CONTENT # https://docs.gammu.org/smsd/run.html#environment ######################################################################## ######################################################################## PHONE="$SMS_1_NUMBER" # gammu-smsd [[ ! ${PHONE} ]] && PHONE="$1" # CLI MODE [[ "${#PHONE}" < 10 || "${#PHONE}" > 12 ]] && echo "PHONE ${PHONE} NON RECONNU. EXIT" && exit 1 ## Remove prefix: phone contains local number [[ ${PHONE#"$prefix"} != "${PHONE}" ]] && phone=0${PHONE#"$prefix"} || phone="${PHONE}" ######################################################################## # EXTRACT INCOMING SMS TEXT (long message compatible) ######################################################################## TEXT="" rm -f /tmp/sms_incoming 2>/dev/null PROGRAM=/bin/echo for i in `seq $SMS_MESSAGES` ; do eval "$PROGRAM \"\${SMS_${i}_TEXT}\"" >> /tmp/sms_incoming done TEXT="$(cat /tmp/sms_incoming | tr -d '\n')" [[ ! ${TEXT} ]] && TEXT="$2" # CLI MODE [[ "${TEXT}" == "" ]] && echo "SMS IS EMPTY - EXIT -" && exit 1 ######################################################################## # CHECK INTERNET CONNEXION or MAKE REPLAY SCRIPT ######################################################################## if [[ $GCHANGE == 0 ]]; then echo "GCHANGE UNREACHABLE => CREATING timestamp.replay.sh - EXIT -" echo "#!/bin/bash sudo $MY_PATH/sms_received.sh \"${PHONE}\" \"${TEXT}\"" > /home/${YOU}/.zen/SMS/$(date -u +%s%N | cut -b1-13).replay.sh chmod +x /home/${YOU}/.zen/SMS/*.replay.sh exit 1 fi ######################################################################## ## LOG ######################################################################## echo "#################################################################" echo "SMS received : $(date)" echo "PHONE: $PHONE" echo "TEXT: $TEXT" ######################################################################## echo "${phone};${TEXT}" >> /home/${YOU}/.zen/SMS/received.log ######################################################################## # EXTRACTION CMD : premier mot du SMS reçu ######################################################################## CMD=$(echo "$TEXT" | awk '{print toupper($1)}') ######################################################################## # SWITCH CASE DEPENDING ON CMD ######################################################################## echo "COMMAND = $CMD" [[ ! $CMD ]] && exit 1 # Handle commands case "$CMD" in "") ## ASK FOR HELP echo "SMS SANS MESSAGE - EXIT -" && exit 0 ;; AIDE) ## ASK FOR HELP $MY_PATH/sms/AIDE.sh "$phone" && exit 0 ;; STOP) ## STOP RELATION WITH CMD GUILDE GROUP GUILDE=$(echo "$TEXT" | awk '{print toupper($2)}') $MY_PATH/sms/ERASE.sh "$phone" "$GUILDE" && exit 0 ;; *) echo "MESSAGE DE $phone POUR $CMD" MESSAGE=$(echo "$TEXT" | cut -d ' ' -f 2-) if [[ ${MESSAGE} ]]; then echo "${MESSAGE}" > /tmp/${phone}_message echo "${MESSAGE}" fi ## CMD est une GUILDE ? Admin/Guide peuvent la créer, sinon Ciao ! IsItAGuide=$(ls /home/${YOU}/.zen/SMS/GUILDES/*/INPUT/*_${phone}_guide.txt 2>/dev/null) [[ ${phone} != $SMSADMIN ]] && [[ ! $IsItAGuide ]] && [[ ! -d /home/${YOU}/.zen/SMS/GUILDES/${CMD} ]] && echo "PAS ADMIN, PAS GUIDE, PAS DE GUILDE ${CMD} - EXIT -" && exit 0 ## LE MESSAGE PART POUR LA GUILDE /tmp/${phone}_message $MY_PATH/sms/GUILDE.sh "${phone}" "$CMD" >> /home/${YOU}/.zen/SMS/debug_${phone}.log cat /home/${YOU}/.zen/SMS/debug_${phone}.log ## SHOW DEBUG INFORMATIONS ## CORRECT FILESYSTEM RIGHTS chown -R ${YOU}:${YOU} /home/${YOU}/.zen/SMS ;; esac ## ADMIN / GUIDE COMMUNICATION ## SEND COPY OF INCOMING MESSAGE if [[ "${phone}" != "$SMSADMIN" ]]; then adminhash=$(echo $SMSADMIN | sha256sum | cut -d ' ' -f1) phonehash=$(echo ${phone} | sha256sum | cut -d ' ' -f1) ID=$(cat /home/${YOU}/.zen/SMS/PHONE/${phonehash}/xzuid.txt 2>/dev/null) # ADMIN COPY echo "#!/bin/bash sudo gammu sendsms TEXT \"_PHONE_\" -text \"> $ID ${phone} > $TEXT\"" > /home/${YOU}/.zen/SMS/PHONE/${adminhash}/$(date -u +%s%N | cut -b1-13).tosend.sh chmod +x /home/${YOU}/.zen/SMS/PHONE/${adminhash}/*.tosend.sh ## GUIDE COPY # FIND /home/${YOU}/.zen/SMS/GUILDES/${guilde}/INPUT/$(SCORE)_${phone}_guide.txt IsThereAGuide=$(ls /home/${YOU}/.zen/SMS/GUILDES/${CMD}/INPUT/*_guide.txt | head -n 1 2>/dev/null) [[ $IsThereAGuide ]] && guidephone=$(echo $IsThereAGuide | cut -d '/' -f 9 | cut -f '_' -f 2) || echo "NO GUIDE" && exit 0 [[ ${guidephone} == ${phone} ]] && echo "${phone} IS ${CMD} GUIDE" && exit 0 guidescore=$(echo $IsThereAGuide | cut -d '/' -f 9 | cut -f '_' -f 1) guidephonehash=$(echo ${guidephone} | sha256sum | cut -d ' ' -f1) echo "#!/bin/bash sudo gammu sendsms TEXT \"_PHONE_\" -text \"> $ID ${phone} > $TEXT\"" > /home/${YOU}/.zen/SMS/PHONE/${guidephonehash}/$(date -u +%s%N | cut -b1-13).tosend.sh chmod +x /home/${YOU}/.zen/SMS/PHONE/${guidephonehash}/*.tosend.sh fi exit 0