From 47967fb199b9130801d209e39e0e09204fbd8739 Mon Sep 17 00:00:00 2001 From: qo-op Date: Fri, 20 Mar 2020 02:32:33 +0100 Subject: [PATCH] command_received --- command_received.sh | 136 ++++++++++++++++++++++++++++++++++++++ zen/functions.sh | 44 ++++++++++++ zen/key_create_dunikey.py | 28 -------- 3 files changed, 180 insertions(+), 28 deletions(-) create mode 100755 command_received.sh create mode 100644 zen/functions.sh delete mode 100755 zen/key_create_dunikey.py diff --git a/command_received.sh b/command_received.sh new file mode 100755 index 0000000..b560e61 --- /dev/null +++ b/command_received.sh @@ -0,0 +1,136 @@ +#!/bin/bash +######################################################################## +# Author: Fred (support@qo-op.com) +# Version: 0.3 +# License: GPL (http://www.google.com/search?q=GPL) +######################################################################## +# 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 diff --git a/zen/functions.sh b/zen/functions.sh new file mode 100644 index 0000000..72b4517 --- /dev/null +++ b/zen/functions.sh @@ -0,0 +1,44 @@ +#!/bin/bash +######################################################################## +# Author: Fred (support@qo-op.com) +# Version: 0.3 +# License: GPL (http://www.google.com/search?q=GPL) +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized + +######################################################################## +# check /tmp/cmd_received_$SOURCEH and /tmp/cmd_SPAM_$SOURCEH within 1mn +function NOspam () { +# Remove older than a minute received COMMAND +find /tmp -cmin +1 -type f -name "cmd_received_*" -exec rm -f '{}' \; 2>/dev/null +# Filter Acknowlegement +if [[ "$CMD" != "ACK" && "$CMD" != "DELIVERED" && "$CMD" != "PENDING" ]]; then + # Still less than a minute with same $SOURCEH + if [[ -f "/tmp/cmd_received_$SOURCEH" ]]; then + # Create SPAM file => Stop answering + if [[ ! -f "/tmp/cmd_SPAM_$SOURCEH" ]]; then + echo $(date) > "/tmp/cmd_SPAM_$SOURCEH" + fi + return 1 + fi + echo "$COMMAND" > "/tmp/cmd_received_$SOURCEH" + # Remove SPAM flag older than one day + find /tmp -ctime +1 -type f -name "cmd_SPAM_*" -exec rm -f '{}' \; 2>/dev/null +else + # THIS IS AN AKNOWLEGEMENT + return 1 +fi +# Remove SPAM flag older than one day +find /tmp -ctime +1 -type f -name "cmd_SPAM_*" -exec rm -f '{}' \; 2>/dev/null +return 0 +} + + +######################################################################## +# PUBLISH ~/.zen/wallets ON /ipns/$NODEIPNS +function wallets_ipfs_publish (){ + IWALLETS=$(ipfs add -rHq '~/.zen/wallets' | tail -n 1) + NODEIPNS=$(ipfs name publish --quieter /ipfs/$IWALLETS) + echo $IWALLETS +} diff --git a/zen/key_create_dunikey.py b/zen/key_create_dunikey.py deleted file mode 100755 index af2b340..0000000 --- a/zen/key_create_dunikey.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python3 -# This Python script gets Duniter creddentials as arguments, and writes a PubSec file that should be compatible with Cesium and Silkaj(DuniterPy) clients. -# launch with : -# python3 key_create_dnuikey.py - -# depends on duniterpy 0.56 - -### Licence - WTFPL -# This script was written my Matograine, in the hope that it will be helpful. -# Do What The Fuck you like with it. There is : -# * no guarantee that this will work -# * no support of any kind -# -# If this is helpful, please consider making a donation to the developper's pubkey : 78ZwwgpgdH5uLZLbThUQH7LKwPgjMunYfLiCfUCySkM8 -# Have fun - -from sys import argv -from duniterpy.key import SigningKey - -# path to save to -path = "./.secret.dunikey" - -key = SigningKey.from_credentials(argv[1], argv[2], None) -key.save_pubsec_file(path) -print( - "G1 Wallet: ", - key.pubkey, -)