first commit
This commit is contained in:
commit
07081515cd
|
@ -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='<id>\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
|
Loading…
Reference in New Issue