Merge branch 'master' into master

This commit is contained in:
papiche 2024-03-01 19:24:06 +01:00 committed by GitHub
commit 4910495491
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
599 changed files with 963389 additions and 1853 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@ -86,12 +86,15 @@ while true; do
myHtml >> ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http myHtml >> ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
## REPLACE RESPONSE PORT ## 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 ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
## WAN REDIRECT TO HTTPS:// + /${PORT} ## WAN REDIRECT TO HTTPS:// + /${PORT}
[ -z "$isLAN" ] \ [ -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://127.0.0.1:${PORT}~$(zIp):${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
## UPLANET HOME LINK REPLACEMENT ## UPLANET HOME LINK REPLACEMENT
sed -i -e "s~https://qo-op.com~${myUPLANET}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http sed -i -e "s~https://qo-op.com~${myUPLANET}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
@ -133,7 +136,7 @@ while true; do
( nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo " (‿/‿) $PORT CONSUMED in "`expr $(date +%s) - $start`" seconds." ) & ( nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo " (‿/‿) $PORT CONSUMED in "`expr $(date +%s) - $start`" seconds." ) &
else else
mySalt | \ mySalt | \
sed "s~http://127.0.0.1:12345~${myASTROPORT}:${PORT}~g" | \ sed "s~http://127.0.0.1:12345~http://${myASTROPORT}:${PORT}~g" | \
sed "s~https://qo-op.com~${myUPLANET}~g" | \ sed "s~https://qo-op.com~${myUPLANET}~g" | \
( nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo " (‿/‿) $PORT CONSUMED in "`expr $(date +%s) - $start`" seconds." ) & ( nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo " (‿/‿) $PORT CONSUMED in "`expr $(date +%s) - $start`" seconds." ) &
fi fi

View File

@ -4,8 +4,8 @@
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
######################################################################## ########################################################################
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"
start=`date +%s` start=`date +%s`
echo "20H12 (♥‿‿♥) $(hostname -f) $(date)" echo "20H12 (♥‿‿♥) $(hostname -f) $(date)"
espeak "Ding" > /dev/null 2>&1 espeak "Ding" > /dev/null 2>&1
@ -15,18 +15,23 @@ LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START O
[[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]] && LOWMODE="NO 5001" ## IPFS IS STOPPED [[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]] && LOWMODE="NO 5001" ## IPFS IS STOPPED
[[ ! $isLAN ]] && LOWMODE="" ## LOWMODE ONLY FOR LAN STATION [[ ! $isLAN ]] && LOWMODE="" ## LOWMODE ONLY FOR LAN STATION
# echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl') # echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl')
sudo systemctl restart ipfs && sleep 10 sudo systemctl restart ipfs && sleep 10
floop=0 floop=0
while [[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]]; do while [[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]]; do
sleep 10 sleep 10
((floop++)) && [ $floop -gt 36 ] \ ((floop++)) && [ $floop -gt 36 ] \
&& echo "ERROR. IPFS daemon not restarting" \ && echo "ERROR. IPFS daemon not restarting" \
&& $MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "IPFS RESTART ERROR 20H12" \ && ${MY_PATH}/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "IPFS RESTART ERROR 20H12" \
&& exit 1 && exit 1
done done
# espeak "CODE git pull" > /dev/null 2>&1
## REMOVE TMP BUT KEEP SWARM # show ZONE.sh cache of the day
echo "TODAY UPlanet landings"
ls ~/.zen/tmp/ZONE_* 2>/dev/null
## REMOVE TMP BUT KEEP SWARM and coucou
mv ~/.zen/tmp/swarm ~/.zen/swarm mv ~/.zen/tmp/swarm ~/.zen/swarm
mv ~/.zen/tmp/coucou ~/.zen/coucou mv ~/.zen/tmp/coucou ~/.zen/coucou
rm -Rf ~/.zen/tmp/* rm -Rf ~/.zen/tmp/*
@ -39,36 +44,46 @@ mv ~/.zen/coucou ~/.zen/tmp/coucou
&& rm -Rf ~/.zen/G1BILLET/tmp/* && rm -Rf ~/.zen/G1BILLET/tmp/*
## UPDATE Astroport.ONE code ## UPDATE Astroport.ONE code
cd ~/.zen/Astroport.ONE/ cd ${MY_PATH}/
git pull git pull
## SOON /ipns/ Address !!! ## SOON /ipns/ Address !!!
# espeak "20 HOURS 12 MINUTES. ASTROBOT RUNNING." > /dev/null 2>&1 # espeak "20 HOURS 12 MINUTES. ASTROBOT RUNNING." > /dev/null 2>&1
## Updating yt-dlp ## Updating yt-dlp
$MY_PATH/youtube-dl.sh ${MY_PATH}/youtube-dl.sh
sudo youtube-dl -U sudo youtube-dl -U
# Refresh ~/.zen/game/world/G1VOEU ## DRAGON SSH WOT
# NOW RUN FROM PLAYER.refresh.sh !! ~/.zen/Astroport.ONE/RUNTIME/VOEUX.refresh.sh echo "DRAGONS WOT OFF"
${MY_PATH}/RUNTIME/DRAGON_p2p_ssh.sh off
## PING BOOSTRAP & SWARM NODES
${MY_PATH}/ping_bootstrap.sh > /dev/null 2>&1
#####################################
# espeak "Players refresh" > /dev/null 2>&1 # espeak "Players refresh" > /dev/null 2>&1
# Refresh ~/.zen/game/players/PLAYER # Refresh ~/.zen/game/players/PLAYER
~/.zen/Astroport.ONE/RUNTIME/PLAYER.refresh.sh #####################################
${MY_PATH}/RUNTIME/PLAYER.refresh.sh
#####################################
#####################################
# espeak "REFRESHING UPLANET" > /dev/null 2>&1 # espeak "REFRESHING UPLANET" > /dev/null 2>&1
~/.zen/Astroport.ONE/RUNTIME/UPLANET.refresh.sh #####################################
${MY_PATH}/RUNTIME/UPLANET.refresh.sh
#####################################
#####################################
# espeak "REFRESHING NODE" > /dev/null 2>&1 # espeak "REFRESHING NODE" > /dev/null 2>&1
~/.zen/Astroport.ONE/RUNTIME/NODE.refresh.sh #####################################
${MY_PATH}/RUNTIME/NODE.refresh.sh
#####################################
## if [[ ! $isLAN ]]; then ## if [[ ! $isLAN ]]; then
## REFRESH BOOSTRAP LIST (OFFICIAL SWARM) ## REFRESH BOOSTRAP LIST (OFFICIAL SWARM)
espeak "bootstrap refresh" > /dev/null 2>&1 espeak "bootstrap refresh" > /dev/null 2>&1
ipfs bootstrap rm --all > /dev/null 2>&1 ipfs bootstrap rm --all > /dev/null 2>&1
for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#") # remove comments for bootnode in $(cat ${MY_PATH}/A_boostrap_nodes.txt | grep -Ev "#") # remove comments
do do
ipfsnodeid=${bootnode##*/} ipfsnodeid=${bootnode##*/}
ipfs bootstrap add $bootnode ipfs bootstrap add $bootnode
@ -85,23 +100,23 @@ seconds=$((dur % 60))
echo "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds" echo "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds"
echo "20H12 (♥‿‿♥) Execution time was $dur seconds." echo "20H12 (♥‿‿♥) Execution time was $dur seconds."
# ~/.zen/Astroport.ONE/tools/ipfs_P2P_forward.sh ## COULD FORWARD LOCAL TCP PORT TO SWARM
rm ~/.zen/game/players/localhost/latest
## MAIL LOG : support@qo-op.com ## ## MAIL LOG : support@qo-op.com ##
$MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "20H12" ${MY_PATH}/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "20H12"
espeak "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds" > /dev/null 2>&1 espeak "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds" > /dev/null 2>&1
## RESTART
# espeak "Restarting Astroport Services" > /dev/null 2>&1 # espeak "Restarting Astroport Services" > /dev/null 2>&1
## CLOSING API PORT ## CLOSING API PORT
[[ -s ~/.zen/.pid ]] && kill -9 $(cat ~/.zen/.pid) > /dev/null 2>&1 [[ -s ~/.zen/.pid ]] && kill -9 $(cat ~/.zen/.pid) > /dev/null 2>&1
## KILL ALL REMAINING nc ## KILL ALL REMAINING nc
killall nc 12345.sh > /dev/null 2>&1 killall nc 12345.sh > /dev/null 2>&1
## OPEN API ENGINE ## SYSTEMD OR NOT SYSTEMD
if [[ ! -f /etc/systemd/system/astroport.service ]]; then if [[ ! -f /etc/systemd/system/astroport.service ]]; then
~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log & ${MY_PATH}/12345.sh > ~/.zen/tmp/12345.log &
PID=$! PID=$!
echo $PID > ~/.zen/.pid echo $PID > ~/.zen/.pid
else else
@ -111,16 +126,24 @@ else
fi fi
echo "IPFS LOW MODE ?" echo "IPFS DAEMON LEVEL"
######### IPFS DAMEON NOT RUNNING ALL DAY
## IF IPFS DAEMON DISABLED : WAIT 1H & STOP IT ## IF IPFS DAEMON DISABLED : WAIT 1H & STOP IT
[[ $LOWMODE != "" ]] \ [[ $LOWMODE != "" ]] \
&& echo "ON. $LOWMODE" \ && echo "STOP IPFS $LOWMODE" \
&& sleep 360 \ && sleep 3600 \
&& sudo systemctl stop ipfs \ && sudo systemctl stop ipfs \
&& exit 0 && exit 0
echo "OFF. RESTART IPFS" echo "HIGH. RESTART IPFS"
sleep 60 sleep 60
sudo systemctl restart ipfs sudo systemctl restart ipfs
#################################
### DRAGON WOT : SSH P2P RING OPENING
#################################
sleep 30
echo "DRAGONS WOT ON"
${MY_PATH}/RUNTIME/DRAGON_p2p_ssh.sh
exit 0 exit 0

79
API/DRAGONS.sh Executable file
View File

@ -0,0 +1,79 @@
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
################################################################################
## API: DRAGONS
## Used by OSM2IPFS welcome.html
# ?zone=DEG&ulat=LAT&ulon=LON
## Search for TW numbers in received zone # >> return json
################################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "${MY_PATH}/../tools/my.sh"
start=`date +%s`
echo "PORT=$1
THAT=$2
AND=$3
THIS=$4
APPNAME=$5
WHAT=$6
OBJ=$7
VAL=$8
MOATS=$9
COOKIE=$10"
PORT="$1" THAT="$2" AND="$3" THIS="$4" APPNAME="$5" WHAT="$6" OBJ="$7" VAL="$8" MOATS="$9" COOKIE="$10"
### transfer variables according to script
[[ $MOATS == "" ]] && echo "MISSING MOATS" && exit 1
HTTPCORS="HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET
Server: Astroport.ONE
Content-Type: text/html; charset=UTF-8
"
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
# PREPARE HTTP RESPONSE (application/json)
mkdir -p ~/.zen/tmp/${MOATS}/
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}/http
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/http
# ------------------------------------------------------------------- #
# GET/?dragons
# ------------------------------------------------------------------- #
## RUNNING UPLANET STATIONS GPS DETECTION
rm ~/.zen/tmp/DRAGONS.json
if [[ ! -s ~/.zen/tmp/DRAGONS.json ]]; then
echo " ## cat ***/GPS.json"
cat ~/.zen/tmp/${IPFSNODEID}/GPS.json 2>/dev/null | jq -c '.[] + {ipfsnodeid: "'$IPFSNODEID'"}' > ~/.zen/tmp/${MOATS}/gps.grid
cat ~/.zen/tmp/swarm/12D*/GPS.json 2>/dev/null | jq -c '.[] + {ipfsnodeid: "'$IPFSNODEID'"}' | sort -u >> ~/.zen/tmp/${MOATS}/gps.grid
cat ~/.zen/tmp/${MOATS}/gps.grid | jq -s '.' | sed -e 's/\[/[/' -e 's/\]/]/' -e 's/},{/},\n{/g' > ~/.zen/tmp/DRAGONS.json
fi
#~ jq 'unique_by(.umap)' ~/.zen/tmp/DRAGONS.json > ~/.zen/tmp/DRAGONS_no_duplicates.json
#~ mv ~/.zen/tmp/DRAGONS_no_duplicates.json ~/.zen/tmp/DRAGONS.json
echo " ***** WELCOME DRAGONS =========== "
cat ~/.zen/tmp/DRAGONS.json
### SEND RESPONSE ON PORT
cat ~/.zen/tmp/DRAGONS.json >> ~/.zen/tmp/${MOATS}/http
(
cat ~/.zen/tmp/${MOATS}/http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
rm -Rf ~/.zen/tmp/${MOATS} && echo "BLURP DRAGONS.json"
) &
## TIMING
end=`date +%s`
echo "(DRAGONS) Operation time was "`expr $end - $start` seconds.
exit 0

View File

@ -87,31 +87,40 @@ fi
############################################################################### ###############################################################################
if [[ ${QRCODE} == "station" ]]; then if [[ ${QRCODE} == "station" ]]; then
#~ # Keep 2nd try of the day ## CHECK FOR ANY ALREADY RUNNING make_image_ipfs_index_carousel
#~ [[ ! -s ~/.zen/tmp/_ISTATION ]] \ carouselrunning=$(ps axf --sort=+utime | grep -w 'make_image_ipfs_index_carousel' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
#~ && mv ~/.zen/tmp/ISTATION ~/.zen/tmp/_ISTATION \
#~ || cp ~/.zen/tmp/_ISTATION ~/.zen/tmp/ISTATION
if [[ ! -s ~/.zen/tmp/ISTATION ]]; then if [[ ! -s ~/.zen/tmp/ISTATION ]]; then
## GENERATE PLAYER G1 TO ZEN ACCOUNTING if [[ $carouselrunning ]]; then
ISTATION=$($MY_PATH/../tools/make_image_ipfs_index_carousel.sh | tail -n 1) ISTATION="/ipfs/QmVTHH8sTXEqRBsvcKo5jDo16rvp7Q7ERyHZP5vmWUxeS6" ## G1WorldCrafting.jpg
echo $ISTATION > ~/.zen/tmp/ISTATION ## STATION G1WALLET CAROUSEL else
## GENERATE PLAYER G1 TO ZEN ACCOUNTING
ISTATION=$($MY_PATH/../tools/make_image_ipfs_index_carousel.sh | tail -n 1)
echo $ISTATION > ~/.zen/tmp/ISTATION ## STATION G1WALLET CAROUSEL
fi
else else
ISTATION=$(cat ~/.zen/tmp/ISTATION) ISTATION=$(cat ~/.zen/tmp/ISTATION)
fi fi
## SHOW G1PALPAY FRONT (IFRAME)
sed "s~_STATION_~${myIPFSW}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
[[ ! $isLAN ]] && sed -i "s~MENU~HOSTING~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://127.0.0.1:8080~${myIPFSW}~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://127.0.0.1:33101~${myG1BILLET}~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://astroport.localhost:1234~${myASTROPORT}~g" ~/.zen/tmp/${MOATS}/index.htm
WSTATION="/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/index.htm)" ## LOG IPFSNODEID : IPCity + Wheater + more...
echo $WSTATION > ~/.zen/tmp/WSTATION ${MY_PATH}/../tools/IPFSNODEID.weather.sh > ~/.zen/tmp/${IPFSNODEID}/weather.txt
end=`date +%s` echo "<meta http-equiv=\"refresh\" content=\"0; url='${ISTATION}'\" />" > ~/.zen/tmp/${IPFSNODEID}/_index.html
echo "NEW WSTATION ${myIPFSW}${WSTATION} Execution time was "`expr $end - $start` seconds.
## SEND TO WSTATION PAGE ## SHOW ZenStation FRONT
sed "s~_TWLINK_~${myIPFSW}${WSTATION}/~g" ${MY_PATH}/../templates/index.302 > ~/.zen/tmp/${MOATS}/index.redirect sed "s~_STATION_~${myIPFS}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~2L8vaYixCf97DMT8SistvQFeBj7vb6RQL7tvwyiv1XVH~${WORLDG1PUB}~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://127.0.0.1:8080~${myIPFS}~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://127.0.0.1:33101~${myG1BILLET}~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://astroport.localhost:1234~${myASTROPORT}~g" ~/.zen/tmp/${MOATS}/index.htm
WSTATION="/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/index.htm)"
echo $WSTATION > ~/.zen/tmp/WSTATION
end=`date +%s`
echo "NEW WSTATION ${myIPFS}${WSTATION} Execution time was "`expr $end - $start` seconds.
##302 REDIRECT TO WSTATION IPFS
sed "s~_TWLINK_~${myIPFS}${WSTATION}/~g" ${MY_PATH}/../templates/index.302 > ~/.zen/tmp/${MOATS}/index.redirect
sed -i "s~Set-Cookie*~Set-Cookie: $COOKIE~" ~/.zen/tmp/${MOATS}/index.redirect sed -i "s~Set-Cookie*~Set-Cookie: $COOKIE~" ~/.zen/tmp/${MOATS}/index.redirect
echo "url='"${myIPFSW}${WSTATION}"'" >> ~/.zen/tmp/${MOATS}/index.redirect echo "url='"${myIPFSW}${WSTATION}"'" >> ~/.zen/tmp/${MOATS}/index.redirect
( (
@ -486,7 +495,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
&& ipfs name publish -k ${player}_${VoeuName} /ipfs/${MILGRAM} & && ipfs name publish -k ${player}_${VoeuName} /ipfs/${MILGRAM} &
) & ) &
echo "<br>PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS<br>" >> ~/.zen/tmp/${MOATS}/disco echo "<br>PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS<bipfsr>" >> ~/.zen/tmp/${MOATS}/disco
( (
cat ~/.zen/tmp/${MOATS}/disco | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 cat ~/.zen/tmp/${MOATS}/disco | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS} echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
@ -604,7 +613,7 @@ if [[ ${QRCODE:0:2} == "G1" && ${AND} == "tw" ]]; then
############################################## ##############################################
echo "## IPNS G1Voeu APP REDIRECT" echo "## IPNS G1Voeu APP REDIRECT"
tiddlywiki --load ${INDEX} --output ~/.zen/tmp --render '.' "${MOATS}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]' tiddlywiki --load ${INDEX} --output ~/.zen/tmp --render '.' "${MOATS}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
cat ~/.zen/tmp/${MOATS}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${MOATS}.g1wishes.txt cat ~/.zen/tmp/${MOATS}.g1voeu.json | jq -r 'map(select(.wish != null)) | .[].wish' > ~/.zen/tmp/${MOATS}.g1wishes.txt
cat ~/.zen/tmp/${MOATS}.g1wishes.txt cat ~/.zen/tmp/${MOATS}.g1wishes.txt
while read WISH while read WISH
do do
@ -641,6 +650,7 @@ fi
################################################################################ ################################################################################
## QRCODE = IPNS or G1PUB ? Can be ASTRONAUTENS or G1PUB format ## QRCODE = IPNS or G1PUB ? Can be ASTRONAUTENS or G1PUB format
ZCHK="$(echo $THAT | cut -d ':' -f 2-)" # ChK or ZEN ZCHK="$(echo $THAT | cut -d ':' -f 2-)" # ChK or ZEN
[[ $ZCHK == $THAT ]] && ZCHK=""
QRCODE="${QRCODE%%:*}" ## TRIM :ChK QRCODE="${QRCODE%%:*}" ## TRIM :ChK
################################################################################ ################################################################################
################################################################################ ################################################################################
@ -650,7 +660,7 @@ echo "IPNS2G1=${IPNS2G1} ZCHK=${ZCHK}"
[[ ${ZCHK} == "" && ${#IPNS2G1} -ge 40 && ${QRCODE::4} == "12D3" ]] \ [[ ${ZCHK} == "" && ${#IPNS2G1} -ge 40 && ${QRCODE::4} == "12D3" ]] \
&& echo "${PORT} QRCODE IS IPNS ADDRESS : ${myIPFS}/ipns/${QRCODE}" \ && echo "${PORT} QRCODE IS IPNS ADDRESS : ${myIPFS}/ipns/${QRCODE}" \
&& (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}/ipns/${QRCODE}'\" />Loading from IPFS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \ && (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}/ipns/${QRCODE}'\" />Loading from IPFS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& echo "PRULS /ipns/${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \ && echo "GLUPS /ipns/${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
&& exit 0 && exit 0
## TEST G1 TYPE ( try g1_to_ipfs ) ## TEST G1 TYPE ( try g1_to_ipfs )
@ -658,7 +668,7 @@ ASTROTOIPNS=$(${MY_PATH}/../tools/g1_to_ipfs.py ${QRCODE} 2>/dev/null)
[[ ! ${ASTROTOIPNS} ]] \ [[ ! ${ASTROTOIPNS} ]] \
&& echo "${PORT} INVALID QRCODE : ${QRCODE}" \ && echo "${PORT} INVALID QRCODE : ${QRCODE}" \
&& (echo "$HTTPCORS ERROR - INVALID QRCODE : ${QRCODE}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \ && (echo "$HTTPCORS ERROR - INVALID QRCODE : ${QRCODE}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& echo "PRULS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \ && echo "GLUPS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
&& exit 1 && exit 1
################################################################################ ################################################################################
echo "############################################################################" echo "############################################################################"
@ -673,29 +683,23 @@ echo ">>> ${QRCODE} g1_to_ipfs $ASTROTOIPNS"
&& ZEN=$(echo "($VISITORCOINS - 1) * 10" | bc | cut -d '.' -f 1) \ && ZEN=$(echo "($VISITORCOINS - 1) * 10" | bc | cut -d '.' -f 1) \
|| ZEN="-10" || ZEN="-10"
DISPLAY="$VISITORCOINS G1" DISPLAY="<h1>$VISITORCOINS G1</h1>"
## WALLET VIERGE ## WALLET VIERGE
########################################### ###########################################
if [[ $VISITORCOINS == "null" || ${ZEN} -lt 10 ]]; then if [[ $VISITORCOINS == "null" || ${ZEN} -lt 10 ]]; then
echo "!! LOW ZEN WALLET ZEN=${ZEN}" DISPLAY="$DISPLAY
<h2>!! LOW ZEN WALLET ZEN=${ZEN}<h2>"
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}/index.redirect DISPLAY="$DISPLAY<h3>LOW ZEN WARNING</h3>
echo "<h1>LOW ZEN WARNING</h1> PLEASE CHARGE... ${ZEN} ZEN"
PLEASE CHARGE... only ${ZEN} ZEN
" >> ~/.zen/tmp/${MOATS}/index.redirect
(
cat ~/.zen/tmp/${MOATS}/index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP null ZEN $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
) &
exit 0
fi fi
## WE SEND WALLET AMOUNT DISPLAY ## WE SEND WALLET AMOUNT DISPLAY
( (
echo "$HTTPCORS <h2>${ZCHK}:${QRCODE}</h2><h1>${DISPLAY}</h1><h2><a href='$myUPLANET/g1gate/?pubkey=$G1PUB'>SCAN WALLET</a><h2>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 echo "$HTTPCORS ${QRCODE}:${ZCHK}:${DISPLAY}<h2><a href='$myUPLANET/g1gate/?pubkey="$QRCODE"'>SCAN WALLET</a><h2>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP ${DISPLAY} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} echo "BLURP ${DISPLAY} $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
) & ) &

View File

@ -26,34 +26,38 @@ Content-Type: text/html; charset=UTF-8
" "
mkdir -p ~/.zen/tmp/${MOATS}/ mkdir -p ~/.zen/tmp/${MOATS}/
[[ ! $APPNAME || $SALT == "pepper" ]] && echo "NO APPNAME - BAD APP - CONTINUE" && (echo "$HTTPCORS ERROR - BAD CREDENTIALS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1 [[ ! $APPNAME || $SALT == "pepper" ]] \
############################################################################ && echo "NO APPNAME - BAD APP - CONTINUE" \
# WRITING API # SALT # PEPPER # MAKING THE KEY EXIST ######### && (echo "$HTTPCORS ERROR - BAD CREDENTIALS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
################### KEY GEN ################################### && exit 1
echo ">>>>>>>>>>>>>> Application LaBureautique >><< APPNAME = $APPNAME <<<<<<<<<<<<<<<<<<<<"
[[ ! $SALT ]] && (echo "$HTTPCORS ERROR - SALT MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1 ############################################################################
[[ ! $PEPPER || ${PEPPER:0:2} == "G1" ]] && (echo "$HTTPCORS ERROR - BAD OR PEPPER MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1 # WRITING API # SALT # PEPPER # MAKING THE KEY EXIST #########
################### KEY GEN ###################################
echo ">>>>>>>>>>>>>> Application LaBureautique >><< APPNAME = $APPNAME <<<<<<<<<<<<<<<<<<<<"
## SAVE "salt" "pepper" DEBUG REMOVE OR PASS ENCRYPT FOR SECURITY REASON [[ ! $SALT ]] && (echo "$HTTPCORS ERROR - SALT MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
echo "PLAYER : \"$SALT\" \"$PEPPER\" : $APPNAME ($WHAT)" [[ ! $PEPPER || ${PEPPER:0:2} == "G1" ]] && (echo "$HTTPCORS ERROR - BAD OR PEPPER MISSING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
echo "\"$SALT\" \"$PEPPER\"" > ~/.zen/tmp/${MOATS}/${MOATS}.secret.june
# CALCULATING ${MOATS}.secret.key + G1PUB ## SAVE "salt" "pepper" DEBUG REMOVE OR PASS ENCRYPT FOR SECURITY REASON
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${MOATS}.secret.key "$SALT" "$PEPPER" echo "PLAYER : \"$SALT\" \"$PEPPER\" : $APPNAME ($WHAT)"
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${MOATS}.secret.key | grep 'pub:' | cut -d ' ' -f 2) echo "\"$SALT\" \"$PEPPER\"" > ~/.zen/tmp/${MOATS}/${MOATS}.secret.june
[[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
echo "G1PUB : ${G1PUB}"
## CALCULATING ${MOATS}.${G1PUB}.ipns.key ADDRESS # CALCULATING ${MOATS}.secret.key + G1PUB
ipfs key rm ${G1PUB} > /dev/null 2>&1 ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${MOATS}.secret.key "$SALT" "$PEPPER"
rm -f ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key G1PUB=$(cat ~/.zen/tmp/${MOATS}/${MOATS}.secret.key | grep 'pub:' | cut -d ' ' -f 2)
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key "$SALT" "$PEPPER" [[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
ASTRONAUTENS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key ) echo "G1PUB : ${G1PUB}"
[[ ! ${ASTRONAUTENS} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - ASTRONAUTENS COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
echo "TW ADDRESS : $myIPFS/ipns/${ASTRONAUTENS}" ## CALCULATING ${MOATS}.${G1PUB}.ipns.key ADDRESS
echo ipfs key rm ${G1PUB} > /dev/null 2>&1
rm -f ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key "$SALT" "$PEPPER"
ASTRONAUTENS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key )
[[ ! ${ASTRONAUTENS} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - ASTRONAUTENS COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
echo "TW ADDRESS : $myIPFS/ipns/${ASTRONAUTENS}"
echo
######################################## ########################################
## APPNAME SELECTION ######################## ## APPNAME SELECTION ########################
@ -62,156 +66,155 @@ mkdir -p ~/.zen/tmp/${MOATS}/
############################################## ##############################################
# MESSAGING : GET MESSAGE FROM GCHANGE+ # MESSAGING : GET MESSAGE FROM GCHANGE+
############################################## ##############################################
if [[ $APPNAME == "messaging" ]]; then if [[ $APPNAME == "messaging" ]]; then
( ## & SUB PROCESS ( ## & SUB PROCESS
echo "Extracting ${G1PUB} messages..." echo "Extracting ${G1PUB} messages..."
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \ ~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key read -n 10 -j > ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key read -n 10 -j > ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json
[[ ! -s ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json || $(grep -v -E 'Aucun message à afficher' ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json) == "True" ]] && echo "[]" > ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json [[ ! -s ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json || $(grep -v -E 'Aucun message à afficher' ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json) == "True" ]] && echo "[]" > ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \ ~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key read -n 10 -j -o > ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key read -n 10 -j -o > ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json
[[ ! -s ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json || $(grep -v -E 'Aucun message à afficher' ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json) == "True" ]] && echo "[]" > ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json [[ ! -s ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json || $(grep -v -E 'Aucun message à afficher' ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json) == "True" ]] && echo "[]" > ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json
echo "Creating messages In/Out JSON ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json" echo "Creating messages In/Out JSON ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json"
echo '[' > ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json echo '[' > ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
cat ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json cat ~/.zen/tmp/${MOATS}/messin.${G1PUB}.json >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
echo "," >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json echo "," >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
cat ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json cat ~/.zen/tmp/${MOATS}/messout.${G1PUB}.json >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
echo ']' >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json echo ']' >> ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json
## ADDING HTTP/1.1 PROTOCOL HEADER ## ADDING HTTP/1.1 PROTOCOL HEADER
echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
cat ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect cat ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
## SEND REPONSE PROCESS IN BACKGROUD ## SEND REPONSE PROCESS IN BACKGROUD
( cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/${MOATS}/${MOATS}* ) & ( cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/${MOATS}/${MOATS}* ) &
#~ ( ## USING IPNS SESSION KEY #~ ( ## USING IPNS SESSION KEY
#~ REPONSE=$(cat ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json | ipfs add -q) #~ REPONSE=$(cat ~/.zen/tmp/${MOATS}/${MOATS}.messaging.json | ipfs add -q)
#~ ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE #~ ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
#~ echo "SESSION ${myIPFS}/ipns/$SESSIONNS " #~ echo "SESSION ${myIPFS}/ipns/$SESSIONNS "
#~ ) & #~ ) &
end=`date +%s` end=`date +%s`
dur=`expr $end - $start` dur=`expr $end - $start`
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1 cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
) & ## & SUB PROCESS ) & ## & SUB PROCESS
end=`date +%s` end=`date +%s`
echo " Messaging launch (☓‿‿☓) Execution time was "`expr $end - $start` seconds. echo " Messaging launch (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
exit 0 exit 0
fi fi
######################## MESSAGING END ######################## MESSAGING END
######################################## ########################################
# G1PUB : REDIRECT TO GCHANGE OR TW + EMAIL => CREATE PLAYER ! # G1PUB : REDIRECT TO GCHANGE OR TW + EMAIL => CREATE PLAYER !
######################################## ########################################
if [[ "$APPNAME" == "g1pub" ]]; then if [[ "$APPNAME" == "g1pub" ]]; then
if [[ "$OBJ" != "email" ]]; then if [[ "$OBJ" != "email" ]]; then
## WITH NO EMAIL -> Open Gchange Profile & Update TW cache ## WITH NO EMAIL -> Open Gchange Profile & Update TW cache
[[ ${WHAT} == "astro" ]] && REPLACE="https://$myTUBE/ipns/${ASTRONAUTENS}" \ [[ ${WHAT} == "astro" ]] && REPLACE="https://$myTUBE/ipns/${ASTRONAUTENS}" \
|| REPLACE="$myGCHANGE/#/app/user/${G1PUB}" || REPLACE="$myGCHANGE/#/app/user/${G1PUB}"
echo ${REPLACE} echo ${REPLACE}
## REDIRECT TO TW OR GCHANGE PROFILE ## REDIRECT TO TW OR GCHANGE PROFILE
sed "s~_TWLINK_~${REPLACE}/~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect sed "s~_TWLINK_~${REPLACE}/~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
## USED BY https://git.p2p.legal/La_Bureautique/zeg1jeux/src/branch/main/lib/Fred.class.php#L81 ## USED BY https://git.p2p.legal/La_Bureautique/zeg1jeux/src/branch/main/lib/Fred.class.php#L81
echo "url='"${REPLACE}"'" >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect echo "url='"${REPLACE}"'" >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
### REPONSE=$(echo $myGCHANGE/#/app/user/${G1PUB}/ | ipfs add -q) ### REPONSE=$(echo $myGCHANGE/#/app/user/${G1PUB}/ | ipfs add -q)
### ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE ### ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
### echo "SESSION ${myIPFS}/ipns/$SESSIONNS " ### echo "SESSION ${myIPFS}/ipns/$SESSIONNS "
( (
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
${MY_PATH}/../tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS} ${MY_PATH}/../tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS}
rm ~/.zen/tmp/${MOATS}/${MOATS}* rm ~/.zen/tmp/${MOATS}/${MOATS}*
) & ) &
end=`date +%s` end=`date +%s`
echo $APPNAME" (0‿‿0) ${WHAT} Execution time was "`expr $end - $start` seconds. echo $APPNAME" (0‿‿0) ${WHAT} Execution time was "`expr $end - $start` seconds.
exit 0 exit 0
else else
# CREATE PLAYER : ?salt=PHRASE%20UNE&pepper=PHRASE%20DEUX&g1pub=on&email=EMAIL&pseudo=PROFILENAME # CREATE PLAYER : ?salt=PHRASE%20UNE&pepper=PHRASE%20DEUX&g1pub=on&email=EMAIL&pseudo=PROFILENAME
# WHAT can contain urlencoded FullURL # WHAT can contain urlencoded FullURL
EMAIL="${VAL,,}" # lowercase EMAIL="${VAL,,}" # lowercase
[[ ! ${EMAIL} ]] && (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR ${WHAT} CONTACT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0 [[ ! ${EMAIL} ]] && (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR ${WHAT} CONTACT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
## CHECK WHAT IS EMAIL
if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
echo "VALID EMAIL OK"
else
echo "BAD EMAIL"
(echo "$HTTPCORS KO ${EMAIL} : bad '" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 0
fi
## CREATE PSEUDO FROM
if [[ ! $PSEUDO ]]; then
PSEUDO=$(echo ${EMAIL} | cut -d '@' -f 1)
PSEUDO=${PSEUDO,,}; PSEUDO=${PSEUDO%%[0-9]*}${RANDOM:0:4}
fi
if [[ ! -d ~/.zen/game/players/${EMAIL} ]]; then
echo "# ASTRONAUT NEW VISA Create VISA.new.sh in background (~/.zen/tmp/email.${EMAIL}.${MOATS}.txt)"
(
startvisa=`date +%s`
[[ "$SALT" == "0" && "$PEPPER" == "0" ]] && SALT="" && PEPPER="" # "0" "0" means random salt pepper
#~ echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
${MY_PATH}/../RUNTIME/VISA.new.sh "$SALT" "$PEPPER" "${EMAIL}" "$PSEUDO" "${WHAT}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG ZenCard creation" ## Send VISA.new log to EMAIL
echo "Le code de votre ASTROID est ${PASS}, scannez-le sur La♥Box ẐenStation (demo : https://astroport.copylaradio.com)" > ~/.zen/tmp/${MOATS}/intro.txt
## EXECUTE LAST LINE
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt | tail -n 1)
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
BILLETNAME=$(echo "$SALT" | sed 's/ /_/g')
mpack -a -s "La♥Box : ASTROID :+: TW :+: " -d ~/.zen/tmp/${MOATS}/intro.txt \
~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg ${PLAYER}
end=`date +%s`
dur=`expr $end - $startvisa`
echo ${MOATS}:${G1PUB}:${PLAYER}:VISA:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
) &
echo "$HTTPCORS
<meta http-equiv='refresh' content='30; url=\""${myIPFS}"/ipns/"${ASTRONAUTENS}"\"'/>
<h1>ASTRONAUTE $PSEUDO</h1>
<br>KEY : $SALT:$PEPPER:${EMAIL}
<br>TW : ${myIPFS}/ipns/${ASTRONAUTENS}
<br>STATION : ${myIPFS}/ipns/$IPFSNODEID<br><br>please wait....<br>
export ASTROTW=/ipns/${ASTRONAUTENS} ASTROG1=${G1PUB} ASTROMAIL=${EMAIL} ASTROIPFS=${myIPFS}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
exit 0
else
# ASTRONAUT EXISTING ${EMAIL}
CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$SALT")
[[ $CHECK ]] && CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$PEPPER")
[[ ! $CHECK ]] && (echo "$HTTPCORS - WARNING - PLAYER ${EMAIL} ALREADY HERE" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
fi
###################################################################################################
end=`date +%s`
echo " (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
fi
## CHECK WHAT IS EMAIL
if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
echo "VALID EMAIL OK"
else
echo "BAD EMAIL"
(echo "$HTTPCORS KO ${EMAIL} : bad '" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 0
fi fi
## CREATE PSEUDO FROM
if [[ ! $PSEUDO ]]; then
PSEUDO=$(echo ${EMAIL} | cut -d '@' -f 1)
PSEUDO=${PSEUDO,,}; PSEUDO=${PSEUDO%%[0-9]*}${RANDOM:0:4}
fi
if [[ ! -d ~/.zen/game/players/${EMAIL} ]]; then
echo "# ASTRONAUT NEW VISA Create VISA.new.sh in background (~/.zen/tmp/email.${EMAIL}.${MOATS}.txt)"
(
startvisa=`date +%s`
[[ "$SALT" == "0" && "$PEPPER" == "0" ]] && SALT="" && PEPPER="" # "0" "0" means random salt pepper
#~ echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
${MY_PATH}/../RUNTIME/VISA.new.sh "$SALT" "$PEPPER" "${EMAIL}" "$PSEUDO" "${WHAT}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
#~ ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG ZenCard creation" ## Send VISA.new log to EMAIL
echo "ASTROID PIN=${PASS}, operate on all La♥Box Web3 ẐenStation (WWW : https://astroport.copylaradio.com)"
## :: TRICK :: EXECUTE LAST VISA.new.sh output LINE : export above VARs
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt | tail -n 1)
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
BILLETNAME=$(echo "$SALT" | sed 's/ /_/g')
#~ mpack -a -s "La♥Box : ASTROID :+: TW :+: " -d ~/.zen/tmp/${MOATS}/intro.txt \
#~ ~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg ${PLAYER}
end=`date +%s`
dur=`expr $end - $startvisa`
echo ${MOATS}:${G1PUB}:${PLAYER}:VISA:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
) &
echo "$HTTPCORS
<meta http-equiv='refresh' content='30; url=\""${myIPFS}"/ipns/"${ASTRONAUTENS}"\"'/>
<h1>ASTRONAUTE $PSEUDO</h1>
<br>KEY : $SALT:$PEPPER:${EMAIL}
<br>TW : ${myIPFS}/ipns/${ASTRONAUTENS}
<br>STATION : ${myIPFS}/ipns/$IPFSNODEID<br><br>please wait....<br>
export ASTROTW=/ipns/${ASTRONAUTENS} ASTROG1=${G1PUB} ASTROMAIL=${EMAIL} ASTROIPFS=${myIPFS}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
exit 0
else
# ASTRONAUT EXISTING ${EMAIL}
CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$SALT")
[[ $CHECK ]] && CHECK=$(cat ~/.zen/game/players/${EMAIL}/secret.june | grep -w "$PEPPER")
[[ ! $CHECK ]] && (echo "$HTTPCORS - WARNING - PLAYER ${EMAIL} ALREADY HERE" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
fi
###################################################################################################
end=`date +%s`
echo " (☓‿‿☓) Execution time was "`expr $end - $start` seconds.
fi
fi
######################################## ########################################
######################################## ########################################
@ -219,291 +222,294 @@ mkdir -p ~/.zen/tmp/${MOATS}/
#TESTCRAFT=ON nodeid dataid #TESTCRAFT=ON nodeid dataid
######################################## ########################################
######################################## ########################################
if [[ "$APPNAME" == "testcraft" ]]; then if [[ "$APPNAME" == "testcraft" ]]; then
( # testcraft & SUB PROCESS ( # testcraft & SUB PROCESS
start=`date +%s` start=`date +%s`
## RECORD DATA MADE IN BROWSER (JSON) ## RECORD DATA MADE IN BROWSER (JSON)
OBJID=$OBJ OBJID=$OBJ
DATAID=$VAL DATAID=$VAL
## export PLAYER ## export PLAYER
${MY_PATH}/../tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS} ${MY_PATH}/../tools/TW.cache.sh ${ASTRONAUTENS} ${MOATS}
## IS IT INDEX JSON ## IS IT INDEX JSON
echo "${PLAYER} $APPNAME IS ${WHAT}" echo "${PLAYER} $APPNAME IS ${WHAT}"
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER} mkdir -p ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}
[[ $WHAT == "on" ]] && WHAT="json" # data mimetype (default "on" = json) [[ $WHAT == "on" ]] && WHAT="json" # data mimetype (default "on" = json)
## TODO : modify timeout if isLAN or NOT ## TODO : modify timeout if isLAN or NOT
[[ $isLAN ]] && WAIT=3 || WAIT=12 [[ $isLAN ]] && WAIT=3 || WAIT=12
echo "1ST TRY : ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}" echo "1ST TRY : ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}"
ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
if [[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then if [[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then
echo "IPFS TIMEOUT >>> (°▃▃°) $DATAID STILL MISSING GATEWAY BANGING FOR IT (°▃▃°)" echo "IPFS TIMEOUT >>> (°▃▃°) $DATAID STILL MISSING GATEWAY BANGING FOR IT (°▃▃°)"
array=(${myIPFSGW}/ipfs/:hash https://ipns.co/:hash https://dweb.link/ipfs/:hash https://ipfs.io/ipfs/:hash https://ipfs.fleek.co/ipfs/:hash https://ipfs.best-practice.se/ipfs/:hash https://gateway.pinata.cloud/ipfs/:hash https://gateway.ipfs.io/ipfs/:hash https://cf-ipfs.com/ipfs/:hash https://cloudflare-ipfs.com/ipfs/:hash) array=(${myIPFSGW}/ipfs/:hash https://ipns.co/:hash https://dweb.link/ipfs/:hash https://ipfs.io/ipfs/:hash https://ipfs.fleek.co/ipfs/:hash https://ipfs.best-practice.se/ipfs/:hash https://gateway.pinata.cloud/ipfs/:hash https://gateway.ipfs.io/ipfs/:hash https://cf-ipfs.com/ipfs/:hash https://cloudflare-ipfs.com/ipfs/:hash)
# size=${#array[@]}; index=$(($RANDOM % $size)); echo ${array[$index]} ## TODO CHOOSE RANDOM # size=${#array[@]}; index=$(($RANDOM % $size)); echo ${array[$index]} ## TODO CHOOSE RANDOM
# official ipfs best gateway from https://luke.lol/ipfs.php # official ipfs best gateway from https://luke.lol/ipfs.php
for nicegw in ${array[@]}; do for nicegw in ${array[@]}; do
[[ $(cat ~/.zen/tmp/.ipfsgw.bad.twt | grep -w $nicegw) ]] && echo "<<< BAD GATEWAY >>> $nicegw" && exit 0 [[ $(cat ~/.zen/tmp/.ipfsgw.bad.twt | grep -w $nicegw) ]] && echo "<<< BAD GATEWAY >>> $nicegw" && exit 0
gum=$(echo "$nicegw" | sed "s~:hash~$DATAID~g") gum=$(echo "$nicegw" | sed "s~:hash~$DATAID~g")
echo "LOADING $gum" echo "LOADING $gum"
curl -m 5 -so ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} "$gum" curl -m 5 -so ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} "$gum"
[[ $? != 0 ]] && echo "(✜‿‿✜) BYPASSING" [[ $? != 0 ]] && echo "(✜‿‿✜) BYPASSING"
if [[ -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then if [[ -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]]; then
MIME=$(mimetype -b ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}) MIME=$(mimetype -b ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT})
GOAL=$(ipfs add -q ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}) GOAL=$(ipfs add -q ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT})
if [[ ${GOAL} != ${DATAID} ]]; then if [[ ${GOAL} != ${DATAID} ]]; then
echo " (╥☁╥ ) - BAD ${WHAT} FORMAT ERROR ${MIME} - (╥☁╥ )" echo " (╥☁╥ ) - BAD ${WHAT} FORMAT ERROR ${MIME} - (╥☁╥ )"
ipfs pin rm /ipfs/${GOAL} ipfs pin rm /ipfs/${GOAL}
rm ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} rm ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
# NOT A JSON AVOID BANISHMENT # NOT A JSON AVOID BANISHMENT
echo $nicegw >> ~/.zen/tmp/.ipfsgw.bad.twt echo $nicegw >> ~/.zen/tmp/.ipfsgw.bad.twt
exit 0 exit 0
else else
## GOT IT !! IPFS ADD ## GOT IT !! IPFS ADD
ipfs pin add /ipfs/${GOAL} ipfs pin add /ipfs/${GOAL}
## + TW ADD (new_file_in_astroport.sh) ## + TW ADD (new_file_in_astroport.sh)
echo "(♥‿‿♥) FILE UPLOAD OK"; echo echo "(♥‿‿♥) FILE UPLOAD OK"; echo
break break
fi fi
else else
echo " (⇀‿‿↼) - NO FILE - (⇀‿‿↼)" echo " (⇀‿‿↼) - NO FILE - (⇀‿‿↼)"
exit 0 exit 0
fi fi
done done
fi ## NO DIRECT IPFS - GATEWAY TRY fi ## NO DIRECT IPFS - GATEWAY TRY
## REALLY NO FILE FOUND !!! ## REALLY NO FILE FOUND !!!
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]] && \ [[ ! -s ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ]] && \
echo "$HTTPCORS ERROR (╥☁╥ ) - $DATAID TIMEOUT - (╥☁╥ )" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & echo "$HTTPCORS ERROR (╥☁╥ ) - $DATAID TIMEOUT - (╥☁╥ )" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
## SPECIAL index.[json/html/...] MODE. ## SPECIAL index.[json/html/...] MODE.
[[ ${WHAT} == "index" ]] && cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/index.json [[ ${WHAT} == "index" ]] && cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/index.json
## TODO MAKE MULTIFORMAT DATA & INDEX ## TODO MAKE MULTIFORMAT DATA & INDEX
# RWHAT=$(echo "$WHAT" | cut -d '.' -f 1) # RWHAT=$(echo "$WHAT" | cut -d '.' -f 1)
# TWHAT=$(echo "$WHAT" | cut -d '.' -f 2) # TWHAT=$(echo "$WHAT" | cut -d '.' -f 2)
# cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${RWHAT}.${TWHAT} # cp ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${RWHAT}.${TWHAT}
## REPONSE ON PORT ## REPONSE ON PORT
echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect echo "$HTTPCORS" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
cat ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect cat ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT} >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
(cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/${MOATS}/${MOATS}.* ) & (cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/${MOATS}/${MOATS}.* ) &
## REPONSE ON IPFSNODEID
(
start=`date +%s`
echo "¯\_༼<O͡〰o>༽_/¯ $IPFSNODEID $PLAYER SIGNALING"
ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 )
ipfs name publish /ipfs/$ROUTING
echo "DONE"
end=`date +%s`
dur=`expr $end - $start`
echo ${MOATS}:${G1PUB}:${PLAYER}:SELF:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
) &
## REPONSE ON IPFSNODEID
(
start=`date +%s`
echo "¯\_༼<O͡〰o>༽_/¯ $IPFSNODEID $PLAYER SIGNALING"
ROUTING=$(ipfs add -rwq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 )
ipfs name publish /ipfs/$ROUTING
echo "DONE"
end=`date +%s` end=`date +%s`
dur=`expr $end - $start` dur=`expr $end - $start`
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings echo ${MOATS}:${G1PUB}:${PLAYER}:SELF:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1 cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
) &
) & # testcraft & SUB PROCESS end=`date +%s`
dur=`expr $end - $start`
echo ${MOATS}:${G1PUB}:${PLAYER}:${APPNAME}:$dur >> ~/.zen/tmp/${IPFSNODEID}/_timings
cat ~/.zen/tmp/${IPFSNODEID}/_timings | tail -n 1
end=`date +%s` ) & # testcraft & SUB PROCESS
echo "(☓‿‿☓) Execution time was "`expr $end - $start` seconds.
exit 0 end=`date +%s`
fi echo "(☓‿‿☓) Execution time was "`expr $end - $start` seconds.
exit 0
fi
############################################## ##############################################
# PAY : /?salt=SALT&pepper=PEPPER&pay=1&dest=G1PUB APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9 # PAY : /?salt=SALT&pepper=PEPPER&pay=1&dest=G1PUB APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9
############################################## ##############################################
if [[ $APPNAME == "pay" ]]; then if [[ $APPNAME == "pay" ]]; then
( (
echo "$HTTPCORS" > ~/.zen/tmp/$PLAYER.pay.$WHAT.http echo "$HTTPCORS" > ~/.zen/tmp/$PLAYER.pay.$WHAT.http
if [[ $WHAT =~ ^[0-9]+$ ]]; then if [[ $WHAT =~ ^[0-9]+$ ]]; then
echo "${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${MOATS}.secret.key pay -a ${WHAT} -p ${VAL} -c 'Bro'" echo "${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${MOATS}.secret.key pay -a ${WHAT} -p ${VAL} -c 'Bro'"
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/tmp/${MOATS}/${MOATS}.secret.key" "${WHAT}" "${VAL}" "Bro" ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/tmp/${MOATS}/${MOATS}.secret.key" "${WHAT}" "${VAL}" "Bro"
echo "PAY4SURE " >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http echo "PAY4SURE " >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
fi fi
if [[ "$WHAT" == "history" ]]; then if [[ "$WHAT" == "history" ]]; then
sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \ ~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key history -j >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key history -j >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
fi fi
if [[ "$WHAT" == "get" ]]; then if [[ "$WHAT" == "get" ]]; then
sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \ ~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key get >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key get >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
fi fi
if [[ "$WHAT" == "balance" ]]; then if [[ "$WHAT" == "balance" ]]; then
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \ ~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key balance >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key balance >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
fi fi
cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http
(cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/$PLAYER.pay.$WHAT.http ) & (cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && rm ~/.zen/tmp/$PLAYER.pay.$WHAT.http ) &
end=`date +%s` end=`date +%s`
echo "(G_G ) G1BANK Operation time was "`expr $end - $start` seconds. echo "(G_G ) G1BANK Operation time was "`expr $end - $start` seconds.
exit 0 exit 0
) & ) &
fi fi
############################################## ##############################################
# FRIEND ★ &friend=G1PUB&stars=1 // APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9 # FRIEND ★ &friend=G1PUB&stars=1 // APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9
############################################## ##############################################
if [[ $APPNAME == "friend" ]]; then if [[ $APPNAME == "friend" ]]; then
## CHECK IF ASKING FRIEND TW EXISTS ## CHECK IF ASKING FRIEND TW EXISTS
#~ ipfs --timeout 60s ls /ipns/${ASTRONAUTENS} #~ ipfs --timeout 60s ls /ipns/${ASTRONAUTENS}
#~ [ $? != 0 ] && echo "BAD VISITOR" && exit 0 #~ [ $? != 0 ] && echo "BAD VISITOR" && exit 0
g1friend=${WHAT} g1friend=${WHAT}
stars=${VAL:-1} // Default 1 stars=${VAL:-1} // Default 1
$MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key stars -p $g1friend -n $stars > ~/.zen/tmp/${MOATS}/${MOATS}.log $MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key stars -p $g1friend -n $stars > ~/.zen/tmp/${MOATS}/${MOATS}.log
( (
echo "$HTTPCORS $(cat ~/.zen/tmp/${MOATS}/${MOATS}.log)"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1 echo "$HTTPCORS $(cat ~/.zen/tmp/${MOATS}/${MOATS}.log)"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1
) & ) &
rm ~/.zen/tmp/${MOATS}/${MOATS}.* rm ~/.zen/tmp/${MOATS}/${MOATS}.*
end=`date +%s` end=`date +%s`
echo $APPNAME "(☉_☉ ) ${MESTAR} Execution time was "`expr $end - $start` seconds. echo $APPNAME "(☉_☉ ) ${MESTAR} Execution time was "`expr $end - $start` seconds.
exit 0 exit 0
fi fi
############################################## ##############################################
# GETIPNS # GETIPNS
############################################## ##############################################
if [[ $APPNAME == "getipns" ]]; then if [[ $APPNAME == "getipns" ]]; then
( echo "$HTTPCORS ( echo "$HTTPCORS
url='"${ASTRONAUTENS}"'" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo "SLURP getipns : ${ASTRONAUTENS}" ) & url='"${ASTRONAUTENS}"'" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo "SLURP getipns : ${ASTRONAUTENS}" ) &
end=`date +%s` end=`date +%s`
echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds. echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds.
rm ~/.zen/tmp/${MOATS}/${MOATS}.* rm ~/.zen/tmp/${MOATS}/${MOATS}.*
exit 0 exit 0
fi fi
############################################## ##############################################
# GETG1PUB # GETG1PUB
############################################## ##############################################
if [[ $APPNAME == "getg1pub" ]]; then if [[ $APPNAME == "getg1pub" ]]; then
( (
echo "$HTTPCORS echo "$HTTPCORS
url='"${G1PUB}"'" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo "SLURP getg1pub : ${G1PUB}" url='"${G1PUB}"'" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo "SLURP getg1pub : ${G1PUB}"
echo "BLURP ${PORT}" echo "BLURP ${PORT}"
) & ) &
end=`date +%s` end=`date +%s`
echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds. echo $APPNAME "(☉_☉ ) /ipns/${ASTRONAUTENS} Execution time was "`expr $end - $start` seconds.
rm ~/.zen/tmp/${MOATS}/${MOATS}* rm ~/.zen/tmp/${MOATS}/${MOATS}*
exit 0 exit 0
fi fi
############################################## ##############################################
# LOGIN # LOGIN
############################################## ##############################################
if [[ $APPNAME == "login" ]]; then if [[ $APPNAME == "login" ]]; then
## INSTALL PLAYER IPNS KEY ON STATION ## INSTALL PLAYER IPNS KEY ON STATION
[[ "${SALT}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \ [[ "${SALT}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
&& PLAYER=${SALT} \ && PLAYER=${SALT} \
|| PLAYER=${WHAT} || PLAYER=${WHAT}
ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${MOATS}.${G1PUB}.ipns.key
ASTRONAUTENS=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f1) ASTRONAUTENS=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f1)
#~ WSTATION=$(cat ~/.zen/tmp/WSTATION 2>/dev/null) #~ WSTATION=$(cat ~/.zen/tmp/WSTATION 2>/dev/null)
#~ [[ $WSTATION != "" ]] \ #~ [[ $WSTATION != "" ]] \
#~ && REPLACE=${myIPFS}${WSTATION} \ #~ && REPLACE=${myIPFS}${WSTATION} \
#~ || REPLACE=${myIPFS}/ipns/${ASTRONAUTENS} #~ || REPLACE=${myIPFS}/ipns/${ASTRONAUTENS}
REPLACE=${myIPFS}/ipns/${ASTRONAUTENS} REPLACE=${myIPFS}/ipns/${ASTRONAUTENS}
USALT=$(echo "$SALT" | jq -Rr @uri) USALT=$(echo "$SALT" | jq -Rr @uri)
UPEPPER=$(echo "$PEPPER" | jq -Rr @uri) UPEPPER=$(echo "$PEPPER" | jq -Rr @uri)
echo "/?salt=${USALT}&pepper=${UPEPPER} IS LOGIN - OPEN TW -" echo "/?salt=${USALT}&pepper=${UPEPPER} IS LOGIN - OPEN TW -"
sed "s~_TWLINK_~${REPLACE}~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect sed "s~_TWLINK_~${REPLACE}~g" ~/.zen/Astroport.ONE/templates/index.302 > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
## SET COOKIE ## SET COOKIE
#~ sed -i "s~_USALT_~${USALT}~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect #~ sed -i "s~_USALT_~${USALT}~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
#~ sed -i "s~_UPEPPER_~${UPEPPER}~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect #~ sed -i "s~_UPEPPER_~${UPEPPER}~g" ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
echo "url='"${REPLACE}"'" >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect echo "url='"${REPLACE}"'" >> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
( (
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP ${PORT}" echo "BLURP ${PORT}"
) & ) &
rm ~/.zen/tmp/${MOATS}/${MOATS}* rm ~/.zen/tmp/${MOATS}/${MOATS}*
end=`date +%s` end=`date +%s`
echo $APPNAME "(☉_☉ ) Execution time was "`expr $end - $start` seconds. echo $APPNAME "(☉_☉ ) Execution time was "`expr $end - $start` seconds.
exit 0 exit 0
fi fi
############################################## ##############################################
# LOGOUT # LOGOUT
############################################## ##############################################
if [[ $APPNAME == "logout" ]]; then if [[ $APPNAME == "logout" ]]; then
## REMOVE PLAYER IPNS KEY FROM STATION ## REMOVE PLAYER IPNS KEY FROM STATION
[[ "${SALT}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \ [[ "${SALT}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
&& PLAYER=${SALT} \ && PLAYER=${SALT} \
|| PLAYER=${WHAT} || PLAYER=${WHAT}
echo "<h1>$PLAYER LOGOUT OK</h1>" > ~/.zen/tmp/${MOATS}/${MOATS}.log echo "<h1>$PLAYER LOGOUT OK</h1>" > ~/.zen/tmp/${MOATS}/${MOATS}.log
ipfs key rm ${G1PUB} >> ~/.zen/tmp/${MOATS}/${MOATS}.log ipfs key rm ${G1PUB} >> ~/.zen/tmp/${MOATS}/${MOATS}.log
ipfs key rm ${PLAYER} >> ~/.zen/tmp/${MOATS}/${MOATS}.log ipfs key rm ${PLAYER} >> ~/.zen/tmp/${MOATS}/${MOATS}.log
echo "$HTTPCORS $(cat ~/.zen/tmp/${MOATS}/${MOATS}.log)"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & echo "$HTTPCORS $(cat ~/.zen/tmp/${MOATS}/${MOATS}.log)"| nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
end=`date +%s` end=`date +%s`
echo $APPNAME "(☉_☉ ) Execution time was "`expr $end - $start` seconds. echo $APPNAME "(☉_☉ ) Execution time was "`expr $end - $start` seconds.
rm ~/.zen/tmp/${MOATS}/${MOATS}.* rm ~/.zen/tmp/${MOATS}/${MOATS}.*
exit 0 exit 0
fi fi
################################################################################################### ###################################################################################################
################################################################################################### ###################################################################################################
## END RESPONDING ## END RESPONDING
[[ ! -s ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect ]] && echo "$HTTPCORS PORT=$1 THAT=$2 AND=$3 THIS=$4 APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9 url=/user/$G1PUB" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect [[ ! -s ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect ]] \
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > ~/.zen/tmp/${MOATS}/${MOATS}.official.swallow & && echo "$HTTPCORS PORT=$1 THAT=$2 AND=$3 THIS=$4 APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9 url=/user/$G1PUB" \
echo "HTTP 1.1 PROTOCOL DOCUMENT READY" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
echo "${MOATS} -----> PAGE AVAILABLE -----> http://${myHOST}:${PORT}"
end=`date +%s` cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > ~/.zen/tmp/${MOATS}/${MOATS}.official.swallow &
echo $type" (J‿‿J) Execution time was "`expr $end - $start` seconds. echo "HTTP 1.1 PROTOCOL DOCUMENT READY"
rm ~/.zen/tmp/${MOATS}/${MOATS}.* echo "${MOATS} -----> PAGE AVAILABLE -----> http://${myHOST}:${PORT}"
end=`date +%s`
echo $type" (J‿‿J) Execution time was "`expr $end - $start` seconds.
rm ~/.zen/tmp/${MOATS}/${MOATS}.*
exit 0 exit 0

View File

@ -167,15 +167,14 @@ echo "UMAPNS : ${myIPFS}/ipns/${UMAPNS}"
## ALL TEST PASSED -> CREATE ZENCARD + ASTROID ## ALL TEST PASSED -> CREATE ZENCARD + ASTROID
NPASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-9) ## NOUVEAU PASS 8 CHIFFRES NPASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-9) ## NOUVEAU PASS 8 CHIFFRES
PPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2) ## STRONGER TW SECURITY "AlpH4nUm" PPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 4) ## STRONGER TW SECURITY "AlpH4nUm"
DPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2) ## STRONGER TW SECURITY "AlpH4nUm"
NPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10) ## STRONGER TW SECURITY "AlpH4nUm" NPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10) ## STRONGER TW SECURITY "AlpH4nUm"
## CREATE ASTRONAUTE TW ON CURRENT ASTROPORT ## CREATE ASTRONAUTE TW ON CURRENT ASTROPORT
( (
echo VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}" echo VISA.new.sh "${EMAIL}_${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}"
##### (☉_☉ ) ####### ##### (☉_☉ ) #######
${MY_PATH}/../RUNTIME/VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt ${MY_PATH}/../RUNTIME/VISA.new.sh "${EMAIL}_${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
## TO REMOVE : MONITOR ## TO REMOVE : MONITOR
${MY_PATH}/../tools/mailjet.sh "support@qo-op.com" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG VISA.new $EMAIL" ## Send VISA.new log to EMAIL ${MY_PATH}/../tools/mailjet.sh "support@qo-op.com" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG VISA.new $EMAIL" ## Send VISA.new log to EMAIL
@ -187,7 +186,7 @@ echo "(TW REGISTRATION) Operation time was "`expr $end - $start` seconds.
######################################## ########################################
## Calculating TW IPNS ADDRESS ## Calculating TW IPNS ADDRESS
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}") TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${EMAIL}_${PPASS}" "${NPASS}")
## HTTP nc ON PORT RESPONSE ## HTTP nc ON PORT RESPONSE
echo "$HTTPCORS echo "$HTTPCORS
@ -219,7 +218,7 @@ echo "$HTTPCORS
<h1>UPlanet Registration</h1> <h1>UPlanet Registration</h1>
Your AstroID seeds are:<br> Your AstroID seeds are:<br>
<br> <br>
<h2>${EMAIL}_${PPASS}_${DPASS}</h2> <h2>${EMAIL}_${PPASS}</h2>
<h1>${NPASS}</h1> <h1>${NPASS}</h1>
Generating account... Generating account...

View File

@ -7,8 +7,7 @@
## API: ZONE ## API: ZONE
## Used by OSM2IPFS map_render.html & other UPlanet Client App ## Used by OSM2IPFS map_render.html & other UPlanet Client App
# ?zone=DEG&ulat=LAT&ulon=LON # ?zone=DEG&ulat=LAT&ulon=LON
## Search for TW numbers in received zone ## Search for TW numbers in received zone # >> return json
# = json
################################################################################ ################################################################################
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
@ -42,80 +41,105 @@ function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
## RUNNING UPLANET LAT/LON TW DETECTION ## RUNNING UPLANET LAT/LON TW DETECTION
mkdir -p ~/.zen/tmp/${MOATS}/ mkdir -p ~/.zen/tmp/${MOATS}/
# GET RECEPTION : zone=0.001&ulat=0.02&ulon=0.01
DEG=${THAT}
[[ -z $DEG ]] && DEG=1
# DEG=$(echo "$DEG * 10" | bc -l )
LAT=${THIS}
[[ -z $LAT ]] && LAT=0.00
LON=${WHAT}
[[ -z $LON ]] && LON=0.00
# PREPARE HTTP RESPONSE (application/json) # PREPARE HTTP RESPONSE (application/json)
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.http echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.http
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}.http sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}.http
LAT=$(makecoord $LAT) # ------------------------------------------------------------------- #
LON=$(makecoord $LON) # GET/?zone=0.001&ulat=0.02&ulon=0.01
# ------------------------------------------------------------------- #
echo "REQUEST $LAT / $LON / $DEG" DEG="${THAT}"
[[ -z ${DEG} ]] && DEG=1
# DEG=$(echo "${DEG} * 10" | bc -l )
## REGION & ABOVE LEVEL LAT="${THIS}"
if [[ $DEG == "0.1" || $DEG == "1" ]]; then [[ -z $LAT ]] && LAT=0.00
LAT=$(echo ${LAT} | cut -d '.' -f 1)
LON=$(echo ${LON} | cut -d '.' -f 1)
ZONE="_${LAT}_${LON}"
echo "ZONE = ${ZONE}"
ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${ZONE}" "${UPLANETNAME}${ZONE}")
ZONETW="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${YESTERDATE}${UPLANETNAME}${ZONE}" "${YESTERDATE}${UPLANETNAME}${ZONE}")
fi LON="${WHAT}"
[[ -z $LON ]] && LON=0.00
## SECTOR LEVEL LAT=$(makecoord ${LAT})
if [[ $DEG == "0.01" ]]; then LON=$(makecoord ${LON})
SECLAT="${LAT::-1}" JSON="ZONE_${LAT}_${LON}_${DEG}.json"
SECLON="${LON::-1}"
SECTOR="_${SECLAT}_${SECLON}"
echo "SECTOR = ${SECTOR}"
ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
ZONETW="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${YESTERDATE}${UPLANETNAME}${SECTOR}" "${YESTERDATE}${UPLANETNAME}${SECTOR}")
fi [[ $(date +"%H%M") -gt 2012 ]] \
&& THEDATE=${TODATE} \
|| THEDATE=${YESTERDATE}
echo "${THEDATE}"
## UMAP LEVEL
if [[ $DEG == "0.001" ]]; then
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l ) ## SECTOR LEVEL
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l ) if [[ ${DEG} == "0.01" ]]; then
totnum=$(( swarmnum + nodenum )) SECLAT="${LAT::-1}"
echo " ## UMAP _${LAT}*_${LON}* = ${totnum} PLAYERs" SECLON="${LON::-1}"
SECTOR="_${SECLAT}_${SECLON}"
echo "SECTOR = ${SECTOR}"
ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
ZONEINDEX="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${THEDATE}${UPLANETNAME}${SECTOR}" "${THEDATE}${UPLANETNAME}${SECTOR}")"/_index.html"
JSON="ZONE${SECTOR}_${DEG}.json"
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}") fi
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
echo '{ "gridNumbers": [ {"lat": '${LAT}', "lon": '${LON}', "number": "(_'${LAT}'_'${LON}') = '${totnum}'", "ipns": "'${myIPFS}/ipns/${UMAPNS}/_index.html'" } ] }' >> ~/.zen/tmp/${MOATS}.http ## REGION & ABOVE LEVEL
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & if [[ ${DEG} == "0.1" || ${DEG} == "1" ]]; then
rm -Rf ~/.zen/tmp/${MOATS}/ LAT=$(echo ${LAT} | cut -d '.' -f 1)
end=`date +%s` LON=$(echo ${LON} | cut -d '.' -f 1)
echo "(UMAP)_${LAT}_${LON} ${YESTERDATE} $UMAPNS Operation time was "`expr $end - $start` seconds. ZONE="_${LAT}_${LON}"
exit 0 echo "ZONE = ${ZONE}"
ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${ZONE}" "${UPLANETNAME}${ZONE}")
ZONEINDEX="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${THEDATE}${UPLANETNAME}${ZONE}" "${THEDATE}${UPLANETNAME}${ZONE}")
JSON="ZONE${ZONE}_${DEG}.json"
fi fi
## ALL OTHER DEG : SEARCH FOR UPLANET TW NUMBERS echo " JSON = ${JSON}"
echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}.http
if [[ ! -s ~/.zen/tmp/${JSON} ]]; then
## UMAP LEVEL
if [[ ${DEG} == "0.001" ]]; then
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
totnum=$(( swarmnum + nodenum ))
echo " ## UMAP _${LAT}*_${LON}* = ${totnum} PLAYERs"
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${THEDATE}${UPLANETNAME}${LAT}" "${THEDATE}${UPLANETNAME}${LON}"
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
echo '{ "gridNumbers": [ {"lat": '${LAT}', "lon": '${LON}', "number": "(_'${LAT}'_'${LON}') = '${totnum}'", "ipns": "'${myIPFS}/ipns/${UMAPNS}/_index.html'" } ] }' \
> ~/.zen/tmp/${MOATS}/http.grid
cp ~/.zen/tmp/${MOATS}/http.grid ~/.zen/tmp/${JSON}
cat ~/.zen/tmp/${JSON} >> ~/.zen/tmp/${MOATS}.http
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
rm -Rf ~/.zen/tmp/${MOATS}/
end=`date +%s`
echo "(UMAP)_${LAT}_${LON} ${THEDATE} $UMAPNS Operation time was "`expr $end - $start` seconds.
exit 0
fi
##############################################
## SEARCH FOR UPLANET TW NUMBERS IN THAT ZONE
echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}/http.grid
for i in $(seq 0 9);
do
ZLAT=$(echo "$LAT + ${DEG} * $i" | bc -l)
[[ -z ${ZLAT} ]] && ZLAT=0
for i in $(seq 0 9);
do
ZLAT=$(echo "$LAT + $DEG * $i" | bc -l )
[[ -z ${ZLAT} ]] && ZLAT=0
# [[ ! $(echo $ZLAT | grep "\." ) ]] && ZLAT="${ZLAT}."
for j in $(seq 0 9); do for j in $(seq 0 9); do
ZLON=$(echo "$LON + $DEG * $j" | bc -l )
ZLON=$(echo "$LON + ${DEG} * $j" | bc -l)
[[ -z ${ZLON} ]] && ZLON=0 [[ -z ${ZLON} ]] && ZLON=0
# [[ ! $(echo $ZLON | grep "\." ) ]] && ZLON="${ZLON}."
echo " ## SEARCH UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*" echo " ## SEARCH UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*"
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*/TW/* 2>/dev/null | wc -l ) swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*/TW/* 2>/dev/null | wc -l )
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*/TW/* 2>/dev/null | wc -l ) nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*/TW/* 2>/dev/null | wc -l )
@ -123,22 +147,35 @@ do
[[ $totnum -gt 9 ]] && displaynum="X" || displaynum=$totnum [[ $totnum -gt 9 ]] && displaynum="X" || displaynum=$totnum
[[ $displaynum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${displaynum}'", "ipns": "'${ZONETW}'" } [[ $displaynum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${displaynum}'", "ipns": "'${ZONEINDEX}'" }
,' >> ~/.zen/tmp/${MOATS}.http && echo "$DEG :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "'${ZONETW}'" }' ,' >> ~/.zen/tmp/${MOATS}/http.grid \
&& echo "${DEG} :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "'${ZONEINDEX}'" }'
done done
done
sed -i '$ d' ~/.zen/tmp/${MOATS}.http ## REMOVE LAST ',' done
echo ']}' >> ~/.zen/tmp/${MOATS}.http [[ ! $(cat ~/.zen/tmp/${MOATS}/http.grid | tail -n 1 | grep 'gridNumbers' ) ]] \
&& sed -i '$ d' ~/.zen/tmp/${MOATS}/http.grid ## REMOVE LAST ','
echo ']}' >> ~/.zen/tmp/${MOATS}/http.grid
echo "## ADD TO CACHE ~/.zen/tmp/${JSON}"
cp ~/.zen/tmp/${MOATS}/http.grid ~/.zen/tmp/${JSON}
fi
cat ~/.zen/tmp/${JSON} | jq -c
### SEND RESPONSE ON PORT ### SEND RESPONSE ON PORT
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & cat ~/.zen/tmp/${JSON} >> ~/.zen/tmp/${MOATS}.http
(
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
rm ~/.zen/tmp/${MOATS}/http.grid 2>/dev/null
rm ~/.zen/tmp/${MOATS}.http && echo "BLURP ${JSON}"
) &
## CLEANING ## CLEANING
rm -Rf ~/.zen/tmp/${MOATS}/ rm -Rf ~/.zen/tmp/${MOATS}/
## TIMING ## TIMING
end=`date +%s` end=`date +%s`
echo "(ZONE) Operation time was "`expr $end - $start` seconds. echo "(ZONE) Operation time was "`expr $end - $start` seconds.

46
APY/addfile.sh Executable file
View File

@ -0,0 +1,46 @@
#!/bin/bash
# Usage: bash addfile.sh <filename> <mime_type> <file_type>
filename="$1"
mime_type="$2"
file_type="$3"
echo "Processing file: $filename"
echo "MIME type: $mime_type"
echo "File type: $file_type"
# Check file type and perform corresponding treatment
case $file_type in
"video")
if [[ $mime_type == *"video"* ]]; then
# Video processing logic
echo "Video processing..."
# Add more processing steps as needed
else
echo "Invalid file type for video processing"
fi
;;
"audio")
if [[ $mime_type == *"audio"* ]]; then
# Audio processing logic
echo "Audio processing..."
# Add more processing steps as needed
else
echo "Invalid file type for audio processing"
fi
;;
"text")
if [[ $mime_type == *"text"* ]]; then
# Text processing logic
echo "Text processing..."
# Add more processing steps as needed
else
echo "Invalid file type for text processing"
fi
;;
*)
echo "Unknown file type: $file_type"
;;
esac
echo "File processing complete."

170
APY/upload_video.10101.py Executable file
View File

@ -0,0 +1,170 @@
#!/usr/bin/python3
from fastapi import FastAPI, File, UploadFile, Form, HTTPException
from fastapi.responses import HTMLResponse, JSONResponse
import subprocess
import os
import magic
app = FastAPI()
# HTML form for file upload
html_form = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Upload and Processing</title>
<style>
body {
font-family: 'Arial', sans-serif;
background-color: #f5f5f5;
margin: 0;
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
#upload-container {
background-color: #ffffff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
padding: 20px;
border-radius: 8px;
text-align: center;
}
h1 {
color: #333333;
}
form {
margin-top: 20px;
display: flex;
flex-direction: column;
align-items: center;
}
input[type="file"] {
margin-bottom: 10px;
}
input[type="button"] {
background-color: #4caf50;
color: white;
border: none;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
cursor: pointer;
border-radius: 4px;
}
#result-container {
margin-top: 20px;
}
#loading-indicator {
display: none;
margin-top: 20px;
}
</style>
</head>
<body>
<div id="upload-container">
<h1>File Upload and Processing</h1>
<form id="upload-form" enctype="multipart/form-data" method="post">
<input type="file" id="file" accept="video/*,audio/*,text/*" required>
<br>
<label for="convert_to">Choose file type:</label>
<input type="radio" id="video" name="convert_to" value="video" checked>
<label for="video">Video</label>
<input type="radio" id="audio" name="convert_to" value="audio">
<label for="audio">Audio</label>
<input type="radio" id="text" name="convert_to" value="text">
<label for="text">Text</label>
<br>
<input type="button" value="Upload" onclick="uploadFile()">
<div id="loading-indicator">Loading...</div>
</form>
<div id="result-container"></div>
</div>
<script>
async function uploadFile() {
const fileInput = document.getElementById('file');
const file = fileInput.files[0];
const fileType = document.querySelector('input[name="convert_to"]:checked').value;
const formData = new FormData();
formData.append('file', file);
formData.append('convert_to', fileType);
// Show loading indicator
const loadingIndicator = document.getElementById('loading-indicator');
loadingIndicator.style.display = 'block';
try {
const response = await fetch('/upload', {
method: 'POST',
body: formData
});
const result = await response.json();
document.getElementById('result-container').innerHTML = JSON.stringify(result, null, 2);
} catch (error) {
console.error('Error uploading file:', error);
} finally {
// Hide loading indicator after response or error
loadingIndicator.style.display = 'none';
}
}
</script>
</body>
</html>
"""
@app.get("/")
async def read_root():
return HTMLResponse(content=html_form, status_code=200)
def get_mime_type(file: UploadFile):
mime = magic.Magic()
mime_type = mime.from_buffer(file.file.read(1024))
return mime_type
@app.post("/upload")
async def create_upload_file(file: UploadFile = File(...), convert_to: str = Form(...)):
# Validate file size
max_file_size = 100 * 1024 * 1024 # 100MB
if file.file.__sizeof__() > max_file_size:
raise HTTPException(status_code=400, detail="File size exceeds the limit of 100MB")
# Check the file type
mime_type = get_mime_type(file)
print(f"Detected MIME type: {mime_type}")
# Save the uploaded file to a temporary location
with open(file.filename, "wb") as f:
f.write(file.file.read())
# Continue with the processing logic
# Run the post-treatment Bash script
logs = subprocess.run(["bash", "addfile.sh", file.filename, mime_type, convert_to], capture_output=True, text=True).stdout
# Optionally, you can remove the temporary file
os.remove(file.filename)
return JSONResponse(content={"filename": file.filename, "mime_type": mime_type, "convert_to": convert_to, "message": "File processed successfully.", "logs": logs})
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=10101)

View File

@ -168,8 +168,26 @@ while read TITRE; do
TEXT="<h1>{{!!titre}} ({{!!year}})</h1><h2>{{!!sub}}</h2> TEXT="<h1>{{!!titre}} ({{!!year}})</h1><h2>{{!!sub}}</h2>
{{!!desc}}<br> {{!!desc}}<br>
<a target='youtube' href='https://youtu.be/"${YID}"'>Bande Annonce</a> <a target='youtube' href='https://youtu.be/"${YID}"'>Bande Annonce</a>
<h3>Envoyez un don. Recevez le lien vers ce film dans votre messagerie Cesium+</h3> <br>
<img width='300' src='/ipfs/"${PV}"'>" <h3>Voir ce Film:</h3>
<h4>Installez Cesium+</h4>
<table><tr>
<td>
<img width='240' src='/ipfs/QmXExw6Sh4o4rSjBQjU9PGU7BCGwb1jybrKEeaZGUNRCRE'>
</td><td>
<img width='240' src='/ipfs/QmP3qwEnVX9zSsyKAwuH6nhDPfrRoMbAfszrtdkLGgo7LQ'>
</td>
</tr>
<tr>
<td>
<h4>Flashez, envoyez un don...</h4>
<br>ce soir,<br>recevez le lien dans votre messagerie.
</td><td>
<img width='300' src='/ipfs/"${PV}"'>
</td>
</tr>
</table>
"
## MAKING TIDDLER ## MAKING TIDDLER
echo "## Creation json tiddler ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json" echo "## Creation json tiddler ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json"

View File

@ -1,77 +0,0 @@
#!/bin/bash
########################################################################
# Version: 0.5
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
# PAD COCODING : https://pad.p2p.legal/s/G1Monit
# KODI SERVICE : Publish and Merge Friends Monit Movies into RSS Stream
########################################################################
########################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
. "${MY_PATH}/../tools/my.sh"
echo "$ME RUNNING"
########################################################################
## SCAN FOR PAYMENT HISTORY
## BUILD python NetworkX script
## SEND MESSAGE TO SOURCEG1PUB
########################################################################
## THIS SCRIPT IS RUN WHEN A WALLET RECEIVED A TRANSACTION WITH COMMENT STARTING WITH N1Monit
########################################################################
INDEX="$1"
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
PLAYER="$2"
[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
# Extract tag=tube from TW
MOATS="$3"
[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
IPUBKEY="$4"
[[ ! ${IPUBKEY} ]] && echo "ERROR - MISSING COMMAND ISSUER !" && exit 1
TH="$5"
[[ ! ${TH} ]] && echo "ERROR - MISSING COMMAND TITLE HASH ADDRESS !" && exit 1
echo "${PLAYER} : ${IPUBKEY} SEEKING FOR ${TH}
${ASTRONAUTENS} ${G1PUB} "
#~ ###################################################################
#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
#~ ###################################################################
mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS}
## EXERCICE ### TODO ###
## USE https://networkx.org/documentation/stable/tutorial.html#
## EXTRACT HISTORY WITH jaklis
## CREATE A PYTHON SCRIPT CREATING the 1st level of TX
echo "import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
...
G.add_node(SRCPUB)
G.add_node(DSTPUB)
G.edges[SRCPUB, DSTPUB]['g1'] = AMOUNT
...
nx.draw(G, with_labels=True, font_weight='bold')
plt.show()
"
## EXTEND N1Script WITH MORE FUNCTIONS... exemples ...
## N1Vote: permet de pratiquer le Vote Quadratique
## N1Conf: permet de signifier la Confiance
## ...
exit 0

View File

@ -1,4 +1,4 @@
# CONTAINS Address of 1st Bootstrap Stations (24/24 Public IP) - DO NOT EDIT MANUALY - # UPlanet Swarm Bootstrap Stations # Adapt for your domain #
# https://ipfs.copylaradio.com ipfs.copylaradio.com # https://ipfs.copylaradio.com ipfs.copylaradio.com
################################################################# #################################################################
# astroport.libra.copylaradio.com # astroport.libra.copylaradio.com
@ -7,9 +7,6 @@
# scorpio.copylaradio.com # scorpio.copylaradio.com
/dnsaddr/scorpio.copylaradio.com/p2p/12D3KooWS8EiLNay8qVnFaULpxW1X9sGZZz4wV8E6E3QEwCRktry /dnsaddr/scorpio.copylaradio.com/p2p/12D3KooWS8EiLNay8qVnFaULpxW1X9sGZZz4wV8E6E3QEwCRktry
# astroport.sonic.copylaradio.com
# /ip4/161.97.174.60/tcp/4001/p2p/12D3KooWJnzYzJBtruXZwUQJriF1ePtDQCUQp4aNBV5FjpYVdfhc
################################################################# #################################################################
###### WISHING TO ADD YOUR NODE TO OFFICIAL ASTROPORT BOOSTRAP LIST ? ###### WISHING TO ADD YOUR NODE TO OFFICIAL ASTROPORT BOOSTRAP LIST ?
###### ===> CONTACT support@qo-op.com ###### ===> CONTACT support@qo-op.com

6
A_boostrap_ssh.txt Normal file
View File

@ -0,0 +1,6 @@
## SSH PUBLIC KEYS
## SEEDS OF THE DRAGONS WOT
## https://pad.p2p.legal/keygen
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEtg3SlRxtzsQnsBSeU83W0tvUyBTUvOU5lhjlbZVPCZ support@qo-op.com
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILTzTegcBD3WwIyTwT3kIh6jGqyLZzEzXhcuF6IhAjlc
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHJBG6lim4ZmSmpU+GbOKJXO9arfRCP5TdKlhGa4CLJp

48
BOOKS/HowTo_natools.py.md Normal file
View File

@ -0,0 +1,48 @@
To use `natools` for message encryption (to destination) and signature (from sender), you would typically follow these steps:
### 1. Generate Key Pairs:
- Both the sender and the recipient need to generate their key pairs (public and private keys). You can use the `natools` script to generate keys.
```bash
# Sender generate keys
python3 natools.py privkey -k ~/.zen/game/sender_secret.dunikey -f cred
python3 natools.py pubkey -k ~/.zen/game/sender_secret.dunikey -o sender_public_key
# Recipient generates keys
python3 natools.py privkey -k ~/.zen/game/myswarm_secret.dunikey -f cred
python3 natools.py pubkey -k ~/.zen/game/myswarm_secret.dunikey -o recipient_public_key
```
### 2. Encrypt the Message:
- The sender uses the recipient's public key to encrypt the message.
```bash
python3 natools.py encrypt -i plaintext.txt -k recipient_public_key -o encrypted_message.bin
```
### 3. Sign the Message:
- The sender signs the original message using their private key.
```bash
python3 natools.py sign -i plaintext.txt -k sender_private_key -o signature.bin
```
### 4. Verify the Signature:
- The recipient uses the sender's public key to verify the signature.
```bash
python3 natools.py verify -i plaintext.txt -p sender_public_key
```
- The script will output "Signature OK!" if the verification is successful.
### 5. Decrypt the Message:
- The recipient uses their private key to decrypt the message.
```bash
python3 natools.py decrypt -i encrypted_message.bin -k recipient_private_key -o decrypted_message.txt
```
Now you have successfully performed message encryption to the destination and signature from the sender using the `natools` script. Adjust the file paths and content as needed for your specific use case.
Note: Ensure that both sender and recipient securely store their private keys. Public keys can be shared openly. The encrypted message, signature, and decrypted message are intermediate files used for illustration; adjust as needed in your application.

View File

@ -123,7 +123,7 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEtg3SlRxtzsQnsBSeU83W0tvUyBTUvOU5lhjlbZVPCZ
* “keygen” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/tools/keygen * “keygen” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/tools/keygen
* “natools” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/tools/natools.py * “natools” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/tools/natools.py
* “jaklis” https://git.p2p.legal/axiom-team/jaklis * “jaklis” https://git.p2p.legal/axiom-team/jaklis
* “ipfs” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/kubo_v0.20.0_linux.install.sh * “ipfs” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/install.kubo_v0.20.0_linux.sh
## ASTROPORT CREW GILET https://astroport.myspreadshop.fr/create?product=a68ad31e-d554-4c75-821d-97b00d6ad13f&view=2 ## ASTROPORT CREW GILET https://astroport.myspreadshop.fr/create?product=a68ad31e-d554-4c75-821d-97b00d6ad13f&view=2

BIN
BOOKS/TheNetworkState.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1,16 @@
version: '3.6'
services:
minetest:
image: lscr.io/linuxserver/minetest:latest
container_name: minetest
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- "CLI_ARGS=--gameid minetest --port 30000" #optional
volumes:
- /path/to/data:/config/.minetest
ports:
- 30000:30000/udp
restart: unless-stopped

View File

@ -2,10 +2,10 @@
[Astroport DEV Journal](https://pad.p2p.legal/s/AstroportDEVJournal#) [Astroport DEV Journal](https://pad.p2p.legal/s/AstroportDEVJournal#)
**Embark on a Cosmic Journey with ZenCard Payment System and Astroport.ONE** **Embark on a Cosmic Journey with AstroID & ZenCard System and Astroport.ONE**
Are you weary of the constraints of traditional payment systems and concerned about the reliability Are you weary of the constraints of traditional payment systems and concerned about the reliability
of your distributed storage solutions? Look no further! Our revolutionary ZenCard Payment System of your distributed storage solutions? Look no further! Our revolutionary ZenCard QRCode based Payment System
and Astroport.ONE v1.0 seamlessly blend cutting-edge blockchain technology with interplanetary storage, and Astroport.ONE v1.0 seamlessly blend cutting-edge blockchain technology with interplanetary storage,
offering you a commission-free and secure solution. offering you a commission-free and secure solution.
@ -19,19 +19,6 @@ the planet is sliced into 0.01° segments, ensuring locally registered Tiddlers
As a network engineer and system administrator committed to the Common Good, join us in constructing As a network engineer and system administrator committed to the Common Good, join us in constructing
Astroport.ONE and shaping the future of secure and reliable distributed storage. Astroport.ONE and shaping the future of secure and reliable distributed storage.
**ZenCard Payment System: Empowering Transactions, Empowering Dreams**
As blockchain makers, our ZenCard Payment System is not merely a crypto wallet; it's a game-changing payment card and terminal solution.
Our controlled coin-emitting blockchain transfers 1 coin to your ZenCard per fiat money unit saved in the fiscal host.
This unique approach makes blockchain accessible to everyone.
Become a donor and a shareholder, receiving Coins equivalent to the Euros paid. Achieve a stable coin state of "1=1" through seamless transactions
with a Host capable of sending and receiving Euros to users with zero fees, facilitated by PayPal integration.
Activate your account on UPlanet, make donations to https://opencollective.com/made-in-zen, and receive encrypted wallets via email—printed
in QRCode format for added security. Step into a future where financial transactions are commission-free,
and data is securely stored across the cosmos.
**Station Extra-Terrestre Astroport.ONE: Where Innovation Meets Tranquility** **Station Extra-Terrestre Astroport.ONE: Where Innovation Meets Tranquility**
In the midst of this technological revolution, discover the Station Extra-Terrestre Astroport.ONE. In the midst of this technological revolution, discover the Station Extra-Terrestre Astroport.ONE.
@ -73,43 +60,21 @@ At this point, if it exists "ASTROBOT/G1Tag.sh" program will publish the data re
# INSTALLATION (Linux Mint / Ubuntu / DEBIAN) # INSTALLATION (Linux Mint / Ubuntu / DEBIAN)
There is 2 methods one for server and one for Linux Mint desktop
## SERVER : Using DOCKER (and MyOS)
the easiest way to automaticaly deploy and host Astroport.ONE services
```
# install minimal requirements
sudo apt install git docker make
# clone Astroport.ONE repo
git clone https://github.com/papiche/Astroport.ONE.git
cd Astroport.ONE
make
make install
```
If your computer is running 24/24, you can join our "Boostrap list" & officially become a [TW UPlanet hoster](https://talk.tiddlywiki.org/t/uplanet-a-planet-full-of-tws/8193?u=papiche)
> DOCKER MODE NOT READY TO USE !! FOLLOW AND ADAPT NEXT STEP
## DESKTOP : Using install.sh script
Tested on "Linux Mint" (Debian like distro compatible), the **hacker way for using & buidling new blockchain services** ... Tested on "Linux Mint" (Debian like distro compatible), the **hacker way for using & buidling new blockchain services** ...
``` INSTALL COMMAND
# install on system wide
# SOURCE GIT.P2P.LEGAL
bash <(wget -qO- https://git.p2p.legal/qo-op/Astroport.ONE/raw/branch/master/install.sh)
# SOURCE GITHUB ```
bash <(wget -qO- https://raw.githubusercontent.com/papiche/Astroport.ONE/master/install.sh) bash <(wget -qO- https://raw.githubusercontent.com/papiche/Astroport.ONE/master/install.sh)
``` ```
> PLEASE REPORT ANY ISSUES > TODO: MORE MODULAR INSTALL.
> CREATE adventure explaining it
## DRAGONS WOT
Once you install Astroport.ONE...
If all has gone well, you should find these processes running... If all has gone well, you should find these processes running...
@ -126,7 +91,12 @@ If all has gone well, you should find these processes running...
``` ```
# LAUNCH > Become Official REGIONAL Station
> - follow "PGP/SSH/IPFSNODEID" linking procedure -
> https://pad.p2p.legal/keygen
# DESKTOP
After installation, you should have 3 new shortcuts on your desktop After installation, you should have 3 new shortcuts on your desktop
@ -134,6 +104,10 @@ After installation, you should have 3 new shortcuts on your desktop
* REC" allows you to save your files on IPFS and publish their Capusle in your TW. * REC" allows you to save your files on IPFS and publish their Capusle in your TW.
* G1BILLET" lets you create ZenCards and other useful QRCodes * G1BILLET" lets you create ZenCards and other useful QRCodes
NB : If you use "Nemo" as file manager. You can "ipfs add" any file (with no space in file name) by right click it.
> TODO : detect OS and FILE MANAGER to adapt desktop linking and right clic action
## How to manage your "Astroport"! ## How to manage your "Astroport"!
You need to create a "PLAYER". You need to create a "PLAYER".
@ -144,8 +118,9 @@ It is defined by email, salt, pepper, lat, lon and PASS
``` ```
Browse available functions Browse available functions
A Station can host multiple "PLAYER and its TiddlyWiki". A Station can host multiple "PLAYERs and TiddlyWikis".
---
# "BASH API" : "♥BOX" # "BASH API" : "♥BOX"
## http://astroport.localhost:1234 ## http://astroport.localhost:1234
@ -356,7 +331,9 @@ GET /?player=${PLAYER}&moa=json&tag=G1CopierYoutube
> CAN BE EXTENDED > CAN BE EXTENDED
## ➤ AMZQR : Create a QRCode with "amzqr" ## ➤ AMZQR : Create a QRCode with "amzqr"
### ```/?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}``` ```http
GET /?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}
```
| Parameter | Type | Description | | Parameter | Type | Description |
| :-------- | :------- | :-------------------------------- | | :-------- | :------- | :-------------------------------- |
@ -366,19 +343,21 @@ GET /?player=${PLAYER}&moa=json&tag=G1CopierYoutube
check available "logo.png" in [./images](./images) check available "logo.png" in [./images](./images)
## ➤ UPLANET : Create Umap, AstroID & ZenCard for PLAYER (email) ## ➤ UPLANET : Create Umap, AstroID & ZenCard for PLAYER (email)
### ```/?uplanet=${PLAYER}&salt=${LAT}&pepper=${LON}&g1pub=${PASS}``` ```http
GET /?uplanet=${PLAYER}&zlat=${LAT}&zlon=${LON}&g1pub=${PASS}
```
| Parameter | Type | Description | | Parameter | Type | Description |
| :-------- | :------- | :-------------------------------- | | :-------- | :------- | :-------------------------------- |
| `uplanet` | `email` | **Required** Your EMAIL token | | `uplanet` | `email` | **Required** Your EMAIL token |
| `salt` | `decimal` | **Required** LATITUDE with 2 decimals digits | | `zlat` | `decimal` | **Required** LATITUDE with 2 decimals digits |
| `pepper` | `decimal` | **Required** LONGITUDE with 2 decimals digits | | `zlon` | `decimal` | **Required** LONGITUDE with 2 decimals digits |
| `g1pub` | `string` | **Facultative** choose Umap AstroID PASS | | `g1pub` | `string` | **Facultative** choose Umap AstroID PASS |
Create à Umap key (LAT/LON), then a PLAYER TW with GPS as Umap IPNS reference Create à Umap key (LAT/LON), then a PLAYER TW with GPS as Umap IPNS reference
This API is used by OSM2IPFS code. This API is used by OSM2IPFS code.
UPlanet Entrance : https://qo-op.com * [UPlanet Entrance](https://qo-op.com)
### ➤ QRCODE (API SandBox) ### ➤ QRCODE (API SandBox)
```http ```http
@ -498,12 +477,13 @@ http://localhost:12345 renvoi un json
| created | date de creation du document | | created | date de creation du document |
| hostname | nom de la station | | hostname | nom de la station |
| myIP | adresse IP de la station | | myIP | adresse IP de la station |
| ipfsnodeid | date de creation du document | | ipfsnodeid | Clef publique, balise de la station |
| astroport | Lien vers l'API de la station | | astroport | Lien vers l'API de la station |
| g1station | Lien vers la carte PLAYER de la Station | | g1station | Lien vers la carte PLAYER de la Station |
| g1swarm | Lien vers la carte des cartes des Stations de l'essaim | | g1swarm | Lien vers la carte des cartes des Stations de l'essaim |
Afin de propager la carte chaque Stations lors de son raffraichissement de cache demande aux Boostrap de la récupérer Afin de propager la carte chaque station lors de son raffraichissement de cache
envoi aux Boostrap une requête pour upload (```/ipns/${IPFSNODEID}```)
``` ```
STATION MAP UPSYNC : http://$nodeip:12345/?${GNODEID}=${IPFSNODEID} STATION MAP UPSYNC : http://$nodeip:12345/?${GNODEID}=${IPFSNODEID}
``` ```

89
RUNTIME/DRAGON_p2p_ssh.sh Executable file
View File

@ -0,0 +1,89 @@
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.2
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
# Activate SUPPORT MODE: open ssh over IPFS
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "$MY_PATH/../tools/my.sh"
########################################################################
YOU=$(myIpfsApi) || er+=" ipfs daemon not running"
[[ "$YOU" == "" || "${IPFSNODEID}" == "" ]] && echo "ERROR : $er " && exit 1
########################################################################
## THIS SCRIPT COPY BOOSTRAP PUBKEY
### AND OPEN IPFS P2P SSH FORWARD ON CHANNEL
# Make Station publish SSH port on "/x/ssh-$(IPFSNODEID)"
########################################################################
## use STOP or OFF to finish forwarding
PARAM="$1"
if [[ "${PARAM,,}" == "off" || "${PARAM,,}" == "stop" ]]; then
ipfs p2p close --all
rm ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh 2>/dev/null
rm ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub 2>/dev/null
echo "STOP" && exit 0
fi
############################################
## DISTRIBUTE DRAGON SSH WOT SEED
# A_boostrap_ssh.txt
############################################
while IFS= read -r line
do
LINE=$(echo "$line" | grep "ssh-ed25519" | grep -Ev "#") # Remove # & not ssh-ed25519
[[ ! ${LINE} ]] && continue
if [[ ! $(cat ~/.ssh/authorized_keys | grep "${LINE}") ]]
then
echo "# ADDING ${LINE} to ~/.ssh/authorized_keys"
mkdir -p ~/.ssh && echo "${LINE}" >> ~/.ssh/authorized_keys
else
echo "TRUSTING ${LINE}"
fi
done < ${MY_PATH}/../A_boostrap_ssh.txt
############################################
## PUBLISH SSH PUBKEY OVER IPFS
## KITTY ssh-keygen style
[[ -s ~/.ssh/id_ed25519.pub ]] && cp ~/.ssh/id_ed25519.pub ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub
## DRAGONz PGP/SSH style (https://pad.p2p.legal/keygen)
gpg --export-ssh-key $(cat ~/.zen/game/players/.current/.player) 2>/dev/null > ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub
[[ -z ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub ]] && rm ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub # remove empty file
############################################
### FORWARD SSH PORT over /x/ssh-${IPFSNODEID}
############################################
echo "Lanching /x/ssh-${IPFSNODEID}"
[[ ! $(ipfs p2p ls | grep "/x/ssh-${IPFSNODEID}") ]] \
&& ipfs p2p listen /x/ssh-${IPFSNODEID} /ip4/127.0.0.1/tcp/22
ipfs p2p ls
echo
############################################
## PREPARE x_ssh.sh
## REMOTE ACCESS COMMAND FROM DRAGONS
############################################
PORT=22000
PORT=$((PORT+${RANDOM:0:3}))
echo '#!/bin/bash
if [[ ! $(ipfs p2p ls | grep x/ssh-'${IPFSNODEID}') ]]; then
ipfs --timeout=10s ping -n 4 /p2p/'${IPFSNODEID}'
[[ $? == 0 ]] \
&& ipfs p2p forward /x/ssh-'${IPFSNODEID}' /ip4/127.0.0.1/tcp/'${PORT}' /p2p/'${IPFSNODEID}' \
&& ssh '${USER}'@127.0.0.1 -p '${PORT}'
|| echo "CONTACT IPFSNODEID FAILED - ERROR -"
fi
' > ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
cat ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
############################################
echo
echo "ipfs cat /ipns/${IPFSNODEID}/x_ssh.sh | bash"
############################################
exit 0

View File

@ -12,29 +12,28 @@ ME="${0##*/}"
. "${MY_PATH}/../tools/my.sh" . "${MY_PATH}/../tools/my.sh"
CESIUM=${myCESIUM} CESIUM=${myCESIUM}
GCHANGE=${myGCHANGE} GCHANGE=${myGCHANGE}
echo "(✜‿‿✜) G1PalPay : Receiving & Relaying payments to emails found in comment"
echo "$ME RUNNING" echo "$ME RUNNING"
######################################################################## ########################################################################
# PALPAY SERVICE # PALPAY SERVICE : MONITOR INCOMING TX & NEW TIDDLERS
######################################################################## ########################################################################
######################################################################## ########################################################################
INDEX="$1" INDEX="$1" ## TW file
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html" [[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1 [[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1 [[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
PLAYER="$2" PLAYER="$2" ## PLAYER
[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)" [[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1 [[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1) ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1) ## TW /ipns/
[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1 [[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub) G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub) ## PLAYER WALLET
[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1 [[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
# Extract tag=tube from TW # Extract tag=tube from TW
@ -47,23 +46,32 @@ MOATS="$3"
mkdir -p $HOME/.zen/tmp/${IPFSNODEID}/G1PalPay/${PLAYER}/ mkdir -p $HOME/.zen/tmp/${IPFSNODEID}/G1PalPay/${PLAYER}/
mkdir -p $HOME/.zen/game/players/${PLAYER}/G1PalPay/ mkdir -p $HOME/.zen/game/players/${PLAYER}/G1PalPay/
mkdir -p $HOME/.zen/tmp/${MOATS} mkdir -p $HOME/.zen/tmp/${MOATS}
echo "=========== ( ◕‿◕) (◕‿◕ ) ==============" echo "=========== ( ◕‿◕) (◕‿◕ ) ============== ${PLAYER}
${INDEX}"
echo "(✜‿‿✜) G1PalPay : CHECK LAST 10 TX comment"
# CHECK LAST 10 INCOMING PAYMENTS # CHECK LAST 10 INCOMING PAYMENTS
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \ ~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey history -n 10 -j > $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey history -n 10 -j > $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json
[[ ! -s $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json ]] \ [[ ! -s $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json ]] \
&& echo "NO PAYMENT HISTORY" \ && echo "NO PAYMENT HISTORY.......................... EXIT" \
&& exit 1 && exit 1
############################## ##############################
########################################################## ##########################################################
############# CHECK FOR N1COMMANDs IN PAYMENT COMMENT ############# CHECK FOR N1COMMANDs IN PAYMENT COMMENT
# TODO check amout > 0
################################################################# #################################################################
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[]
## TREAT ANY COMMENT STARTING WITH N1:
## EXTRACT /ASTROBOT/N1ProgramNames
ls ${MY_PATH}/../ASTROBOT/ | grep "N1" | cut -d "." -f 1 > ~/.zen/tmp/${MOATS}/N1PROG
## TREAT ANY COMMENT STARTING WITH N1 while read prog; do
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep 'N1' > ~/.zen/tmp/${MOATS}/myN1.json cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep "$prog" >> ~/.zen/tmp/${MOATS}/myN1.json
done < ~/.zen/tmp/${MOATS}/N1PROG
# got N1 incoming TX
while read NLINE; do while read NLINE; do
## COMMENT FORMAT = N1$CMD:$TH:$TRAIL ## COMMENT FORMAT = N1$CMD:$TH:$TRAIL
TXIDATE=$(echo ${NLINE} | jq -r .date) TXIDATE=$(echo ${NLINE} | jq -r .date)
@ -72,7 +80,10 @@ while read NLINE; do
COMMENT=$(echo ${NLINE} | jq -r .comment) COMMENT=$(echo ${NLINE} | jq -r .comment)
CMD=$(echo ${COMMENT} | cut -d ':' -f 1 | cut -c -12 ) # Maximum 12 characters CMD CMD=$(echo ${COMMENT} | cut -d ':' -f 1 | cut -c -12 ) # Maximum 12 characters CMD
[[ $(cat ~/.zen/game/players/${PLAYER}/.ndate) -ge $TXIDATE ]] && echo "$CMD $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" && continue # Verify last recorded acting date (avoid running twice)
[[ $(cat ~/.zen/game/players/${PLAYER}/.ndate) -ge $TXIDATE ]] \
&& echo "$CMD $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" \
&& continue
TH=$(echo ${COMMENT} | cut -d ':' -f 2) TH=$(echo ${COMMENT} | cut -d ':' -f 2)
TRAIL=$(echo ${COMMENT} | cut -d ':' -f 3-) TRAIL=$(echo ${COMMENT} | cut -d ':' -f 3-)
@ -114,7 +125,9 @@ while read LINE; do
COMMENT=$(echo $JSON | jq -r .comment) COMMENT=$(echo $JSON | jq -r .comment)
echo ">>> TODO CHECK TX HAPPENS LAST 24H (WHAT IS TXIDATE=$TXIDATE FORMAT ??)" echo ">>> TODO CHECK TX HAPPENS LAST 24H (WHAT IS TXIDATE=$TXIDATE FORMAT ??)"
[[ $(cat ~/.zen/game/players/${PLAYER}/.atdate) -ge $TXIDATE ]] && echo "PalPay $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" && continue [[ $(cat ~/.zen/game/players/${PLAYER}/.atdate) -ge $TXIDATE ]] \
&& echo "PalPay $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" \
&& continue
## GET EMAILS FROM COMMENT ## GET EMAILS FROM COMMENT
TXIMAILS=($(echo "$COMMENT" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) TXIMAILS=($(echo "$COMMENT" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
@ -123,9 +136,11 @@ while read LINE; do
echo "N=${#TXIMAILS[@]}" echo "N=${#TXIMAILS[@]}"
N=${#TXIMAILS[@]} N=${#TXIMAILS[@]}
SHARE=$(echo "scale=2; $TXIAMOUNT / $N" | bc) SHARE=$(echo "scale=2; $TXIAMOUNT / $N" | bc)
## SHARE is received AMOUT divided by numbers of EMAILS in comment
echo "$TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS % $SHARE %" echo "$TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS % $SHARE %"
# let's loop over TXIMAILS
for EMAIL in "${TXIMAILS[@]}"; do for EMAIL in "${TXIMAILS[@]}"; do
[[ ${EMAIL} == $PLAYER ]] && echo "ME MYSELF" && continue [[ ${EMAIL} == $PLAYER ]] && echo "ME MYSELF" && continue
@ -144,8 +159,8 @@ while read LINE; do
[[ ! ${ASTROG1} ]] \ [[ ! ${ASTROG1} ]] \
&& echo "<html><body><h1>SORRY ${EMAIL} YOUR ACCOUNT IS MISSING</h1>" \ && echo "<html><body><h1>SORRY ${EMAIL} YOUR ACCOUNT IS MISSING</h1>" \
&& echo " BRO. $PLAYER WISH TO SEND YOU SOME ẐEN <br><br>(♥‿‿♥)... Join <a href='https://qo-op.com'>UPlanet</a> and receive it</body></html>" > ~/.zen/tmp/palpay.bro \ && echo " BRO. $PLAYER WISH TO SEND YOU SOME ẐEN <br><br>(♥‿‿♥)... Join <a href='https://qo-op.com'>UPlanet</a> to receive it</body></html>" > ~/.zen/tmp/palpay.bro \
&& ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro "NEED FOR ACCOUNT" \ && ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro "MISSING ACCOUNT" \
&& continue && continue
@ -183,22 +198,27 @@ echo "=========== %%%%% (°▃▃°) %%%%%%% =============="
echo "# EXTRACT TODAY TIDDLERS" echo "# EXTRACT TODAY TIDDLERS"
tiddlywiki --load ${INDEX} \ tiddlywiki --load ${INDEX} \
--output ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/ \ --output ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/ \
--render '.' "today.${PLAYER}.tiddlers.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-1]]' --render '.' "today.${PLAYER}.tiddlers.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-2]]'
## FILTER MY OWN EMAIL ## FILTER MY OWN EMAIL
# cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json | jq -rc # LOG # cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json | jq -rc # LOG
cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json \ cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json \
| sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' > ~/.zen/tmp/${MOATS}/@tags.json 2>/dev/null ## REMOVE PLAYER EMAIL IN INLINE JSON | sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' \
> ~/.zen/tmp/${MOATS}/@tags.json 2>/dev/null ## Get tiddlers with not my email in it
[[ ! -s ~/.zen/tmp/${MOATS}/@tags.json ]] && echo "NO EXTRA @tags.json TIDDLERS TODAY" && exit 0 [[ ! -s ~/.zen/tmp/${MOATS}/@tags.json ]] \
&& echo "NO EXTRA @tags.json TIDDLERS TODAY" \
&& exit 0
# LOG # LOG
cat ~/.zen/tmp/${MOATS}/@tags.json cat ~/.zen/tmp/${MOATS}/@tags.json
echo "******************TIDDLERS with EMAIL in TAGS treatment" echo "******************TIDDLERS with new EMAIL in TAGS treatment"
#~ cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/${PLAYER}.tiddlers.json | sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' > ~/.zen/tmp/${MOATS}/@tags.json #~ cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/${PLAYER}.tiddlers.json | sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' > ~/.zen/tmp/${MOATS}/@tags.json
## EXTRACT NOT MY EMAIL ################################
## detect NOT MY EMAIL in TODAY TIDDLERS
################################
while read LINE; do while read LINE; do
echo "---------------------------------- Sava PalPé mec" echo "---------------------------------- Sava PalPé mec"
@ -220,7 +240,7 @@ while read LINE; do
## Count emails found ## Count emails found
emails=($(echo "$TTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) emails=($(echo "$TTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
nb=${#emails[@]} nb=${#emails[@]}
zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10, 1 zen each zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10 = 1 Zen each
## Get first zmail ## Get first zmail
ZMAIL="${emails}" ZMAIL="${emails}"

View File

@ -46,7 +46,7 @@ mkdir -p ~/.zen/tmp/${MOATS}
[[ ${PEPPER} ]] && echo "Using PLAYER PEPPER AS WISH SALT" && SECRET1=${PEPPER} ## [[ ${PEPPER} ]] && echo "Using PLAYER PEPPER AS WISH SALT" && SECRET1=${PEPPER} ##
[[ ! ${SECRET1} ]] && SECRET1=$(${MY_PATH}/../tools/diceware.sh 3 | xargs) [[ ! ${SECRET1} ]] && SECRET1=$(${MY_PATH}/../tools/diceware.sh 3 | xargs)
echo "${SECRET1}" #~ echo "${SECRET1}"
echo "## TITRE DU G1VOEU ? CapitalGluedWords please" echo "## TITRE DU G1VOEU ? CapitalGluedWords please"
[[ ! ${TITRE} ]] && read TITRE [[ ! ${TITRE} ]] && read TITRE
@ -151,7 +151,7 @@ convert -gravity northwest -pointsize 50 -fill black -draw "text 30,300 \"${Voeu
<a target='_blank' href='"/ipns/${VOEUNS}"'>TW G1Voeu "${PLAYER}"</a><br><br> <a target='_blank' href='"/ipns/${VOEUNS}"'>TW G1Voeu "${PLAYER}"</a><br><br>
<\$button class='tc-tiddlylink'> <\$button class='tc-tiddlylink'>
<\$list filter='[tag[G1"${VoeuName}"]]'> <\$list filter='[tag[G1"${VoeuName}"]]'>
<\$action-navigate \$to=<<currentTiddler>> \$scroll=no/> <\$action-navigate \$to=<<currentTiddler>> \$scroll=no/>
</\$list> </\$list>
Afficher tous vos G1"${VoeuName}" Afficher tous vos G1"${VoeuName}"
</\$button>" </\$button>"

View File

@ -38,7 +38,8 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
cp -f ~/.zen/tmp/coucou/*.COINS ~/.zen/tmp/${IPFSNODEID}/COINS/ cp -f ~/.zen/tmp/coucou/*.COINS ~/.zen/tmp/${IPFSNODEID}/COINS/
## COPY 20h12.log ## COPY 20h12.log
cp -f /tmp/20h12.log ~/.zen/tmp/${IPFSNODEID}/ rm -f ~/.zen/tmp/${IPFSNODEID}/20h12.log ## TODO REMOVE
cp -f /tmp/20h12.log ~/.zen/tmp/${IPFSNODEID}/20h12.txt
## COPY FRIENDS ## COPY FRIENDS
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null)) PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
@ -51,7 +52,12 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
cp -Rf ~/.zen/game/players/${PLAYER}/FRIENDS/* ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/ 2>/dev/null cp -Rf ~/.zen/game/players/${PLAYER}/FRIENDS/* ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/ 2>/dev/null
done done
cp ~/.zen/GPS ~/.zen/tmp/${IPFSNODEID}/ ## INFORM GPS LOCATION
[[ -s ~/.zen/game/players/.current/GPS.json ]] \
&& cp ~/.zen/game/players/.current/GPS.json ~/.zen/tmp/${IPFSNODEID}/ \
&& LAT=$(cat ~/.zen/tmp/${IPFSNODEID}/GPS.json | jq -r .[].lat) \
&& LON=$(cat ~/.zen/tmp/${IPFSNODEID}/GPS.json | jq -r .[].lon) \
&& echo "LAT=${LAT}; LON=${LON}" > ~/.zen/GPS
## REFRESH TIMESTAMPING ## REFRESH TIMESTAMPING
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
@ -67,7 +73,7 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
fi fi
## CLEANING SWARM 30 DAYS OLD ## CLEANING SWARM 3 DAYS OLD
find ~/.zen/tmp/swarm/ -mtime +30 -type d -exec rm -Rf '{}' \; find ~/.zen/tmp/swarm/ -mtime +3 -type d -exec rm -Rf '{}' \;
exit 0 exit 0

View File

@ -44,7 +44,7 @@ for PLAYER in ${PLAYERONE[@]}; do
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir -p ~/.zen/tmp/${MOATS} mkdir -p ~/.zen/tmp/${MOATS}
echo "##################################################################"
echo "##################################################################" echo "##################################################################"
echo ">>>>> PLAYER : ${PLAYER} >>>>>>>>>>>>> REFRESHING TW STATION" echo ">>>>> PLAYER : ${PLAYER} >>>>>>>>>>>>> REFRESHING TW STATION"
echo "##################################################################" echo "##################################################################"
@ -52,16 +52,14 @@ for PLAYER in ${PLAYERONE[@]}; do
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null) G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null)
ASTRONS=$(cat ~/.zen/game/players/${PLAYER}/.playerns 2>/dev/null) ASTRONS=$(cat ~/.zen/game/players/${PLAYER}/.playerns 2>/dev/null)
# Get PLAYER wallet amount # Get PLAYER wallet amount
COINS=$($MY_PATH/../tools/COINScheck.sh $G1PUB | tail -n 1) $MY_PATH/../tools/COINScheck.sh $G1PUB > ~/.zen/tmp/g1reveal
cat ~/.zen/tmp/g1reveal ###DEBUG MODE
COINS=$(cat ~/.zen/tmp/g1reveal | tail -n 1)
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1) ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
echo "+++ WALLET BALANCE _ $COINS (G1) _ / $ZEN ZEN /" echo "+++ WALLET BALANCE _ $COINS (G1) _ / $ZEN ZEN /"
#~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 1 €OC) ? #~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 1 €OC) ?
echo "##################################################################" echo "##>>>>>>>>>>>>>>>> REFRESH ASTRONAUTE TW"
echo "##################################################################"
echo "################### REFRESH ASTRONAUTE TW ###########################"
echo "##################################################################"
## REFRESH ASTRONAUTE TW ## REFRESH ASTRONAUTE TW
ASTRONAUTENS=$(ipfs key list -l | grep -w ${G1PUB} | cut -d ' ' -f1) ASTRONAUTENS=$(ipfs key list -l | grep -w ${G1PUB} | cut -d ' ' -f1)
@ -122,7 +120,7 @@ for PLAYER in ${PLAYERONE[@]}; do
[[ $try == 0 ]] \ [[ $try == 0 ]] \
&& echo "PLAYER ${PLAYER} UNPLUG" \ && echo "PLAYER ${PLAYER} UNPLUG" \
&& ${MY_PATH}/../tools/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \ && ${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \
&& continue && continue
try=$((try-1)) try=$((try-1))
@ -133,7 +131,7 @@ for PLAYER in ${PLAYERONE[@]}; do
continue continue
else else
## FOUND TW ## FOUND TW
############################################################# #############################################################
## CHECK WHO IS ACTUAL OFFICIAL GATEWAY ## CHECK WHO IS ACTUAL OFFICIAL GATEWAY
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \ tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
@ -170,16 +168,29 @@ for PLAYER in ${PLAYERONE[@]}; do
--output ~/.zen/tmp/${MOATS} \ --output ~/.zen/tmp/${MOATS} \
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler --render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
UMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap) UMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
[[ $UMAPNS == "null" ]] && UMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu" [[ $UMAPNS == "null" || $UMAPNS == "" ]] && UMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu"
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat) LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
[[ $LAT == "null" ]] && LAT="0.00" [[ $LAT == "null" || $LAT == "" ]] && LAT="0.00"
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon) LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
[[ $LON == "null" ]] && LON="0.00" [[ $LON == "null" || $LON == "" ]] && LON="0.00"
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${UMAPNS}" echo "LAT=${LAT}; LON=${LON}; UMAPNS=${UMAPNS}"
## UMAP TODATENS ################
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/todate.ipfskey "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
ipfs key rm "_todate" 2>/dev/null
TODATENS=$(ipfs key import "_todate" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/todate.ipfskey)
ipfs key rm "_todate" 2>/dev/null
echo "GPS UMAP LINK UPDATE
${YESTERDATE} : ${myIPFS}${UMAPNS}
${TODATE} : ${myIPFS}/ipns/${TODATENS}"
## UPDATE TW GPS Tiddler #############
sed -i "s~${UMAPNS}~/ipns/${TODATENS}~g" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
## STORE IN PLAYER CACHE ## STORE IN PLAYER CACHE
echo "_${LAT}_${LON}" > ~/.zen/game/players/${PLAYER}/.umap echo "_${LAT}_${LON}" > ~/.zen/game/players/${PLAYER}/.umap
cp ~/.zen/tmp/${MOATS}/GPS.json ~/.zen/game/players/${PLAYER}/
########### ASTROPORT is not IPFSNODEID => EJECT TW ########### ASTROPORT is not IPFSNODEID => EJECT TW
## MOVED PLAYER (KEY IS KEPT ON LAST CONNECTED ASTROPORT) ## MOVED PLAYER (KEY IS KEPT ON LAST CONNECTED ASTROPORT)
@ -189,7 +200,7 @@ for PLAYER in ${PLAYERONE[@]}; do
if [[ ${IPNSTAIL} != ${IPFSNODEID} || ${IPNSTAIL} == "_ASTROPORT_" ]]; then if [[ ${IPNSTAIL} != ${IPFSNODEID} || ${IPNSTAIL} == "_ASTROPORT_" ]]; then
echo "> I AM ${IPFSNODEID} : PLAYER MOVED TO ${IPNSTAIL} : EJECTION " echo "> I AM ${IPFSNODEID} : PLAYER MOVED TO ${IPNSTAIL} : EJECTION "
echo "UNPLUG PLAYER" echo "UNPLUG PLAYER"
${MY_PATH}/../tools/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE" ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE"
echo ">>>> ASTRONAUT ${PLAYER} TW CAPSULE EJECTION TERMINATED" echo ">>>> ASTRONAUT ${PLAYER} TW CAPSULE EJECTION TERMINATED"
continue continue
fi fi
@ -202,33 +213,35 @@ for PLAYER in ${PLAYERONE[@]}; do
############################################################## ##############################################################
echo "##################################################################" echo "##################################################################"
[[ $(echo "$COINS > 2" | bc -l) -eq 1 ]] \ [[ $(echo "$COINS >= 2" | bc -l) -eq 1 ]] \
&& echo "## Connect_PLAYER_To_Gchange.sh" \ && echo "## Connect_PLAYER_To_Gchange.sh" \
&& ${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" \ && ${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" \
|| echo "1 G1 + 10 ẑen needed to activate ★★★★★ system" || echo "$COINS <= 1 G1 + 10 ẑen : stars exchange (★★★★★) level"
# G1PalPay - 1 G1 + 10 ZEN mini -> Check for G1 TX incoming comments # # G1PalPay - 1 G1 mini -> Check for G1 TX incoming comments #
[[ $(echo "$COINS > 1" | bc -l) -eq 1 ]] \ if [[ $(echo "$COINS >= 1" | bc -l) -eq 1 ]]; then
&& echo "## RUNNING G1PalPay Wallet Monitoring " \ ###########
&& ${MY_PATH}/G1PalPay.sh ${HOME}/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" \ # G1PalPay.sh #
|| echo "> ZenCard is not activated ($ZEN)" ##############################################################
echo "## RUNNING G1PalPay Wallet Monitoring "
${MY_PATH}/G1PalPay.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}"
###############
# VOEUX.create.sh #
##############################################################
${MY_PATH}/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" "${G1PUB}"
###############
# VOEUX.refresh.sh #
##############################################################
${MY_PATH}/VOEUX.refresh.sh "${PLAYER}" "${MOATS}" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
else
echo "> ZenCard is not activated ($ZEN)"
fi
### CHECK FOR pending (TODO! In case PAY4SURE have abandonned pendings) ### CHECK FOR pending (TODO! In case PAY4SURE have abandonned pendings)
###############
# VOEUX.create.sh #
##############################################################
## SPECIAL TAG "voeu" => Creation G1Voeu (G1Titre) makes AstroBot TW G1Processing
##############################################################
${MY_PATH}/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" "${G1PUB}"
###############
# VOEUX.refresh.sh #
##############################################################
## RUN ASTROBOT G1Voeux SUBPROCESS (SPECIFIC Ŋ1 COPY)
##############################################################
${MY_PATH}/VOEUX.refresh.sh "${PLAYER}" "${MOATS}" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
################### ###################
# REFRESH PLAYER_feed # # REFRESH PLAYER_feed #
@ -243,32 +256,32 @@ for PLAYER in ${PLAYERONE[@]}; do
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
########################### ###########################
# Tiddlers controling GW & API # Tiddlers controling GW & API
#~ echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"'$(myPlayerApiGw)'"}]' > ~/.zen/tmp/${MOATS}/5001.json #~ echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"'$(myPlayerApiGw)'"}]' > ~/.zen/tmp/${MOATS}/5001.json
#~ echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"'$myIPFS'"}]' > ~/.zen/tmp/${MOATS}/8080.json #~ echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"'$myIPFS'"}]' > ~/.zen/tmp/${MOATS}/8080.json
## COPY DATA PRODUCED BY GCHANGE STAR EXTRACTION ## COPY DATA PRODUCED BY GCHANGE STAR EXTRACTION
FRIENDSFEEDS=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/FRIENDSFEEDS 2>/dev/null) FRIENDSFEEDS=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/FRIENDSFEEDS 2>/dev/null)
echo "★★★★★ FRIENDS FEEDS : "${FRIENDSFEEDS} echo "★★★★★ FRIENDS FEEDS : "${FRIENDSFEEDS}
ASTRONAUTES=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/ASTRONAUTES 2>/dev/null) ASTRONAUTES=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/ASTRONAUTES 2>/dev/null)
echo "★★★★★ FRIENDS TW : "${ASTRONAUTES} echo "★★★★★ FRIENDS TW : "${ASTRONAUTES}
## Change TW FRIENDFEED ie PLAYER RSS IPNS (must fix TW plugin to work) ## Change TW FRIENDFEED ie PLAYER RSS IPNS (must fix TW plugin to work)
#~ echo '[{"title":"$:/plugins/astroport/lightbeams/state/subscriptions","text":"'${FRIENDSFEEDS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/friends.json #~ echo '[{"title":"$:/plugins/astroport/lightbeams/state/subscriptions","text":"'${FRIENDSFEEDS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/friends.json
#~ ## ADD --import "$HOME/.zen/tmp/${MOATS}/friends.json" "application/json" \ ## MANUAL TW RSS REGISTRATION #~ ## ADD --import "$HOME/.zen/tmp/${MOATS}/friends.json" "application/json" \ ## MANUAL TW RSS REGISTRATION
## WRITE TIDDLERS IN TW ## WRITE TIDDLERS IN TW
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \ tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \ --import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \ --import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} --render "$:/core/save/all" "newindex.html" "text/plain" --output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} --render "$:/core/save/all" "newindex.html" "text/plain"
## CHECK IT IS OK ## CHECK IT IS OK
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \ [[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \ && cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html && rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html
########################### ###########################
#################### ####################
@ -294,8 +307,8 @@ for PLAYER in ${PLAYERONE[@]}; do
############################################################## ##############################################################
################################################## ##################################################
################################################## ############################### LOCAL "MICRO LEDGER"
################## UPDATING PLAYER MOA ################## UPDATING ${PLAYER}/ipfs/moa
[[ $DIFF ]] && cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \ [[ $DIFF ]] && cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \
~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats) ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats)
@ -315,7 +328,11 @@ for PLAYER in ${PLAYERONE[@]}; do
## CREATING 30 DAYS JSON RSS STREAM ## CREATING 30 DAYS JSON RSS STREAM
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \ tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]' --output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ]] && echo "NO ${PLAYER} RSS - BAD ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json -"
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ]] \
&& echo "NO ${PLAYER} RSS - BAD "
echo "~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json"
## TODO CREATING 30 DAYS XML RSS STREAM ## TODO CREATING 30 DAYS XML RSS STREAM
## https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/26 ## https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/26
@ -328,31 +345,32 @@ for PLAYER in ${PLAYERONE[@]}; do
SNOW=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS}) SNOW=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
DIFF_SECONDS=$(( SNOW - SBIRTH )) DIFF_SECONDS=$(( SNOW - SBIRTH ))
days=$((DIFF_SECONDS / 60 / 60 / 24)) days=$((DIFF_SECONDS / 60 / 60 / 24))
echo "PLAYER TW was created $days ago" echo "PLAYER TW was created $days days ago"
################################## ##################################
#### PLAYER ACCOUNT CLEANING ######### #### PLAYER ACCOUNT CLEANING #########
## IF ZEN < 11 ## IF ZEN < 11
## && EMPTY RSS + 30 DAYS BIRTHDATE ## && EMPTY RSS + 30 DAYS BIRTHDATE
## only for less 90 days TW ? && ${DIFF_SECONDS} -lt $(( 90 * 24 * 60 * 60 )) ????
## ==> UNPLUG ## ==> UNPLUG
[[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" ]] \ [[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" ]] \
&& echo "RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN --" \ && echo "RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN --" \
&& [[ $(echo "$COINS < 2.1" | bc -l) -eq 1 ]] \ && [[ $(echo "$COINS < 2.1" | bc -l) -eq 1 ]] \
&& [[ ${DIFF_SECONDS} -gt $(( 27 * 24 * 60 * 60 )) ]] \ && [[ ${DIFF_SECONDS} -gt $(( 27 * 24 * 60 * 60 )) ]] \
&& echo "<html><body><h1>WARNING.</h1> Your TW will be UNPLUGGED and stop being published..." > ~/.zen/tmp/alert \ && echo "<html><body><h1>WARNING.</h1> Your TW will be UNPLUGGED and stop being published..." > ~/.zen/tmp/alert \
&& echo "<br><h3>TW : <a href=$(myIpfsGw)/ipfs/${CURCHAIN}> ${PLAYER}</a></h3>ZEN=$ZEN </body></html>" >> ~/.zen/tmp/alert \ && echo "<br><h3>TW : <a href=$(myIpfsGw)/ipfs/${CURCHAIN}> ${PLAYER}</a></h3>ZEN=$ZEN </body></html>" >> ~/.zen/tmp/alert \
&& ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/alert "TW ALERT" \ && ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/alert "TW ALERT" \
&& echo "<<<< PLAYER TW WARNING <<<< ${DIFF_SECONDS} > ${days} days" \ && echo "<<<< PLAYER TW WARNING <<<< ${DIFF_SECONDS} > ${days} days" \
&& [[ ${DIFF_SECONDS} -gt $(( 30 * 24 * 60 * 60 )) ]] \ && [[ ${DIFF_SECONDS} -gt $(( 30 * 24 * 60 * 60 )) ]] \
&& echo ">>>> PLAYER TW UNPLUG >>>>> ${days} days => BYE BYE ${PLAYER} ZEN=$ZEN" \ && echo ">>>> PLAYER TW UNPLUG >>>>> ${days} days => BYE BYE ${PLAYER} ZEN=$ZEN" \
&& ${MY_PATH}/../tools/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \ && ${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \
&& continue && continue
#################################### UNPLUG ACCOUNT #################################### UNPLUG ACCOUNT
IRSS=$(ipfs add -q ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json | tail -n 1) \ IRSS=$(ipfs add -q ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json | tail -n 1) \
&& ipfs name publish --key="${PLAYER}_feed" /ipfs/${IRSS} && ipfs name publish --key="${PLAYER}_feed" /ipfs/${IRSS}
######################### REPLACE TW with REDIRECT to latest IPFS or IPNS (reduce 12345 cache size) ######################### REPLACE TW with REDIRECT to latest IPFS or IPNS (reduce 12345 cache size)
[[ ! -z ${TW} ]] && TWLNK="/ipfs/${TW}" || TWLNK="/ipns/${ASTRONAUTENS}" [[ ! -z ${TW} ]] && TWLNK="/ipfs/${TW}" || TWLNK="/ipns/${ASTRONAUTENS}"
echo "<meta http-equiv=\"refresh\" content=\"0; url='${TWLNK}'\" />${PLAYER}" \ echo "<meta http-equiv=\"refresh\" content=\"0; url='${TWLNK}'\" />${PLAYER}" \
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html > ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
@ -360,7 +378,9 @@ for PLAYER in ${PLAYERONE[@]}; do
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html > ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html
#################################################
################### COPY DATA TO UP LEVEL GRIDS
#################################################
if [[ ${LAT} && ${LON} ]]; then if [[ ${LAT} && ${LON} ]]; then
## SECTOR BANK COORD ## SECTOR BANK COORD
SECLAT="${LAT::-1}" SECLAT="${LAT::-1}"
@ -369,16 +389,18 @@ for PLAYER in ${PLAYERONE[@]}; do
REGLAT=$(echo ${LAT} | cut -d '.' -f 1) REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1) REGLON=$(echo ${LON} | cut -d '.' -f 1)
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.?? echo "/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}"
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/ mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json \ cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/ ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/ ${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER} mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}/ cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}/
echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPNS}'\" />" > ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/_index.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATENS}'\" />" > ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/_index.html
fi fi
@ -394,6 +416,7 @@ for PLAYER in ${PLAYERONE[@]}; do
## CLEANING CACHE ## CLEANING CACHE
rm -Rf ~/.zen/tmp/${MOATS} rm -Rf ~/.zen/tmp/${MOATS}
echo
done done
echo "============================================ PLAYER.refresh DONE." echo "============================================ PLAYER.refresh DONE."

View File

@ -6,7 +6,7 @@
################################################################################ ################################################################################
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/my.sh" . "$MY_PATH/../tools/my.sh"
################################################################################ ################################################################################
## UNPLUG A PLAYER FROM ASTROPORT STATION ## UNPLUG A PLAYER FROM ASTROPORT STATION
############################################ ############################################
@ -61,7 +61,7 @@ mkdir -p ~/.zen/tmp/${MOATS}
[[ ! -z ${SECTORG1PUB} ]] \ [[ ! -z ${SECTORG1PUB} ]] \
&& echo "> PAY4SURE ZEN:${ALL} WALLET MOVE" \ && echo "> PAY4SURE ZEN:${ALL} WALLET MOVE" \
&& ${MY_PATH}/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${ALL}" "${SECTORG1PUB}" "UNPLUG:${ALL}" && ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${ALL}" "${SECTORG1PUB}" "UNPLUG:${ALL}"
## REMOVING PLAYER from ASTROPORT ## REMOVING PLAYER from ASTROPORT
ipfs key rm ${PLAYER}; ipfs key rm ${PLAYER}_feed; ipfs key rm ${G1PUB}; ipfs key rm ${PLAYER}; ipfs key rm ${PLAYER}_feed; ipfs key rm ${G1PUB};
@ -72,7 +72,7 @@ mkdir -p ~/.zen/tmp/${MOATS}
## SEND PLAYER LAST KNOW TW ## SEND PLAYER LAST KNOW TW
TW=$(ipfs add -Hq ${INDEX} | tail -n 1) TW=$(ipfs add -Hq ${INDEX} | tail -n 1)
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" "<html><body><h1>Hello ${PLAYER},</h1> Your TW is unplugged from Astroport : <a href='${myIPFSGW}/ipfs/${TW}'>LAST TW STATE</a>.<br><h3>May the force be with you.</h3></body></html>" "LAST MESSAGE" ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" "<html><body><h1>Ciao ${PLAYER},</h1> Your TW is unplugged from Astroport : <a href='${myIPFSGW}/ipfs/${TW}'>TW ARCHIVE</a>.<br>$(cat ~/.zen/game/players/${PLAYER}/secret.june)<br><h3>May the force be with you.</h3></body></html>" "BYE BYE MESSAGE"
echo "PLAYER IPNS KEYS UNPLUGED" echo "PLAYER IPNS KEYS UNPLUGED"
echo "#######################" echo "#######################"

View File

@ -12,7 +12,15 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
# UMAP > SECTOR > REGION # UMAP > SECTOR > REGION
## Get from 100 sectors tiddlers with more than 2 signatures ## Get from 100 sectors tiddlers with more than 2 signatures
############################################ ############################################
echo
echo
echo "############################################"
echo "############################################"
echo "############################################"
echo "# # # # RUNNING REGION.refresh" echo "# # # # RUNNING REGION.refresh"
echo "############################################"
echo "############################################"
echo "############################################"
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1 [[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
@ -60,15 +68,16 @@ for REGION in ${REGIONS[@]}; do
# with bigger planetary swam will be closest "IA Station", or it could be choosen according to ZEN value... # with bigger planetary swam will be closest "IA Station", or it could be choosen according to ZEN value...
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]} STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
ACTINGNODE=${STRAPS[0]} ## FIST NODE IN STRAPS ACTINGNODE=${STRAPS[0]} ## FIST NODE IN STRAPS
[[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \ if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \ echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -"
&& continue continue
fi
############################################################## ##############################################################
REGIONG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}") REGIONG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}")
[[ ! ${REGIONG1PUB} ]] && echo "ERROR generating REGION WALLET" && exit 1 [[ ! ${REGIONG1PUB} ]] && echo "ERROR generating REGION WALLET" && exit 1
COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}" COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
@ -83,73 +92,80 @@ for REGION in ${REGIONS[@]}; do
TODATEREGIONNS=$(ipfs key import ${TODATE}${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv) TODATEREGIONNS=$(ipfs key import ${TODATE}${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
############################################################## ##############################################################
## GET from IPNS ## GET from IPNS
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${REGIONNS}/ ipfs --timeout 240s get -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}/RSS
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
rm -f ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
## START WITH LOCAL SECTORS RSS WEEK # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null)) mkdir -p ~/.zen/tmp/${MOATS}/${REGION}/RSS
for RSS in ${RSSNODE[@]}; do rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
[[ $(cat ${RSS}) != "[]" ]] \ rm -f ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
done
NL=${#RSSNODE[@]}
## ADD SWARM SECTORS RSS WEEK ## START WITH LOCAL SECTORS RSS WEEK
RSSWARM=($(ls ~/.zen/tmp/swarm/*/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null)) RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${REGLAT}*_${REGLON}*/_${REGLAT}*_${REGLON}*/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
for RSS in ${RSSWARM[@]}; do for RSS in ${RSSNODE[@]}; do
[[ $(cat ${RSS}) != "[]" ]] \ [[ $(cat ${RSS}) != "[]" ]] \
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \ && cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL && ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
done done
NS=${#RSSWARM[@]} NL=${#RSSNODE[@]}
## CREATE /.all.json FROM *.rss.json echo "
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${REGION}/RSS ---
" >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
## REMOVE SECTORS PARTS ## ADD SWARM SECTORS RSS WEEK
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/*.week.rss.json RSSWARM=($(ls ~/.zen/tmp/swarm/*/UPLANET/SECTORS/_${REGLAT}*_${REGLON}*/_${REGLAT}*_${REGLON}*/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
for RSS in ${RSSWARM[@]}; do
[[ $(cat ${RSS}) != "[]" ]] \
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
done
NS=${#RSSWARM[@]}
## MAKE FINAL _${REGLAT}_${REGLON}.week.rss.json ## CREATE /.all.json FROM *.rss.json
mv ~/.zen/tmp/${MOATS}/${REGION}/RSS/.all.json \ ${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${REGION}/RSS
~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
## PREPARING AiApi link ## REMOVE SECTORS PARTS
mkdir -p ~/.zen/tmp/${IPFSNODEID}/REGIONS rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/*.week.rss.json
RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL)
cp ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL \ ## MAKE FINAL _${REGLAT}_${REGLON}.week.rss.json
~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.JOURNAL.md mv ~/.zen/tmp/${MOATS}/${REGION}/RSS/.all.json \
~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
rm ~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.week.cid 2>/dev/null ## TODO REMOVE ## PREPARING JOURNAL
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${REGLAT}_${REGLON}
## DEMO : PREPARE Ask.IA link - PROD will be launched during RUNTIME. ###################################
echo "<meta http-equiv=\"refresh\" content=\"0; url='https://api.copylaradio.com/tellme/?cid=/ipfs/${RWEEKCID}'\" />" \ ## NODE PUBLISH REGION TODATENS LINK
> ~/.zen/tmp/${MOATS}/${REGION}/Ask.IA._${REGLAT}_${REGLON}.redir.html echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${REGLAT}_${REGLON}/_index.html
#~ ## DEMO : PREPARE Ask.IA link - PROD will be launched during RUNTIME.
#~ echo "<meta http-equiv=\"refresh\" content=\"0; url='https://api.copylaradio.com/tellme/?cid=/ipfs/${RWEEKCID}'\" />" \
#~ > ~/.zen/tmp/${MOATS}/${REGION}/Ask.IA._${REGLAT}_${REGLON}.redir.html
TOTL=$((${NL}+${NS})) TOTL=$((${NL}+${NS}))
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo "Numbers of REGION WEEK RSS : ${NL} + ${NS} : "${TOTL} echo "Numbers of REGION WEEK RSS : ${NL} + ${NS} : "${TOTL}
echo "SHOW TROPHY" > ~/.zen/tmp/${MOATS}/${REGION}/TODO rm ~/.zen/tmp/${MOATS}/${REGION}/N_*
rm ~/.zen/tmp/${MOATS}/${REGION}/RWEEKCID 2>/dev/null ## TODO REMOVE echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N_${TOTL}
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL 2>/dev/null)
if [[ ${RWEEKCID} ]]; then
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/QmYNH85cJCwSVw4c7SyHtc2jtgh7dL5RegozX7e8Re28a9/md.htm?src=/ipfs/${RWEEKCID}'\" />" \
> ~/.zen/tmp/${MOATS}/${REGION}/Journal._${REGLAT}_${REGLON}.view.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${RWEEKCID}'\" />" \ cp ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL \
> ~/.zen/tmp/${MOATS}/${REGION}/Journal._${REGLAT}_${REGLON}.redir.html ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${REGLAT}_${REGLON}/JOURNAL.md
fi
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1) IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1)
ipfs name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP} ipfs name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} ${TODATE}${REGIONG1PUB} > /dev/null 2>&1 ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} > /dev/null 2>&1
done done

View File

@ -11,6 +11,7 @@
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
ME="${0##*/}" ME="${0##*/}"
. "$MY_PATH/../tools/my.sh"
RSS=$1 ## filepath to RSS RSS=$1 ## filepath to RSS
SECTOR=$2 ## Sector identifier _0.0_0.0 SECTOR=$2 ## Sector identifier _0.0_0.0
@ -23,7 +24,8 @@ INDEX=$4 ## SECTOR TW index file
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \ && sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
&& echo "REFRESHING SECTOR FROM empty TEMPLATE *****" && echo "REFRESHING SECTOR FROM empty TEMPLATE *****"
echo
echo
## EXTRACT PLAYER FROM RSS FILE NAME ## EXTRACT PLAYER FROM RSS FILE NAME
PLAYER=$(echo ${RSS} | rev | cut -d '/' -f 1 | rev | sed "s~.rss.json~~g") PLAYER=$(echo ${RSS} | rev | cut -d '/' -f 1 | rev | sed "s~.rss.json~~g")
## GET PLAYER INFORMATION ## GET PLAYER INFORMATION
@ -37,6 +39,8 @@ ${RSS}
cat "${RSS}" | jq 'sort_by(.created) | reverse | .[]' | jq -r '.title' > ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list cat "${RSS}" | jq 'sort_by(.created) | reverse | .[]' | jq -r '.title' > ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list
## ##
gloops=0 gloops=0
signatures=0
while read title; do while read title; do
[[ ${floop} -gt 2 ]] && echo "0lder Tiddlers are similaR... BREAK" && break [[ ${floop} -gt 2 ]] && echo "0lder Tiddlers are similaR... BREAK" && break
@ -46,40 +50,46 @@ while read title; do
&& echo "FILTERED TITLE ${title}" && continue && echo "FILTERED TITLE ${title}" && continue
## CHECK FOR TIDDLER WITH SAME TITTLE IN SECTOR TW ## CHECK FOR TIDDLER WITH SAME TITTLE IN SECTOR TW
rm -f ~/.zen/tmp/${MOATS}/${SECTOR}/TMP.json rm -f ~/.zen/tmp/${MOATS}/TMP.json
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${MOATS}/${SECTOR} --render '.' 'TMP.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${title}" tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${MOATS} --render '.' 'TMP.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${title}"
ISHERE=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/TMP.json | jq -r ".[].title") ISHERE=$(cat ~/.zen/tmp/${MOATS}/TMP.json | jq -r ".[].title")
[[ ! "${ISHERE}" ]] && echo "No Tiddler found in ${INDEX}" [[ ! "${ISHERE}" ]] && echo "No Tiddler found in ${INDEX}"
if [[ "${ISHERE}" != "${title}" ]]; then TMPTAGS=$(cat ~/.zen/tmp/${MOATS}/TMP.json | jq -r .[].tags)
TMPEMAILS=($(echo "$TMPTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
TMPSIGN=${#TMPEMAILS[@]}
echo "INSIDE TIDDLER HAVE ${TMPSIGN} SIGNATURE(S)"
if [[ "${ISHERE}" != "${title}" || ${TMPSIGN} == 0 ]]; then
## NEW TIDDLER ## NEW TIDDLER
echo "Importing Title: $title" echo "Importing Title: $title"
cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/${SECTOR}/NEW.json cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json
#~ echo "DEBUG" #~ echo "DEBUG"
#~ cat ~/.zen/tmp/${MOATS}/${SECTOR}/NEW.json | jq #~ cat ~/.zen/tmp/${MOATS}/NEW.json | jq
#~ echo "tiddlywiki --load ${INDEX} --import ~/.zen/tmp/${MOATS}/${SECTOR}/NEW.json 'application/json' --output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' '"${SECTOR}.html"' 'text/plain'" #~ echo "tiddlywiki --load ${INDEX} --import ~/.zen/tmp/${MOATS}/NEW.json 'application/json' --output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' '"${SECTOR}.html"' 'text/plain'"
tiddlywiki --load ${INDEX} \ tiddlywiki --load ${INDEX} \
--import ~/.zen/tmp/${MOATS}/${SECTOR}/NEW.json 'application/json' \ --import ~/.zen/tmp/${MOATS}/NEW.json 'application/json' \
--output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' "${SECTOR}.html" 'text/plain' --output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' "${SECTOR}.html" 'text/plain'
[[ -s ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ]] \ [[ -s ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ]] \
&& rm ${INDEX} \ && rm ${INDEX} \
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ${INDEX} \ && mv ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ${INDEX} \
&& ((gloops++)) \ && ((gloops++)) \
&& echo "SECTOR (${gloops}) : ${title}" && echo "SECTOR (${gloops}) : ${title}" \
&& signatures=$((signatures + TMPSIGN))
[[ ! -s ${INDEX} ]] && echo "ERROR. TW did not ingest ~/.zen/tmp/${MOATS}/${SECTOR}/NEW.json" && exit 1 [[ ! -s ${INDEX} ]] && echo "ERROR. TW did not ingest ~/.zen/tmp/${MOATS}/NEW.json" && exit 1
else else
## SAME TIDDLER ## SAME TIDDLER
echo "TIDDLER WITH TITLE $title ALREADY EXISTS..." echo "TIDDLER WITH TITLE $title and more than 1 signature ALREADY EXISTS..."
cp -f ~/.zen/tmp/${MOATS}/${SECTOR}/TMP.json ~/.zen/tmp/${MOATS}/${SECTOR}/INSIDE.json cat ~/.zen/tmp/${MOATS}/TMP.json | jq .[] > ~/.zen/tmp/${MOATS}/INSIDE.json
cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json
if [[ ! $(diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json) ]]; then if [[ ! $(diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json) ]]; then
@ -88,9 +98,15 @@ while read title; do
continue continue
fi fi
floop=1 floop=1
echo
echo "=========== INSIDE.json"
cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -c
echo
echo "=========== NEW.json"
cat ~/.zen/tmp/${MOATS}/NEW.json | jq -c
echo
## TODO EXTEND CONTROL TO text & ipfs & _canonical_url ## TODO EXTEND CONTROL TO text & ipfs & _canonical_url
## NEED SIGNATURES & TIDDLER SIMILARITY TO COME UP ## NEED SIGNATURES & TIDDLER SIMILARITY TO COME UP
## CHECK FOR EMAIL SIGNATURES DIFFERENCE ## CHECK FOR EMAIL SIGNATURES DIFFERENCE
NTAGS=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags) NTAGS=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags)
@ -126,7 +142,7 @@ while read title; do
# Print the results # Print the results
echo "Common email addresses : ${COMMON[*]}" echo "Common email addresses : ${COMMON[*]}"
echo "Email addresses unique in NEW Tiddler : ${NUNIQUE[*]}" echo "Email addresses unique in NEW Tiddler : ${NUNIQUE[*]}"
echo "Email addresses unique in ACTUAL Tiddler : ${IUNIQUE[*]}" echo "Email addresses unique in INSIDE Tiddler : ${IUNIQUE[*]}"
combined=("${IEMAILS[@]}" "${NEMAILS[@]}") combined=("${IEMAILS[@]}" "${NEMAILS[@]}")
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u)) unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
@ -136,7 +152,17 @@ while read title; do
for email in "${unique_combined[@]}"; do for email in "${unique_combined[@]}"; do
echo "<html><body> echo "<html>
<head>
<style>
body {
font-family: 'Courier New', monospace;
}
pre {
white-space: pre-wrap;
}
</style></head>
<body>
<h1>(ᵔ◡◡ᵔ)</h1> <h1>(ᵔ◡◡ᵔ)</h1>
Tiddler with same title is existing in ${unique_combined[*]} TW(s) Tiddler with same title is existing in ${unique_combined[*]} TW(s)
@ -153,10 +179,10 @@ To Accept<br>
To Refuse<br> To Refuse<br>
${NUNIQUE[*]} must fork by deleting or modifying New Tiddler title. ${NUNIQUE[*]} must fork by deleting or modifying New Tiddler title.
<br> <br>
<h2><a href='$(myIpfsGw)/ipfs/QmcSkcJ2j7GAsC2XhVqGSNAKVRpXgxfjjvDbhD5YxrncZY/?room=${MOATS}'>Actual Tiddler</a>Engage discussion about it...</a></h2> <h2><a href='$(myIpfsGw)${VDONINJA}/?room=${MOATS}'>Actual Tiddler</a>Engage discussion about it...</a></h2>
</body></html>" > ~/.zen/tmp/${MOATS}/g1message </body></html>" > ~/.zen/tmp/${MOATS}/g1message
${MY_PATH}/mailjet.sh "$email" ~/.zen/tmp/${MOATS}/g1message "TIDDLER COLLISION" ${MY_PATH}/../tools/mailjet.sh "$email" ~/.zen/tmp/${MOATS}/g1message "TIDDLER COLLISION"
done done
@ -189,30 +215,37 @@ To Refuse<br>
&& rm ${INDEX} \ && rm ${INDEX} \
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}.html ${INDEX} && mv ~/.zen/tmp/${MOATS}/${SECTOR}.html ${INDEX}
signatures=$((signatures + ISIGN))
fi fi
fi fi
## CLEANING
rm ~/.zen/tmp/${MOATS}/INSIDE.json 2>/dev/null
rm ~/.zen/tmp/${MOATS}/TMP.json 2>/dev/null
rm ~/.zen/tmp/${MOATS}/NEW.json 2>/dev/null
done < ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list done < ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list
#################################################### ####################################################
################################################ ################################################ ${signatures} -gt ${gloops}
## SECTOR SENDS GRATITUDE TO PUBLISHING PLAYER ## SECTOR SENDS GRATITUDE TO PUBLISHING PLAYER
################################################### ###################################################
if [[ ${gloups} -gt 0 && ${ASTROG1} ]]; then if [[ ${gloops} -gt 0 && ${signatures} -gt ${gloops} && ${ASTROG1} ]]; then
# GENERATE SECTOR PIVATE KEY ################################ # GENERATE SECTOR PRIVATE KEY ################################
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/sector.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}" ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/sector.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
G1SECTOR=$(cat ~/.zen/tmp/${MOATS}/sector.dunikey | grep 'pub:' | cut -d ' ' -f 2) G1SECTOR=$(cat ~/.zen/tmp/${MOATS}/sector.dunikey | grep 'pub:' | cut -d ' ' -f 2)
cp -f ~/.zen/tmp/coucou/${G1SECTOR}.COINS ~/.zen/tmp/${IPFSNODEID}/${SECTOR}.COINS
#~ cp -f ~/.zen/tmp/coucou/${G1SECTOR}.COINS ~/.zen/tmp/${IPFSNODEID}/${SECTOR}.COINS
############################################################## ##############################################################
GRATITUDE=$($MY_PATH/../tools/getcoins_from_gratitude_box.sh) GRATITUDE=$($MY_PATH/../tools/getcoins_from_gratitude_box.sh)
G1AMOUNT=$(echo "$GRATITUDE / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" ) G1AMOUNT=$(echo "$GRATITUDE / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
echo "***** SECTOR $SECTOR *************************************" echo "***** SECTOR $SECTOR REWARD *****************"
echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1 echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
to ${PLAYER} WALLET ${ASTROG1}" to ${PLAYER} WALLET ${ASTROG1} (${gloops} Tiddlers)"
echo "************************************************************" echo "************************************************************"
${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "${G1AMOUNT}" "${ASTROG1}" "THANKS ${gloops} GLOOPS" ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "${G1AMOUNT}" "${ASTROG1}" "THANKS ${gloops} GLOOPS"
################################################ GRATITUDE SENT ################################################ GRATITUDE SENT

View File

@ -12,7 +12,13 @@ start=`date +%s`
## SECTOR REFRESH ## SECTOR REFRESH
# SHARE & UPDATE IPNS TOGETHER # SHARE & UPDATE IPNS TOGETHER
############################################ ############################################
echo
echo
echo "############################################"
echo "############################################"
echo "> RUNNING SECTOR.refresh" echo "> RUNNING SECTOR.refresh"
echo "############################################"
echo "############################################"
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1 [[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
@ -23,8 +29,13 @@ for i in $*; do
UMAPS=("$i" ${UMAPS[@]}) UMAPS=("$i" ${UMAPS[@]})
done done
[[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00" ## NO $i PARAMETERS - GET ALL UMAPS
if [[ ${#UMAPS[@]} == 0 ]]; then
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
UMAPS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
fi
######## INIT SECTORS ######################## ######## INIT SECTORS ########################
for UMAP in ${UMAPS[@]}; do for UMAP in ${UMAPS[@]}; do
@ -56,49 +67,58 @@ for SECTOR in ${SECTORS[@]}; do
SLON=$(echo ${SECTOR} | cut -d '_' -f 3) SLON=$(echo ${SECTOR} | cut -d '_' -f 3)
############################################################## ##############################################################
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}") ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey | grep 'pub:' | cut -d ' ' -f 2)
[[ ! ${G1PUB} ]] && echo "ERROR generating SECTOR WALLET" && exit 1 [[ ! ${G1PUB} ]] && echo "ERROR generating SECTOR WALLET" && exit 1
COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1) COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1)
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${G1PUB}"
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1) ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
SECTORNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv) SECTORNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv)
rm ~/.zen/tmp/${MOATS}/${SECTOR}.priv
echo "ORIGIN : ${myIPFS}/ipns/${SECTORNS}/" echo "___ ORIGIN ___ ${myIPFS}/ipns/${SECTORNS}/"
echo "SECTOR : ${SECTOR} (${COINS} G1 <=> ${ZEN} ZEN) : ${G1PUB}"
###################### SPATIO TEMPORAL KEYS ###################### SPATIO TEMPORAL KEYS
## YESTERDATE ############### ## YESTERDATE ###############
YESTERDATE=$(date -d "yesterday 13:00" '+%Y-%m-%d') ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${SECTOR}" "${YESTERDATE}${UPLANETNAME}${SECTOR}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${SECTOR}" "${YESTERDATE}${UPLANETNAME}${SECTOR}" ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1 YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv) echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
## TODATE ######################################### ## TODATE #########################################
TODATE=$(date -d "today 13:00" '+%Y-%m-%d') ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}" ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1 TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv) echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start=`date +%s` start=`date +%s`
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#~ ## IPFS GET ONLINE SECTORNS #~ ## IPFS GET ONLINE YESTERDATE SECTORNS
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/ ipfs --timeout 240s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/
if [[ $? != 0 ]]; then
echo "(╥☁╥ ) swarm memory empty (╥☁╥ )"
# Try retieve memory from UPlanet Zen Memory
[[ ${ZEN} -gt 0 ]] \
&& echo "INTERCOM Refreshing from ZEN MEMORY" \
&& ${MY_PATH}/../RUNTIME/ZEN.SECTOR.memory.sh "${SECTOR}" "${MOATS}"
fi
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end=`date +%s` end=`date +%s`
echo "_____SECTOR${SECTOR} GET time was "`expr $end - $start` seconds. echo "_____SECTOR${SECTOR} GET time was "`expr $end - $start` seconds.
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
### ZEN
## CONTROL CHAIN TIME ## CONTROL CHAIN TIME
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null) ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats 2>/dev/null) ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats 2>/dev/null)
[[ ${ZCHAIN} && ${ZMOATS} ]] \ [[ ${ZCHAIN} && ${ZMOATS} ]] \
&& cp ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain.${ZMOATS} \ && cp ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain.${ZMOATS} \
&& echo "UPDATING MOATS" && echo "UPDATING MOATS ${MOATS}"
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS}) MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS}) ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
@ -107,16 +127,9 @@ for SECTOR in ${SECTORS[@]}; do
minutes=$(( (DIFF_SECONDS % 3600) / 60 )) minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
seconds=$((DIFF_SECONDS % 60)) seconds=$((DIFF_SECONDS % 60))
echo "SECTOR DATA is ${hours} hours ${minutes} minutes ${seconds} seconds OLD" echo "SECTOR DATA is ${hours} hours ${minutes} minutes ${seconds} seconds OLD"
if [ ${DIFF_SECONDS} -lt $(( 5 * 60 * 60 )) ]; then
echo "GETTING YESTERDAY SECTOR.refresher"
YESTERDAY=$(ipfs cat /ipfs/${ZCHAIN}/CHAIN/SECTOR.refresher | head -n 1)
## GET UMAP.refresher from PREVIOUS _chain ...
echo "TODAY : $(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/SECTOR.refresher | head -n 1)"
echo "YESTERDAY : ${YESTERDAY}"
continue
fi
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## CONTROL ACTINGNODE SWAPPING ## CONTROL ACTINGNODE : BOOSTRAP DISTRIBUTED (jeu du mouchoir, token ring aléatoire)
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/SECTOR.refresher" UREFRESH="${HOME}/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/SECTOR.refresher"
ALLNODES=($(cat ${UREFRESH} | grep -v '^[[:space:]]*$' 2>/dev/null)) # ${ALLNODES[@]} without empty line ALLNODES=($(cat ${UREFRESH} | grep -v '^[[:space:]]*$' 2>/dev/null)) # ${ALLNODES[@]} without empty line
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]} STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
@ -133,19 +146,23 @@ for SECTOR in ${SECTORS[@]}; do
## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP - ## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP -
[[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]} [[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]}
## IF NOT UPDATED FOR TOO LONG ## IF NOT UPDATED FOR TOO LONG : STRAPS[0] get key control
[ ${DIFF_SECONDS} -gt $(( 24 * 60 * 60 )) ] \ [ ${DIFF_SECONDS} -gt $(( 26 * 60 * 60 )) ] \
&& echo "More than 24H update" \ && echo "More than 26H update" \
&& ACTINGNODE=${STRAPS[0]} && ACTINGNODE=${STRAPS[0]}
[[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \ echo "* ACTINGNODE=${ACTINGNODE}"
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
&& continue
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
echo ">> ACTINGNODE NOT ME - CONTINUE -"
ipfs key rm "${TODATE}${G1PUB}" "${YESYERDATE}${G1PUB}" "${G1PUB}"
echo "------8<-------------8<------------------8<-----------------8<-----------------8<"
continue
fi
### NEXT REFRESHER SHUFFLE ### NEXT REFRESHER SHUFFLE
rm ${UREFRESH} rm ${UREFRESH}
for STRAP in ${STRAPS[@]}; do for STRAP in ${STRAPS[@]}; do
echo ${STRAP} >> ${UREFRESH} ## RESET SECTOR.refresher file with actual STRAPS echo ${STRAP} >> ${UREFRESH} ## RESET SECTOR.refresher file with actual STRAPS
done done
# SHUFFLE UMAP.refresher # SHUFFLE UMAP.refresher
cat ${UREFRESH} | sort | uniq | shuf > ${UREFRESH}.shuf cat ${UREFRESH} | sort | uniq | shuf > ${UREFRESH}.shuf
@ -160,16 +177,17 @@ for SECTOR in ${SECTORS[@]}; do
## NEW TW TEMPLATE ## NEW TW TEMPLATE
[[ ! -s ${INDEX} ]] \ [[ ! -s ${INDEX} ]] \
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \ && sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
&& echo "REFRESHING SECTOR FROM empty TEMPLATE *****" && echo "REFRESHING SECTOR FROM empty TEMPLATE *****" \
&& [[ ${IPFSNODEID} != ${STRAPS[0]} ]] && echo "1ST BOOSTRAP JOB" && continue
## SET SECTOR ## SET SECTOR
sed -i "s~_SECTOR_~${SECTOR}~g" ${INDEX} sed -i "s~_SECTOR_~${SECTOR}~g" ${INDEX}
## GET ALL RSS json's AND Feed SECTOR TW with it ## GET ALL RSS json's AND Feed SECTOR TW with it
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/RSS/*.rss.json 2>/dev/null)) RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/RSS/*.rss.json 2>/dev/null))
NL=${#RSSNODE[@]} NL=${#RSSNODE[@]}
RSSWARM=($(ls ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/RSS/*.rss.json 2>/dev/null)) RSSWARM=($(ls ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/RSS/*.rss.json 2>/dev/null))
NS=${#RSSWARM[@]} NS=${#RSSWARM[@]}
combinedrss=("${RSSNODE[@]}" "${RSSWARM[@]}") combinedrss=("${RSSNODE[@]}" "${RSSWARM[@]}")
@ -177,15 +195,22 @@ for SECTOR in ${SECTORS[@]}; do
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/RSS mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/RSS
rm -f ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json rm -f ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json
################################## TRANSFER SIGNED TIDDLER IN SECTOR TW
#################### RSS2UPlanetSECTORTW #########################
############################ TRANSFER SIGNED TIDDLER IN SECTOR TW
for RSS in ${RSSALL[@]}; do for RSS in ${RSSALL[@]}; do
############################################################
## Extract New Tiddlers and maintain fusion in Sector TW. ## Extract New Tiddlers and maintain fusion in Sector TW.
${MY_PATH}/../tools/RSS2UPlanetTW.sh "${RSS}" "${SECTOR}" "${MOATS}" "${INDEX}" ############################################################
${MY_PATH}/RSS2UPlanetSECTORTW.sh "${RSS}" "${SECTOR}" "${MOATS}" "${INDEX}"
############################################################
## create sector RSS _all.json ## create sector RSS _all.json
cat ${RSS} >> ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json cat ${RSS} >> ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json
############################################################
done done
TOTL=$((${NL}+${NS})) TOTL=$((${NL}+${NS}))
############################################################## ##############################################################
# Update COIN & ZEN value # Update COIN & ZEN value
echo ${COINS} > ~/.zen/tmp/${MOATS}/${SECTOR}/COINS echo ${COINS} > ~/.zen/tmp/${MOATS}/${SECTOR}/COINS
echo ${ZEN} > ~/.zen/tmp/${MOATS}/${SECTOR}/ZEN echo ${ZEN} > ~/.zen/tmp/${MOATS}/${SECTOR}/ZEN
@ -198,97 +223,99 @@ for SECTOR in ${SECTORS[@]}; do
## MAKE SECTOR PLANET WITH ASTONAUTENS LINKS ## MAKE SECTOR PLANET WITH ASTONAUTENS LINKS
########################################################################################### ###########################################################################################
########################################################################################### ###########################################################################################
## PREPARE Ŋ1 WORLD MAP ################################################################## ## PREPARE Ŋ1 WORLD MAP ##################################################################
echo "var examples = {}; echo "var examples = {};
examples['locations'] = function() { examples['locations'] = function() {
var locations = { var locations = {
" > ~/.zen/tmp/world.js " > ~/.zen/tmp/world.js
floop=1 floop=1
SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/TW/*/index.html 2>/dev/null)) SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/TW/*/index.html 2>/dev/null))
NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/TW/*/index.html 2>/dev/null)) NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/TW/*/index.html 2>/dev/null))
TWFILES=("${SWARMTW[@]}" "${NODETW[@]}") TWFILES=("${SWARMTW[@]}" "${NODETW[@]}")
for TWRED in ${TWFILES[@]}; do for TWRED in ${TWFILES[@]}; do
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev) ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
TWADD=$(cat ${TWRED} | grep -o "/ipns/[^\"]*" | sed "s/'$//") TWADD=$(cat ${TWRED} | grep -o "/ipns/[^\"]*" | sed "s/'$//")
[[ -z ${TWADD} ]] && TWADD=$(cat ${TWRED} | grep -o "/ipfs/[^\"]*" | sed "s/'$//") [[ -z ${TWADD} ]] && TWADD=$(cat ${TWRED} | grep -o "/ipfs/[^\"]*" | sed "s/'$//")
## ADD ASTRONAUTNS ON SECTOR WORLD MAP ## ADD ASTRONAUTNS ON SECTOR WORLD MAP
echo "${floop}: { echo "${floop}: {
alpha: Math.random() * 2 * Math.PI, alpha: Math.random() * 2 * Math.PI,
delta: Math.random() * 2 * Math.PI, delta: Math.random() * 2 * Math.PI,
name: '"${ZMAIL}"', name: '"${ZMAIL}"',
link: '"${TWADD}"' link: '"${TWADD}"'
} }
," >> ~/.zen/tmp/world.js ," >> ~/.zen/tmp/world.js
((floop++)) ((floop++))
done done
# REMOVE la dernière virgule # REMOVE la dernière virgule
sed -i '$ d' ~/.zen/tmp/world.js sed -i '$ d' ~/.zen/tmp/world.js
################################## ##################################
## FINISH LOCATIONS ## FINISH LOCATIONS
echo " echo "
}; };
\$('#sphere').earth3d({ \$('#sphere').earth3d({
locationsElement: \$('#locations'), locationsElement: \$('#locations'),
dragElement: \$('#locations'), dragElement: \$('#locations'),
locations: locations locations: locations
}); });
}; };
" >> ~/.zen/tmp/world.js " >> ~/.zen/tmp/world.js
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1) IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
echo "JSON WISH WORLD READY /ipfs/${IAMAP}/world.js" echo "JSON WISH WORLD READY /ipfs/${IAMAP}/world.js"
###########################################################################################
### APPLY ON APP MODEL TODATE REGIONNS LINKING
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
REGION="_${REGLAT}_${REGLON}"
TODATEREGIONNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
PHONEBOOTH="${G1PUB::30}" ###########################################################################################
cat ${MY_PATH}/../templates/UPlanetSector/index.html \ ## ADD SECTOR ZENPUB.png & INFO.png
| sed -e "s~_ZONE_~SECTOR ${SECTOR}~g" \ convert -font 'Liberation-Sans' \
-e "s~_UPZONE_~REGION ${REGION}~g" \ -pointsize 80 -fill purple -draw 'text 50,120 "'"${ZEN} Zen"'"' \
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \ -pointsize 30 -fill purple -draw 'text 40, 180 "'"${SECTOR}"'"' \
-e "s~_ZONENS_~${TODATENS}~g" \ $MY_PATH/../images/G1WorldMap.png "${HOME}/.zen/tmp/${MOATS}/${SECTOR}.png"
-e "s~_UPZONENS_~${TODATEREGIONNS}~g" \ # CREATE G1PUB AMZQR
-e "s~_SECTORG1PUB_~${G1PUB}~g" \ amzqr ${G1PUB} -l H -p "$MY_PATH/../images/zenticket.png" -c -n ZENPUB.png -d ~/.zen/tmp/${MOATS}/${SECTOR}/
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \ convert ~/.zen/tmp/${MOATS}/${SECTOR}/ZENPUB.png -resize 250 ~/.zen/tmp/${MOATS}/ZENPUB.png
-e "s~_LAT_~${REGLAT}~g" \ # ADD IT
-e "s~_LON_~${REGLON}~g" \ composite -compose Over -gravity NorthEast -geometry +0+0 ~/.zen/tmp/${MOATS}/ZENPUB.png ~/.zen/tmp/${MOATS}/${SECTOR}.png ~/.zen/tmp/${MOATS}/${SECTOR}/INFO.png
-e "s~_EARTHCID_~${EARTHCID}~g" \
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${REGLAT}\&southWestLon=${REGLON}\&deg=0.1~g" \
-e "s~http://127.0.0.1:8080~~g" \
> ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html
## TODO get from ~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.week.cid produced by REGION.refresh ## zday marking
# -e "s~_RWEEKCID_~/ipfs/QmY4rLRgSXjhhsW3WoKUJYpLe2A1dJCFXb7stNLcAp95w9~g" \ rm ~/.zen/tmp/${MOATS}/${SECTOR}/z* 2>/dev/null
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />${TODATE} ${SECTOR}" > ~/.zen/tmp/${MOATS}/${SECTOR}/z$(date +%A-%d_%m_%Y).html
################################## ###########################################################################################
cp -f ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html ~/.zen/tmp/${MOATS}/${SECTOR}/index.html ### APPLY ON APP MODEL TODATE REGIONNS LINKING
REGLAT=$(echo ${SLAT} | cut -d '.' -f 1)
REGLON=$(echo ${SLON} | cut -d '.' -f 1)
REGION="_${REGLAT}_${REGLON}"
TODATEREGIONNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
REGIONG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
########################################################################################### PHONEBOOTH="${G1PUB::30}"
## ADD SECTOR ZENPUB.png & INFO.png cat ${MY_PATH}/../templates/UPlanetSector/index.html \
convert -font 'Liberation-Sans' \ | sed -e "s~_ZONE_~SECTOR ${SECTOR}~g" \
-pointsize 80 -fill purple -draw 'text 50,120 "'"${ZEN} Zen"'"' \ -e "s~_UPZONE_~REGION ${REGION}~g" \
-pointsize 30 -fill purple -draw 'text 40, 180 "'"${SECTOR}"'"' \ -e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
$MY_PATH/../images/G1WorldMap.png "${HOME}/.zen/tmp/${MOATS}/${SECTOR}.png" -e "s~_ZONENS_~${TODATENS}~g" \
# CREATE G1PUB AMZQR -e "s~_ZCHAIN_~${ZCHAIN}~g" \
amzqr ${G1PUB} -l H -p "$MY_PATH/../images/zenticket.png" -c -n ZENPUB.png -d ~/.zen/tmp/${MOATS}/${SECTOR}/ -e "s~_UPZONENS_~${TODATEREGIONNS}~g" \
convert ~/.zen/tmp/${MOATS}/${SECTOR}/ZENPUB.png -resize 250 ~/.zen/tmp/${MOATS}/ZENPUB.png -e "s~_SECTORG1PUB_~${G1PUB}~g" \
# ADD IT -e "s~_IPFSNINJA_~${VDONINJA}~g" \
composite -compose Over -gravity NorthEast -geometry +0+0 ~/.zen/tmp/${MOATS}/ZENPUB.png ~/.zen/tmp/${MOATS}/${SECTOR}.png ~/.zen/tmp/${MOATS}/${SECTOR}/INFO.png -e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
-e "s~_HACKGIPFS_~${HACKGIPFS}~g" \
## zday marking -e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
rm ~/.zen/tmp/${MOATS}/${SECTOR}/z* 2>/dev/null -e "s~_LAT_~${SLAT}~g" \
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null) -e "s~_LON_~${SLON}~g" \
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />${TODATE} ${SECTOR}" > ~/.zen/tmp/${MOATS}/${SECTOR}/z$(date +%A-%d_%m_%Y).html -e "s~_EARTHCID_~${EARTHCID}~g" \
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${REGLAT}\&southWestLon=${REGLON}\&deg=1~g" \
-e "s~http://127.0.0.1:8080~~g" \
> ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html
##################################
cp -f ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html ~/.zen/tmp/${MOATS}/${SECTOR}/index.html
rm ~/.zen/tmp/${MOATS}/${SECTOR}/index.html ## MAKE SECTOR VISIBLE ##
###################################################### CHAINING BACKUP ###################################################### CHAINING BACKUP
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1) IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1)
@ -298,28 +325,44 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />${TODATE
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats \ && echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats \
&& IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}" && IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
###################################################### ######################################################
## ZEN CHAINING
echo "% START PUBLISHING ${SECTOR} ${myIPFS}/ipns/${SECTORNS}" # Send 1 Zen to UPlanet REGIONG1PUB Wallet containing REGION TW HASH
start=`date +%s` INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}"
ipfs name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP} echo "> INTERCOM ${INTERCOM} (${ZEN} ZEN)"
ipfs key rm ${TODATE}${G1PUB} ${YESYERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1 if [[ ${ZEN} -gt 11 ]]; then
end=`date +%s` echo "---ZZZ-- SECTOR 2 REGION ZEN CHAINING ---ZZZ------ZZZ----"
echo "_____SECTOR${SECTOR} PUBLISH time was "`expr $end - $start` seconds. ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey "0.1" "${REGIONG1PUB}" "${INTERCOM}"
fi
##############################################################
## PUBLISHING ${SECTOR}
###############################
echo "% PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}"
start=`date +%s`
ipfs name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${YESTERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1
###################################################### ######################################################
rm ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey
################################################### ###################################################
## EXTRACT SECTOR LAST WEEK TIDDLERS TO IPFSNODEID CACHE ## EXTRACT SECTOR LAST WEEK TIDDLERS TO IPFSNODEID CACHE
echo "(☉_☉ ) ${REGION}.week.rss.json (☉_☉ )" echo "(☉_☉ ) ${REGION}.week.rss.json (☉_☉ )"
mkdir -p ~/.zen/tmp/${IPFSNODEID}/SECTORS/ rm -Rf ~/.zen/tmp/${IPFSNODEID}/SECTORS/ ## TODO REMOVE
rm -f ~/.zen/tmp/${IPFSNODEID}/SECTORS/${SECTOR}.week.rss.json mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${REGLAT}_${REGLON}/_${SLAT}_${SLON}
## CREATING 7 DAYS JSON RSS STREAM ## CREATING 7 DAYS JSON RSS STREAM
tiddlywiki --load ${INDEX} \ tiddlywiki --load ${INDEX} \
--output ~/.zen/tmp/${IPFSNODEID}/SECTORS --render '.' "${SECTOR}.week.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-7]!is[system]!tag[G1Voeu]]' --output ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${REGLAT}_${REGLON}/_${SLAT}_${SLON} --render '.' "${SECTOR}.week.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-7]!is[system]!tag[G1Voeu]]'
###################################
## NODE CACHE SECTOR TODATENS
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATENS}'\" />" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${REGLAT}_${REGLON}/_${SLAT}_${SLON}/_index.html
## TODO FILTER INFORMATION WITH MULTIPLE SIGNATURES (DONE in REGION.refresh.sh) ## TODO FILTER INFORMATION WITH MULTIPLE SIGNATURES (DONE in REGION.refresh.sh)
## TODO EXPORT AS RSS ## https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/28 ## TODO EXPORT AS RSS ## https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/28
end=`date +%s`
echo "_____SECTOR${SECTOR} TREATMENT time was "`expr $end - $start` seconds.
done done

View File

@ -11,7 +11,20 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
## SEEK FOR UPLANET KEYS ## SEEK FOR UPLANET KEYS
# GET & UPDATE IPNS # GET & UPDATE IPNS
############################################ ############################################
echo "## RUNNING UPLANET.refresh" echo "############################################"
echo "
_________________________
< RUNNING UPLANET.refresh >
-------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
"
echo "############################################"
echo "############################################"
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1 [[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
@ -20,156 +33,163 @@ mkdir ~/.zen/tmp/${MOATS}
################################################################# #################################################################
## IPFSNODEID ASTRONAUTES SIGNALING ## 12345 port ## IPFSNODEID ASTRONAUTES SIGNALING ## 12345 port
############################ ############################
## RUNING FOR ALL UMAP FOUND IN STATION MAP CACHE : "_LAT_LON" ## RUNING FOR ALL UMAP FOUND IN STATION MAP CACHE : "_LAT_LON"
## SEARCH UMAP (created by PLAYER.refresh.sh) /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.?? ## SEARCH UMAP (created by PLAYER.refresh.sh) /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
MEMAPS=($(ls -t ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/ 2>/dev/null)) MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* | rev | cut -d '/' -f 1 | rev | sort | uniq 2>/dev/null) ) SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}") combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u)) unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
echo "ACTIVATED UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories echo "ACTIVATED UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories
for UMAP in ${unique_combined[@]}; do ######################################################
### LEVEL 1 ###########################################
######################################################
for UMAP in ${unique_combined[@]}; do
start=`date +%s` start=`date +%s`
echo "____________REFRESHING ${UMAP}__________" echo
LAT=$(echo ${UMAP} | cut -d '_' -f 2) echo "____________REFRESHING ${UMAP}__________"
LON=$(echo ${UMAP} | cut -d '_' -f 3) LAT=$(echo ${UMAP} | cut -d '_' -f 2)
LON=$(echo ${UMAP} | cut -d '_' -f 3)
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue [[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue [[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
## SECTOR BANK COORD ## SECTOR BANK COORD
SECLAT="${LAT::-1}" SECLAT="${LAT::-1}"
SECLON="${LON::-1}" SECLON="${LON::-1}"
## REGION ## REGION
REGLAT=$(echo ${LAT} | cut -d '.' -f 1) REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1) REGLON=$(echo ${LON} | cut -d '.' -f 1)
############################################################## ##############################################################
## UMAP WALLET CHECK ## UMAP WALLET CHECK
############################################################## ##############################################################
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}") ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${UMAP}.dunikey "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
[[ ! ${G1PUB} ]] && echo "ERROR generating WALLET" && exit 1 G1PUB=$(cat ~/.zen/tmp/${MOATS}/${UMAP}.dunikey | grep 'pub:' | cut -d ' ' -f 2)
COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1) [[ ! ${G1PUB} ]] && echo "ERROR generating UMAP WALLET" && exit 1
echo "UMAP (${COINS} G1) WALLET : ${G1PUB}"
## ORIGIN ########################################################## COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1)
## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
ipfs key rm ${G1PUB} > /dev/null 2>&1
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
echo "ORIGIN : ${myIPFS}/ipns/${UMAPNS}"
###################### SPATIO TEMPORAL KEYS echo "UMAP (${COINS} G1) ${ZEN} ZEN : ${G1PUB}"
## YESTERDATE ###############
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
## TODATE ######################################### ## ORIGIN ##########################################################
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}" ## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1 ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv) ipfs key rm ${G1PUB} > /dev/null 2>&1
echo "TODAY : ${myIPFS}/ipns/${TODATENS}" UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
echo "ORIGIN : ${myIPFS}/ipns/${UMAPNS}"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ###################### SPATIO TEMPORAL KEYS
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ## TODATE #########################################
## IPFS GET YESTERDATENS ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
mkdir ~/.zen/tmp/${MOATS}/${UMAP} ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/ TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## FORMAT CONTROL WARNING ## YESTERDATE ###############
[[ ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN || ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} ]] \ ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
&& echo ">>> INFO - INTIALIZE UMAP FORMAT - NEW UMAP KEY -" \ ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} \ YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/RSS # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo "## IPFS GET YESTERDATENS"
mkdir ~/.zen/tmp/${MOATS}/${UMAP}
ipfs --timeout 240s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
if [[ $? != 0 ]]; then
echo "(╥☁╥ ) swarm memory empty (╥☁╥ )"
# Try retieve memory from UPlanet Zen Memory
[[ ${ZEN} -gt 0 ]] \
&& echo "INTERCOM Refreshing from ZEN MEMORY" \
&& ${MY_PATH}/../RUNTIME/ZEN.UMAP.memory.sh "${UMAP}" "${MOATS}"
fi
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## FORMAT CONTROL WARNING
[[ ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN || ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} ]] \
&& echo ">>> INFO - INTIALIZE UMAP FORMAT - NEW UMAP KEY -" \
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} \
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN \
&& echo ${MOATS} > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/RSS
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW
echo "~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/" echo "~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/"
## zday of the week for IPFSNODEID ## zday of the week for IPFSNODEID
rm ~/.zen/tmp/${MOATS}/${UMAP}/z* ## TODO RESTRICT T O z*.html rm -f ~/.zen/tmp/${MOATS}/${UMAP}/z*.html 2>/dev/null
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null) ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain 2>/dev/null | rev | cut -d ':' -f 1 | rev 2>/dev/null)
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html [[ "${ZCHAIN}" != "" ]] \
&& echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
########################################################
## NODE SELECTION in UMAP.refresher
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher"
ALLNODES=($(cat ${UREFRESH} 2>/dev/null)) # ${ALLNODES[@]}
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
# ++++++++++++++++++++ - - - - ADAPT TO NODE TREATMENT TIME if [[ ${ALLNODES[@]} == "" ]]; then
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
# ZMOATS SHOULD BE MORE THAT 5 HOURS.
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
hours=$((DIFF_SECONDS / 3600))
minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
seconds=$((DIFF_SECONDS % 60))
echo "UMAP DATA is ${hours} hours ${minutes} minutes ${seconds} seconds "
# IF LESS THAN 5 HOURS
if [ ${DIFF_SECONDS} -lt $(( 5 * 60 * 60 )) ]; then
echo "GETTING YESTERDAY UMAP.refresher"
YESTERDAY=$(ipfs cat /ipfs/${ZCHAIN}/${LAT}_${LON}/UMAP.refresher | head -n 1)
## GET UMAP.refresher from PREVIOUS _chain ...
TODAY=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher | head -n 1)
echo "TODAY : ${TODAY}"
echo "YESTERDAY : ${YESTERDAY}"
echo "------------------------------------------------->>>>>>>>>>>>>>>>"
continue
fi
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
########################################################
## NODE SELECTION in UMAP.refresher
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher"
ALLNODES=($(cat ${UREFRESH} 2>/dev/null)) # ${ALLNODES[@]}
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
if [[ ${ALLNODES[@]} == "" ]]; then
for STRAP in ${STRAPS[@]}; do
echo ${STRAP} >> ${UREFRESH} ## FILL UMAP.refresher file with all STRAPS
done
ALLNODES=($(cat ${UREFRESH} 2>/dev/null)) # ${ALLNODES[@]}
fi
ACTINGNODE=${ALLNODES[0]} ## FIST NODE IN UMAP.refresher
## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP -
[[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]}
## IF NOT UPDATED FOR TOO LONG
[ ${DIFF_SECONDS} -gt 100800 ] \
&& echo "More than 28H update" \
&& ACTINGNODE=${STRAPS[0]}
echo "* ACTINGNODE=${ACTINGNODE}"
[[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
&& continue
########################################
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PASSING THERE MAKE IPFSNODEID UMAP REFRESHER
## NEXT REFRESHER
# TODO: INTRODUCE NODE BALANCE AND CHOOSE THE MOST CONFIDENT ONE
rm ${UREFRESH}
for STRAP in ${STRAPS[@]}; do for STRAP in ${STRAPS[@]}; do
echo ${STRAP} >> ${UREFRESH} ## FILL UMAP.refresher file with all STRAPS echo ${STRAP} >> ${UREFRESH} ## FILL UMAP.refresher file with all STRAPS
done done
# SHUFFLE UMAP.refresher ALLNODES=($(cat ${UREFRESH} 2>/dev/null)) # ${ALLNODES[@]}
cat ${UREFRESH} | sort | uniq | shuf > ${UREFRESH}.shuf fi
mv ${UREFRESH}.shuf ${UREFRESH}
## NEXT REFRESHER
echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)"
######################################################## # NODE SELECTION in UMAP.refresher
# %%%%%%%%%% ################################################## ACTINGNODE=${ALLNODES[0]} ## FIST NODE IN UMAP.refresher
## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON}
# %%%%%%%%%% ################################################## ## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP -
[[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]}
# ++++++++++++++++++++ - - - - FIND LAST TREATMENT TIME
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null) || ZMOATS=${MOATS}
# ZMOATS SHOULD BE MORE THAT 5 HOURS.
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
hours=$((DIFF_SECONDS / 3600))
minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
seconds=$((DIFF_SECONDS % 60))
echo "UMAP DATA is ${hours} hours ${minutes} minutes ${seconds} seconds "
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## IF NOT UPDATED FOR TOO LONG
[[ ${DIFF_SECONDS} -gt $(( 26 * 60 * 60 )) || ${DIFF_SECONDS} -eq 0 ]] \
&& echo "More than 26H update - BOOSTRAP 0 ACTION -" \
&& ACTINGNODE=${STRAPS[0]}
echo "* ACTINGNODE=${ACTINGNODE}"
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
echo ">> ACTINGNODE NOT ME - CONTINUE -"
ipfs key rm "${TODATE}${G1PUB}" "${YESTERDATE}${G1PUB}" "${G1PUB}"
echo "------8<-------------8<------------------8<-----------------8<-----------------8<"
continue
fi
########################################
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PASSING THERE MAKE IPFSNODEID UMAP REFRESHER
## NEXT REFRESHER
# TODO: INTRODUCE NODE BALANCE AND CHOOSE THE MOST CONFIDENT ONE
rm ${UREFRESH}
for STRAP in ${STRAPS[@]}; do
echo ${STRAP} >> ${UREFRESH} ## FILL UMAP.refresher file with all STRAPS
done
# SHUFFLE UMAP.refresher
cat ${UREFRESH} | sort | uniq | shuf > ${UREFRESH}.shuf
mv ${UREFRESH}.shuf ${UREFRESH}
## NEXT REFRESHER
echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)"
######################################################## # NODE SELECTION in UMAP.refresher
# %%%%%%%%%% ##################################################
## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON}
# %%%%%%%%%% ##################################################
SLAT="${LAT::-1}" SLAT="${LAT::-1}"
SLON="${LON::-1}" SLON="${LON::-1}"
SECTOR="_${SLAT}_${SLON}" SECTOR="_${SLAT}_${SLON}"
@ -180,7 +200,7 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1) COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${SECTORG1PUB}" echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${SECTORG1PUB}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}"
ipfs key rm ${SECTORG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT ipfs key rm ${SECTORG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
SECTORNS=$(ipfs key import ${SECTORG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv) SECTORNS=$(ipfs key import ${SECTORG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv)
ipfs key rm ${SECTORG1PUB} ipfs key rm ${SECTORG1PUB}
@ -188,9 +208,9 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON} mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${SECTORNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}/index.html echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${SECTORNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}/index.html
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
## REGION LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ${RLAT}_${RLON} ## REGION LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ${RLAT}_${RLON}
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
RLAT=$(echo ${LAT} | cut -d '.' -f 1) RLAT=$(echo ${LAT} | cut -d '.' -f 1)
RLON=$(echo ${LON} | cut -d '.' -f 1) RLON=$(echo ${LON} | cut -d '.' -f 1)
REGION="_${RLAT}_${RLON}" REGION="_${RLAT}_${RLON}"
@ -201,43 +221,45 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1) COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}" echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}"
ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
REGIONNS=$(ipfs key import ${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv) TODATEREGIONNS=$(ipfs key import ${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
ipfs key rm ${REGIONG1PUB} ipfs key rm ${REGIONG1PUB}
############################################################## ##############################################################
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON} mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${REGIONNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}/index.html echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}/index.html
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
## COLLECT RSS FROM ALL PLAYERS WITH SAME UMAP IN SWARM MEMORY /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.?? ## COLLECT RSS FROM ALL PLAYERS WITH SAME UMAP IN SWARM MEMORY /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json ~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json \
RSSFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json 2>/dev/null)) ~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null
for RSSFILE in ${RSSFILES[@]}; do RSSFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json 2>/dev/null))
cp ${RSSFILE} ~/.zen/tmp/${MOATS}/${UMAP}/RSS/ for RSSFILE in ${RSSFILES[@]}; do
done cp ${RSSFILE} ~/.zen/tmp/${MOATS}/${UMAP}/RSS/
done
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
## COLLECT TW LINKS FROM NODE & SWARM ## COLLECT TW LINKS FROM NODE & SWARM
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* ~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* \
TWFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null)) ~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null
for TWRED in ${TWFILES[@]}; do TWFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev) for TWRED in ${TWFILES[@]}; do
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL} ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
cp ${TWRED} ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL}/ mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL}
done cp ${TWRED} ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL}/
done
################################## ##################################
## OSM2IPFS ## OSM2IPFS
### UMAP = 0.01° Planet Slice ### UMAP = 0.01° Planet Slice
UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${UMAPNS}/_index.html" UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${TODATENS}/_index.html"
USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${UMAPNS}/_index.html" USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${TODATENS}/_index.html"
echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Umap.html echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Umap.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='${USATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Usat.html echo "<meta http-equiv=\"refresh\" content=\"0; url='${USATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Usat.html
## ¤$£€ removed copy OSM map to IPFS. TODO. scrap tiles instead of screen copy ## ¤$£€ removed copy OSM map to IPFS. TODO. scrap tiles instead of screen copy
## TODO # GET SCREENSHOT UMAP SECTOR & REGION JPG ## TODO # GET SCREENSHOT UMAP SECTOR & REGION JPG
## PROBLEM ON LIBRA ... MORE TEST NEEDED ... ## PROBLEM ON LIBRA ... MORE TEST NEEDED ...
#~ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Umap.jpg ]] \ #~ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Umap.jpg ]] \
@ -247,9 +269,9 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
#~ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg ]] \ #~ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg ]] \
#~ && python ${MY_PATH}/../tools/page_screenshot.py "${myIPFS}${USATGEN}" ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg 900 900 2>/dev/null \ #~ && python ${MY_PATH}/../tools/page_screenshot.py "${myIPFS}${USATGEN}" ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg 900 900 2>/dev/null \
#~ && [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg ]] && killall chrome #~ && [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/Usat.jpg ]] && killall chrome
#### NOT WORKING !!! #### NOT WORKING !!!
## GEOLINKING CALCULATE SURROUNDING UMAPS ############################### ## GEOLINKING CALCULATE SURROUNDING UMAPS ###############################
#~ if [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/geolinks.json ]]; then #~ if [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/geolinks.json ]]; then
#~ ${MY_PATH}/../tools/Umap_geolinks.sh "${LAT}" "${LON}" "${UMAP}" "${MOATS}" "${UMAPNS}" #~ ${MY_PATH}/../tools/Umap_geolinks.sh "${LAT}" "${LON}" "${UMAP}" "${MOATS}" "${UMAPNS}"
@ -258,149 +280,193 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/
#~ ### SET navigator.html ## MAKE EVOLVE template/umap.html #~ ### SET navigator.html ## MAKE EVOLVE template/umap.html
#~ cp ${MY_PATH}/../templates/umap.html ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html #~ cp ${MY_PATH}/../templates/umap.html ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html
#~ cat ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html | sed "s~Umap~Usat~g" > ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Usat.html #~ cat ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html | sed "s~Umap~Usat~g" > ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Usat.html
#### IS IT USEFUL ?..?? #### IS IT USEFUL ?..??
#################################### ####################################
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
## GET FROM WEB2.0 POI's AROUND >>>>>>>>>>>>>>>>>>>>>>>>> ## GET FROM WEB2.0 POI's AROUND >>>>>>>>>>>>>>>>>>>>>>>>>
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
#################################### ####################################
echo "################### WEB2.0 SCRAPING TIME >>>>>>>>>>>>>>>>" echo "################### WEB2.0 SCRAPING TIME >>>>>>>>>>>>>>>>"
## RECORD P4N SPOT DATA ## RECORD P4N SPOT DATA
echo "* park4night : https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr" echo "* park4night : https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr"
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
&& curl -s "https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \ && curl -s -L "https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
&& [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json) ]] \ && [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json) ]] \
&& mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json \ && mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json \
&& echo "UPDATED PARK4NIGHT" \ && echo "UPDATED PARK4NIGHT" \
|| rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json || rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json
#################################### ####################################
echo "* gchange : ./tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON}" echo "* gchange : ./tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON}"
## GET 100KM GCHANGE ADS ( https://data.gchange.fr ) ## GET 100KM GCHANGE ADS ( https://data.gchange.fr )
${MY_PATH}/../tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON} > ~/.zen/tmp/${MOATS}/${UMAP}/gchange50.json ${MY_PATH}/../tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON} > ~/.zen/tmp/${MOATS}/${UMAP}/gchange50.json
echo "MAKING _index.p4n.html with ./templates/P4N/index.html" ## GET ALL WALLETS
## CREATE INDEX LOADING JSONs ON OPENSTREETMAP echo "* GET WALLETS https://g1-stats.axiom-team.fr/data/geoloc-members.json"
cat ${MY_PATH}/../templates/P4N/index.html \ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json
| sed -e "s~43.2218~${LAT}~g" \ [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
-e "s~1.3977~${LON}~g" \ && curl -s "https://g1-stats.axiom-team.fr/data/geoloc-members.json" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
-e "s~_SERVICE_~Commons~g" \ && [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json) ]] \
-e "s~_UMAP_~${UMAP}~g" \ && mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json \
-e "s~http://127.0.0.1:8080~~g" \ && echo "UPDATED WALLALL" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.p4n.html || rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json
# %%%%%%%%%% ################################################## ## FILTER LOCAL WALLETS
######################################################## target_lat=${LAT}
echo "CREATING SPHERICAL LOCATIONS" target_lon=${LON}
# %%%%%%%%%% ################################################## precision=0.1
## PREPARE SPHERE MAP ################################################################## jq --argjson target_lat "$target_lat" \
echo "var examples = {}; --argjson target_lon "$target_lon" \
examples['locations'] = function() { --argjson precision "$precision" \
var locations = { '.wallets | map(select((.geoPoint.lat | tonumber) >= ($target_lat - $precision) and (.geoPoint.lat | tonumber) <= ($target_lat + $precision) and (.geoPoint.lon | tonumber) >= ($target_lon - $precision) and (.geoPoint.lon | tonumber) <= ($target_lon + $precision)))' ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json \
" > ~/.zen/tmp/world.js > ~/.zen/tmp/${MOATS}/${UMAP}/wallets.json
floop=1
SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null)) echo "MAKING _index.p4n.html with ./templates/P4N/index.html"
NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null)) ## CREATE INDEX LOADING JSONs ON OPENSTREETMAP
TWFILES=("${SWARMTW[@]}" "${NODETW[@]}") cat ${MY_PATH}/../templates/P4N/index.html \
| sed -e "s~43.61000~${LAT}~g" \
-e "s~1.43000~${LON}~g" \
-e "s~_SERVICE_~Commons~g" \
-e "s~_UMAP_~${UMAP}~g" \
-e "s~http://127.0.0.1:8080~~g" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.p4n.html
for TWRED in ${TWFILES[@]}; do # %%%%%%%%%% ##################################################
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev) ########################################################
TWADD=$(cat ${TWRED} | grep -o "/ipns/[^\"]*" | sed "s/'$//") echo "CREATING SPHERICAL LOCATIONS"
[[ -z ${TWADD} ]] && TWADD=$(cat ${TWRED} | grep -o "/ipfs/[^\"]*" | sed "s/'$//") # %%%%%%%%%% ##################################################
## PREPARE SPHERE MAP ##################################################################
echo "var examples = {};
examples['locations'] = function() {
var locations = {
" > ~/.zen/tmp/world.js
floop=1
## ADD ASTRONAUTNS ON SECTOR WORLD MAP SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
echo "${floop}: { NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
alpha: Math.random() * 2 * Math.PI, TWFILES=("${SWARMTW[@]}" "${NODETW[@]}")
delta: Math.random() * 2 * Math.PI,
name: '"${ZMAIL}"',
link: '"${TWADD}"'
}
," >> ~/.zen/tmp/world.js
((floop++)) for TWRED in ${TWFILES[@]}; do
done ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
TWADD=$(cat ${TWRED} | grep -o "/ipns/[^\"]*" | sed "s/'$//")
[[ -z ${TWADD} ]] && TWADD=$(cat ${TWRED} | grep -o "/ipfs/[^\"]*" | sed "s/'$//")
# REMOVE la dernière virgule ## ADD ASTRONAUTNS ON SECTOR WORLD MAP
sed -i '$ d' ~/.zen/tmp/world.js echo "${floop}: {
################################## alpha: Math.random() * 2 * Math.PI,
## FINISH LOCATIONS delta: Math.random() * 2 * Math.PI,
echo " name: '"${ZMAIL}"',
}; link: '"${TWADD}"'
\$('#sphere').earth3d({ }
locationsElement: \$('#locations'), ," >> ~/.zen/tmp/world.js
dragElement: \$('#locations'),
locations: locations
});
};
" >> ~/.zen/tmp/world.js
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
echo "JSON UMAP WORLD READY /ipfs/${IAMAP}/world.js"
###########################################################################################
### APPLY ON APP MODEL
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
SECTOR="_${SECLAT}_${SECLON}"
SECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
PHONEBOOTH="${G1PUB::30}"
cat ${MY_PATH}/../templates/UPlanetUmap/index.html \
| sed -e "s~_ZONE_~UMAP ${UMAP}~g" \
-e "s~_UPZONE_~SECTOR ${SECTOR}~g" \
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
-e "s~_ZONENS_~${UMAPNS}~g" \
-e "s~_UPZONENS_~${SECTORNS}~g" \
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${LAT}\&southWestLon=${LON}\&deg=0.01~g" \
-e "s~http://127.0.0.1:8080~~g" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.html
## Make it root App
#~ mv ~/.zen/tmp/${MOATS}/${UMAP}/_index.html \
#~ ~/.zen/tmp/${MOATS}/${UMAP}/index.html
##################################
###########################################################################################
########################################################
## CREATE .all.json for RSS in this UMAP
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${UMAP}/RSS
##############################################################
############################ PUBLISHING UMAP
##############################################################
UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1)
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
[[ ${ZCHAIN} && ${ZMOATS} ]] \
&& cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain.${ZMOATS} \
&& echo "UPDATING MOATS"
## MICRO LEDGER CHAIN CHANGED or INIT ?
[[ ${ZCHAIN} != ${UMAPROOT} || ${ZCHAIN} == "" ]] \
&& echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain \
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats \
&& UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
ipfs name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
end=`date +%s`
ipfs key rm ${TODATE}${G1PUB} ${YESYERDATE}${G1PUB} ${G1PUB} ## REMOVE IPNS KEY
echo "(UMAP) ${UMAP} ${TODATE} PUBLISH time was "`expr $end - $start` seconds.
((floop++))
done done
# REMOVE la dernière virgule
sed -i '$ d' ~/.zen/tmp/world.js
##################################
## FINISH LOCATIONS
echo "
};
\$('#sphere').earth3d({
locationsElement: \$('#locations'),
dragElement: \$('#locations'),
locations: locations
});
};
" >> ~/.zen/tmp/world.js
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
echo "JSON UMAP WORLD READY /ipfs/${IAMAP}/world.js"
###########################################################################################
### APPLY ON APP MODEL
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
SECTOR="_${SECLAT}_${SECLON}"
TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}")
PHONEBOOTH="${G1PUB::30}"
cat ${MY_PATH}/../templates/UPlanetUmap/index.html \
| sed -e "s~_ZONE_~UMAP ${UMAP}~g" \
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
-e "s~_ZONENS_~${TODATENS}~g" \
-e "s~_IPFSNINJA_~${VDONINJA}~g" \
-e "s~_HACKGIPFS_~${HACKGIPFS}~g" \
-e "s~_UPZONE_~SECTOR ${SECTOR}~g" \
-e "s~_UPZONENS_~${TODATESECTORNS}~g" \
-e "s~_UPUPZONE_~REGION ${REGION}~g" \
-e "s~_UPUPZONENS_~${TODATEREGIONNS}~g" \
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${LAT}\&southWestLon=${LON}\&deg=0.01~g" \
-e "s~http://127.0.0.1:8080~~g" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.html
## Make it root App
#~ mv ~/.zen/tmp/${MOATS}/${UMAP}/_index.html \
#~ ~/.zen/tmp/${MOATS}/${UMAP}/index.html
##################################
###########################################################################################
########################################################
## CREATE .all.json for RSS in this UMAP
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${UMAP}/RSS
##############################################################
############################ PUBLISHING UMAP
##############################################################
UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1)
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
[[ ${ZCHAIN} && ${ZMOATS} ]] \
&& cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain.${ZMOATS} \
&& echo "UPDATING MOATS"
######################################################
## ZEN CHAINING
# Send 1 Zen to UPlanet SECTORG1PUB Wallet containing REGION TW HASH
INTERCOM="UPLANET:${UMAP}:${TODATE}:/ipfs/${UMAPROOT}"
echo "> INTERCOM ${INTERCOM} (${ZEN} ZEN)"
if [[ ${ZEN} -gt 11 ]]; then
echo "---ZZZ-- UMAP 2 SECTOR ZEN CHAINING ---ZZZ------ZZZ----"
${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${UMAP}.dunikey "0.1" "${SECTORG1PUB}" "${INTERCOM}"
fi
## MICRO LEDGER CHAIN CHANGED or INIT ?
[[ ${ZCHAIN} != ${UMAPROOT} || ${ZCHAIN} == "" ]] \
&& echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain \
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats \
&& UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
ipfs name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
end=`date +%s`
echo "(UMAP) ${UMAP} ${TODATE} PUBLISH time was "`expr $end - $start` seconds.
ipfs key rm "${TODATE}${G1PUB}" "${YESTERDATE}${G1PUB}" "${G1PUB}" ## REMOVE IPNS KEY
rm ~/.zen/tmp/${MOATS}/*.priv
rm ~/.zen/tmp/${MOATS}/${UMAP}.dunikey
done
######################################################
### LEVEL 2 ###########################################
######################################################
### SECTOR = 0.1° Planet Slice ### SECTOR = 0.1° Planet Slice
${MY_PATH}/SECTOR.refresh.sh "${unique_combined[@]}" ${MY_PATH}/SECTOR.refresh.sh "${unique_combined[@]}"
######################################################
### LEVEL 3 ###########################################
######################################################
### REGION = 1° Planet Slice ### REGION = 1° Planet Slice
${MY_PATH}/REGION.refresh.sh "${unique_combined[@]}" ${MY_PATH}/REGION.refresh.sh "${unique_combined[@]}"
######################################################
######################################################
exit 0
######################################################

75
RUNTIME/UPlanetKEYS_refresh.sh Executable file
View File

@ -0,0 +1,75 @@
#!/bin/bash
########################################################################
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
## EXPLORE SWARM MAPNS
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
. "$MY_PATH/../tools/my.sh"
## LOG into ~/.zen/tmp/_12345.log
exec 2>&1 >> ~/.zen/tmp/_12345.log
echo "=========================="
echo "(◕‿◕ ) ${ME} (◕‿◕ ) "
## LOCAL
LWKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
echo ${#LWKEYS[@]} " local UMAPS"
LSKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_*_*/_*.?_*.?/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
echo ${#LSKEYS[@]} " local SECTORS"
LRKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_*_*/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
echo ${#LRKEYS[@]} " local REGIONS"
## SWARM
WKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
echo ${#WKEYS[@]} " swarm UMAPS"
SKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/SECTORS/_*_*/_*.?_*.?/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
echo ${#SKEYS[@]} " swarm SECTORS"
RKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/REGIONS/_*_*/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
echo ${#RKEYS[@]} " swarm REGIONS"
#~ ## CHECK IF ALREADY MErunning
countMErunning=$(ps auxf --sort=+utime | grep -w $ME | grep -v -E 'color=auto|grep' | wc -l)
[[ $countMErunning -gt 2 ]] && echo "$ME already running $countMErunning time" && exit 0
echo "(◕‿◕ ) ${ME} starting UPlanet Terraformation _______________________________"
## COMBINE & SHUFFLE KEYS
combined=("${LWKEYS[@]}" "${LSKEYS[@]}" "${LRKEYS[@]}" "${WKEYS[@]}" "${SKEYS[@]}" "${RKEYS[@]}")
UKEYS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
echo ${#UKEYS[@]} " JOBS..."
## STORAGE FOR IPFS GET UplanetKeyS
mkdir -p ~/.zen/tmp/flashmem
## Remove flashmem/UplanetKey older than 3 hours
find ~/.zen/tmp/flashmem -mmin +180 -exec rm -rf {} +
floop=0
medo=0
for key in ${UKEYS[@]}; do
[[ -d ~/.zen/tmp/flashmem/$key ]] \
&& echo "$key already copied" && medo=$((medo +1)) && continue
floop=$((floop +1))
mkdir -p ~/.zen/tmp/flashmem/$key
echo "ipfs --timeout 180s get -o ~/.zen/tmp/flashmem/$key /ipns/$key"
ipfs --timeout 180s get -o ~/.zen/tmp/flashmem/$key /ipns/$key
[[ $? == 0 ]] \
&& medo=$((medo +1)) && floop=$((floop -1)) \
|| rm -Rf ~/.zen/tmp/flashmem/$key # GOT IT or NOT ?
[ $floop -gt 33 ] && break
done
echo "=========================="
echo "(◕‿◕ ) ${ME} :: $medo SUCCESS missing $floop KEYS from ${#UKEYS[@]} JOBS"
echo "=========================="
exit 0

View File

@ -33,9 +33,9 @@ LIBRA=$(head -n 2 ${MY_PATH}/../A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f
################################################################################ ################################################################################
## LIST TW MODELS ## LIST TW MODELS
################################################################################ ################################################################################
TWMODEL="/ipfs/bafybeie6sx76balvpeehvbh5du7oc5fhjuwydryympeh3qnm5s3b2jrvwe" TWMODEL="/ipfs/bafybeictdd2ue6jediatiudq3shtlmamrahyje46jmcrgfu5jktr3hgtam"
# ipfs cat $TWMODEL > templates/twdefault.html # ipfs cat $TWMODEL > templates/twdefault.html
MINIMAL="/ipfs/bafybeicpfrsx44lkib4352eulvohmgdpaww3sau3qtbj7fzj6qw7xsokhy" MINIMAL="/ipfs/bafybeiat4wjnl2y4vh273vqodk4d7bwgwpaidfrju2umqwq7tks5ixkduy"
# ipfs cat $MINIMAL > templates/twuplanet.html # ipfs cat $MINIMAL > templates/twuplanet.html
################################################################################ ################################################################################
@ -80,6 +80,7 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
rm -f ~/.zen/tmp/${MOATS}/Astroport.json rm -f ~/.zen/tmp/${MOATS}/Astroport.json
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport) ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
HPass=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].HPASS)
echo "ASTROPORT=${ASTROPORT}" echo "ASTROPORT=${ASTROPORT}"
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'AstroID.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'AstroID' tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'AstroID.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'AstroID'
AstroID=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[]._canonical_uri) AstroID=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[]._canonical_uri)
@ -256,8 +257,8 @@ DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
## RESET WISHES TO DEPLOY DERIVATED KEYS ON HOST AGAIN ( DONE IN PLAYER_REFRESH ) ## RESET WISHES TO DEPLOY DERIVATED KEYS ON HOST AGAIN ( DONE IN PLAYER_REFRESH )
#~ sed -i "s~G1Voeu~voeu~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html #~ sed -i "s~G1Voeu~voeu~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## Fill ♥BOX - CopierYoutube Tiddler ## Fill LNK - Tiddler - escape \&
sed -i "s~_URL_~${URL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_URL_~$(echo "${URL}" | sed 's/[&/]/\\&/g')~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
# INSERT PLAYER DATA # INSERT PLAYER DATA
sed -i "s~_PLAYER_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_PLAYER_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
@ -312,6 +313,11 @@ DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
## Change myIP ## Change myIP
#~ sed -i "s~127.0.0.1~$myIP~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html # 8080 & 5001 BEING THE RECORDING GATEWAY (WAN or ipfs.localhost) #~ sed -i "s~127.0.0.1~$myIP~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html # 8080 & 5001 BEING THE RECORDING GATEWAY (WAN or ipfs.localhost)
## TODATE #########################################
TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}")
DEMAINSECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${DEMAINDATE}${UPLANETNAME}${SECTOR}" "${DEMAINDATE}${UPLANETNAME}${SECTOR}")
########### ###########
## GET OLD16 ## GET OLD16
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MIZ.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MIZ.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
@ -323,7 +329,7 @@ DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
MACHINEPUB=$(cat $HOME/.zen/game/myswarm_secret.dunikey | grep pub | cut -d ' ' -f 2) MACHINEPUB=$(cat $HOME/.zen/game/myswarm_secret.dunikey | grep pub | cut -d ' ' -f 2)
#~ echo "# CRYPTO ENCODING _SECRET_ " #~ echo "# CRYPTO ENCODING _SECRET_ "
${MY_PATH}/../tools/natools.py encrypt -p ${MACHINEPUB} -i $HOME/.zen/game/players/${PLAYER}/secret.dunikey -o $HOME/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc ${MY_PATH}/../tools/natools.py encrypt -p ${MACHINEPUB} -i $HOME/.zen/game/players/${PLAYER}/secret.dunikey -o $HOME/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc
ENCODING=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc | base16) ENCODING=$(cat ~/.zen/tmp/${MOATS}/bafybeiewwxkmiojbskcqhbj2gbkde3czkeqftn6fgvwoa7ez5n5whido3qsecret.dunikey.$G1PUB.enc | base16)
sed -i "s~${OLD16}~${ENCODING}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~${OLD16}~${ENCODING}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
# IN CASE ORIGINAL STATION NEEDS ACCESS # COULD BE REMOVED ? # IN CASE ORIGINAL STATION NEEDS ACCESS # COULD BE REMOVED ?
########### ###########
@ -515,72 +521,104 @@ LP=$(ls /dev/usb/lp* 2>/dev/null)
## NO. GCHANGE+ IS THE MAIN INTERFACE, astrXbian manage ## NO. GCHANGE+ IS THE MAIN INTERFACE, astrXbian manage
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo "$(${MY_PATH}/../tools/face.sh cool)" echo "$(${MY_PATH}/../tools/face.sh cool)"
echo " 'Astronaute' $PSEUDO" echo " 'Astronaut' $PSEUDO"
echo echo
echo "* ZenCard : Public Key and Wallet echo "* ZenCard : Public Key and Wallet
${NID}/ipns/${ASTRONAUTENS}#ZenCard" ${NID}/ipns/${ASTRONAUTENS}#ZenCard"
echo " " echo " "
echo "* AstroID : AstroID with PASS : $PASS" echo "* AstroID : with PASS : $PASS"
echo "${NID}/ipns/${ASTRONAUTENS}#AstroID" echo "${NID}/ipns/${ASTRONAUTENS}#AstroID"
echo echo
echo "* UMap : registration at ${LAT}, ${LON} echo "* UMap : registration at ${LAT}, ${LON}
${myIPFS}${URL}" ${myIPFS}${URL}"
echo echo
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
#~ echo "BIENVENUE"
#~ echo "https://monnaie-libre.fr (ğ1) : $G1PUB"; # sleep 1
#~ echo "
#~ Vos Secrets :
#~ $SALT
#~ $PEPPER
#~ * WALLET : https://cesium.app
#~ * MARKET : https://gchange.fr
#~ U Planet : ${myUPLANET}
#~ Astroport.ONE ★ PKI ★ Ğ1/Ŋ1 ★ DAO ★ Libre ★"; # sleep 1
#~ echo "$(${MY_PATH}/../tools/face.sh friendly) ★ GCHANGE LIBRE MARKET ★"
#~ echo "Use $SALT and $PEPPER to register on https://cesium.app and https://gchange.fr to ★ friends"
echo "" echo ""
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to command.sh # KEEP IT #####################################################################"
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" #####################################################################"
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS" #####################################################################"
### SEND AstroID and ZenCard to EMAIL ### SEND AstroID and ZenCard to EMAIL
( (
echo "<html><body><h1>UPlanet : ZenCard</h1> echo "<html><head>
This is your ZenCard : your public key (your flag)" > ~/.zen/tmp/${MOATS}/ZenCard.txt <style>
echo "<br><a href='${myIPFSGW}${IASTRO}'>ZenCard</a><br><img src='${myIPFSGW}${IASTRO}'\> body {
<br>it contains you Ẑen and TW address font-family: 'Courier New', monospace;
<br></body></html>" >> ~/.zen/tmp/${MOATS}/ZenCard.txt }
pre {
white-space: pre-wrap;
}
</style></head>
<body>
<h1>UPlanet : ZenCard + <a href='${myIPFS}/ipns/${ASTRONAUTENS}'>TW</a></h1>" > ~/.zen/tmp/${MOATS}/ZenCard.html
asciiart="${MY_PATH}/../images/astroport.art"
while IFS= read -r line
do
echo "$line" | sed "s~ ~\&nbsp;~g" >> ~/.zen/tmp/${MOATS}/ZenCard.html
echo "<br>" >> ~/.zen/tmp/${MOATS}/ZenCard.html
done <"$asciiart"
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/ZenCard.txt "ZenCard" echo "<h2>PRINT & SHARE <a href='${myIPFS}/ipns/${ASTRONAUTENS}#ZenCard' title='${G1PUB}'>ZenCard</a></h2>
<img src='${myIPFSGW}${IASTRO}'\><br>
</body></html>" >> ~/.zen/tmp/${MOATS}/ZenCard.html
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/ZenCard.html "ZenCard (${PLAYER}) "
#~ mpack -a -s "✅ UPlanet : ZenCard" -d ~/.zen/tmp/${MOATS}/intro.txt \ #~ mpack -a -s "✅ UPlanet : ZenCard" -d ~/.zen/tmp/${MOATS}/intro.txt \
#~ ~/.zen/tmp/${MOATS}/pseudo.png ${PLAYER} #~ ~/.zen/tmp/${MOATS}/pseudo.png ${PLAYER}
echo "<html><body> #####################################################################"
<h1>UPlanet : AstroID ($PASS)</h1> #####################################################################"
This is your AstroID : your private key (your ring)" > ~/.zen/tmp/${MOATS}/AstroID.txt #####################################################################"
echo "
<br>You own one of the 'Rings of the Lords' on <a href='https://qo-op.com'>Uplanet</a> 0.1° SECTOR : ${SECTOR}
<br>it is forged from SECRET1=$SALT SECRET2=$PEPPER then secured by PIN : $PASS
<br>
<br>Your ASTROPORT STATION is <a href='${myAPI}'>NODE#${IPFSNODEID}</a>
" >> ~/.zen/tmp/${MOATS}/AstroID.txt
echo "<br><a href='${myIPFS}/ipns/${ASTROTW}#AstroID'>AstroID</a><br><img src='${myIPFSGW}${ASTROQR}'\>
<br>
<br>Print it and delete from TW to keep it secure.
</body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.txt
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.txt "AstroID" echo "<html><head>
<style>
body {
font-family: 'Courier New', monospace;
}
pre {
white-space: pre-wrap;
}
</style></head>
<body>
<h1>UPlanet : AstroID ($PASS)</h1>" > ~/.zen/tmp/${MOATS}/AstroID.html
asciiart="${MY_PATH}/../images/logoastro.art"
while IFS= read -r line
do
echo "$line" | sed "s~ ~\&nbsp;~g" >> ~/.zen/tmp/${MOATS}/AstroID.html
echo "<br>" >> ~/.zen/tmp/${MOATS}/AstroID.html
done <"$asciiart"
echo "
<h2> <--> 0.1 SECTOR : <a href='${EARTHCID}/map_render.html?southWestLat=${LAT::-1}&southWestLon=${LON::-1}&deg=0.1'>${SECTOR}</a> <--> </h2>
<br>PRINT & KEEP SAFE <a href='${myIPFS}/ipns/${ASTRONAUTENS}#AstroID'>AstroID<br><img width=120px src='${myIPFSGW}${ASTROQR}'\></a>
<br>SECRET1=$SALT<br>SECRET2=$PEPPER<br>($PASS)<br>
<h3>ASTROPORT : <a href='${myIPFS}/ipns/${IPFSNODEID}'>/ipns/${IPFSNODEID}</a></h3>
<a href='https://qo-op.com'>Uplanet</a>
</body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.html
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.html "AstroID (${PLAYER}) "
#~ mpack -a -s "✅ UPlanet : AstroID ($PASS)" -d ~/.zen/tmp/${MOATS}/intro.txt \ #~ mpack -a -s "✅ UPlanet : AstroID ($PASS)" -d ~/.zen/tmp/${MOATS}/intro.txt \
#~ $HOME/.zen/game/players/${PLAYER}/AstroID.png ${PLAYER} #~ $HOME/.zen/game/players/${PLAYER}/AstroID.png ${PLAYER}
#####################################################################"
#####################################################################"
#####################################################################"
## CLEANING CACHE ## CLEANING CACHE
rm -Rf ~/.zen/tmp/${MOATS} rm -Rf ~/.zen/tmp/${MOATS}
) & ) &
## CHECK .current
[[ ! -d $(readlink ~/.zen/game/players/.current) ]] \
&& rm ~/.zen/game/players/.current 2>/dev/null \
&& ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to command.sh # KEEP IT
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
################################################ LAST LINE REPORT VALUES TO CALLING SCRIPT | tail -n 1
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
exit 0 exit 0

View File

@ -15,6 +15,8 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
# ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/* # ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/*
# _PLAYER.json # _PLAYER.json
# change SWARM memory
### # ~/.zen/tmp/${IPFSNODEID}/WISH/${WISHNAME}/${PLAYER}/*
PLAYER="$1" ## IPNS KEY NAME - G1PUB - PLAYER ... PLAYER="$1" ## IPNS KEY NAME - G1PUB - PLAYER ...
[[ ! ${PLAYER} ]] && echo "Please provide PLAYER publish key" && exit 1 [[ ! ${PLAYER} ]] && echo "Please provide PLAYER publish key" && exit 1
@ -37,9 +39,6 @@ INDEX="$3"
mkdir -p ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu mkdir -p ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu
## PROTOCOL EVOLUTION RUN & REMOVE
rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}
############################### ###############################
####### NEED G1 / ZEN TO RUN ####### NEED G1 / ZEN TO RUN
[[ ${COINS} == "null" || ${COINS} == "" ]] \ [[ ${COINS} == "null" || ${COINS} == "" ]] \
@ -55,9 +54,10 @@ echo "Exporting ${PLAYER} TW [tag[G1Voeu]]"
rm -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json rm -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]' tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] && echo "AUCUN G1VOEU - EXIT -" && exit 0 [[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] \
&& echo "AUCUN G1VOEU - EXIT -" && exit 0
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json | jq -r 'map(select(.wish != null)) | .[].wish' > ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
wishnumbers=$(cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt | wc -l) wishnumbers=$(cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt | wc -l)
echo "${wishnumbers} VOEUX : ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt " echo "${wishnumbers} VOEUX : ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt "
@ -165,7 +165,27 @@ do
&& rm ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json \ && rm ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json \
&& continue && continue
#####################################################
echo "## TIDDLERS FOUND ;) MIAM >>> (◕‿‿◕) <<<" echo "## TIDDLERS FOUND ;) MIAM >>> (◕‿‿◕) <<<"
##############################
## WRITE FRIEND SAME WISH TIDDLERS IN PLAYER TW ########
##############################
## SIGN Tiddlers
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json \
| sed "s~${PLAYER}~~g" \
| sed "s~${APLAYER}~${APLAYER} ${PLAYER}~g" \
> ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.signed.json
## ADD TO TW
tiddlywiki --load ${INDEX} \
--import ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.signed.json "application/json" \
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "newindex.html" "text/plain"
## CHECK IT IS OK
[[ -s ~/.zen/tmp/${MOATS}/newindex.html ]] \
&& cp ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} \
&& rm ~/.zen/tmp/${MOATS}/newindex.html
##############################
echo ">>> G1FRIEND § $myIPFS${IPNS_VOEUNS}/_${APLAYER}.tiddlers.rss.json ${WISHNAME}" echo ">>> G1FRIEND § $myIPFS${IPNS_VOEUNS}/_${APLAYER}.tiddlers.rss.json ${WISHNAME}"
# Extract Origin G1Voeu Tiddler # Extract Origin G1Voeu Tiddler
@ -275,11 +295,12 @@ if [[ ${wishnumbers} -gt 0 ]]; then
--output ~/.zen/tmp/${MOATS} \ --output ~/.zen/tmp/${MOATS} \
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler --render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
TWMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap) TWMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
[[ $TWMAPNS == "null" || $TWMAPNS == "" ]] && TWMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu"
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat) LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
[[ ${LAT} == "null" ]] && LAT="0.00" [[ ${LAT} == "null" || ${LAT} == "" ]] && LAT="0.00"
LAT=$(makecoord $LAT) LAT=$(makecoord $LAT)
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon) LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
[[ ${LON} == "null" ]] && LON="0.00" [[ ${LON} == "null" || ${LON} == "" ]] && LON="0.00"
LON=$(makecoord $LON) LON=$(makecoord $LON)
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${TWMAPNS}" echo "LAT=${LAT}; LON=${LON}; UMAPNS=${TWMAPNS}"
rm ~/.zen/tmp/${MOATS}/GPS.json rm ~/.zen/tmp/${MOATS}/GPS.json
@ -296,7 +317,7 @@ if [[ ${wishnumbers} -gt 0 ]]; then
to ${SECTOR} WALLET ${SECTORG1PUB}" to ${SECTOR} WALLET ${SECTORG1PUB}"
echo "************************************************************" echo "************************************************************"
MYWISHFLUX=$(ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/* | tail -n 1) # ADDING JSONS TO IPFS MYWISHFLUX=$(ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/* | tail -n 1) # ADDING JSONS TO IPFS
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${SECTORG1PUB}" "ipfs://${MYWISHFLUX}" ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${SECTORG1PUB}" "UPLANET:TWISH:$TODATE:/ipfs/${MYWISHFLUX}"
fi fi
################################################ ################################################
################################################ GRATITUDE SENT TO SECTOR ################################################ GRATITUDE SENT TO SECTOR

96
RUNTIME/ZEN.SECTOR.memory.sh Executable file
View File

@ -0,0 +1,96 @@
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
#~ ZEN.SECTOR.memory.sh
#~ Search for last "UPLANET:$1:..." in UPLANETG1PUB wallet history
#~ INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}" TX COMMENT are made during SECTOR.refresh.sh
#~ ~/.zen/tmp/${MOATS}/${SECTOR} <=> "/ipfs/$ipfs_pop"
################################################################################
################################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "${MY_PATH}/../tools/my.sh"
################################################################################
SECTOR="$1"
[[ $SECTOR == "" ]] && echo "MISSING SECTOR ADRESS" && exit 1
MOATS="$2"
## CHECK FOR BAD PARAM
[[ ! -d ~/.zen/tmp/${MOATS-empty}/${SECTOR-empty}/ ]] \
&& echo "BAD ~/.zen/tmp/${MOATS}/${SECTOR}" \
&& exit 1
## STARTING
start=`date +%s`
## CORRESPONDING REGION UKEY
LAT=$(echo ${SECTOR} | cut -d '_' -f 2)
LON=$(echo ${SECTOR} | cut -d '_' -f 3)
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
REGION="_${REGLAT}_${REGLON}"
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${REGION}.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
REGIONG1PUB=$(cat ~/.zen/tmp/${MOATS}/${REGION}.priv | grep "pub:" | cut -d ' ' -f 2)
[[ ! ${REGIONG1PUB} ]] && echo "ERROR generating REGION WALLET" && exit 1
COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
## RETRIEVE FROM REGION UKEY
${MY_PATH}/timeout.sh -t 20 $MY_PATH/jaklis/jaklis.py history -n 300 -p ${REGIONG1PUB} -j \
> ~/.zen/tmp/${MOATS}/${REGION}.g1history.json
## SCAN FOR UPLANET:${SECTOR} in TX
if [[ -s ~/.zen/tmp/${MOATS}/${REGION}.g1history.json ]]; then
intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .comment' ~/.zen/tmp/${MOATS}/${REGION}.g1history.json)
ipfs_pop=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':/ipfs/\K[^"]+')
todate=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':\K[^:]*')
echo "SYNC ~/.zen/tmp/${MOATS}/${SECTOR} <=> /ipfs/$ipfs_pop"
## TODO: SECURITY PATCH : check payment emitter is SECTORG1PUB
if [[ $ipfs_pop ]]; then
echo "from $todate memory slot"
ipfs --timeout 90s get -o ~/.zen/tmp/${MOATS}/${SECTOR} /ipfs/$ipfs_pop
else
echo "WARNING cannot remember... scan for more TX ??!"
fi
else
echo "FATAL ERROR cannot access to REGIONG1PUB history"
exit 1
fi
end=`date +%s`
echo "(${SECTOR}.memory) ${todate} get time : "`expr $end - $start` seconds.
#~ ## EXTRACT WORLDG1PUB HISTORY
#~ ${MY_PATH}/timeout.sh -t 20 $MY_PATH/jaklis/jaklis.py history -n 300 -p ${WORLDG1PUB} -j \
#~ > ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json
#~ ## SCAN FOR UPLANET:${SECTOR} in TX
#~ if [[ -s ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json ]]; then
#~ intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .comment' ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json)
#~ ipfs_pop=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':/ipfs/\K[^"]+')
#~ todate=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':\K[^:]*')
#~ echo "SYNC ~/.zen/tmp/${MOATS}/${SECTOR} <=> /ipfs/$ipfs_pop"
#~ if [[ $ipfs_pop ]]; then
#~ echo "from $todate memory slot"
#~ ipfs --timeout 90s get -o ~/.zen/tmp/${MOATS}/${SECTOR} /ipfs/$ipfs_pop
#~ end=`date +%s`
#~ echo "(${SECTOR}) ${todate} get time : "`expr $end - $start` seconds.
#~ else
#~ echo "WARNING cannot remember... scan for more TX ??!"
#~ fi
#~ else
#~ echo "FATAL ERROR cannot access to WORLDG1PUB history"
#~ exit 1
#~ fi
exit 0

73
RUNTIME/ZEN.UMAP.memory.sh Executable file
View File

@ -0,0 +1,73 @@
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
#~ ZEN.UMAP.memory.sh
#~ Search for last "UPLANET:$1:..." in UPLANETG1PUB wallet history
#~ INTERCOM="UPLANET:${UMAP}:${TODATE}:/ipfs/${IPFSPOP}" TX COMMENT are made during UPLANET.refresh.sh
#~ ~/.zen/tmp/${MOATS}/${UMAP} <=> "/ipfs/$ipfs_pop"
################################################################################
################################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "${MY_PATH}/../tools/my.sh"
################################################################################
UMAP="$1"
[[ $UMAP == "" ]] && echo "MISSING UMAP ADRESS" && exit 1
MOATS="$2"
## CHECK FOR BAD PARAM
[[ ! -d ~/.zen/tmp/${MOATS-empty}/${UMAP-empty}/ ]] \
&& echo "BAD ~/.zen/tmp/${MOATS}/${UMAP}" \
&& exit 1
## STARTING
start=`date +%s`
## CORRESPONDING SECTOR UKEY
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
LON=$(echo ${UMAP} | cut -d '_' -f 3)
## SECTOR COORD
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
SECTOR="_${SECLAT}_${SECLON}"
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
SECTORG1PUB=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}.priv | grep "pub:" | cut -d ' ' -f 2)
[[ ! ${SECTORG1PUB} ]] && echo "ERROR generating SECTOR WALLET" && exit 1
COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${SECTORG1PUB}"
## RETRIEVE FROM SECTOR UKEY
${MY_PATH}/timeout.sh -t 20 $MY_PATH/jaklis/jaklis.py history -n 300 -p ${SECTORG1PUB} -j \
> ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json
## SCAN FOR UPLANET:${UMAP} in TX
if [[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json ]]; then
intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .comment' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json)
ipfs_pop=$(echo "$intercom" | grep -oP 'UPLANET:'"${UMAP}"':/ipfs/\K[^"]+')
todate=$(echo "$intercom" | grep -oP 'UPLANET:'"${UMAP}"':\K[^:]*')
echo "SYNC ~/.zen/tmp/${MOATS}/${UMAP} <=> /ipfs/$ipfs_pop"
## TODO: SECURITY PATCH : check payment emitter is UMAPG1PUB
if [[ $ipfs_pop ]]; then
echo "from $todate memory slot"
ipfs --timeout 90s get -o ~/.zen/tmp/${MOATS}/${UMAP} /ipfs/$ipfs_pop
else
echo "WARNING cannot remember... scan for more TX ??!"
fi
else
echo "FATAL ERROR cannot access to SECTORG1PUB history"
exit 1
fi
end=`date +%s`
echo "(${UMAP}.memory) ${todate} get time : "`expr $end - $start` seconds.
exit 0

3
WWW/FAVICON/Readme.md Normal file
View File

@ -0,0 +1,3 @@
# Images & icons
Add favicon from the web2.0 you wish to copy to WEB3

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 318 B

View File

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 628 B

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 870 B

After

Width:  |  Height:  |  Size: 870 B

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 822 B

After

Width:  |  Height:  |  Size: 822 B

View File

Before

Width:  |  Height:  |  Size: 198 B

After

Width:  |  Height:  |  Size: 198 B

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

13
WWW/Readme.md Normal file
View File

@ -0,0 +1,13 @@
# WWW
This directory contains "ASTROBOT" programs templates
+ some icons and favicons for web scraping services included in UMAP during ```/RUNTIME/UPLANET.refresh.sh```
* example:
```/ASTROBOT/G1CopierYoutube.sh```
```/WWW/CopierYoutube/```
_sandbox
just piece of code... you can use and make official

61
YNOV.md Normal file
View File

@ -0,0 +1,61 @@
# SCRIPT01/BLOCKCHAIN01
## ssh
https://pad.p2p.legal/keygen
## git
```
git add .
git commit -m "mon commentaire"
git push
```
## $() function
```
. ${MY_PATH}/my.sh
```
## Absolute ${MY_PATH}
```
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
```
## ${} variable
```
VAR="value or list of terms"
TAB=("value or list of terms")
echo ${VAR}
echo ${TAB}
echo ${TAB[@]}
# for, while, select, ... done (< read source)
```
## bug des leviers
```
sed -i='' 's/off/on/' ../logic/stationlogic.ben
```
## WSL problème décodage
```
dos2unix
```
# FORMATION WEB3 : https://chaton.g1sms.fr
Ajoutez une "Zen Station" à votre Région.
* Installez Astroport.ONE et suivez la procédure : https://pad.p2p.legal/keygen pour relier votre clef SSH à IPFS et rejoindre la toile de confiance des Dragons, hébergeurs collectifs "LeClaude"

303
_12345.sh
View File

@ -43,30 +43,34 @@ echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom
## MySwarm KEY INIT & SET ## 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)
####################################################### #######################################################
## CREATE MySwarm KEYS ? ## CREATE MySwarm KEYS ?
if [[ ${CHAN} == "" || ${CHAN} == "null" ]]; then if [[ ${CHAN} == "" || ${CHAN} == "null" ]]; 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}
echo "SALT=$SECRET1 && PEPPER=$SECRET2" > ~/.zen/game/myswarm_secret.june 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 ipfs -o ~/.zen/game/myswarm_secret.ipfskey "$SECRET1" "$SECRET2"
${MY_PATH}/tools/keygen -t duniter -o ~/.zen/game/myswarm_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/myswarm_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
######################################################## MAKE IPFS NODE CHAN ID CPU RELATED ######################################################## MAKE IPFS NODE CHAN ID CPU RELATED
## PUBLISH CHANNEL IPNS ## PUBLISH CHANNEL IPNS
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${CHAN}'\" />" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.$(myHostName).html echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${CHAN}'\" />" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.$(myHostName).html
############################################################ ############################################################
############################################################ ############################################################
echo 0 > ~/.zen/tmp/random.sleep echo 0 > ~/.zen/tmp/random.sleep
################### ###################
# NEVER ENDING LOOP # NEVER ENDING LOOP
#### UPLANET FLASHMEM UPDATES
${MY_PATH}/RUNTIME/UPlanetKEYS_refresh.sh &
################################################################### ###################################################################
## WILL SCAN ALL BOOSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS ## WILL SCAN ALL BOOSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS
################################################################### ###################################################################
@ -81,167 +85,175 @@ while true; do
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H ) ## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H )
if [[ ${duree} -gt 3600000 ]]; then if [[ ${duree} -gt 3600000 ]]; then
##################################### ${MY_PATH}/ping_bootstrap.sh
( ##### SUB-PROCESS RUN
exec 2>&1 >> ~/.zen/tmp/_12345.log
start=`date +%s`
# MONITOR pending #### UPLANET FLASHMEM UPDATES
for player in ${PLAYERONE[@]}; do ${MY_PATH}/RUNTIME/UPlanetKEYS_refresh.sh &
g1pub=$(cat ~/.zen/game/players/${player}/.g1pub 2>/dev/null)
# Check Station PLAYER payments PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX")) [[ ${PLAYERONE[@]} == "" ]] && echo "EMPTY ASTROPORT - NO PLAYER - NO PUBLISHING" && continue
for pending in "${PENDINGS[@]}"; do
echo ${pending} #####################################
# TODO TREAT PENDINGS ( ##### 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
#
done
done done
done
############# GET BOOSTRAP SWARM DATA ############# 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 for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | grep -v '^[[:space:]]*$') # remove comments and empty lines
do do
echo "############# RUN LOOP ######### $(date)" ## ex: /ip4/149.102.158.67/tcp/4001/p2p/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u)
ipfsnodeid=${bootnode##*/} 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 ## SWARM CONNECT
ipfs swarm connect ${bootnode} ipfs swarm connect ${bootnode}
## PREPARE TO REFRESH SWARM LOCAL CACHE ## PREPARE TO REFRESH SWARM LOCAL CACHE
mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid} mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid}
mkdir -p ~/.zen/tmp/-${ipfsnodeid} mkdir -p ~/.zen/tmp/-${ipfsnodeid}
## GET bootnode IP ## GET bootnode IP
iptype=$(echo ${bootnode} | cut -d '/' -f 2) iptype=$(echo ${bootnode} | cut -d '/' -f 2)
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}"
ipfs --timeout 720s get -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/ ipfs --timeout 720s get -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/
## SHOW WHAT WE GET ## SHOW WHAT WE GET
echo "__________________________________________________" echo "__________________________________________________"
ls ~/.zen/tmp/-${ipfsnodeid}/ ls ~/.zen/tmp/-${ipfsnodeid}/
echo "__________________________________________________" echo "__________________________________________________"
## LOCAL CACHE SWITCH WITH LATEST ## LOCAL CACHE SWITCH WITH LATEST
if [[ -s ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ]]; then 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 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} rm -Rf ~/.zen/tmp/swarm/${ipfsnodeid}
mv ~/.zen/tmp/-${ipfsnodeid} ~/.zen/tmp/swarm/${ipfsnodeid} mv ~/.zen/tmp/-${ipfsnodeid} ~/.zen/tmp/swarm/${ipfsnodeid}
echo "UPDATED : ~/.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 else
echo "TimeStamp unchanged : $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats)" echo "UNREACHABLE /ipns/${ipfsnodeid}/"
rm -Rf ~/.zen/tmp/-${ipfsnodeid}/
continue continue
fi fi
else
echo "UNREACHABLE /ipns/${ipfsnodeid}/"
continue
fi
## ASK BOOSTRAP NODE TO GET MY MAP UPSYNC ## ASK BOOSTRAP NODE TO GET MY MAP UPSYNC
## - MAKES MY BALISE PRESENT IN BOOSTRAP SWARM KEY - ## - MAKES MY BALISE PRESENT IN BOOSTRAP SWARM KEY -
if [[ $iptype == "ip4" || $iptype == "ip6" ]]; then if [[ $iptype == "ip4" || $iptype == "ip6" ]]; then
############ UPSYNC CALL ############ UPSYNC CALL
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
## LOOKING IF ITS SWARM MAP COULD COMPLETE MINE ## LOOKING IF ITS SWARM MAP COULD COMPLETE MINE
echo "ANALYSING BOOSTRAP SWARM MAP" echo "ANALYSING BOOSTRAP SWARM MAP"
itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json | jq -r '.g1swarm' | rev | cut -d '/' -f 1 | rev ) 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} ipfs ls /ipns/${itipnswarmap} | rev | cut -d ' ' -f 1 | rev | cut -d '/' -f 1 > ~/.zen/tmp/_swarm.${ipfsnodeid}
echo "================ ${nodeip}:12345 ZNODS LIST" echo "================ ${nodeip}:12345 ZNODS LIST"
cat ~/.zen/tmp/_swarm.${ipfsnodeid} cat ~/.zen/tmp/_swarm.${ipfsnodeid}
echo "============================================" echo "============================================"
for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do
# CHECK znod validity # CHECK znod validity
cznod=$(${MY_PATH}/tools/ipfs_to_g1.py ${znod} 2>/dev/null) 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 [[ ${cznod} == "" || ${cznod} == "null" ]] && echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" && continue
if [[ ! -d ~/.zen/tmp/swarm/${znod} ]]; then if [[ ! -d ~/.zen/tmp/swarm/${znod} ]]; then
echo "COMPLETING MY SWARM DATA WITH ZNOD=${znod}" echo "COMPLETING MY SWARM DATA WITH ZNOD=${znod}"
mkdir -p ~/.zen/tmp/swarm/${znod} mkdir -p ~/.zen/tmp/swarm/${znod}
ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${znod} /ipns/${znod} ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${znod} /ipns/${znod}
else else
echo "____________ KNOW ${znod}" echo "____________ KNOW ${znod}"
# TODO : SPEEDUP REFRESH COMPARE _MySwarm.moats AND KEEP LASTEST # TODO : SPEEDUP REFRESH COMPARE _MySwarm.moats AND KEEP LATEST
fi fi
ZMOATS=$(cat ~/.zen/tmp/swarm/${znod}/_MySwarm.moats 2>/dev/null) ZMOATS=$(cat ~/.zen/tmp/swarm/${znod}/_MySwarm.moats 2>/dev/null)
MOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${MOATS}) MOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${MOATS})
ZMOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${ZMOATS}) ZMOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${ZMOATS})
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS)) DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
if [ ${DIFF_SECONDS} -gt $(( 3 * 24 * 60 * 60 )) ]; then if [ ${DIFF_SECONDS} -gt $(( 3 * 24 * 60 * 60 )) ]; then
echo "STATION IS STUCK... FOR TOO LONG... REMOVING FROM SWARM" echo "STATION IS STUCK... FOR TOO LONG... REMOVING ${znod} FROM SWARM"
rm -Rf ~/.zen/tmp/swarm/${znod}/ rm -Rf ~/.zen/tmp/swarm/${znod}/
else else
echo "${DIFF_SECONDS} seconds old" echo "${DIFF_SECONDS} seconds old"
fi fi
done done
echo "============================================" echo "============================================"
fi ## IP4 WAN BOOTSRAP UPSYNC FINISHED fi ## IP4 WAN BOOTSRAP UPSYNC FINISHED
done done
############################################# #############################################
# ERASE EMPTY DIRECTORIES # ERASE EMPTY DIRECTORIES
du -b ~/.zen/tmp/swarm > /tmp/du 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 while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
############### UPDATE MySwarm CHAN ############### UPDATE MySwarm CHAN
ls ~/.zen/tmp/swarm ls ~/.zen/tmp/swarm
SWARMSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | cut -f 1) SWARMSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | cut -f 1)
## SIZE MODIFIED => PUBLISH MySwarm_${IPFSNODEID} ## SIZE MODIFIED => PUBLISH MySwarm_${IPFSNODEID}
[[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize 2>/dev/null) ]] \ [[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize 2>/dev/null) ]] \
&& 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 ===" \ && echo "=== ~/.zen/tmp/swarm EVOLVED : PUBLISHING NEW STATE ===" \
&& ipfs name publish --key "MySwarm_${IPFSNODEID}" /ipfs/${SWARMH} && ipfs name publish --key "MySwarm_${IPFSNODEID}" /ipfs/${SWARMH}
############################################# #############################################
###################################### ######################################
############# RE PUBLISH SELF BALISE ############# RE PUBLISH SELF BALISE
# Clean Empty Directory (inode dependancy BUG ??) # Clean Empty Directory
du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du 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 while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
# Scan local cache # Scan IPFSNODEID cache
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)
## IPFS GET LAST PUBLISHED MAP VERSION ## IPFS GET LAST ONLINE IPFSNODEID MAP
rm -Rf ~/.zen/tmp/_${IPFSNODEID} 2>/dev/null 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 "PUBLISHING 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 /ipfs/${MYCACHE} && ipfs name publish /ipfs/${MYCACHE}
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
# last run recording # last run recording
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom echo "$(date -u)" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.staom
else else
@ -278,6 +290,7 @@ Content-Type: application/json; charset=UTF-8
if [[ $T2WAIT == 0 || $T2WAIT != $(cat ~/.zen/tmp/random.sleep 2>/dev/null) ]]; then if [[ $T2WAIT == 0 || $T2WAIT != $(cat ~/.zen/tmp/random.sleep 2>/dev/null) ]]; then
( (
echo "# AUTO RELAUNCH IN $T2WAIT SECONDS"
echo $T2WAIT > ~/.zen/tmp/random.sleep echo $T2WAIT > ~/.zen/tmp/random.sleep
sleep $T2WAIT && rm ~/.zen/tmp/random.sleep sleep $T2WAIT && rm ~/.zen/tmp/random.sleep
curl -s "http://127.0.0.1:12345" curl -s "http://127.0.0.1:12345"
@ -298,21 +311,21 @@ Content-Type: application/json; charset=UTF-8
arr=(${URL//[=&]/ }) arr=(${URL//[=&]/ })
##################################################################### #####################################################################
### UPSYNC STATION REQUEST /?G1PUB=g1_to_ipfs(G1PUB)&... ### UPSYNC STATION REQUEST :12345/?G1PUB=g1_to_ipfs(G1PUB)&...
### TODO : include CODE HASH & TOKEN .... ### TODO : include CODE HASH & TOKEN ....
##################################################################### #####################################################################
if [[ ${arr[0]} != "" ]]; then if [[ ${arr[0]} != "" ]]; then
## CHECK URL CONSISTENCY ( G1PUB=IPNSPUB is right ? ) ## CHECK URL CONSISTENCY ( do we get G1PUB=IPNSPUB 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]}" && ${ASTROTOIPFS} != "" && ${arr[1]} != "" ]]; then if [[ "${ASTROTOIPFS}" == "${arr[1]}" && ${ASTROTOIPFS} != "" && ${arr[1]} != "" ]]; then
## WE SPEAK THE SAME PROTOCOL ## WE SPEAK THE SAME PROTOCOL
echo "MAJOR TOM TO GROUD CONTROL"
echo "WE HAVE A STATION ${GPUB} CONTACT" echo "WE HAVE A STATION ${GPUB} CONTACT"
( (
mkdir -p ~/.zen/tmp/swarm/${ASTROTOIPFS} mkdir -p ~/.zen/tmp/swarm/${ASTROTOIPFS}
echo "<<< MAJOR TOM TO GROUND CONTROL >>>"
echo "UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}" echo "UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}"
ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ASTROTOIPFS} /ipns/${ASTROTOIPFS} ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ASTROTOIPFS} /ipns/${ASTROTOIPFS}
) & ) &

BIN
adventure/.DS_Store vendored Normal file

Binary file not shown.

1
adventure/BLOCKCHAIN/Me Normal file
View File

@ -0,0 +1 @@

View File

@ -0,0 +1,8 @@
Salut Fredo, Moi c'est Tonio. J'ai 23 ans et je suis gentil.
Je suis en alternance à Thales Alenia Space où j'y développe des contrôles automatique pour la qualité logiciel. J'y développe aussi
des WebApps pour collecter des données d'utilisateurs afin de faire des dashboards.
J'ai beaucoup de passions dans la vida loca, j'aime beaucoup les jeux vidéos comme league of legends, teamfight tactics et minecraft (très
bon jeu), les mangas, la techno (hardcore, acid). J'adore cuisiner, je suis un expert des lasagnes et de la paella.

View File

@ -0,0 +1,13 @@
$VOTRECOMPTE
vboxuser
Quel OS utilisez vous?
windows sur mon ordi perso, j'ai deja utiliser linux dans mon ancien travail
Machine PERSO ou PRO ?
PERSO
Connaissances techniques particulières ?
pandas, palandir foundry, flask, python
Activités PRO actuelle ?
creation de pipeline destiné a la création de knowledgeGraph d'un gros client
Objectif souhaité ?
devenir data-engineer qualifié
Autre ...

View File

@ -0,0 +1,9 @@
me
---
OS: Fedora Workstation 39 x86_64
Connaissances techniques: Python, Bash, Docker, SQL, MongoDB, Power BI
Activité pro: Data analyst
Objectif souhaité: Utiliser la technologie blockchain dans un point de vue Data engineering

View File

@ -0,0 +1,17 @@
me
mon compte ?
Quel OS ?
Windows
Machine perso
Connaissances techniques particulières :
Talend, Digdash, Python, Sql, Machine Learning
Activité pro actuelle
Alternance Developpeuse decisionnelle
Objectif souhaité
Monter en compétences

View File

@ -0,0 +1 @@
Salut, je suis Nathan, 21 ans. Je suis en alternance en tant que Data Analyst où je fais surtout du Power BI. J'adore le foot et le PSG. Je suis à YNOV depuis le B3 et voilà

View File

@ -0,0 +1,8 @@
https://pad.p2p.legal/frederic.renault@ynov.com#
https://pad.p2p.legal/Ynov#MASTERE-1-DATA-ENGINEER-Blockchain
https://pad.p2p.legal/Blockchain#
https://monnaie-libre.fr

View File

@ -0,0 +1,5 @@
unix
Perso
DataEng/BI
DataEng/BI
Créé une blockchain de 0 sans utiliser un repos ou on connait pas le contenue, start from scratch, construire, stocker et requeter, pas de logiciel libre ou quoi que ce soit, blockchain local avec VM a la limite

View File

@ -16,52 +16,79 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}" ME="${0##*/}"
################################################################### ###################################################################
### CREER VOTRE PROPRE VERSION DU JEU ### CREER VOTRE PROPRE VERSION DU JEU
### CHOISIR SCENARIO
################################################################### ### List games/E@MAIL/ directories
if hash uuidgen 2>/dev/null; then ## ADD PROPOSAL ON THE METHOD
homefolder=$(pwd) GAMES_DIR="games"
newplayer=$(uuidgen) GAMES=$(find "$GAMES_DIR" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)
## Copy Player Game Files GAMES=$(ls $MY_PATH/games/)
mkdir -p "$HOME/.zen/adventure/$newplayer" GAMES=($(ls -d $MY_PATH/games/))
if [ -d "$MY_PATH/rooms" ]; then # Above methods are breaking with games names containing SPACE !
cp -r "$MY_PATH/rooms" "$HOME/.zen/adventure/$newplayer/"
# BASH is CREOLE
# this cd *@* METHOD resist to " " space
cd ${MY_PATH}/games \
&& GAMES=(".." *@*) && cd .. \
|| GAMES=".."
## but can still be fooled by file...
## personalisez le prompt
PS3="CHOIX DU GAME : __ "
select game in "${GAMES[@]}"; do
# MY_GAME is the absolute path to selected game files
MY_GAME="$MY_PATH/games/$game"
echo "SELECTION: "${MY_GAME}
diff --recursive --brief ${MY_GAME}/ ${MY_GAME}/../_votre\ jeu/
echo "confirm ?"
read ENTER
if [[ ! $ENTER ]]; then
# test game start protocol compatibility
if [[ -x ${MY_GAME}/rooms/start.sh ]]; then
sleep 1
echo "Charging game..."
sleep 1
break
else
# not compatible
echo "ERROR - not compatible game - SELECT ANOTHER - "
fi
else else
echo "Source directory $MY_PATH/rooms does not exist or is not a directory." echo "CHOOSE NEXT"
fi fi
if [ -d "$MY_PATH/art" ]; then done
cp -r "$MY_PATH/art" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/art does not exist or is not a directory."
fi
if [ -d "$MY_PATH/script" ]; then ########################################
cp -r "$MY_PATH/script" "$HOME/.zen/adventure/$newplayer/" # copy game files to user specific executable space
else # $HOME/.zen/adventure/$newplayer
echo "Source directory $MY_PATH/script does not exist or is not a directory." ########################################
fi homefolder=$(pwd)
newplayer=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10)
## Copy Player Game Files
mkdir -p $HOME/.zen/adventure/$newplayer
cp -r ${MY_GAME}/rooms $HOME/.zen/adventure/$newplayer/rooms
cp -r ${MY_GAME}/art $HOME/.zen/adventure/$newplayer/art
cp -r ${MY_GAME}/script $HOME/.zen/adventure/$newplayer/script
cp -r ${MY_GAME}/logic $HOME/.zen/adventure/$newplayer/logic
if [ -d "$MY_PATH/logic" ]; then
cp -r "$MY_PATH/logic" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/logic does not exist or is not a directory."
fi
fi
################################################################### ###################################################################
echo "Loading..." echo "Loading... $newplayer/rooms/start.sh"
echo echo
sleep 2
################################################################### ###################################################################
if hash uuidgen 2>/dev/null; then cd $HOME/.zen/adventure/$newplayer/rooms
cd $HOME/.zen/adventure/$newplayer/rooms
else
cd rooms
fi
./start.sh ./start.sh
################################################################### ###################################################################
if hash uuidgen 2>/dev/null; then # cleaning game files
cd "$homefolder" cd "$homefolder"
rm -r $HOME/.zen/adventure/$newplayer rm -r $HOME/.zen/adventure/$newplayer
fi
echo "To continue..." echo "To continue..."
exit exit

49
adventure/adventure_multi.sh Executable file
View File

@ -0,0 +1,49 @@
#!/bin/bash
###################################################################
# This Launch script is based on BashVenture.
#
# Remember, kids - sharing is caring! Keep it open. Spread the love.
# - @BenNunney
# Thanks and gratitude to all living creatures and the whole creation.
# - @Fred
# $AGE×365,25×24×60×60×9,807÷299792458 = RELATIVE LIGHT GRAVITY SPEED
###################################################################
# Guide avancé d'écriture des scripts Bash : https://abs.traduc.org/abs-fr/
# GAMESHELL : https://github.com/phyver/GameShell/
###################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
###################################################################
### CREER VOTRE PROPRE VERSION DU JEU
### CHOISIR SCENARIO
###################################################################
if hash uuidgen 2>/dev/null; then
homefolder=$(pwd)
newplayer=$(uuidgen)
## Copy Player Game Files
mkdir -p $HOME/.zen/adventure_multi/$newplayer
cp -r $MY_PATH/games/moussa.thiam@ynov.com/rooms $HOME/.zen/adventure_multi/$newplayer/rooms
cp -r $MY_PATH/games/moussa.thiam@ynov.com/art $HOME/.zen/adventure_multi/$newplayer/art
cp -r $MY_PATH/games/moussa.thiam@ynov.com/script $HOME/.zen/adventure_multi/$newplayer/script
cp -r $MY_PATH/games/moussa.thiam@ynov.com/logic $HOME/.zen/adventure_multi/$newplayer/logic
fi
###################################################################
echo "Loading..."
echo
sleep 4
###################################################################
if hash uuidgen 2>/dev/null; then
cd $HOME/.zen/adventure_multi/$newplayer/rooms
else
cd rooms
fi
./start.sh
###################################################################
if hash uuidgen 2>/dev/null; then
cd "$homefolder"
rm -r $HOME/.zen/adventure_multi/$newplayer
fi
echo "To continue..."
exit

24
adventure/adventuremulti.EA.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
# Chemin vers le répertoire des jeux
games_dir="./games"
# Afficher les jeux disponibles
echo "Jeux disponibles :"
games=$(ls "$games_dir")
# Afficher les jeux dans un menu numéroté
select game in $games; do
if [ ! -z "$game" ]; then
echo "Vous avez choisi $game."
cd "$games_dir" || exit 1
# Assurez-vous que start.sh est exécutable
chmod +x "$game/start.sh"
# Exécuter start.sh du jeu sélectionné
cd ./$game/rooms
./start.sh
break
else
echo "Choix invalide. Veuillez choisir un numéro de jeu valide."
fi
done

34
adventure/adventuremulti.TV.sh Executable file
View File

@ -0,0 +1,34 @@
#!/bin/bash
GAMES_DIR="./games"
if [ ! -d "$GAMES_DIR" ]; then
echo "Le dossier des jeux $GAMES_DIR n'existe pas."
exit 1
fi
GAMES=$(find "$GAMES_DIR" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)
if [ -z "$GAMES" ]; then
echo "Aucun jeu trouvé dans le dossier $GAMES_DIR."
exit 1
fi
echo "Sélectionnez un jeu :"
select GAME in $GAMES; do
if [ -n "$GAME" ]; then
cd "$GAMES_DIR/$GAME/rooms"
START_SCRIPT="./start.sh"
if [ ! -x "$START_SCRIPT" ]; then
echo "Le fichier start.sh pour $GAME n'existe pas ou n'est pas exécutable."
exit 1
fi
echo "Lancement de $GAME..."
"$START_SCRIPT"
break
else
echo "Choix invalide. Veuillez réessayer."
fi
done

View File

@ -0,0 +1,49 @@
#!/bin/bash
###################################################################
# This Launch script is based on BashVenture.
#
# Remember, kids - sharing is caring! Keep it open. Spread the love.
# - @BenNunney
# Thanks and gratitude to all living creatures and the whole creation.
# - @Fred
# $AGE×365,25×24×60×60×9,807÷299792458 = RELATIVE LIGHT GRAVITY SPEED
###################################################################
# Guide avancé d'écriture des scripts Bash : https://abs.traduc.org/abs-fr/
# GAMESHELL : https://github.com/phyver/GameShell/
###################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
###################################################################
### CREER VOTRE PROPRE VERSION DU JEU
### CHOISIR SCENARIO
###################################################################
if hash uuidgen 2>/dev/null; then
homefolder=$(pwd)
newplayer=$(uuidgen)
## Copy Player Game Files
mkdir -p $HOME/.zen/adventure/$newplayer
cp -r $MY_PATH/rooms $HOME/.zen/adventure/$newplayer/rooms
cp -r $MY_PATH/art $HOME/.zen/adventure/$newplayer/art
cp -r $MY_PATH/script $HOME/.zen/adventure/$newplayer/script
cp -r $MY_PATH/logic $HOME/.zen/adventure/$newplayer/logic
fi
###################################################################
echo "Loading..."
echo
sleep 4
###################################################################
if hash uuidgen 2>/dev/null; then
cd $HOME/.zen/adventure/$newplayer/rooms
else
cd rooms
fi
./start.sh
###################################################################
if hash uuidgen 2>/dev/null; then
cd "$homefolder"
rm -r $HOME/.zen/adventure/$newplayer
fi
echo "To continue..."
exit

View File

@ -0,0 +1,21 @@
.';:llllc;'.
.:xXWX;.,ll;.:XWXx;.
;0MMMMMMKl;'',l0MMMMMWO,
,0MMMMMMW0dc;,,;cd0WMMMMMMO.
dWMMMMM0; ;OMMMMMN:
dMMMMMN: .,'. cWMMMMMc
,WMMMMX. .xNMMMMNx,'lONMMMMMMN.
oMMMMM: :WMMMMMMMMMMMMMMMMMMMMc
xMMMMM' xMMMMMMOlllllllloNMMMMo
oMMMMMc ,NMMMMMWd. KMMMM:
.WMMMMN, .l0NWWWKc KMMMX.
cMMMMMWo .. KMMW;
cWMMMMMXo' .lKd. KMK'
.xWMMMMMMN0dlllldONMMMMWOXd
.xNMMMMMMMd''lWMMMMMMXo.
'lONWMW, .XMWXOl.
..,,..,,..

View File

@ -0,0 +1,21 @@
.':cdxxxxxoc;.
.:x00dc;'..:..,:lk00o'
;0Xd, oMo :OXx.
:KK; cMMMl .oNk.
.kN: ;MMMMMc xNl
.0K. ,WMMMMMW; ;Wo
OX. ,WMMMMMMMW; ;Wc
cM; .WMMMMMMMMMW, kX.
OX .NMMMMMMMMMMMW' ,Mc
O0 .NMMMMMMMMMMMMMW' .Mc
ON .XMMMMM0kkkkKMMMMN. ,M:
:M; KMMMMM: .,,;dMMMMMN. kX.
ON. 0MMMMMl ,WMMMMMMMMMMX. ;Wc
.0K. 0MMMMMd 'WMMMMMMMMMMMMX. :Wo
.xN: kMMMMMO .XWWWWNNNNNXXKKKd xNc
;0Xl. .oXx.
,OXx, .cOKd.
;d00xl:,....';coO0Ol'
.;:odddddl:,.

View File

@ -0,0 +1,21 @@
MMMMMMMMMMMMMMMMMMMl xxlxxxd . KNNMNl. 'd0xdddkXKxc. ,dNMMMMMMMMMMMMMMM
MMMMMMMMMMMWKOl:cc' .NNOMXNX .ld; ,lxXMMMMMMMMMMM
MMMMMMMMNo. ,,' .KKWMOXX .. .dWMMMMMMMM
MMMMMMWc cdddc .NNNMXNX .do '' ' .:,:k; l, .KMMMMMMM
MMMMMW, ;ll: .,:ddddd .KKOM0XX .do '0MMXMo . dMMMMMMXOMX0: XMMMMMM
MMMMMo xc:d 'ddddddd .XXWMK00' .do .oo. .dMMMMMMO;lWNMMMMMMWXMMMX: :MMMMMM
MMMMW. .cXKKXWooK0kk0d0Oxxkkx .XXNM0Ok; .:ol:'do,0MMK ... 'XMMMMMMMMMMMMMMMMMWWMMMMx .dkONMM
MKNK. NMWooOWllKKoMNll0MM0x0 xNXXOMKOkKOoM0kkkOkWMMMM0NWWXXMMMMMMMMMMW:WkWk0OKMWdOMNxd0O. .KM
l dkkMMWloOWcc0KoMNccOMMxl0cMMXXWM0KOMMMM0OkkOKMMMMMMMMMMMMMMMMMMMMM0 : o.. 'll.lMMMMMMx .O
;kMMMMMWlckWooKXdMNccOMMxlXk0MMMNMMMMMMMM0OkkOWMMMMMMMMMMMMMMMMMMMMMMo0OWW,xNWKcooMM0NN0Oc
.NMMMMMMNllkWllKKoMNll0MMxlNxOMMMOMMMMMMMM0OkOOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMMNdxMMMk
;WMMMMMMMMMMMNNWWNMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWx.
:MMkxxxWMMMWkxxxxxxxWXxxxxxxxxKWxxxxxxxxxWMMKxxxxxxKMMKxxxxxxxxKMMXxxxxxx0MMkxxxxxxxxNMXxdlloodO:
:N, OMM0. 'N. 0: :Mc XK Nx kl ,N. ;'
x..M0xddddKMMOddddddddKKddddddddxNxdddddddddOWoooooooooN0ddddddddddNdoooooooo0xdddddddddkKdddddddox.
MWKK ,MN. .,XMMMMl ;MMMM' xc 'MMd .Mx ;x .NMO N; dMMMl ,W
MMMK NM:. 'MMMW. xMMMO dW. oMM. lM' .:N, ;MM; ;K oMMMW. dO
MMMMMMMo xXXXXXk .MMMO NMMM; .WWN. 00 XM0 KK 0WWWWMMW OMX kc .WWW. OMMMO Nc
MMMMMMMX dMMM; ;MMMN dMMk N0 .. oMl .MMMMMMMN ... :W. lMM0 XMMM; ;M' .c
MMMMMMMM, .xMMMW. kMMMx .NMM: cMMd. .;0MM. oMMMMMMMMk. .,kMO XMMl :MMMW. kMOKMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

View File

@ -0,0 +1,21 @@
.,'.
.,,;,'',;,'',,.'.
.;;,,.. .........'
.l:. ............cc.
.c, .................:c.
.lc ................... .l;
l' ... .............. c:
:: .. ........... l'
d . .''...... 'o
.o .. ''''''. l
.d . ......''''''' l
o . .,,,,,,'''''' 'l
;: . ',,,,''''', l.
l, .. .,,,''''', oc
.lc .',,,''',. .c,
'l, .,,''',..:c.
';;. .,,',,:;.
':;;'. .;:,,,.
.,,'''''','..;,,.
,:.
.,

View File

@ -0,0 +1,9 @@
_______ _ ______ _
|__ __| | | ____| | |
| | | |__ ___ | |__ _ __ __| |
| | | '_ \ / _ \ | __| | '_ \ / _` |
| | | | | | __/ | |____| | | | (_| |_
|_| |_| |_|\___| |______|_| |_|\__,_(_)

View File

@ -0,0 +1,21 @@
.:dO0NNkNX0ko,.
.:OWMMMMMMc cWMMMMMXd,
'kWMMMMMMMMc cWMMMMMMMNo.
.kMMMMMMMMMMo lMMMMMMMMMWl
.KMMMMMMMMMMd oMMMMMMMMMMx
.XMMMMMMMMMMk dMMMMMMMMMMx
xMMMMMMMMMM0 OMMMMMMMMMM,
.NMMMMMMMMMK. OMMMMMMMMMk
'MMMMMMMMMK. OMMMMMMMMK
.NMMMMMMMK. ,;;;;' OMMMMMMMx
dMMMMMMX. kMKkxxc 0MMMMMM,
.KMMMMN. dMx .KMMMMd
.0MMN. cMx .KMMd
xW' 'W0. ......:Xc
.lXNNWNWMMMMMMMMMMMMMMMMXl
;xXMMMMMMMMMMMMMMWKo'
.,lxkKKKK0kdc'

View File

@ -0,0 +1,10 @@
_____ _ _
/ ____| (_) | |
| (___ _ _ _ __ _ __ _ __ _ ___ ___| |
\___ \| | | | '__| '_ \| '__| / __|/ _ \ |
____) | |_| | | | |_) | | | \__ \ __/_|
|_____/ \__,_|_| | .__/|_| |_|___/\___(_)
| |
|_|

View File

@ -0,0 +1,9 @@
_ _ _ ____ ___ _ ____
/ \ ___| |_ _ __ ___ _ __ ___ _ __| |_ |___ \ / _ \ _ / |___ \
/ _ \ / __| __| '__/ _ \| '_ \ / _ \| '__| __| __) | | | | (_) | | __) |
/ ___ \\__ \ |_| | | (_) | |_) | (_) | | | |_ / __/| |_| | _ | |/ __/
/_/ \_\___/\__|_| \___/| .__/ \___/|_| \__| |_____|\___/ (_) |_|_____|
|_|
--- Un JEu de Forêt Jardin en Monnaie Libre sur IPFS ---

Some files were not shown because too many files have changed in this diff Show More