diff --git a/12345.sh b/12345.sh index 3528491c..af1f11ba 100755 --- a/12345.sh +++ b/12345.sh @@ -86,15 +86,15 @@ while true; do myHtml >> ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http ## REPLACE RESPONSE PORT - sed -i -e "s~http://127.0.0.1:12345~http://${myIP}:${PORT}~g" \ + sed -i -e "s~http://127.0.0.1:12345~http://127.0.0.1:${PORT}~g" \ ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http ## WAN REDIRECT TO HTTPS:// + /${PORT} [ -z "$isLAN" ] \ - && sed -i -e "s~http://${myIP}:${PORT}~${myASTROPORT}/${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http + && sed -i -e "s~http://127.0.0.1:${PORT}~${myASTROPORT}/${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http [ -n "$(zIp)" ]\ - && sed -i -e "s~http://${myIP}:${PORT}~$(zIp):${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http + && sed -i -e "s~http://127.0.0.1:${PORT}~$(zIp):${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http ## UPLANET HOME LINK REPLACEMENT sed -i -e "s~https://qo-op.com~${myUPLANET}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http diff --git a/BOOKS/TheNetworkState.pdf b/BOOKS/TheNetworkState.pdf new file mode 100644 index 00000000..2dbda2a8 Binary files /dev/null and b/BOOKS/TheNetworkState.pdf differ diff --git a/_12345.sh b/_12345.sh index d9c6bc86..b1e3a8b3 100755 --- a/_12345.sh +++ b/_12345.sh @@ -43,30 +43,34 @@ echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom ## MySwarm KEY INIT & SET ############################################################ ## 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) - ####################################################### - ## CREATE MySwarm KEYS ? - if [[ ${CHAN} == "" || ${CHAN} == "null" ]]; then - echo "## MAKE /proc/cpuinfo IPFSNODEID DERIVATED KEY ##" - SECRET1=$(cat /proc/cpuinfo | grep -Ev MHz | sha512sum | cut -d ' ' -f 1) - SECRET2=${IPFSNODEID} - echo "SALT=$SECRET1 && PEPPER=$SECRET2" > ~/.zen/game/myswarm_secret.june - ${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/game/myswarm_secret.ipfskey "$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/myswarm_secret.ipfskey - CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1 ) - fi - ######################################################## MAKE IPFS NODE CHAN ID CPU RELATED +####################################################### +## CREATE MySwarm KEYS ? +if [[ ${CHAN} == "" || ${CHAN} == "null" ]]; then +echo "## MAKE /proc/cpuinfo IPFSNODEID DERIVATED KEY ##" + SECRET1=$(cat /proc/cpuinfo | grep -Ev MHz | sha512sum | cut -d ' ' -f 1) + SECRET2=${IPFSNODEID} + echo "SALT=$SECRET1 && PEPPER=$SECRET2" > ~/.zen/game/myswarm_secret.june + ${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/game/myswarm_secret.ipfskey "$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/myswarm_secret.ipfskey + CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1 ) + fi +######################################################## MAKE IPFS NODE CHAN ID CPU RELATED ## PUBLISH CHANNEL IPNS - echo "" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.$(myHostName).html +echo "" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.$(myHostName).html ############################################################ ############################################################ echo 0 > ~/.zen/tmp/random.sleep ################### # NEVER ENDING LOOP + +#### UPLANET FLASHMEM UPDATES +${MY_PATH}/RUNTIME/UPlanetKEYS_refresh.sh & + ################################################################### ## WILL SCAN ALL BOOSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS ################################################################### @@ -81,175 +85,175 @@ while true; do ## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H ) if [[ ${duree} -gt 3600000 ]]; then - ${MY_PATH}/ping_bootstrap.sh + ${MY_PATH}/ping_bootstrap.sh - #### UPLANET FLASHMEM UPDATES - ${MY_PATH}/RUNTIME/UPlanetKEYS_refresh.sh & + #### UPLANET FLASHMEM UPDATES + ${MY_PATH}/RUNTIME/UPlanetKEYS_refresh.sh & - PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null)) - [[ ${PLAYERONE[@]} == "" ]] && echo "EMPTY ASTROPORT - NO PLAYER - NO PUBLISHING" && continue + PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null)) + [[ ${PLAYERONE[@]} == "" ]] && echo "EMPTY ASTROPORT - NO PLAYER - NO PUBLISHING" && continue - ##################################### - ( ##### SUB-PROCESS £ - start=`date +%s` + ##################################### + ( ##### SUB-PROCESS £ + start=`date +%s` - # MONITOR pending - for player in ${PLAYERONE[@]}; do - g1pub=$(cat ~/.zen/game/players/${player}/.g1pub 2>/dev/null) - # Check Station PLAYER payments - PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX")) - for pending in "${PENDINGS[@]}"; do - echo ${pending} - # TODO TREAT PENDINGS - # + # MONITOR pending + for player in ${PLAYERONE[@]}; do + g1pub=$(cat ~/.zen/game/players/${player}/.g1pub 2>/dev/null) + # Check Station PLAYER payments + PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX")) + for pending in "${PENDINGS[@]}"; do + echo ${pending} + # TODO TREAT PENDINGS + # + done done - done - ############# GET BOOSTRAP SWARM DATA - for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | grep -v '^[[:space:]]*$') # remove comments and empty lines - do + ############# GET BOOSTRAP SWARM DATA + for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | grep -v '^[[:space:]]*$') # remove comments and empty lines + do - ## ex: /ip4/149.102.158.67/tcp/4001/p2p/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u) - echo "############# RUN LOOP ######### $(date)" - ipfsnodeid=${bootnode##*/} + ## ex: /ip4/149.102.158.67/tcp/4001/p2p/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u) + echo "############# RUN LOOP ######### $(date)" + ipfsnodeid=${bootnode##*/} - [[ ${ipfsnodeid} == ${IPFSNODEID} ]] && echo "MYSELF : ${IPFSNODEID} - CONTINUE" && continue + [[ ${ipfsnodeid} == ${IPFSNODEID} ]] && echo "MYSELF : ${IPFSNODEID} - CONTINUE" && continue - [[ ${ipfsnodeid} == "null" || ${ipfsnodeid} == "" ]] && echo "BAD ${IPFSNODEID} - CONTINUE" && continue + [[ ${ipfsnodeid} == "null" || ${ipfsnodeid} == "" ]] && echo "BAD ${IPFSNODEID} - CONTINUE" && continue - ## SWARM CONNECT - ipfs swarm connect ${bootnode} + ## SWARM CONNECT + ipfs swarm connect ${bootnode} - ## PREPARE TO REFRESH SWARM LOCAL CACHE - mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid} - mkdir -p ~/.zen/tmp/-${ipfsnodeid} + ## PREPARE TO REFRESH SWARM LOCAL CACHE + mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid} + mkdir -p ~/.zen/tmp/-${ipfsnodeid} - ## GET bootnode IP - iptype=$(echo ${bootnode} | cut -d '/' -f 2) - nodeip=$(echo ${bootnode} | cut -d '/' -f 3) + ## GET bootnode IP + iptype=$(echo ${bootnode} | cut -d '/' -f 2) + nodeip=$(echo ${bootnode} | cut -d '/' -f 3) - ## IPFS GET TO /swarm/${ipfsnodeid} - echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}" - ipfs --timeout 720s get -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/ + ## IPFS GET TO /swarm/${ipfsnodeid} + echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}" + ipfs --timeout 720s get -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/ - ## SHOW WHAT WE GET - echo "__________________________________________________" - ls ~/.zen/tmp/-${ipfsnodeid}/ - echo "__________________________________________________" + ## SHOW WHAT WE GET + echo "__________________________________________________" + ls ~/.zen/tmp/-${ipfsnodeid}/ + echo "__________________________________________________" - ## LOCAL CACHE SWITCH WITH LATEST - if [[ -s ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ]]; then - if [[ $(diff ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats) || $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats 2>/dev/null) == "" ]]; then - rm -Rf ~/.zen/tmp/swarm/${ipfsnodeid} - mv ~/.zen/tmp/-${ipfsnodeid} ~/.zen/tmp/swarm/${ipfsnodeid} - echo "UPDATED : ~/.zen/tmp/swarm/${ipfsnodeid}" + ## LOCAL CACHE SWITCH WITH LATEST + if [[ -s ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ]]; then + if [[ $(diff ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats) || $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats 2>/dev/null) == "" ]]; then + rm -Rf ~/.zen/tmp/swarm/${ipfsnodeid} + mv ~/.zen/tmp/-${ipfsnodeid} ~/.zen/tmp/swarm/${ipfsnodeid} + echo "UPDATED : ~/.zen/tmp/swarm/${ipfsnodeid}" + else + echo "TimeStamp unchanged : $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats)" + rm -Rf ~/.zen/tmp/-${ipfsnodeid}/ + continue + fi else - echo "TimeStamp unchanged : $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats)" - rm -Rf ~/.zen/tmp/-${ipfsnodeid}/ + echo "UNREACHABLE /ipns/${ipfsnodeid}/" continue fi - else - echo "UNREACHABLE /ipns/${ipfsnodeid}/" - continue - fi - ## ASK BOOSTRAP NODE TO GET MY MAP UPSYNC - ## - MAKES MY BALISE PRESENT IN BOOSTRAP SWARM KEY - - if [[ $iptype == "ip4" || $iptype == "ip6" ]]; then + ## ASK BOOSTRAP NODE TO GET MY MAP UPSYNC + ## - MAKES MY BALISE PRESENT IN BOOSTRAP SWARM KEY - + if [[ $iptype == "ip4" || $iptype == "ip6" ]]; then - ############ UPSYNC CALL - 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 + ############ UPSYNC CALL + 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 - ## LOOKING IF ITS SWARM MAP COULD COMPLETE MINE - echo "ANALYSING BOOSTRAP SWARM MAP" - itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json | jq -r '.g1swarm' | rev | cut -d '/' -f 1 | rev ) - ipfs ls /ipns/${itipnswarmap} | rev | cut -d ' ' -f 1 | rev | cut -d '/' -f 1 > ~/.zen/tmp/_swarm.${ipfsnodeid} + ## LOOKING IF ITS SWARM MAP COULD COMPLETE MINE + echo "ANALYSING BOOSTRAP SWARM MAP" + itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json | jq -r '.g1swarm' | rev | cut -d '/' -f 1 | rev ) + ipfs ls /ipns/${itipnswarmap} | rev | cut -d ' ' -f 1 | rev | cut -d '/' -f 1 > ~/.zen/tmp/_swarm.${ipfsnodeid} - echo "================ ${nodeip}:12345 ZNODS LIST" - cat ~/.zen/tmp/_swarm.${ipfsnodeid} - echo "============================================" - for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do - # CHECK znod validity - cznod=$(${MY_PATH}/tools/ipfs_to_g1.py ${znod} 2>/dev/null) - [[ ${cznod} == "" || ${cznod} == "null" ]] && echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" && continue + echo "================ ${nodeip}:12345 ZNODS LIST" + cat ~/.zen/tmp/_swarm.${ipfsnodeid} + echo "============================================" + for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do + # CHECK znod validity + cznod=$(${MY_PATH}/tools/ipfs_to_g1.py ${znod} 2>/dev/null) + [[ ${cznod} == "" || ${cznod} == "null" ]] && echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" && continue - if [[ ! -d ~/.zen/tmp/swarm/${znod} ]]; then - echo "COMPLETING MY SWARM DATA WITH ZNOD=${znod}" - mkdir -p ~/.zen/tmp/swarm/${znod} - ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${znod} /ipns/${znod} - else - echo "____________ KNOW ${znod}" - # TODO : SPEEDUP REFRESH COMPARE _MySwarm.moats AND KEEP LATEST - fi + if [[ ! -d ~/.zen/tmp/swarm/${znod} ]]; then + echo "COMPLETING MY SWARM DATA WITH ZNOD=${znod}" + mkdir -p ~/.zen/tmp/swarm/${znod} + ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${znod} /ipns/${znod} + else + echo "____________ KNOW ${znod}" + # TODO : SPEEDUP REFRESH COMPARE _MySwarm.moats AND KEEP LATEST + fi - ZMOATS=$(cat ~/.zen/tmp/swarm/${znod}/_MySwarm.moats 2>/dev/null) - MOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${MOATS}) - ZMOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${ZMOATS}) - DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS)) - if [ ${DIFF_SECONDS} -gt $(( 3 * 24 * 60 * 60 )) ]; then - echo "STATION IS STUCK... FOR TOO LONG... REMOVING ${znod} FROM SWARM" - rm -Rf ~/.zen/tmp/swarm/${znod}/ - else - echo "${DIFF_SECONDS} seconds old" - fi + ZMOATS=$(cat ~/.zen/tmp/swarm/${znod}/_MySwarm.moats 2>/dev/null) + MOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${MOATS}) + ZMOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${ZMOATS}) + DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS)) + if [ ${DIFF_SECONDS} -gt $(( 3 * 24 * 60 * 60 )) ]; then + echo "STATION IS STUCK... FOR TOO LONG... REMOVING ${znod} FROM SWARM" + rm -Rf ~/.zen/tmp/swarm/${znod}/ + else + echo "${DIFF_SECONDS} seconds old" + fi - done - echo "============================================" + done + echo "============================================" - fi ## IP4 WAN BOOTSRAP UPSYNC FINISHED + fi ## IP4 WAN BOOTSRAP UPSYNC FINISHED - done + done -############################################# - # ERASE EMPTY DIRECTORIES - du -b ~/.zen/tmp/swarm > /tmp/du - while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du - ############### UPDATE MySwarm CHAN - ls ~/.zen/tmp/swarm - SWARMSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | cut -f 1) + ############################################# + # ERASE EMPTY DIRECTORIES + du -b ~/.zen/tmp/swarm > /tmp/du + while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du + ############### UPDATE MySwarm CHAN + ls ~/.zen/tmp/swarm + SWARMSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | cut -f 1) - ## SIZE MODIFIED => PUBLISH MySwarm_${IPFSNODEID} - [[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize 2>/dev/null) ]] \ - && echo ${SWARMSIZE} > ~/.zen/tmp/swarm/.bsize \ - && SWARMH=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) \ - && echo "=== ~/.zen/tmp/swarm EVOLVED : PUBLISHING NEW STATE ===" \ - && ipfs name publish --key "MySwarm_${IPFSNODEID}" /ipfs/${SWARMH} -############################################# + ## SIZE MODIFIED => PUBLISH MySwarm_${IPFSNODEID} + [[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize 2>/dev/null) ]] \ + && echo ${SWARMSIZE} > ~/.zen/tmp/swarm/.bsize \ + && SWARMH=$(ipfs add -rwq ~/.zen/tmp/swarm/* | tail -n 1 ) \ + && echo "=== ~/.zen/tmp/swarm EVOLVED : PUBLISHING NEW STATE ===" \ + && ipfs name publish --key "MySwarm_${IPFSNODEID}" /ipfs/${SWARMH} + ############################################# - ###################################### - ############# RE PUBLISH SELF BALISE + ###################################### + ############# RE PUBLISH SELF BALISE - # Clean Empty Directory - du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du - while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du + # Clean Empty Directory + du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du + while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du - # Scan IPFSNODEID cache - ls ~/.zen/tmp/${IPFSNODEID}/ - BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1) + # Scan IPFSNODEID cache + ls ~/.zen/tmp/${IPFSNODEID}/ + BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1) - ## IPFS GET LAST ONLINE IPFSNODEID MAP - rm -Rf ~/.zen/tmp/_${IPFSNODEID} 2>/dev/null - 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) + ## IPFS GET LAST ONLINE IPFSNODEID MAP + rm -Rf ~/.zen/tmp/_${IPFSNODEID} 2>/dev/null + 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) - ### CHECK IF SIZE DIFFERENCE ? - ## Local / IPNS size differ => FUSION LOCAL OVER ONLINE & PUBLISH - [[ ${BSIZE} != ${NSIZE} ]] \ - && echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats \ - && MYCACHE=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \ - && echo "PUBLISHING NEW BALISE STATE FOR STATION /ipns/${IPFSNODEID} INDEXES = $BSIZE octets" \ - && ipfs name publish /ipfs/${MYCACHE} + ### CHECK IF SIZE DIFFERENCE ? + ## Local / IPNS size differ => FUSION LOCAL OVER ONLINE & PUBLISH + [[ ${BSIZE} != ${NSIZE} ]] \ + && echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats \ + && MYCACHE=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) \ + && echo "PUBLISHING NEW BALISE STATE FOR STATION /ipns/${IPFSNODEID} INDEXES = $BSIZE octets" \ + && ipfs name publish /ipfs/${MYCACHE} - end=`date +%s` - echo "(*__*) MySwam Update ($BSIZE B) duration was "`expr $end - $start`' seconds. '$(date) + end=`date +%s` + echo "(*__*) MySwam Update ($BSIZE B) duration was "`expr $end - $start`' seconds. '$(date) - ) & ##### SUB-PROCESS + ) & ##### SUB-PROCESS - # last run recording - echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats - echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom + # last run recording + echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats + echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom else