SWARM NODE DATA CACHE REPLICATOR
This commit is contained in:
parent
f31aa39c80
commit
3d91fb0cd0
109
_12345.sh
109
_12345.sh
|
@ -38,28 +38,42 @@ mkdir -p ~/.zen/tmp/${IPFSNODEID}
|
||||||
## BE CAREFUL NOT MAKING A LOOP !!!
|
## BE CAREFUL NOT MAKING A LOOP !!!
|
||||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/swarm
|
rm -Rf ~/.zen/tmp/${IPFSNODEID}/swarm
|
||||||
|
|
||||||
|
## 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/${IPFSNODEID}/.MySwarm.moats
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
## MySwarm KEY INIT & SET
|
||||||
|
############################################################
|
||||||
## CREATE CHAN = MySwarm_${IPFSNODEID}
|
## CREATE CHAN = MySwarm_${IPFSNODEID}
|
||||||
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1)
|
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1)
|
||||||
|
|
||||||
## RESTORE LOST KEY
|
#######################################################
|
||||||
[[ ! -s ~/.zen/game/secret.dunikey ]] && ipfs key rm "MySwarm_${IPFSNODEID}" && CHAN="" ## NEW KEY FORMAT (NODEPUB)
|
## CREATE MySwarm KEYS ?
|
||||||
|
[[ -s ~/.zen/game/secret.dunikey ]] && mv ~/.zen/game/secret.dunikey ~/.zen/game/myswarm_secret.dunikey ## Change MySwarm key file name : TODOREMOVELINE : REMOVE FORMAT MIGRATION LINE
|
||||||
|
[[ -s ~/.zen/game/secret.ipfskey ]] && mv ~/.zen/game/secret.ipfskey ~/.zen/game/myswarm_secret.ipfskey ## Change MySwarm key file name : TODOREMOVELINE : REMOVE FORMAT MIGRATION LINE
|
||||||
|
|
||||||
|
[[ ! -s ~/.zen/game/myswarm_secret.dunikey ]] && ipfs key rm "MySwarm_${IPFSNODEID}" && CHAN="" ## NEW KEY FORMAT (NODEPUB)
|
||||||
|
|
||||||
if [[ ${CHAN} == "" ]]; then
|
if [[ ${CHAN} == "" ]]; then
|
||||||
echo "## MAKE /proc/cpuinfo IPFSNODEID DERIVATED KEY ##"
|
echo "## MAKE /proc/cpuinfo IPFSNODEID DERIVATED KEY ##"
|
||||||
SECRET1=$(cat /proc/cpuinfo | grep -Ev MHz | sha512sum | cut -d ' ' -f 1)
|
SECRET1=$(cat /proc/cpuinfo | grep -Ev MHz | sha512sum | cut -d ' ' -f 1)
|
||||||
SECRET2=${IPFSNODEID}
|
SECRET2=${IPFSNODEID}
|
||||||
${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/game/secret.ipfskey "$SECRET1" "$SECRET2"
|
${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/game/myswarm_secret.ipfskey "$SECRET1" "$SECRET2"
|
||||||
${MY_PATH}/tools/keygen -t duniter -o ~/.zen/game/secret.dunikey "$SECRET1" "$SECRET2"
|
${MY_PATH}/tools/keygen -t duniter -o ~/.zen/game/myswarm_secret.dunikey "$SECRET1" "$SECRET2"
|
||||||
ipfs key import "MySwarm_${IPFSNODEID}" -f pem-pkcs8-cleartext ~/.zen/game/secret.ipfskey
|
ipfs key import "MySwarm_${IPFSNODEID}" -f pem-pkcs8-cleartext ~/.zen/game/myswarm_secret.ipfskey
|
||||||
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1 )
|
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1 )
|
||||||
fi
|
fi
|
||||||
|
#######################################################
|
||||||
|
|
||||||
## PUBLISH CHANNEL IPNS
|
## PUBLISH CHANNEL IPNS
|
||||||
echo "/ipns/$CHAN" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm
|
echo "/ipns/$CHAN" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm
|
||||||
|
############################################################
|
||||||
|
############################################################
|
||||||
|
|
||||||
# REFRESH FROM BOOTSTRAP (COULD, SHOULD BE MY FRIENDS !)
|
#############################################
|
||||||
|
## SCAN ALL BOOTSTRAP AND GET "IPNS BALISE"
|
||||||
|
#############################################
|
||||||
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")
|
||||||
|
@ -67,10 +81,11 @@ while true; do
|
||||||
lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats)
|
lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats)
|
||||||
duree=$(expr ${MOATS} - $lastrun)
|
duree=$(expr ${MOATS} - $lastrun)
|
||||||
|
|
||||||
## FIXING TIC TAC FOR NODE & SWARM REFRESH
|
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H )
|
||||||
if [[ duree -gt 3600000 ]]; then
|
if [[ duree -gt 3600000 ]]; then
|
||||||
|
|
||||||
( ##### SUB-PROCESS
|
#####################################
|
||||||
|
( ##### SUB-PROCESS RUN
|
||||||
start=`date +%s`
|
start=`date +%s`
|
||||||
|
|
||||||
############# GET BOOTSTRAP SWARM DATA
|
############# GET BOOTSTRAP SWARM DATA
|
||||||
|
@ -79,24 +94,29 @@ 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 "My Self : ${IPFSNODEID} - continue" && continue
|
||||||
mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid}
|
mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||||
|
|
||||||
addtype=$(echo ${bootnode} | cut -d '/' -f 2)
|
## GET bootnode IP
|
||||||
|
iptype=$(echo ${bootnode} | cut -d '/' -f 2)
|
||||||
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
|
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
|
||||||
|
|
||||||
echo "Getting ${nodeip} : /ipns/${ipfsnodeid}"
|
## IPFS GET TO /swarm/${ipfsnodeid}
|
||||||
[[ $YOU ]] && ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ipfsnodeid} /ipns/${ipfsnodeid}/
|
echo "Getting ${nodeip} : /ipns/${ipfsnodeid}"
|
||||||
echo "Updated : ~/.zen/tmp/swarm/${ipfsnodeid}"
|
[[ $YOU ]] && ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ipfsnodeid} /ipns/${ipfsnodeid}/
|
||||||
|
echo "Updated : ~/.zen/tmp/swarm/${ipfsnodeid}"
|
||||||
|
|
||||||
ls ~/.zen/tmp/swarm/${ipfsnodeid}
|
## SHOW WHAT WE GET
|
||||||
|
echo "__________________________________________________"
|
||||||
|
ls ~/.zen/tmp/swarm/${ipfsnodeid}
|
||||||
|
echo "__________________________________________________"
|
||||||
|
|
||||||
## ASK FOR MY MAP UPSYNC
|
## ASK BOOTSTRAP NODE TO GET MY MAP UPSYNC - MAKES ME KNOWN BY MY COMMUNITY -
|
||||||
if [[ $addtype == "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
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -109,11 +129,13 @@ while true; do
|
||||||
[[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize) ]] \
|
[[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize) ]] \
|
||||||
&& echo ${SWARMSIZE} > ~/.zen/tmp/swarm/.bsize \
|
&& echo ${SWARMSIZE} > ~/.zen/tmp/swarm/.bsize \
|
||||||
&& SWARMH=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) \
|
&& SWARMH=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) \
|
||||||
|
&& echo "=== ~/.zen/tmp/swarm EVOLVED : PUBLISHING NEW STATE ===" \
|
||||||
&& ipfs name publish --key "MySwarm_${IPFSNODEID}" --allow-offline /ipfs/${SWARMH}
|
&& ipfs name publish --key "MySwarm_${IPFSNODEID}" --allow-offline /ipfs/${SWARMH}
|
||||||
#############################################
|
#############################################
|
||||||
|
|
||||||
|
######################################
|
||||||
|
############# RE PUBLISH SELF BALISE
|
||||||
|
|
||||||
############# PUBLISH IPFSNODEID BALISE
|
|
||||||
# Clean Empty Directory (inode dependancy BUG ??)
|
# Clean Empty Directory (inode dependancy BUG ??)
|
||||||
du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du
|
du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du
|
||||||
while read branch; do [[ $branch =~ "4096" ]] && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
while read branch; do [[ $branch =~ "4096" ]] && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
||||||
|
@ -122,40 +144,35 @@ while true; do
|
||||||
ls ~/.zen/tmp/${IPFSNODEID}/
|
ls ~/.zen/tmp/${IPFSNODEID}/
|
||||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||||
|
|
||||||
## BACK UP ACTUAL LOCAL MAP
|
## IPFS GET LAST PUBLISHED MAP VERSION
|
||||||
mv ~/.zen/tmp/${IPFSNODEID} ~/.zen/tmp/_${IPFSNODEID}
|
mkdir -p ~/.zen/tmp/_${IPFSNODEID}
|
||||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}
|
ipfs get -o ~/.zen/tmp/_${IPFSNODEID} /ipns/${IPFSNODEID}/
|
||||||
|
NSIZE=$(du -b ~/.zen/tmp/_${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||||
|
|
||||||
## GET ONLINE MAP VERSION
|
|
||||||
ipfs get -o ~/.zen/tmp/${IPFSNODEID} /ipns/${IPFSNODEID}/
|
|
||||||
NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
|
||||||
|
|
||||||
|
### 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} ]] \
|
||||||
&& cp -Rf ~/.zen/tmp/_${IPFSNODEID}/* ~/.zen/tmp/${IPFSNODEID}/ \
|
&& echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats \
|
||||||
&& rm -Rf ~/.zen/tmp/_${IPFSNODEID} \
|
&& MYCACHE=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
|
||||||
&& ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \
|
&& echo "NEW BALISE STATE FOR STATION /ipns/${IPFSNODEID} INDEXES = $BSIZE octets" \
|
||||||
&& echo "BALISE STATION /ipns/${IPFSNODEID} INDEXES = $NSIZE octets" \
|
&& ipfs name publish --allow-offline /ipfs/${MYCACHE}
|
||||||
&& ipfs name publish --allow-offline /ipfs/${ROUTING}
|
|
||||||
|
|
||||||
end=`date +%s`
|
end=`date +%s`
|
||||||
echo "(*__*) MySwam Update ($BSIZE B) duration was "`expr $end - $start`' seconds. $(date)'
|
echo "(*__*) MySwam Update ($BSIZE B) duration was "`expr $end - $start`' seconds. $(date)'
|
||||||
|
|
||||||
) & ##### SUB-PROCESS
|
) & ##### SUB-PROCESS
|
||||||
|
|
||||||
|
|
||||||
#### ACTIVATE LIBP2P PORT FORWARDINGS
|
|
||||||
# ~/.zen/Astroport.ONE/tools/ipfs_P2P_forward.sh
|
|
||||||
|
|
||||||
|
|
||||||
# last run recording
|
# last run recording
|
||||||
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats
|
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/.MySwarm.moats
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
echo "$duree only cache life"
|
echo "$duree only cache life"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
############ PREPARE HTTP 12345 JSON DOCUMENT
|
||||||
HTTPSEND="HTTP/1.1 200 OK
|
HTTPSEND="HTTP/1.1 200 OK
|
||||||
Access-Control-Allow-Origin: \*
|
Access-Control-Allow-Origin: \*
|
||||||
Access-Control-Allow-Credentials: true
|
Access-Control-Allow-Credentials: true
|
||||||
|
@ -174,10 +191,14 @@ Content-Type: application/json; charset=UTF-8
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
######################################################################################
|
######################################################################################
|
||||||
# BLOCKING COMMAND nc 12345 port 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
|
||||||
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
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
######################################################################################
|
||||||
|
## VISIT RECEIVED
|
||||||
URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
|
URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
|
||||||
HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2)
|
HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2)
|
||||||
HOST=$(echo "$HOSTP" | cut -d ':' -f 1)
|
HOST=$(echo "$HOSTP" | cut -d ':' -f 1)
|
||||||
|
@ -186,15 +207,19 @@ Content-Type: application/json; charset=UTF-8
|
||||||
arr=(${URL//[=&]/ })
|
arr=(${URL//[=&]/ })
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
### UPSYNC STATION REQUEST /?G1PUB=g1_to_ipfs(G1PUB)&...(TODO include CODE HASH & TOKEN)
|
### UPSYNC STATION REQUEST /?G1PUB=g1_to_ipfs(G1PUB)&...
|
||||||
|
### TODO : include CODE HASH & TOKEN ....
|
||||||
#####################################################################
|
#####################################################################
|
||||||
if [[ ${arr[0]} != "" ]]; then
|
if [[ ${arr[0]} != "" ]]; then
|
||||||
##
|
|
||||||
|
## CHECK URL CONSISTENCY ( G1PUB=IPNSPUB is right ? )
|
||||||
GPUB=${arr[0]}
|
GPUB=${arr[0]}
|
||||||
ASTROTOIPFS=$(${MY_PATH}/tools/g1_to_ipfs.py ${arr[0]} 2>/dev/null)
|
ASTROTOIPFS=$(${MY_PATH}/tools/g1_to_ipfs.py ${arr[0]} 2>/dev/null)
|
||||||
|
|
||||||
if [[ "${ASTROTOIPFS}" == "${arr[1]}" ]]; then
|
if [[ "${ASTROTOIPFS}" == "${arr[1]}" ]]; then
|
||||||
echo "STATION ${GPUB} CONTACT"
|
## WE SPEAK THE SAME PROTOCOL
|
||||||
## CLIENT KNOWS HOW TO CONVERT G1 to IPFS
|
echo "MAJOR TOM TO GROUD CONTROL"
|
||||||
|
echo "WE HAVE A STATION ${GPUB} CONTACT"
|
||||||
(
|
(
|
||||||
mkdir -p ~/.zen/tmp/swarm/${ASTROTOIPFS}
|
mkdir -p ~/.zen/tmp/swarm/${ASTROTOIPFS}
|
||||||
echo "UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}"
|
echo "UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}"
|
||||||
|
|
Loading…
Reference in New Issue