ZNOD's SWARM CACHE AUTO PROPAGATION ACTIVATED
This commit is contained in:
parent
3d91fb0cd0
commit
8807970cdb
76
_12345.sh
76
_12345.sh
|
@ -1,18 +1,17 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
################################################################################
|
################################################################################
|
||||||
# Author: Fred (support@qo-op.com)
|
# Author: Fred (support@qo-op.com)
|
||||||
# Version: 0.1
|
# Version: 0.2
|
||||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||||
################################################################################
|
################################################################################
|
||||||
# PUBLISHING IPNS SWARM MAP
|
# PUBLISH AND SYNC ASTROPORT STATIONS SWARM MAPS
|
||||||
# This script scan Swarm API layer from official bootstraps
|
# This script scan Swarm API layer from official bootstraps
|
||||||
# Then publish map of json DApp data
|
|
||||||
#
|
#
|
||||||
MY_PATH="`dirname \"$0\"`" # relative
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
. "${MY_PATH}/tools/my.sh"
|
. "${MY_PATH}/tools/my.sh"
|
||||||
|
|
||||||
## LOG IN
|
## SEND LOG TO ~/.zen/tmp/_12345.log
|
||||||
exec 2>&1 >> ~/.zen/tmp/_12345.log
|
exec 2>&1 >> ~/.zen/tmp/_12345.log
|
||||||
|
|
||||||
PORT=12345
|
PORT=12345
|
||||||
|
@ -20,27 +19,27 @@ PORT=12345
|
||||||
YOU=$(myIpfsApi); ## API of $USER running ipfs
|
YOU=$(myIpfsApi); ## API of $USER running ipfs
|
||||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
|
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
|
||||||
|
|
||||||
|
## KILLING OLD DAEMON OF MYSELF
|
||||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 2)
|
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 2)
|
||||||
[[ $ncrunning != "" ]] && echo "(≖‿‿≖) - KILLING Already Running MAP Server - (≖‿‿≖) " && kill -9 $ncrunning
|
[[ $ncrunning != "" ]] && echo "(≖‿‿≖) - KILLING Already Running MAP Server - (≖‿‿≖) " && kill -9 $ncrunning
|
||||||
|
|
||||||
NODEG1PUB=$($MY_PATH/tools/ipfs_to_g1.py ${IPFSNODEID})
|
## WHAT IS NODEG1PUB
|
||||||
|
NODEG1PUB=$($MY_PATH/tools/ipfs_to_g1.py ${IPFSNODEID})
|
||||||
|
|
||||||
## RESET MEMORY
|
## RESET SWARM LOCAL CACHE
|
||||||
rm -Rf ~/.zen/tmp/swarm/*
|
rm -Rf ~/.zen/tmp/swarm/*
|
||||||
## NAME PUBLISH EMPTY !!!
|
|
||||||
# ipfs name publish --allow-offline /ipfs/Qmc5m94Gu7z62RC8waSKkZUrCCBJPyHbkpmGzEePxy2oXJ
|
|
||||||
## INDICATE IPFSNODEID IS RUNNING
|
|
||||||
##############################################
|
##############################################
|
||||||
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty" && exit 1
|
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty" && exit 1
|
||||||
mkdir -p ~/.zen/tmp/swarm
|
mkdir -p ~/.zen/tmp/swarm
|
||||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}
|
mkdir -p ~/.zen/tmp/${IPFSNODEID}
|
||||||
|
|
||||||
## BE CAREFUL NOT MAKING A LOOP !!!
|
## AVOID A swarm IN swarm LOOP !!!
|
||||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/swarm
|
rm -Rf ~/.zen/tmp/${IPFSNODEID}/swarm
|
||||||
|
|
||||||
## TIMESTAMPING
|
## TIMESTAMPING
|
||||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||||
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats
|
echo "${MOATS}" > ~/.zen/tmp/.MySwarm.moats
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
## MySwarm KEY INIT & SET
|
## MySwarm KEY INIT & SET
|
||||||
|
@ -70,15 +69,17 @@ echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats
|
||||||
echo "/ipns/$CHAN" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm
|
echo "/ipns/$CHAN" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm
|
||||||
############################################################
|
############################################################
|
||||||
############################################################
|
############################################################
|
||||||
|
###################
|
||||||
#############################################
|
# NEVER ENDING LOOP
|
||||||
## SCAN ALL BOOTSTRAP AND GET "IPNS BALISE"
|
###################################################################
|
||||||
#############################################
|
## WILL SCAN ALL BOOTSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS
|
||||||
|
###################################################################
|
||||||
while true; do
|
while true; do
|
||||||
|
|
||||||
start=`date +%s`
|
start=`date +%s`
|
||||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||||
|
|
||||||
lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats)
|
lastrun=$(cat ~/.zen/tmp/.MySwarm.moats)
|
||||||
duree=$(expr ${MOATS} - $lastrun)
|
duree=$(expr ${MOATS} - $lastrun)
|
||||||
|
|
||||||
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H )
|
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H )
|
||||||
|
@ -95,7 +96,7 @@ while true; do
|
||||||
echo "############# RUN LOOP ######### $(date)"
|
echo "############# RUN LOOP ######### $(date)"
|
||||||
ipfsnodeid=${bootnode##*/}
|
ipfsnodeid=${bootnode##*/}
|
||||||
|
|
||||||
[[ ${ipfsnodeid} == ${IPFSNODEID} ]] && echo "My Self : ${IPFSNODEID} - continue" && continue
|
[[ ${ipfsnodeid} == ${IPFSNODEID} ]] && echo "MYSELF : ${IPFSNODEID} - CONTINUE" && continue
|
||||||
mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid}
|
mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||||
|
|
||||||
## GET bootnode IP
|
## GET bootnode IP
|
||||||
|
@ -103,20 +104,42 @@ while true; do
|
||||||
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
|
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
|
||||||
|
|
||||||
## IPFS GET TO /swarm/${ipfsnodeid}
|
## IPFS GET TO /swarm/${ipfsnodeid}
|
||||||
echo "Getting ${nodeip} : /ipns/${ipfsnodeid}"
|
echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}"
|
||||||
[[ $YOU ]] && ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ipfsnodeid} /ipns/${ipfsnodeid}/
|
[[ $YOU ]] && ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ipfsnodeid} /ipns/${ipfsnodeid}/
|
||||||
echo "Updated : ~/.zen/tmp/swarm/${ipfsnodeid}"
|
echo "UPDATED : ~/.zen/tmp/swarm/${ipfsnodeid}"
|
||||||
|
|
||||||
## SHOW WHAT WE GET
|
## SHOW WHAT WE GET
|
||||||
echo "__________________________________________________"
|
echo "__________________________________________________"
|
||||||
ls ~/.zen/tmp/swarm/${ipfsnodeid}
|
ls ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||||
echo "__________________________________________________"
|
echo "__________________________________________________"
|
||||||
|
|
||||||
## ASK BOOTSTRAP NODE TO GET MY MAP UPSYNC - MAKES ME KNOWN BY MY COMMUNITY -
|
## ASK BOOTSTRAP NODE TO GET MY MAP UPSYNC
|
||||||
|
## - MAKES MY BALISE PRESENT IN BOOTSTRAP SWARM KEY -
|
||||||
if [[ $iptype == "ip4" ]]; then
|
if [[ $iptype == "ip4" ]]; then
|
||||||
|
|
||||||
echo "STATION MAP UPSYNC : curl -s http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID}"
|
echo "STATION MAP UPSYNC : curl -s http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID}"
|
||||||
curl -s -m 10 http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID} -o ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json
|
curl -s -m 10 http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID} -o ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json
|
||||||
fi
|
|
||||||
|
## LOOKING IF ITS SWARM MAP COULD COMPLETE MINE
|
||||||
|
echo "ANALYSING BOOTSTRAP SWARM MAP"
|
||||||
|
itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json | jq -r '.myswarm' | rev | cut -d '/' -f 1 | rev )
|
||||||
|
ipfs ls /ipns/${itipnswarmap} | rev | cut -d ' ' -f 1 | rev > ~/.zen/tmp/_swarm.${ipfsnodeid}
|
||||||
|
|
||||||
|
echo "ZNODS LIST"
|
||||||
|
cat ~/.zen/tmp/_swarm.${ipfsnodeid}
|
||||||
|
echo "============================================"
|
||||||
|
for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do
|
||||||
|
if [[ -d ~/.zen/tmp/swarm/${znod} ]]; then
|
||||||
|
echo "COMPLETING MY SWARM DATA WITH ZNOD=${znod}"
|
||||||
|
mkdir ~/.zen/tmp/swarm/${znod}
|
||||||
|
ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${znod}/ /ipns/${znod}
|
||||||
|
else
|
||||||
|
echo "____________ KNOW ${znod}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "============================================"
|
||||||
|
|
||||||
|
fi ## IP4 WAN BOOTSRAP UPSYNC FINISHED
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -145,17 +168,17 @@ while true; do
|
||||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||||
|
|
||||||
## IPFS GET LAST PUBLISHED MAP VERSION
|
## IPFS GET LAST PUBLISHED MAP VERSION
|
||||||
|
rm -Rf ~/.zen/tmp/_${IPFSNODEID} 2>/dev/null
|
||||||
mkdir -p ~/.zen/tmp/_${IPFSNODEID}
|
mkdir -p ~/.zen/tmp/_${IPFSNODEID}
|
||||||
ipfs get -o ~/.zen/tmp/_${IPFSNODEID} /ipns/${IPFSNODEID}/
|
ipfs get -o ~/.zen/tmp/_${IPFSNODEID} /ipns/${IPFSNODEID}/
|
||||||
NSIZE=$(du -b ~/.zen/tmp/_${IPFSNODEID} | tail -n 1 | cut -f 1)
|
NSIZE=$(du -b ~/.zen/tmp/_${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||||
|
|
||||||
|
|
||||||
### CHECK IF SIZE DIFFERENCE ?
|
### CHECK IF SIZE DIFFERENCE ?
|
||||||
## Local / IPNS size differ => FUSION LOCAL OVER ONLINE & PUBLISH
|
## Local / IPNS size differ => FUSION LOCAL OVER ONLINE & PUBLISH
|
||||||
[[ ${BSIZE} != ${NSIZE} ]] \
|
[[ ${BSIZE} != ${NSIZE} ]] \
|
||||||
&& echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats \
|
&& echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats \
|
||||||
&& MYCACHE=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
|
&& MYCACHE=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
|
||||||
&& echo "NEW BALISE STATE FOR STATION /ipns/${IPFSNODEID} INDEXES = $BSIZE octets" \
|
&& echo "PUBLISHING NEW BALISE STATE FOR STATION /ipns/${IPFSNODEID} INDEXES = $BSIZE octets" \
|
||||||
&& ipfs name publish --allow-offline /ipfs/${MYCACHE}
|
&& ipfs name publish --allow-offline /ipfs/${MYCACHE}
|
||||||
|
|
||||||
end=`date +%s`
|
end=`date +%s`
|
||||||
|
@ -164,11 +187,14 @@ while true; do
|
||||||
) & ##### SUB-PROCESS
|
) & ##### SUB-PROCESS
|
||||||
|
|
||||||
# last run recording
|
# last run recording
|
||||||
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats
|
echo "${MOATS}" > ~/.zen/tmp/.MySwarm.moats
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
echo "#######################"
|
||||||
|
echo "NOT SO QUICK"
|
||||||
echo "$duree only cache life"
|
echo "$duree only cache life"
|
||||||
|
echo "#######################"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -192,7 +218,7 @@ Content-Type: application/json; charset=UTF-8
|
||||||
"
|
"
|
||||||
######################################################################################
|
######################################################################################
|
||||||
# WAIT FOR REQUEST ON PORT12345 (netcat is waiting)
|
# WAIT FOR REQUEST ON PORT12345 (netcat is waiting)
|
||||||
(sleep $((3600-${RANDOM:0:3})) && curl -s "http://127.0.0.1:12345") & ## AUTO RELAUNCH IN LESS AN HOUR
|
(sleep $((3600-${RANDOM:0:3})) && curl -s "http://127.0.0.1:12345") & ## AUTO RELAUNCH IN LESS AN HOUR : DESYNC SWARM REFRESHINGS
|
||||||
echo '(◕‿‿◕) http://'$myIP:'12345 READY (◕‿‿◕)'
|
echo '(◕‿‿◕) http://'$myIP:'12345 READY (◕‿‿◕)'
|
||||||
REQ=$(echo "$HTTPSEND" | nc -l -p 12345 -q 1) ## # WAIT FOR 12345 PORT CONTACT
|
REQ=$(echo "$HTTPSEND" | nc -l -p 12345 -q 1) ## # WAIT FOR 12345 PORT CONTACT
|
||||||
######################################################################################
|
######################################################################################
|
||||||
|
|
Loading…
Reference in New Issue