commit 07081515cd169ec42f9314b88f91269fc189923a Author: qo-op Date: Mon Mar 16 02:24:20 2020 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/zen/cron_G1TXtoZenTag.sh b/zen/cron_G1TXtoZenTag.sh new file mode 100644 index 0000000..61d78e8 --- /dev/null +++ b/zen/cron_G1TXtoZenTag.sh @@ -0,0 +1,140 @@ +#!/bin/bash +######################################################################## +# Author: Fred (support@qo-op.com) +# Version: 1.0 +# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) +######################################################################## +# == Transform incoming G1 TX into IPFS ZenTAG == +# SCAN G1PUBKEY WALLET FOR COMMAND in received/pending TX/IN COMMENT +######################################################################## +######################################################################## +# _(_)_ _(_)_ +# @@@@ (_)@(_) @@@@ (_)@(_) @@@@ +# @@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw +# @@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___) +# / Y \| / Y \| / Y +# \ | \ |/ | / \ | \ |/ | / \ | \ |/ +# \\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|/// +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +######################################################################## + +me=`basename "$0"` +# http://cb.vu/unixtoolbox.xhtml +# Create RAM disk +# mkdir -p ~/.zen/tmp && sudo mount -t tmpfs -osize=64m tmpfs ~/.zen/tmp + +# Symetric Encrypt and decrypt +# openssl aes-256-cbc -k $mysecretpassword -salt -in file -out file.aes +# openssl aes-256-cbc -k $mysecretpassword -d -salt -in file.aes -out file +# tar zip and encrypt a whole directory +# tar -zcf - directory | openssl aes-128-cbc -salt -out directory.tar.gz.aes # Encrypt +# openssl aes-128-cbc -d -salt -in directory.tar.gz.aes | tar -xz -f - # Decrypt + +if [[ ! $(which silkaj) ]]; then + echo "$USER Install SILKAJ !!" && exit 1 +fi + +DUNITERURL="https://duniter-g1.p2p.legal" # ATTENTION PAS DE / FINAL !!! +#DUNITERURL="https://duniter.g1.1000i100.fr" # METTRE EN LOAD BALANCING.... + +IPFSNODEID=$(ipfs id -f='\n') +[[ $IPFSNODEID == "" ]] && echo "$USER Install IPFS !!" && exit +[[ ! -d ~/.ssb/zen/scan ]] && mkdir -p ~/.ssb/zen/scan +[[ ! -d ~/.ssb/zen/wallets ]] && mkdir -p ~/.ssb/zen/wallets +[[ ! -d ~/.ssb/zen/wallets_swarm ]] && mkdir -p ~/.ssb/zen/wallets_swarm + +######################################################################################################### +# GET G1 PUBKEY FROM SCUTTLEBUTT or $2 (DEBUG) +DELAY=$1 +[[ $DELAY == "" ]] && DELAY="30 days" && echo "*** HELP ***" && echo "./$me \"duration\" (default $DELAY)" && echo "************" && echo +DELAYUNIT=$(echo $DELAY | cut -d ' ' -f 2) + +# NODE_G1PUBKEY=$2 # DEBUG +if [[ $NODE_G1PUBKEY == "" ]]; then + if [[ -f ~/.ssb/secret ]]; then + ssbpub=$(cat ~/.ssb/secret | grep public\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g) + ssbpriv=$(cat ~/.ssb/secret | grep private\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g) + NODE_G1PUBKEY=$(echo $ssbpub | base64 -d | base58) + NODE_G1PRIVKEY=$(echo $ssbpriv | base64 -d | base58) + echo "pub: $NODE_G1PUBKEY" > ~/.ipfs/g1.pubsec.dunikey + echo "sec: $NODE_G1PRIVKEY" >> ~/.ipfs/g1.pubsec.dunikey + else + NODE_G1PUBKEY=$(cat ~/.ipfs/g1.pubsec.dunikey | grep 'pub:' | cut -d ' ' -f 2) + NODE_G1PRIVKEY=$(cat ~/.ipfs/g1.pubsec.dunikey | grep 'sec:' | cut -d ' ' -f 2) + fi +fi +[[ "$NODE_G1PUBKEY" == "" ]] && echo "$USER Missing ~/.ipfs/g1.pubsec.dunikey : Install SSB Scuttlebot !" && exit; + +######################################################################################################### +echo "CHECKING G1WALLET LAST TX/IN ($DELAY)" +echo "=======================================" +echo "IPFSNODEID = $IPFSNODEID" +echo "NODE_G1PUBKEY = $NODE_G1PUBKEY" +# TODO: REDUCE TIME WINDOW & SCAN history.pending +TIMEBEFORE=$(date --date="-$DELAY" +"%s") +TIMESTAMP=$(date +"%s") + +# GET BLOCKCHAIN TX DURING TIME WINDOW +curl -s $DUNITERURL/tx/history/$NODE_G1PUBKEY/times/$TIMEBEFORE/$TIMESTAMP > /tmp/g1zen.scan + +######################### +# LONG DELAY = received +if [[ $DELAYUNIT != "minutes" && $DELAYUNIT != "minute" ]]; then + # HOW MANY TX DO WE HAVE... + TXnb=$(cat /tmp/g1zen.scan | jq '.history.received[].hash' | wc -l) + echo "DETECTED $TXnb TX... Checking TX/IN..." + # PARSE $TXnb TX + line=1 + while [[ $line -le $TXnb ]]; do + TXhash=$(cat /tmp/g1zen.scan | jq '.history.received[].hash' | head -n $line | tail -n 1 | sed s/\"//g) + # IT IS A NEW TX/IN? + if [[ ! -f ~/.ssb/zen/scan/zen.$TXhash ]]; then + # GET LAST RX ISSUER + ISSUER=$(cat /tmp/g1zen.scan | jq '.history.received[].issuers[0]' | head -n $line | tail -n 1 | sed s/\"//g) + [[ $ISSUER == $NODE_G1PUBKEY ]] && ((line++)) && continue ## TX/OUT CONTINUE + echo $ISSUER > ~/.ssb/zen/scan/zen.$TXhash + # GET OUTPUTS AND MAKE ZEN SUM + ZEN=$(cat /tmp/g1zen.scan | jq '.history.received[].outputs[]' | grep $NODE_G1PUBKEY | head -n $line | tail -n 1 | sed s/\"//g | cut -d ':' -f 1) + # GET COMMENT + COMMENT=$(cat /tmp/g1zen.scan | jq '.history.received' | jq '.[].comment' | head -n $line | tail -n 1 | sed s/\"//g) + # echo "TX-IN $ISSUER => $NODE_G1PUBKEY" + echo "TX/IN :: $ZEN ZEN from $ISSUER :: $COMMENT ($TXhash)" + CMD=$(echo "$TEXT" | awk '{print toupper($1)}') + [[ $CMD == "ZEN" ]] && ./zen_MAKE.sh $ZEN $TXhash + ./zen_MAKE.sh $ZEN $TXhash $ISSUER + else + # STILL OLD TX + [[ $TXhash != "" ]] && echo "ALREADY TREATED TX/IN: $TXhash $(cat ~/.ssb/zen/scan/zen.$TXhash)" || echo "NO TX" + fi + ((line++)) + done +else +# MINUTE DELAY = pending + # HOW MANY TX DO WE HAVE... + TXnb=$(cat /tmp/g1zen.scan | jq '.history.pending[].hash' | wc -l) + echo "DETECTED $TXnb TX... Checking TX/IN..." + # PARSE $TXnb TX + line=1 + while [[ $line -le $TXnb ]]; do + TXhash=$(cat /tmp/g1zen.scan | jq '.history.pending[].hash' | head -n $line | tail -n 1 | sed s/\"//g) + # IT IS A NEW TX/IN? + if [[ ! -f ~/.ssb/zen/scan/zen.$TXhash ]]; then + # GET LAST RX ISSUER + ISSUER=$(cat /tmp/g1zen.scan | jq '.history.pending[].issuers[0]' | head -n $line | tail -n 1 | sed s/\"//g) + [[ $ISSUER == $NODE_G1PUBKEY ]] && ((line++)) && continue ## TX/OUT CONTINUE + echo $ISSUER > ~/.ssb/zen/scan/zen.$TXhash + # GET OUTPUTS AND MAKE ZEN SUM + ZEN=$(cat /tmp/g1zen.scan | jq '.history.pending[].outputs[]' | grep $NODE_G1PUBKEY | head -n $line | tail -n 1 | sed s/\"//g | cut -d ':' -f 1) + # GET COMMENT + COMMENT=$(cat /tmp/g1zen.scan | jq '.history.pending' | jq '.[].comment' | head -n $line | tail -n 1 | sed s/\"//g) + # echo "TX-IN $ISSUER => $NODE_G1PUBKEY" + echo "TX/IN :: $ZEN ZEN from $ISSUER :: $COMMENT ($TXhash)" + CMD=$(echo "$TEXT" | awk '{print toupper($1)}') + [[ $CMD == "ZEN" ]] && ./zen_MAKE.sh $ZEN $TXhash + else + # STILL OLD TX + [[ $TXhash != "" ]] && echo "ALREADY TREATED TX/IN: $TXhash $(cat ~/.ssb/zen/scan/zen.$TXhash)" || echo "NO TX" + fi + ((line++)) + done +fi