#!/bin/bash ######################################################################## # Author: Fred (support@qo-op.com) # Version: 0.3 # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) ######################################################################## # ASTROPORT COMMAND RECEIVER & DISPACHER # Rise Up by unid@chan && Run corresponding command.sh ######################################################################## # NOT WORKING YET # TODO! CONVERT G1SMS+ FROM PHONE TO MULTICHANNEL ######################################################################## MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized source ./zen/functions.sh SOURCE="$1" # id@channel COMMAND="$2" # command received (message, comment, ...) [[ $SOURCE == "" ]] && SOURCE="unid@channel" [[ $COMMAND == "" ]] && COMMAND="cmd arg1 arg2 ..." SOURCEH=$(echo -n $SOURCE | sha512sum | cut -d ' ' -f 1) # Hash SOURCE SRC=$(echo "$SOURCE" | cut -d '@' -f 1) CHAN=$(echo "$SOURCE" | cut -d '@' -f 2) CMD=$(echo "$COMMAND" | awk '{print toupper($1)}') # CMD is first word ######################################################################## # ANTI SPAM ################################################################## NOspam ################################################################## # Handle commands CMD ################################################################## case "$CMD" in # RAZ MEMERUID? RAZ) MEMBERUID=$(echo "$COMMAND" | awk '{print $2}' | grep -E "([A-Za-z0-9\-\_]+$)") ./shell/chan_RAZ.sh "$SOURCE" "$MEMBERUID"& ;; # HELP HELP) ./shell/chan_HELP.sh "$SOURCE" & ;; # NEW MEMERUID? NEW) MEMBERUID=$(echo "$COMMAND" | awk '{print $2}' | grep -E "([A-Za-z0-9\-\_]+$)") ./shell/chan_NEW.sh "$SOURCE" "$MEMBERUID" & ;; # PAY DESTINATION! MONEY! PAY) DESTINATION=$(echo "$COMMAND" | awk '{print tolower($2)}' | grep -E "[a-z0-9._%+-]+@[a-z0-9._%+-]") MONEY=$(echo "$COMMAND" | awk '{print $3}' | grep -E "^\-?[0-9]+$") if [[ "$DEST" != "" && "$MONEY" != "" ]]; then ./shell/chan_PAY.sh "$SOURCE" "$DEST" "$MONEY" & else ./shell/chan_ERROR.sh "$SOURCE" "PAY DESTINATION! MONEY!" & fi ;; # VIR AMOUNT! VIRDEST! PERIOD? TIME? VIR) AMOUNT=$(echo "$COMMAND" | awk '{print $2}' | grep -E "^\-?[0-9]+$") VIRDEST=$(echo "$COMMAND" | awk '{print $3}' | grep -E "([A-Za-z0-9\-\_]+$)") PERIOD=$(echo "$COMMAND" | awk '{print toupper($4)}' | grep -E "([A-Za-z0-9\-\_]+$)") TIME=$(echo "$COMMAND" | awk '{print $5}' | grep -E "^\-?[0-9]+$") if [[ "$VIRDEST" != "" && "$AMOUNT" != "" && "$PERIOD" != "" && "$TIME" != "" ]]; then ./shell/chan_VIR.sh "$SOURCE" "$VIRDEST" "$AMOUNT" "$PERIOD" "$TIME" & else ./shell/chan_ERROR.sh "$SOURCE" "VIR AMOUNT! VIRDEST! PERIOD? TIME?" & fi ;; # BAL BAL) ./shell/chan_COUNT.sh "$SOURCE" & ;; # EMAIL MAIL! EMAIL) MAIL=$(echo "$COMMAND" | awk '{print tolower($2)}' | grep -E "[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}") if [[ "$MAIL" != "" ]]; then ./shell/chan_EMAIL.sh "$SOURCE" "$MAIL" & else ./shell/chan_ERROR.sh "$SOURCE" "EMAIL MAIL!" & fi ;; # BILL VAL! BILL) VAL=$(echo "$COMMAND" | awk '{print $2}' | grep -E "^\-?[0-9]+$") if [[ "$VAL" != "" ]]; then ./shell/chan_BILLET.sh "$SOURCE" "$VAL" & else ./shell/chan_ERROR.sh "$SOURCE" "BILL VAL!" & fi ;; # CHK W1! W2! W3? W4? W5? W6? W7? CHK) W1=$(echo "$COMMAND" | awk '{print tolower($2)}' | grep -E "^[a-z0-9]+$") W2=$(echo "$COMMAND" | awk '{print tolower($3)}' | grep -E "^[a-z0-9]+$") W3=$(echo "$COMMAND" | awk '{print tolower($4)}' | grep -E "^[a-z0-9]+$") W4=$(echo "$COMMAND" | awk '{print tolower($5)}' | grep -E "^[a-z0-9]+$") W5=$(echo "$COMMAND" | awk '{print tolower($6)}' | grep -E "^[a-z0-9]+$") W6=$(echo "$COMMAND" | awk '{print tolower($7)}' | grep -E "^[a-z0-9]+$") W7=$(echo "$COMMAND" | awk '{print tolower($8)}' | grep -E "^[a-z0-9]+$") if [[ "$W1" != "" && "$W2" != "" ]]; then ./shell/chan_BILLETCHK.sh "$SOURCE" "$W1" "$W2" "$W3" "$W4" "$W5" "$W6" "$W7" & else ./shell/chan_ERROR.sh "$SOURCE" "CHK W1! W2! W3? W4? W5? W6? W7?" & fi ;; CMD) echo "===================================================" echo "HELLO $SOURCE your ASTROPORT suit is $SOURCEH" echo "RUN ./command_received.sh \"$SOURCE\" \"$COMMAND\"" ;; ACK|DELIVERED|PENDING|FAILED) exit 0 ;; *) echo "$SOURCE :: UNKNOWN $COMMAND" exit 1 ;; esac exit 0