Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

716 changed files with 3747 additions and 1000345 deletions

BIN
.DS_Store vendored

Binary file not shown.

2
.gitignore vendored
View File

@ -1,5 +1,3 @@
.env .env
*.pyc *.pyc
__pycache__ __pycache__
tiddlywiki.html
tools/jaklis/.env

View File

@ -25,7 +25,7 @@ PORT=45779
mkdir -p ~/.zen/tmp ~/.zen/game/players/localhost # ~/.zen & myos compatibility mkdir -p ~/.zen/tmp ~/.zen/game/players/localhost # ~/.zen & myos compatibility
## CHECK FOR ANY ALREADY RUNNING nc ## CHECK FOR ANY ALREADY RUNNING nc
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 1234' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1) ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 1234' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
[[ $ncrunning ]] && echo "RESTARTING" && kill -9 $ncrunning [[ $ncrunning ]] && echo "RESTARTING" && kill -9 $ncrunning
## NOT RUNNING TWICE ## NOT RUNNING TWICE
@ -49,10 +49,6 @@ function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
############################# #############################
while true; do while true; do
########################################################
## /ipfs/QmQ9MdCEY1aMmpxBqZKcHTLafRxRFeK1Ku1DES1LCPaimA
## TODO: STOP API ACCESS AFTER 20H12
start=`date +%s` start=`date +%s`
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir -p ~/.zen/tmp/${MOATS} mkdir -p ~/.zen/tmp/${MOATS}
@ -71,19 +67,17 @@ while true; do
## CHECK PORT IS FREE & KILL OLD ONE ## CHECK PORT IS FREE & KILL OLD ONE
echo "SEARCHING FOR PORT ${PORT}" echo "SEARCHING FOR PORT ${PORT}"
ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep'
pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1) pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | awk '{gsub(/^ +| +$/,"")} {print $0}' | tail -n 1 | cut -d " " -f 1)
[[ $pidportinuse ]] && kill -9 $pidportinuse && echo "$(date) KILLING LOST $pidportinuse" [[ $pidportinuse ]] && kill -9 $pidportinuse && echo "$(date) KILLING LOST $pidportinuse"
### START MAP STATION 12345 ### START MAP STATION 12345
## CHECK 12345 PORT RUNNING (STATION FoF MAP) ## CHECK 12345 PORT RUNNING (STATION FoF MAP)
maprunning=$(ps auxf --sort=+utime | grep -w '_12345.sh' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1) maprunning=$(ps auxf --sort=+utime | grep -w '_12345.sh' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
[[ ! $maprunning ]] \ [[ ! $maprunning ]] \
&& echo '(ᵔ◡◡ᵔ) MAP LAUNCHING http://'${myIP}':12345 (ᵔ◡◡ᵔ)' \ && echo '(ᵔ◡◡ᵔ) MAP LAUNCHING http://'${myIP}':12345 (ᵔ◡◡ᵔ)' \
&& exec $MY_PATH/_12345.sh & && exec $MY_PATH/_12345.sh &
############### ############### ############### ############### # RESET VARIABLES
# THIS SCRIPT STORES $i PARAMETER IN
# THOSE VARIABLES
CMD="" THAT="" AND="" THIS="" APPNAME="" WHAT="" OBJ="" VAL="" CMD="" THAT="" AND="" THIS="" APPNAME="" WHAT="" OBJ="" VAL=""
############### ############### ############### ############### templates/index.http ############### ############### ############### ############### templates/index.http
@ -92,17 +86,12 @@ 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://127.0.0.1:${PORT}~g" \ sed -i -e "s~http://127.0.0.1:12345~http://${myIP}:${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://127.0.0.1:${PORT}~${myASTROPORT}/${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http \ && sed -i -e "s~http://${myIP}:${PORT}~${myASTROPORT}/${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
&& echo "WAN STATION"
[ -n "$(zIp)" ]\
&& sed -i -e "s~http://127.0.0.1:${PORT}~$(zIp):${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http \
&& echo "COEURBOX STATION"
## 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
@ -110,15 +99,10 @@ while true; do
############################################################################ ############################################################################
## SERVE LANDING REDIRECT PAGE ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http on PORT 1234 (LOOP BLOCKING POINT) ## SERVE LANDING REDIRECT PAGE ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http on PORT 1234 (LOOP BLOCKING POINT)
############################################################################ ############################################################################
############### ############### ############### ############### WAIT FOR
############### ############### ############### ############### 1234 KNOC
REQ=$(cat $HOME/.zen/tmp/${MOATS}/${PORT}.myHOST.http | nc -l -p 1234 -q 1 && rm $HOME/.zen/tmp/${MOATS}/${PORT}.myHOST.http) ## # WAIT FOR 1234 PORT CONTACT REQ=$(cat $HOME/.zen/tmp/${MOATS}/${PORT}.myHOST.http | nc -l -p 1234 -q 1 && rm $HOME/.zen/tmp/${MOATS}/${PORT}.myHOST.http) ## # WAIT FOR 1234 PORT CONTACT
############### ############### ############### ############### KNOC !!
############### ############### ############### ###############
URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2) URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2) HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2)
AGENT=$(echo "$REQ" | grep '^User-Agent:') ### TODO : BAN LESS THAN 3 SEC REQUEST
HOST=$(echo "$HOSTP" | cut -d ':' -f 1) HOST=$(echo "$HOSTP" | cut -d ':' -f 1)
## COOKIE RETRIEVAL ## ## COOKIE RETRIEVAL ##
@ -149,7 +133,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~http://${myASTROPORT}:${PORT}~g" | \ sed "s~http://127.0.0.1:12345~${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,141 +4,78 @@
# 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
########################################################################
## IPFS DAEMON STATUS ## IPFS DAEMON STATUS
LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START ONLY FOR SYNC - LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START ONLY FOR SYNC -
[[ ! $(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')
######################################################################## sudo systemctl restart ipfs && sleep 10
## CHECK IF IPFS NODE IS RESPONDING (ipfs name resolve ?)
########################################################################
ipfs --timeout=30s swarm peers 2>/dev/null > ~/.zen/tmp/ipfs.swarm.peers
[[ ! -s ~/.zen/tmp/ipfs.swarm.peers || $? != 0 ]] \
&& echo "---- SWARM COMMUNICATION BROKEN / RESTARTING IPFS DAEMON ----" \
&& sudo systemctl restart ipfs \
&& sleep 60
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, flashmem 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
mv ~/.zen/tmp/flashmem ~/.zen/flashmem
rm -Rf ~/.zen/tmp/* rm -Rf ~/.zen/tmp/*
mv ~/.zen/swarm ~/.zen/tmp/swarm mv ~/.zen/swarm ~/.zen/tmp/swarm
mv ~/.zen/coucou ~/.zen/tmp/coucou mv ~/.zen/coucou ~/.zen/tmp/coucou
mv ~/.zen/flashmem ~/.zen/tmp/flashmem
########################################################################
### DELAY _12345 ASTROPORT DURING 20H12 UPDATE ###
if [[ "${LOWMODE}" == "" ]]; then
### NOT REFRESHING SWARM
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
MOATS_plus_5_hours=$(date -d "now + 5 hours" +"%Y%m%d%H%M%S%4N")
mkdir ~/.zen/tmp/${IPFSNODEID}
echo ${MOATS_plus_5_hours} > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
echo 9000 > ~/.zen/tmp/random.sleep
else
# REFRESHING SWARM
echo 0 > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
curl -s "http://127.0.0.1:12345"
sleep 300 ## WAIT FOR 5MN
fi
########################################################################
## UPDATE G1BILLETS code ## UPDATE G1BILLETS code
[[ -s ~/.zen/G1BILLET/G1BILLETS.sh ]] \ [[ -s ~/.zen/G1BILLET/G1BILLETS.sh ]] \
&& cd ~/.zen/G1BILLET/ && git pull \ && cd ~/.zen/G1BILLET/ && git pull \
&& rm -Rf ~/.zen/G1BILLET/tmp/* && rm -Rf ~/.zen/G1BILLET/tmp/*
########################################################################
## UPDATE Astroport.ONE code ## UPDATE Astroport.ONE code
cd ${MY_PATH}/ cd ~/.zen/Astroport.ONE/
git pull git pull
######################################################################## ## SOON /ipns/ Address !!!
# 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
######################################################################## # espeak "Players refresh" > /dev/null 2>&1
## PING BOOSTRAP & SWARM NODES # Refresh ~/.zen/game/players/PLAYER
${MY_PATH}/ping_bootstrap.sh > /dev/null 2>&1 ~/.zen/Astroport.ONE/RUNTIME/PLAYER.refresh.sh
######################################################################## # espeak "REFRESHING UPLANET" > /dev/null 2>&1
######################################################### UPLANET ###### ~/.zen/Astroport.ONE/RUNTIME/UPLANET.refresh.sh
#####################################
# GeoKeys UMAP / SECTOR / REGION ...
#####################################
${MY_PATH}/RUNTIME/UPLANET.refresh.sh
#####################################
#####################################
# Players TW analyse & ASTROBOT run
#####################################
${MY_PATH}/RUNTIME/PLAYER.refresh.sh
#####################################
#####################################
# Node refreshing
#####################################
${MY_PATH}/RUNTIME/NODE.refresh.sh
#####################################
########################################################################
########################################################################
######################################################################## # espeak "REFRESHING NODE" > /dev/null 2>&1
## REMOVE TMP BUT KEEP swarm, flashmem and coucou ~/.zen/Astroport.ONE/RUNTIME/NODE.refresh.sh
mv ~/.zen/tmp/${IPFSNODEID} ~/.zen/${IPFSNODEID}
mv ~/.zen/tmp/swarm ~/.zen/swarm
mv ~/.zen/tmp/coucou ~/.zen/coucou
mv ~/.zen/tmp/flashmem ~/.zen/flashmem
rm -Rf ~/.zen/tmp/*
mv ~/.zen/${IPFSNODEID} ~/.zen/tmp/${IPFSNODEID}
mv ~/.zen/swarm ~/.zen/tmp/swarm
mv ~/.zen/coucou ~/.zen/tmp/coucou
mv ~/.zen/flashmem ~/.zen/tmp/flashmem
########################################################################
################################# updating ipfs bootstrap ## if [[ ! $isLAN ]]; then
## 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
[[ -s ${HOME}/.zen/game/MY_boostrap_nodes.txt ]] \
&& STRAPFILE="${HOME}/.zen/game/MY_boostrap_nodes.txt" \
|| STRAPFILE="${MY_PATH}/A_boostrap_nodes.txt"
for bootnode in $(cat ${STRAPFILE} | grep -Ev "#") # remove comments
do do
ipfsnodeid=${bootnode##*/} ipfsnodeid=${bootnode##*/}
ipfs bootstrap add $bootnode ipfs bootstrap add $bootnode
done done
## fi
########################################################################
######################################################################## ########################################################################
end=`date +%s` end=`date +%s`
dur=`expr $end - $start` dur=`expr $end - $start`
@ -148,23 +85,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
## SYSTEMD OR NOT SYSTEMD ## OPEN API ENGINE
if [[ ! -f /etc/systemd/system/astroport.service ]]; then if [[ ! -f /etc/systemd/system/astroport.service ]]; then
${MY_PATH}/12345.sh > ~/.zen/tmp/12345.log & ~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log &
PID=$! PID=$!
echo $PID > ~/.zen/.pid echo $PID > ~/.zen/.pid
else else
@ -174,24 +111,16 @@ else
fi fi
echo "IPFS DAEMON LEVEL" echo "IPFS LOW MODE ?"
######### 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 "STOP IPFS $LOWMODE" \ && echo "ON. $LOWMODE" \
&& sleep 3600 \ && sleep 360 \
&& sudo systemctl stop ipfs \ && sudo systemctl stop ipfs \
&& exit 0 && exit 0
echo "HIGH. RESTART IPFS" echo "OFF. 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

View File

@ -1,44 +0,0 @@
# Pourquoi ?
## La Monnaie est Buggée !
Dans l'écosystème actuel, la notion de monnaie est sujette à des défauts.
La distinction entre une unité non libre et une monnaie libre révèle des imperfections
dans les échanges économiques.
## Blockchain = Registre Global
La blockchain, en tant que registre global, offre une opportunité de remédier aux lacunes du
système financier actuel. Elle peut être envisagée comme une carte d'identité pour le Web3,
offrant transparence et traçabilité.
## IA Apprentissage et Contrôle
La gestion de l'intelligence artificielle est cruciale. La comparaison entre un ChatGPT privé
et Mistral libre souligne la nécessité d'un contrôle plus étendu.
"The PILE", source d'information, demande une cohérence accrue pour garantir une
diffusion fiable des connaissances.
## Loi de Moore vs Industrie
La cadence effrénée de la Loi de Moore, avec une progression tous les 1,5 ans,
se heurte à la réalité industrielle où les cycles d'investissement s'étendent de 3 à 11 ans.
Les rendements sur investissements sont souvent compromis, créant des opportunités pour de nouveaux acteurs.
## Web2.0 Épileptique
Les soubresauts du Web2.0, caractérisés par l'instabilité des données et de leur localisation,
soulignent la nécessité d'une approche plus stable et cohérente.
# Comment ?
## UPlanet / Astroport.ONE
La solution réside dans UPlanet et Astroport.ONE, des initiatives axées sur la décentralisation et la régulation.
En adoptant une blockchain multi-grille sphérique et des clés géospatiales, ces plateformes créent un réseau de :
* stations index (300€)
* stations IA avec stockage + GPU (2000€)
Ces stations, en synergie, visent à résoudre les problèmes évoqués, offrant une alternative innovante
pour les investisseurs souhaitant participer à la transformation du paysage technologique.

View File

@ -26,8 +26,6 @@ MOATS=$9
COOKIE=$10" COOKIE=$10"
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"
[[ "$PORT" == "" ]] && echo "$MY_PATH/AMZQR.sh '0' 'la chaine a mettre en QRCODE' 'et' 'TV'" && exit 1
HTTPCORS="HTTP/1.1 200 OK HTTPCORS="HTTP/1.1 200 OK
Access-Control-Allow-Origin: ${myASTROPORT} Access-Control-Allow-Origin: ${myASTROPORT}
Access-Control-Allow-Credentials: true Access-Control-Allow-Credentials: true
@ -39,8 +37,6 @@ Content-Type: text/html; charset=UTF-8
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
[[ ${MOATS} == "" ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir -p ~/.zen/tmp/${MOATS}/ mkdir -p ~/.zen/tmp/${MOATS}/
################################################## ##################################################
@ -48,12 +44,10 @@ USTRING=$(urldecode "${THAT}")
IMAGE="${THIS}" IMAGE="${THIS}"
[[ ! -s ${MY_PATH}/../images/${IMAGE}.png || ${USTRING} == "" ]] \ [[ ! -s ${MY_PATH}/../images/${IMAGE}.png || ${USTRING} == "" ]] \
&& echo "UNKNOW IMAGE ${IMAGE}" \ && exho "UNKNOW IMAGE ${IMAGE}" \
&& ( [[ $PORT != "0" ]] && echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \ && (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 1 && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 1
echo amzqr "${USTRING}" -l H -c -p ${MY_PATH}/../images/${IMAGE}.png -n ${MOATS}.png -d ~/.zen/tmp/${MOATS}/
## RUN AMZQR ## RUN AMZQR
amzqr "${USTRING}" -l H -c -p ${MY_PATH}/../images/${IMAGE}.png -n ${MOATS}.png -d ~/.zen/tmp/${MOATS}/ amzqr "${USTRING}" -l H -c -p ${MY_PATH}/../images/${IMAGE}.png -n ${MOATS}.png -d ~/.zen/tmp/${MOATS}/
IPFSMG=$(ipfs add -q ~/.zen/tmp/${MOATS}/${MOATS}.png | tail -n 1) IPFSMG=$(ipfs add -q ~/.zen/tmp/${MOATS}/${MOATS}.png | tail -n 1)
@ -61,19 +55,7 @@ echo "${myIPFS}/ipfs/${IPFSMG}"
echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}/ipfs/${IPFSMG}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}/ipfs/${IPFSMG}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
if [[ $PORT == "0" ]]; then
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open ${myIPFS}/ipfs/${IPFSMG}
LP=$(ls /dev/usb/lp* 2>/dev/null | head -n1)
if [[ $LP ]]; then
echo "IMPRESSION QRCODE"
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/${MOATS}/${MOATS}.png > ~/.zen/tmp/${MOATS}/toprint.bin 2>/dev/null
sudo brother_ql_print ~/.zen/tmp/${MOATS}/toprint.bin $LP
fi
fi
rm -Rf ~/.zen/tmp/${MOATS}/ rm -Rf ~/.zen/tmp/${MOATS}/
end=`date +%s` end=`date +%s`
echo "(AMZQR) Operation time was "`expr $end - $start` seconds. echo "(AMZQR) Operation time was "`expr $end - $start` seconds.
echo "/ipfs/${IPFSMG}"
exit 0 exit 0

View File

@ -1,79 +0,0 @@
################################################################################
# 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,40 +87,31 @@ fi
############################################################################### ###############################################################################
if [[ ${QRCODE} == "station" ]]; then if [[ ${QRCODE} == "station" ]]; then
## CHECK FOR ANY ALREADY RUNNING make_image_ipfs_index_carousel #~ # Keep 2nd try of the day
carouselrunning=$(ps axf --sort=+utime | grep -w 'make_image_ipfs_index_carousel' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1) #~ [[ ! -s ~/.zen/tmp/_ISTATION ]] \
#~ && 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
if [[ $carouselrunning ]]; then
ISTATION="/ipfs/QmVTHH8sTXEqRBsvcKo5jDo16rvp7Q7ERyHZP5vmWUxeS6" ## G1WorldCrafting.jpg
else
## GENERATE PLAYER G1 TO ZEN ACCOUNTING ## GENERATE PLAYER G1 TO ZEN ACCOUNTING
ISTATION=$($MY_PATH/../tools/make_image_ipfs_index_carousel.sh | tail -n 1) ISTATION=$($MY_PATH/../tools/make_image_ipfs_index_carousel.sh | tail -n 1)
echo $ISTATION > ~/.zen/tmp/ISTATION ## STATION G1WALLET CAROUSEL 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)
## LOG IPFSNODEID : IPCity + Wheater + more... sed "s~_STATION_~${myIPFSW}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
${MY_PATH}/../tools/IPFSNODEID.weather.sh > ~/.zen/tmp/${IPFSNODEID}/weather.txt [[ ! $isLAN ]] && sed -i "s~MENU~HOSTING~g" ~/.zen/tmp/${MOATS}/index.htm
echo "<meta http-equiv=\"refresh\" content=\"0; url='${ISTATION}'\" />" > ~/.zen/tmp/${IPFSNODEID}/_index.html sed -i "s~http://127.0.0.1:8080~${myIPFSW}~g" ~/.zen/tmp/${MOATS}/index.htm
## SHOW ZenStation FRONT
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://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 sed -i "s~http://astroport.localhost:1234~${myASTROPORT}~g" ~/.zen/tmp/${MOATS}/index.htm
WSTATION="/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/index.htm)" WSTATION="/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/index.htm)"
echo $WSTATION > ~/.zen/tmp/WSTATION echo $WSTATION > ~/.zen/tmp/WSTATION
end=`date +%s` end=`date +%s`
echo "NEW WSTATION ${myIPFS}${WSTATION} Execution time was "`expr $end - $start` seconds. echo "NEW WSTATION ${myIPFSW}${WSTATION} Execution time was "`expr $end - $start` seconds.
## SEND TO WSTATION PAGE
##302 REDIRECT TO WSTATION IPFS sed "s~_TWLINK_~${myIPFSW}${WSTATION}/~g" ${MY_PATH}/../templates/index.302 > ~/.zen/tmp/${MOATS}/index.redirect
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
( (
@ -166,7 +157,7 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
echo "COINScheck.sh ${G1PUB}" echo "COINScheck.sh ${G1PUB}"
${MY_PATH}/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${G1PUB}.curcoin ${MY_PATH}/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${G1PUB}.curcoin
CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | xargs | cut -d '.' -f 1) CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | cut -d '.' -f 1)
CURZEN=$(echo "($CURCOINS - 1) * 10" | bc | cut -d '.' -f 1) CURZEN=$(echo "($CURCOINS - 1) * 10" | bc | cut -d '.' -f 1)
echo "= $CURCOINS G1 / $CURZEN ZEN" echo "= $CURCOINS G1 / $CURZEN ZEN"
@ -184,12 +175,12 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
if [[ ${APPNAME} == "pay" ]]; then if [[ ${APPNAME} == "pay" ]]; then
if [[ ${WHAT} != "" && ${G1DEST} != "" && ${CURCOINS} != "null" && ${CURCOINS} != "" && $(echo "${CURCOINS} > ${WHAT}" | bc) -eq 1 ]]; then if [[ ${WHAT} != "" && ${G1DEST} != "" && ${CURCOINS} != "null" && ${CURCOINS} != "" && ${CURCOINS} > ${WHAT} ]]; then
## COMMAND PAYMENT MAX : 999.99 ## COMMAND PAYMENT MAX : 999.99
if [[ ${WHAT} =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then if [[ ${WHAT} =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then
${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/secret.key "${WHAT}" "${G1DEST}" "ZEN:${MOATS}" ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/secret.key "${WHAT}" "${G1DEST}" "ZEN:${MOATS}"
echo "<h1>OK</h1><h2>PAYMENT SENT</h2>ZEN:${MOATS}" >> ~/.zen/tmp/${MOATS}/disco echo "<h1>OK</h1><h2>PAYMENT PROCESSING</h2>ZEN:${MOATS}" >> ~/.zen/tmp/${MOATS}/disco
else else
@ -203,6 +194,11 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
fi fi
else
echo "<h2>ERROR - INVALID PIN - ERROR</h2>" >> ~/.zen/tmp/${MOATS}/disco
cat ~/.zen/tmp/${MOATS}/disco.aes >> ~/.zen/tmp/${MOATS}/disco
fi fi
if [[ ${APPNAME} == "flipper" ]]; then if [[ ${APPNAME} == "flipper" ]]; then
@ -438,8 +434,8 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
## REVEAL THE KEYS ## REVEAL THE KEYS
# G1VOEU & IPNS KEY # G1VOEU & IPNS KEY
[[ ${player} != "" ]] \ [[ ${player} != "" ]] \
&& ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/playersecret.ipfs "${player}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}" \ && ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/playersecret.ipfs "${player}" "G1${VoeuName} ${PLAYERORIG1}" \
&& ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/player.secret.key "${player}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}" \ && ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/player.secret.key "${player}" "G1${VoeuName} ${PLAYERORIG1}" \
&& G1VOEUPUB=$(cat ~/.zen/tmp/${MOATS}/player.secret.key | grep 'pub:' | cut -d ' ' -f 2) && G1VOEUPUB=$(cat ~/.zen/tmp/${MOATS}/player.secret.key | grep 'pub:' | cut -d ' ' -f 2)
# INSTALL orikeyname IPNS KEY ON NODE # INSTALL orikeyname IPNS KEY ON NODE
IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 ) IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 )
@ -447,9 +443,9 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
## IS IT A TRANSFER ? MILGRAM G1MISSIVE ## IS IT A TRANSFER ? MILGRAM G1MISSIVE
[[ ${DESTMAIL} != "" ]] \ [[ ${DESTMAIL} != "" ]] \
&& echo "MILGRAM :: ${player} :: ${DESTMAIL}" && echo "MILGRAM :: ${player} :: ${DESTMAIL}" \
#~ && DESTG1=$(${MY_PATH}/../tools/keygen "${DESTMAIL}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}") \ #~ && DESTG1=$(${MY_PATH}/../tools/keygen "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}") \
#~ && ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/destsecret.ipfs "${DESTMAIL}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}" #~ && ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/destsecret.ipfs "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}"
# INSTALL orikeyname IPNS KEY ON NODE # INSTALL orikeyname IPNS KEY ON NODE
IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 ) IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 )
@ -480,7 +476,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
if [[ ! -s ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt ]]; then if [[ ! -s ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt ]]; then
HELLO="@PASS :: G1BILLET+ :: ${G1VOEUPUB} :: $(date) :: ${player} :: ${PLAYERORIG1}" HELLO="@PASS :: G1BILLET+ :: ${G1VOEUPUB} :: $(date) :: ${player} :: ${PLAYERORIG1}"
echo "${HELLO}" echo "${HELLO}"
avanla=$(ps axf --sort=+utime | grep -w 'ipfs cat /ipns/$G1VOEUNS' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1) avanla=$(ps axf --sort=+utime | grep -w 'ipfs cat /ipns/$G1VOEUNS' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
[[ ! $avanla ]] \ [[ ! $avanla ]] \
&& ( ipfs cat /ipns/$G1VOEUNS > ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt \ && ( ipfs cat /ipns/$G1VOEUNS > ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt \
&& [[ ! -s ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt ]] \ && [[ ! -s ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt ]] \
@ -490,7 +486,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<bipfsr>" >> ~/.zen/tmp/${MOATS}/disco echo "<br>PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS<br>" >> ~/.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}
@ -516,8 +512,8 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
echo "export ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${DESTMAIL} ASTROFEED=${FEEDNS}" echo "export ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${DESTMAIL} ASTROFEED=${FEEDNS}"
# Create Next G1 & IPNS KEY # Create Next G1 & IPNS KEY
DESTG1PUB=$(${MY_PATH}/../tools/keygen"${DESTMAIL}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}") DESTG1PUB=$(${MY_PATH}/../tools/keygen"${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}")
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/newsecret.ipfs "${DESTMAIL}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/newsecret.ipfs "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}"
orikeyname="${DESTMAIL}_${VoeuName}" orikeyname="${DESTMAIL}_${VoeuName}"
# INSTALL NEXT IPNS KEY ON NODE # INSTALL NEXT IPNS KEY ON NODE
@ -578,7 +574,7 @@ if [[ ${QRCODE:0:2} == "G1" && ${AND} == "tw" ]]; then
VOEU=${QRCODE:2} ## "G1G1Voeu" => "G1Voeu" VOEU=${QRCODE:2} ## "G1G1Voeu" => "G1Voeu"
# THIS is TW IPNS # THIS is TW IPNS
ASTROPATH=$(grep -r ${THIS} ~/.zen/game/players/*/ipfs/moa | tail -n 1 | xargs | cut -d ':' -f 1 | rev | cut -d '/' -f 2- | rev 2>/dev/null) ASTROPATH=$(grep -r ${THIS} ~/.zen/game/players/*/ipfs/moa | tail -n 1 | cut -d ':' -f 1 | rev | cut -d '/' -f 2- | rev 2>/dev/null)
echo "ASTROPATH=${ASTROPATH}" echo "ASTROPATH=${ASTROPATH}"
INDEX=${ASTROPATH}/index.html INDEX=${ASTROPATH}/index.html
@ -608,7 +604,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 'map(select(.wish != null)) | .[].wish' > ~/.zen/tmp/${MOATS}.g1wishes.txt cat ~/.zen/tmp/${MOATS}.g1voeu.json | jq -r '.[].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
@ -645,7 +641,6 @@ 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
################################################################################ ################################################################################
################################################################################ ################################################################################
@ -655,7 +650,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 "GLUPS /ipns/${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \ && echo "PRULS /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 )
@ -663,7 +658,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 "GLUPS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \ && echo "PRULS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
&& exit 1 && exit 1
################################################################################ ################################################################################
echo "############################################################################" echo "############################################################################"
@ -678,23 +673,29 @@ 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="<h1>$VISITORCOINS G1</h1>" DISPLAY="$VISITORCOINS G1"
## WALLET VIERGE ## WALLET VIERGE
########################################### ###########################################
if [[ $VISITORCOINS == "null" || ${ZEN} -lt 10 ]]; then if [[ $VISITORCOINS == "null" || ${ZEN} -lt 10 ]]; then
DISPLAY="$DISPLAY echo "!! LOW ZEN WALLET ZEN=${ZEN}"
<h2>!! LOW ZEN WALLET ZEN=${ZEN}<h2>"
DISPLAY="$DISPLAY<h3>LOW ZEN WARNING</h3> echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}/index.redirect
PLEASE CHARGE... ${ZEN} ZEN" echo "<h1>LOW ZEN WARNING</h1>
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 ${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 "$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 "BLURP ${DISPLAY} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} echo "BLURP ${DISPLAY} $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
) & ) &

View File

@ -26,11 +26,7 @@ Content-Type: text/html; charset=UTF-8
" "
mkdir -p ~/.zen/tmp/${MOATS}/ mkdir -p ~/.zen/tmp/${MOATS}/
[[ ! $APPNAME || $SALT == "pepper" ]] \ [[ ! $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
&& echo "NO APPNAME - BAD APP - CONTINUE" \
&& (echo "$HTTPCORS ERROR - BAD CREDENTIALS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& exit 1
############################################################################ ############################################################################
# WRITING API # SALT # PEPPER # MAKING THE KEY EXIST ######### # WRITING API # SALT # PEPPER # MAKING THE KEY EXIST #########
################### KEY GEN ################################### ################### KEY GEN ###################################
@ -172,16 +168,17 @@ if [[ "$APPNAME" == "g1pub" ]]; then
#~ echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt #~ 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}/../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 ${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)" echo "Le code de votre ASTROID est ${PASS}, scannez-le sur La♥Box ẐenStation (demo : https://astroport.copylaradio.com)" > ~/.zen/tmp/${MOATS}/intro.txt
## :: TRICK :: EXECUTE LAST VISA.new.sh output LINE : export above VARs
## EXECUTE LAST LINE
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt | tail -n 1) $(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt | tail -n 1)
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS" echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
BILLETNAME=$(echo "$SALT" | sed 's/ /_/g') BILLETNAME=$(echo "$SALT" | sed 's/ /_/g')
#~ mpack -a -s "La♥Box : ASTROID :+: TW :+: " -d ~/.zen/tmp/${MOATS}/intro.txt \ mpack -a -s "La♥Box : ASTROID :+: TW :+: " -d ~/.zen/tmp/${MOATS}/intro.txt \
#~ ~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg ${PLAYER} ~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg ${PLAYER}
end=`date +%s` end=`date +%s`
dur=`expr $end - $startvisa` dur=`expr $end - $startvisa`
@ -242,8 +239,8 @@ if [[ "$APPNAME" == "testcraft" ]]; then
## 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 --progress=false /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 --progress=false /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
@ -500,10 +497,7 @@ fi
## END RESPONDING ## END RESPONDING
[[ ! -s ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect ]] \ [[ ! -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
&& 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
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > ~/.zen/tmp/${MOATS}/${MOATS}.official.swallow & cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > ~/.zen/tmp/${MOATS}/${MOATS}.official.swallow &
echo "HTTP 1.1 PROTOCOL DOCUMENT READY" echo "HTTP 1.1 PROTOCOL DOCUMENT READY"
echo "${MOATS} -----> PAGE AVAILABLE -----> http://${myHOST}:${PORT}" echo "${MOATS} -----> PAGE AVAILABLE -----> http://${myHOST}:${PORT}"

View File

@ -39,7 +39,7 @@ Content-Type: text/html; charset=UTF-8
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
## CHECK FOR NOT PUBLISHING ALREADY (AVOID IPNS CRUSH) ## CHECK FOR NOT PUBLISHING ALREADY (AVOID IPNS CRUSH)
alreadypublishing=$(ps axf --sort=+utime | grep -w 'ipfs name publish --key=' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1) alreadypublishing=$(ps axf --sort=+utime | grep -w 'ipfs name publish --key=' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
if [[ ${alreadypublishing} ]]; then if [[ ${alreadypublishing} ]]; then
echo "$HTTPCORS ERROR - (╥☁╥ ) - IPFS ALREADY PUBLISHING RETRY LATER" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & echo "$HTTPCORS ERROR - (╥☁╥ ) - IPFS ALREADY PUBLISHING RETRY LATER" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
exit 1 exit 1
@ -54,26 +54,71 @@ PLAYER=${THAT}
[[ ${AND} != "zlat" ]] \ [[ ${AND} != "zlat" ]] \
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0 && (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
SALT=${THIS}
[[ ${SALT} == "0" ]] && SALT="0.00"
input_number=${SALT}
if [[ ! $input_number =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then
(echo "$HTTPCORS ERROR - BAD LAT $LAT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
else
# If input_number has one decimal digit, add a trailing zero
if [[ ${input_number} =~ ^-?[0-9]+\.[0-9]$ ]]; then
input_number="${input_number}0"
elif [[ ${input_number} =~ ^-?[0-9]+$ ]]; then
# If input_number is an integer, add ".00"
input_number="${input_number}.00"
fi
# Convert input_number to LAT with two decimal digits
LAT="${input_number}"
fi
PEPPER=${WHAT}
[[ ${APPNAME} != "zlon" ]] \ [[ ${APPNAME} != "zlon" ]] \
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0 && (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
ZLAT=${THIS} [[ ${PEPPER} == "0" ]] && PEPPER="0.00"
ZLON=${WHAT} input_number=${PEPPER}
LAT=$(makecoord ${ZLAT}) if [[ ! $input_number =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then
LON=$(makecoord ${ZLON}) (echo "$HTTPCORS ERROR - BAD LON $LON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
else
# If input_number has one decimal digit, add a trailing zero
if [[ ${input_number} =~ ^-?[0-9]+\.[0-9]$ ]]; then
input_number="${input_number}0"
elif [[ ${input_number} =~ ^-?[0-9]+$ ]]; then
# If input_number is an integer, add ".00"
input_number="${input_number}.00"
fi
#~ ## RECEIVED VAL ## CAN BE USED TO SELECT TW TEMPLATE # Convert input_number to LAT with two decimal digits
VAL="$(echo ${VAL} | detox --inline)" ## DETOX VAL LON="${input_number}"
fi
# NOT RECEIVING PASS. WAS USED TO SECURE PLAYER UMAP KEY... (24s sectors strategy apply now)
#~ PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7)
#~ ## RECEIVED PASS ## CAN BE USED TO SELECT TW TEMPLATE
#~ VAL="$(echo ${VAL} | detox --inline)" ## DETOX VAL
#~ [[ ${OBJ} == "g1pub" && ${VAL} != "" ]] && PASS=${VAL}
#~ echo "PASS for Umap $LAT $LON is $PASS"
############################################ ############################################
#### TODO USE THIS PARAMETER TO SELECT TW TEMPLATE #### TODO USE THIS PARAMETER TO SELECT TW TEMPLATE
### CHECK PLAYER EMAIL ### CHECK PLAYER EMAIL
EMAIL="${PLAYER,,}" # lowercase EMAIL="${PLAYER,,}" # lowercase
[[ ! ${EMAIL} ]] \ [[ ! ${EMAIL} ]] && (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR UPLANET LANDING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
&& (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR UPLANET LANDING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. \ ################################ START WORKING WITH KEYS
&& exit 0 ### SESSION "$LAT" "$LON" KEY
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/_ipns.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
UMAPNS=$(ipfs key import ${MOATS} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/_ipns.priv)
ipfs key rm ${MOATS} && echo "$LAT" "$LON" "IPNS key identified"
###
REDIR="${myIPFS}/ipns/${UMAPNS}"
echo "Umap : $REDIR"
## CHECK WHAT IS EMAIL ## CHECK WHAT IS EMAIL
if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
@ -84,59 +129,65 @@ if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more $($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}" echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
## YES = OPEN TW
[[ ${ASTROTW} ]] \ [[ ${ASTROTW} ]] \
&& (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}${ASTROTW}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \ && (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${ASTROTW}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& exit 0 && exit 0
else else
echo "BAD EMAIL $EMAIL $LAT $LON" echo "BAD EMAIL $EMAIL $LAT $LON"
### GET ENV FOR "$LAT" "$LON"
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
REDIR="${myIPFS}${UMAPIPNS}"
echo "Umap : $REDIR"
if [[ ${UMAPIPNS} != "/ipns/" ]]; then
echo "$HTTPCORS <html>BAD EMAIL $EMAIL $LAT $LON <a href=${REDIR}> - OPEN UMAP LINK - </a></html>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & echo "$HTTPCORS <html>BAD EMAIL $EMAIL $LAT $LON <a href=${REDIR}> - OPEN UMAP LINK - </a></html>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
else
echo "$HTTPCORS <html>BAD EMAIL $EMAIL ($LAT $LON)</html>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
fi
exit 0 exit 0
fi fi
# UPLANET ############################################# # UPLANET #############################################
## OCCUPY COMMON CRYPTO KEY CYBERSPACE ## OCCUPY COMMON CRYPTO KEY CYBERSPACE
## LAT="$LAT" LON="$LON" ## SALT="$LAT" PEPPER="$LON"
###################################################### ######################################################
echo "UMAP = $LAT:$LON" echo "UMAP = $LAT:$LON"
echo "# GET UMAP ENV" echo "# CALCULATING UMAP G1PUB WALLET"
${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/_cesium.key "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
G1PUB=$(cat ~/.zen/tmp/${MOATS}/_cesium.key | grep 'pub:' | cut -d ' ' -f 2)
[[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
echo "UMAP G1PUB : ${G1PUB}"
echo "# CALCULATING UMAP IPNS ADDRESS"
mkdir -p ~/.zen/tmp/${MOATS}/${G1PUB}
mkdir -p ~/.zen/tmp/${MOATS}/${LAT}_${LON}
ipfs key rm ${G1PUB} > /dev/null 2>&1
rm ~/.zen/tmp/${MOATS}/_ipns.priv 2>/dev/null
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/_ipns.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/_ipns.priv )
[[ ! ${UMAPNS} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - UMAPNS COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
echo "UMAPNS : ${myIPFS}/ipns/${UMAPNS}"
## ALL TEST PASSED -> CREATE ZENCARD + ASTROID ## ALL TEST PASSED -> CREATE ZENCARD + ASTROID
#~ choose salt pepper with variable words count NPASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-9) ## NOUVEAU PASS 8 CHIFFRES
PPASS=$(${MY_PATH}/../tools/diceware.sh $(( $(${MY_PATH}/../tools/getcoins_from_gratitude_box.sh) + 3 )) | xargs) PPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2) ## STRONGER TW SECURITY "AlpH4nUm"
NPASS=$(${MY_PATH}/../tools/diceware.sh $(( $(${MY_PATH}/../tools/getcoins_from_gratitude_box.sh) + 3 )) | xargs) 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"
## CREATE ASTRONAUTE TW ON CURRENT ASTROPORT ## CREATE ASTRONAUTE TW ON CURRENT ASTROPORT
( (
echo VISA.new.sh "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "${VAL}" "${LAT}" "${LON}" echo VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}"
##### (☉_☉ ) ####### ##### (☉_☉ ) #######
${MY_PATH}/../RUNTIME/VISA.new.sh "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "${VAL}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt ${MY_PATH}/../RUNTIME/VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
## 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
end=`date +%s` end=`date +%s`
echo "(TW REGISTRATION) Operation time was "`expr $end - $start` seconds. 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 "${PPASS}" "${NPASS}") TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}")
IMGTW=$(${MY_PATH}/../API/AMZQR.sh '0' "${myIPFS}/ipns/${TWADD}" 'et' 'TV' | tail -n 1)
## HTTP nc ON PORT RESPONSE ## HTTP nc ON PORT RESPONSE
echo "$HTTPCORS echo "$HTTPCORS
@ -166,10 +217,17 @@ echo "$HTTPCORS
</style> </style>
</head><body> </head><body>
<h1>UPlanet Registration</h1> <h1>UPlanet Registration</h1>
${EMAIL} (⌐■_■)<br> Your AstroID seeds are:<br>
<br>Check your mailbox ! Relevez votre boite mail ! <br>
<hr> <h2>${EMAIL}_${PPASS}_${DPASS}</h2>
<h2><a target=\"_new\" href=\"${myIPFS}/ipns/${TWADD}\">TW5</a></h2> <h1>${NPASS}</h1>
Generating account...
<br>Please check your mail box to get your ZenCard and PIN code.
<br>
---
<br><a target=\"_new\" href=\"${myIPFS}/ipns/${TWADD}\">TW PORTATION</a>
<br>in
<h1><center><div id='countdown'></div></center></h1> <h1><center><div id='countdown'></div></center></h1>
<script> <script>
var timeLeft = 90; var timeLeft = 90;
@ -187,12 +245,11 @@ function countdown() {
} }
</script> </script>
--- ---
<br>( ⚆_⚆) TW5 MOBILE APP<br> <br>
<img src='${myIPFSGW}${IMGTW}'\> ( ⚆_⚆) <br>CONSOLE<br>
<br>CONSOLE<br>
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt 2>/dev/null) $(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt 2>/dev/null)
<br>(☉_☉ ) use above credentials... utilisez les identiants ci-dessus<br> <br>(☉_☉ )<br>
<br><br>${EMAIL} REGISTERED on UPlanet UMAP($LAT/$LON) : ${MOATS} : $(date) <br><br>${EMAIL} REGISTERED on UPlanet UMAP : $LAT/$LON : ${MOATS} : $(date)
</body> </body>
</html>" > ~/.zen/tmp/${MOATS}/http.rep </html>" > ~/.zen/tmp/${MOATS}/http.rep

View File

@ -7,7 +7,8 @@
## 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 # >> return json ## Search for TW numbers in received zone
# = 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
@ -41,118 +42,80 @@ 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)
# GET/?zone=0.001&ulat=0.02&ulon=0.01 LON=$(makecoord $LON)
# ------------------------------------------------------------------- #
DEG="${THAT}" echo "REQUEST $LAT / $LON / $DEG"
[[ -z ${DEG} ]] && DEG=1
# DEG=$(echo "${DEG} * 10" | bc -l )
LAT="${THIS}"
[[ -z $LAT ]] && LAT=0.00
LON="${WHAT}"
[[ -z $LON ]] && LON=0.00
LAT=$(makecoord ${LAT})
LON=$(makecoord ${LON})
JSON="ZONE_${LAT}_${LON}_${DEG}.json"
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
echo "UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS
SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS
REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS
LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON"
## SECTOR LEVEL
if [[ ${DEG} == "0.01" ]]; then
SLAT="${LAT::-1}"
SLON="${LON::-1}"
SECTOR="_${SLAT}_${SLON}"
echo "SECTOR = ${SECTOR}"
ZONEINDEX=$SECTORIPNS
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORNS | tail -n 1)
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORNS | tail -n 1)
ZONEG1PUB=$SECTORG1PUB
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORG1PUB | tail -n 1)
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORG1PUB | tail -n 1)
LAT=${SLAT}
LON=${SLON}
JSON="ZONE${SECTOR}_${DEG}.json"
fi
## REGION & ABOVE LEVEL ## REGION & ABOVE LEVEL
if [[ ${DEG} == "0.1" || ${DEG} == "1" ]]; then if [[ $DEG == "0.1" || $DEG == "1" ]]; then
LAT=$(echo ${LAT} | cut -d '.' -f 1)
RLAT="$(echo ${LAT} | cut -d '.' -f 1)" LON=$(echo ${LON} | cut -d '.' -f 1)
RLON="$(echo ${LON} | cut -d '.' -f 1)" ZONE="_${LAT}_${LON}"
REGION="_${RLAT}_${RLON}" echo "ZONE = ${ZONE}"
echo "REGION = ${REGION}" ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${ZONE}" "${UPLANETNAME}${ZONE}")
ZONEINDEX=$REGIONIPNS ZONETW="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${YESTERDATE}${UPLANETNAME}${ZONE}" "${YESTERDATE}${UPLANETNAME}${ZONE}")
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONNS | tail -n 1)
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONNS | tail -n 1)
ZONEG1PUB=$REGIONG1PUB
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONG1PUB | tail -n 1)
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONG1PUB | tail -n 1)
LAT=${RLAT}
LON=${RLON}
JSON="ZONE${REGION}_${DEG}.json"
fi fi
echo " JSON = ${JSON}" ## SECTOR LEVEL
if [[ $DEG == "0.01" ]]; then
SECLAT="${LAT::-1}"
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}")
if [[ ! -s ~/.zen/tmp/${JSON} ]]; then fi
## UMAP LEVEL ## UMAP LEVEL
if [[ ${DEG} == "0.001" ]]; then if [[ $DEG == "0.001" ]]; then
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* 2>/dev/null | wc -l ) 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 ) nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
totnum=$(( swarmnum + nodenum )) totnum=$(( swarmnum + nodenum ))
echo " ## UMAP _${LAT}_${LON} = ${totnum} PLAYERs" echo " ## UMAP _${LAT}*_${LON}* = ${totnum} PLAYERs"
UMAPNS=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TODATENS | tail -n 1) G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
[[ ! $UMAPNS ]] && UMAPNS=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TODATENS | tail -n 1) ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
G1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/G1PUB | tail -n 1) ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
[[ ! $G1PUB ]] && G1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/G1PUB | tail -n 1) 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
echo '{ "gridNumbers": [ {"lat": '${LAT}', "lon": '${LON}', "number": "(_'${LAT}'_'${LON}') = '${totnum}'", "ipns": "'${myIPFS}/ipns/${UMAPNS}/_index.html'" } ] }' >> ~/.zen/tmp/${MOATS}.http
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
rm -Rf ~/.zen/tmp/${MOATS}/ rm -Rf ~/.zen/tmp/${MOATS}/
end=`date +%s` end=`date +%s`
echo "(UMAP)_${LAT}_${LON} $UMAPNS Operation time was "`expr $end - $start` seconds. echo "(UMAP)_${LAT}_${LON} ${YESTERDATE} $UMAPNS Operation time was "`expr $end - $start` seconds.
exit 0 exit 0
fi fi
############################################## ## ALL OTHER DEG : SEARCH FOR UPLANET TW NUMBERS
## SEARCH FOR UPLANET TW NUMBERS IN THAT ZONE echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}.http
echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}/http.grid
for i in $(seq 0 9); for i in $(seq 0 9);
do do
ZLAT=$(echo "$LAT + $DEG * $i" | bc -l )
ZLAT=$(echo "$LAT + ${DEG} * $i" | bc -l)
[[ -z ${ZLAT} ]] && ZLAT=0 [[ -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 )
@ -160,35 +123,22 @@ if [[ ! -s ~/.zen/tmp/${JSON} ]]; then
[[ $totnum -gt 9 ]] && displaynum="X" || displaynum=$totnum [[ $totnum -gt 9 ]] && displaynum="X" || displaynum=$totnum
[[ $displaynum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${displaynum}'", "ipns": "'${ZONEINDEX}'" } [[ $displaynum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${displaynum}'", "ipns": "'${ZONETW}'" }
,' >> ~/.zen/tmp/${MOATS}/http.grid \ ,' >> ~/.zen/tmp/${MOATS}.http && echo "$DEG :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "'${ZONETW}'" }'
&& echo "${DEG} :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "'${ZONEINDEX}'" }'
done done
done done
[[ ! $(cat ~/.zen/tmp/${MOATS}/http.grid | tail -n 1 | grep 'gridNumbers' ) ]] \ sed -i '$ d' ~/.zen/tmp/${MOATS}.http ## REMOVE LAST ','
&& sed -i '$ d' ~/.zen/tmp/${MOATS}/http.grid ## REMOVE LAST ','
echo ']}' >> ~/.zen/tmp/${MOATS}/http.grid echo ']}' >> ~/.zen/tmp/${MOATS}.http
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/${JSON} >> ~/.zen/tmp/${MOATS}.http cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
(
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.

View File

@ -1,46 +0,0 @@
#!/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."

View File

@ -1,170 +0,0 @@
#!/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

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
######################################################################## ########################################################################
# Version: 1.2 # Version: 0.4
# 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
@ -11,12 +11,11 @@ ME="${0##*/}"
echo "-----" echo "-----"
echo "$ME RUNNING" echo "$ME RUNNING"
#######################################################################
# ASTROBOT SUBKEY PROGRAM : [G1]CopierYoutube "tag" # ASTROBOT FIRST SPECIFIC PROCESS
# Ce script se déclenche si le tiddler "voeu" "CopierYoutube" a été formulé dans le TW du PLAYER # "Copier youtube" + (voeu) => CopierYoutube (G1Voeu G1CopierYoutube) = ASTROBOT copy Ŋ1 "(G1CopierYoutube)"
# Il active l'extraction des liens (compatibles yt-dlp) trouvés dans les tiddlers portant le tag "CopierYoutube"
# Les vidéos (mp4) ou audio (mp3) (+tag "CopierYoutube MP3") sont inscrites dans un json puis importés dans le TW.
#######################################################################
INDEX="$1" INDEX="$1"
[[ ! ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1 [[ ! ${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
@ -48,17 +47,10 @@ tiddlywiki --load ${INDEX} \
--render '.' 'CopierYoutube.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[CopierYoutube]]' --render '.' 'CopierYoutube.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[CopierYoutube]]'
echo "DEBUG : cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r" echo "DEBUG : cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r"
## CHEK FOR MP3 TAG
TAGS=()
TAGS=($(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r .[].tags))
echo "TAGS :${#TAGS[@]}: ${TAGS[@]}"
isMP3=$(echo ${TAGS[@]} | grep -w "MP3")
## GET USER BROWSER for YOUTUBE COOKIES
BZER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser BZER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser
[[ $BZER ]] && BROWSER="--cookies-from-browser $BZER " || BROWSER="" [[ $BZER ]] && BROWSER="--cookies-from-browser $BZER " || BROWSER=""
[[ ! $isLAN ]] && BROWSER="" [[ ! $isLAN ]] && BROWSER=""
################################################################### ###################################################################
## URL EXTRACTION & yt-dlp.cache.${PLAYER} upgrade ## URL EXTRACTION & yt-dlp.cache.${PLAYER} upgrade
for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r '.[].text' | grep 'http'); do for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r '.[].text' | grep 'http'); do
@ -79,7 +71,7 @@ for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.js
fi fi
# ONE WEEK NEW SCAN # ONE WEEK NEW SCAN
if [[ $duree -ge 604800000 || ! -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER} ]]; then if [[ $duree -ge 604800000 || ! -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER} ]]; then
/usr/local/bin/yt-dlp $BROWSER --print "%(id)s&%(webpage_url)s" "${YURL}" 2>/dev/null >> ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER} /usr/local/bin/yt-dlp $BROWSER --print "%(id)s&%(webpage_url)s" "${YURL}" >> ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER}
sed -i "s~$lastrun~$MOATS~g" ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.command # UPDATE LASTRUN sed -i "s~$lastrun~$MOATS~g" ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.command # UPDATE LASTRUN
fi fi
@ -102,9 +94,6 @@ while read LINE;
echo "_____ $LINE _____ $boucle" echo "_____ $LINE _____ $boucle"
YID="$(echo "$LINE" | rev | cut -d '=' -f 1 | rev )" YID="$(echo "$LINE" | rev | cut -d '=' -f 1 | rev )"
#~ [[ $boucle -gt 50 ]] && break ## TODO SCAN FOR ABROAD SAME COPY DONE
### MAKE BETTER THAN RANDOM !! CONNECT TO THE WARM...
################################################################### ###################################################################
## Search for $YID.TW.json TIDDLER in local & MySwarm cache ## Search for $YID.TW.json TIDDLER in local & MySwarm cache
#~ echo "--- CACHE SEARCH FOR $YID ---" #~ echo "--- CACHE SEARCH FOR $YID ---"
@ -132,7 +121,7 @@ while read LINE;
start=`date +%s` start=`date +%s`
echo ".... Downloading $TITLE ${isMP3}" echo ".... Downloading $TITLE.mp4"
# https://github.com/yt-dlp/yt-dlp#format-selection-examples # https://github.com/yt-dlp/yt-dlp#format-selection-examples
# SUBS ? --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs # SUBS ? --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
# (bv*[height<=720][vcodec~='^((he|a)vc|h26[45])']+ba) # (bv*[height<=720][vcodec~='^((he|a)vc|h26[45])']+ba)
@ -144,13 +133,15 @@ while read LINE;
## EXTRA PARAM TO TRY ## EXTRA PARAM TO TRY
# --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs # --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
if [[ ${isMP3} == "" ]]; then
# copying video
/usr/local/bin/yt-dlp -q -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \ /usr/local/bin/yt-dlp -q -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \
$BROWSER \ $BROWSER \
--download-archive ${HOME}/.zen/.yt-dlp.list \ --download-archive ${HOME}/.zen/.yt-dlp.list \
-S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \ -S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" "${ZYURL}" -o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" ${ZYURL}
################################################################################
### ADAPT TO TW RYTHM (DELAY COPY?)
echo
ZFILE="$TITLE.mp4" ZFILE="$TITLE.mp4"
############################################################################ ############################################################################
@ -179,34 +170,21 @@ while read LINE;
continue continue
fi fi
else
# copying mp3
echo "COPYING MP3 (!-q)"
/usr/local/bin/yt-dlp -x --no-mtime --audio-format mp3 --embed-thumbnail --add-metadata \
$BROWSER \
--download-archive ${HOME}/.zen/.yt-dlp.mp3.list \
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" "${ZYURL}"
ZFILE="$TITLE.mp3"
fi
echo echo
#################################################### ####################################################
[[ -s ~/.zen/tmp/yt-dlp/${ZFILE} ]] \ echo "FOUND : ~/.zen/tmp/yt-dlp/${ZFILE}"
&& echo "FOUND : ~/.zen/tmp/yt-dlp/${ZFILE}"
FILE_BSIZE=$(du -b "${HOME}/.zen/tmp/yt-dlp/${ZFILE}" | awk '{print $1}') FILE_BSIZE=$(du -b "${HOME}/.zen/tmp/yt-dlp/${ZFILE}" | awk '{print $1}')
[[ ! $FILE_BSIZE ]] && echo "SIZE ERROR" && continue [[ ! $FILE_BSIZE ]] && echo "SIZE ERROR" && continue
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }') FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
echo "$boucle - ${ZFILE} - FILE SIZE = $FILE_SIZE ($FILE_BSIZE octets)" echo "$boucle - ${ZFILE} - FILE SIZE = $FILE_SIZE ($FILE_BSIZE octets)"
echo
espeak "GOOD! Video Number $boucle = $FILE_SIZE" > /dev/null 2>&1
### CREATE GIF ANIM : make_video_gifanim_ipfs.sh ### CREATE GIF ANIM : make_video_gifanim_ipfs.sh
[[ ${isMP3} == "" ]] \ $(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "${HOME}/.zen/tmp/yt-dlp" "${ZFILE}" | tail -n 1) ## export ANIMH
&& $(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "${HOME}/.zen/tmp/yt-dlp" "${ZFILE}" | tail -n 1) \ echo "HOP=$HOP
&& echo "HOP=$HOP
ANIMH=$ANIMH ANIMH=$ANIMH
PROBETIME=$PROBETIME PROBETIME=$PROBETIME
DURATION=$DURATION DURATION=$DURATION
@ -230,29 +208,14 @@ while read LINE;
CHANNEL=$(/usr/local/bin/yt-dlp $BROWSER --print "%(channel)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords CHANNEL=$(/usr/local/bin/yt-dlp $BROWSER --print "%(channel)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords
PLAYLIST=$(/usr/local/bin/yt-dlp $BROWSER --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') PLAYLIST=$(/usr/local/bin/yt-dlp $BROWSER --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g')
EXTRATAG="$CHANNEL $PLAYLIST" EXTRATAG="$CHANNEL $PLAYLIST"
if [[ ${isMP3} == "" ]]; then
## PREPARE VIDEO HTML5 CODE ## PREPARE VIDEO HTML5 CODE
TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'> TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'>
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'> <source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
Your browser does not support the video element.
</video> </video>
<br> <br>
{{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}}) {{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}})
<br> <br>
<h1><a target='_blank' href='"${ZYURL}"'>Web2.0 Origin</a></h1>" <h1><a href='"${ZYURL}"'>"${TITLE}"</a></h1>"
else
TEXT="<audio controls>
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
Your browser does not support the audio element.
</audio>
<br>
{{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}})
<br>
<h1><a target='_blank' href='"${ZYURL}"'>Web2.0 Origin</a></h1>"
fi
end=`date +%s` end=`date +%s`
dur=`expr $end - $start` dur=`expr $end - $start`
@ -265,7 +228,6 @@ while read LINE;
[[ ! isLAN ]] && TEXT="$TEXT <<hide tiddler-controls>>" [[ ! isLAN ]] && TEXT="$TEXT <<hide tiddler-controls>>"
echo $TEXT echo $TEXT
mkdir -p ${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/${PLAYER} ## MISSING FOR FIRST RUN
TIDDLER="${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/${PLAYER}/${YID}.TW.json" TIDDLER="${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/${PLAYER}/${YID}.TW.json"
echo '[ echo '[
@ -337,7 +299,6 @@ while read LINE;
else else
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${IPFSNODEID}/newindex.html" echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${IPFSNODEID}/newindex.html"
echo "XXXXXXXXXXXXXXXXXXXXXXX" echo "XXXXXXXXXXXXXXXXXXXXXXX"
break
fi fi
done < ~/.zen/tmp/${IPFSNODEID}/yt-dlp.cache.${PLAYER} # FINISH YID loop 1 done < ~/.zen/tmp/${IPFSNODEID}/yt-dlp.cache.${PLAYER} # FINISH YID loop 1

View File

@ -168,26 +168,8 @@ 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>
<br> <h3>Envoyez un don. Recevez le lien vers ce film dans votre messagerie Cesium+</h3>
<h3>Voir ce Film:</h3> <img width='300' src='/ipfs/"${PV}"'>"
<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,12 +1,11 @@
#!/bin/bash #!/bin/bash
######################################################################## ########################################################################
# Version: 0.1 # Version: 0.5
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
######################################################################## ########################################################################
[[ ! $(which ollama) ]] \ # PAD COCODING : https://pad.p2p.legal/s/G1Monit
&& echo "STATION NEED TO RUN OLLAMA" \ # KODI SERVICE : Publish and Merge Friends Monit Movies into RSS Stream
&& exit 1 ########################################################################
##
######################################################################## ########################################################################
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
@ -16,14 +15,11 @@ ME="${0##*/}"
echo "$ME RUNNING" echo "$ME RUNNING"
######################################################################## ########################################################################
## G1PalPAY incoming TX detected call ## SCAN FOR PAYMENT HISTORY
## ./ASTROBOT/${CMD}.sh ${INDEX} ${PLAYER} ${MOATS} ${TXIPUBKEY} ${TH} ${TRAIL} ${TXIAMOUNT} ## BUILD python NetworkX script
## SEND MESSAGE TO SOURCEG1PUB
######################################################################## ########################################################################
## TH=/ipfs/CID (mp4 source file to transcript "voice 2 text" or other depending MODE) ## THIS SCRIPT IS RUN WHEN A WALLET RECEIVED A TRANSACTION WITH COMMENT STARTING WITH N1Monit
## TRAIL=MODE:G1PUB (what to do and where to send response)
# default: mp4TOtxt and alert back to emiter
########################################################################
## THIS SCRIPT IS RUN WHEN A WALLET RECEIVED A TRANSACTION WITH COMMENT STARTING WITH N1GPU:
######################################################################## ########################################################################
INDEX="$1" INDEX="$1"
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html" [[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
@ -38,41 +34,44 @@ ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
[[ ! ${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)
[[ ! $G1PUB ]] && echo "FATAL ERROR - G1PUB ${PLAYER} VIDE. LOCAL PLAYER ONLY." && exit 1 [[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
# Extract tag=tube from TW # Extract tag=tube from TW
MOATS="$3" MOATS="$3"
[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N") [[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
IPUBKEY="$4" IPUBKEY="$4"
[[ ! ${IPUBKEY} ]] && echo "ERROR 4 - MISSING COMMAND ISSUER !" && exit 1 [[ ! ${IPUBKEY} ]] && echo "ERROR - MISSING COMMAND ISSUER !" && exit 1
TH="$5" TH="$5"
[[ ! ${TH} ]] && echo "ERROR 5 - MISSING COMMAND TITLE HASH ADDRESS !" && exit 1 [[ ! ${TH} ]] && echo "ERROR - MISSING COMMAND TITLE HASH ADDRESS !" && exit 1
TRAIL="$6" ## ::G1PUB echo "${PLAYER} : ${IPUBKEY} SEEKING FOR ${TH}
MODE=$(echo ${TRAIL} | cut -d ':' -f 1) ${ASTRONAUTENS} ${G1PUB} "
GIPUBKEY=$(echo ${TRAIL} | cut -d ':' -f 2-)
[[ ! -z ${GIPUBKEY} ]] \
&& DPUBKEY=${GIPUBKEY} \
|| DPUBKEY=${IPUBKEY}
AMOUNT="$7"
[[ ! ${AMOUNT} ]] && echo "ERROR 7 - AMOUNT=$7 7 " && exit 1
echo "${PLAYER} : ${IPUBKEY} ASK FOR PROCESSING ${TH}
${TRAIL}"
#~ ################################################################### #~ ###################################################################
#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY #~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
#~ ################################################################### #~ ###################################################################
mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS} 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
## ...
RESPIPFS="/ipfs/"$(ipfs add -q "$RESP") exit 0
## SENDING GCHANGE & CESIUM+ MESSAGE
$MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n ${myDATA} send -d "${DPUBKEY}" -t "N1GPU" -m "${MESSAGE}"
$MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n ${myCESIUM} send -d "${DPUBKEY}" -t "N1GPU" -m "${MESSAGE}"

View File

@ -1,320 +0,0 @@
#!/bin/bash
########################################################################
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
. "${MY_PATH}/../tools/my.sh"
## IT SEARCH FOR CURRENT TW ForkUPlanetZERO tag
## IT MAKES $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key
## IT CHECKS FOR SAME UPNAME WISH IN FRIENDS TW
#~ echo "(✜‿‿✜) CURRENT Fork UPlanet
#~ This program makes Player generate or join a private IPFS swarm
#~ All friends with the same wish will share the SECRET
#~ then any can activate a new ipfs daemon connected to that private ZONE
## TIDDLER can contain parameters for UPlanet activation
echo "$ME RUNNING"
CURRENT=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
########################################################################
[[ ! ${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
ORIGININDEX=${INDEX}
[[ ! ${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
[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
echo "${PLAYER} ${INDEX} ${ASTRONAUTENS} ${G1PUB} "
mkdir -p $HOME/.zen/tmp/${MOATS}
PLAYERPUB=$(cat $HOME/.zen/game/players/${PLAYER}/secret.dunikey | grep pub | cut -d ' ' -f 2)
[[ "${PLAYERPUB}" == "" ]] && echo "FATAL ERROR PLAYER KEY MISSING" && exit 1
###################################################################
## tag[ForkUPlanetZERO] TW EXTRACTION
###################################################################
tiddlywiki --load ${INDEX} \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'G1ForkUPlanetZERO.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[ForkUPlanetZERO]]'
## KEEP ONLY ONE tag[ForkUPlanetZERO] WISH !
echo "PREPARE INLINE JSON : cat ~/.zen/tmp/${MOATS}/G1ForkUPlanetZERO.json | jq -rc .[]"
cat ~/.zen/tmp/${MOATS}/G1ForkUPlanetZERO.json \
| jq -rc .[] | head -n 1 > ~/.zen/tmp/${MOATS}/ONEuplanet.json
JSONUPLANET="${HOME}/.zen/tmp/${MOATS}/ONEuplanet.json"
[[ ! -s ${JSONUPLANET} ]] \
&& echo "NO tag[ForkUPlanetZERO] for $PLAYER" && exit 0
UPNAME=$(cat ${JSONUPLANET} | jq -r ".title") # What name is given ?
[[ "${UPNAME}" == "null" || "${UPNAME}" == "" ]] \
&& echo "NO FORK UPLANET NAME .title MISSING" && exit 1
HASH=$(cat ${JSONUPLANET} | jq -r ".hash") ## What text hash it has ?
SECRET=$(cat ${JSONUPLANET} | jq -r ".secret") ## What is secret ?
CONTRACT=$(cat ${JSONUPLANET} | jq -r ".text") ## What contract is applying ?
[[ "${CONTRACT}" == "null" || "${CONTRACT}" == "" ]] && CONTRACT="☼☼☼☼☼ floating points ☼☼☼☼☼"
AHAH=$(echo $CONTRACT | sha512sum | cut -d ' ' -f 1)
echo "%%% CONTRACT HASH %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo "$AHAH"
echo "$HASH"
[[ $AHAH != $HASH ]] && echo " - WARNING - CONTRACT CHANGED - WARNING -"
## CHECK EXISTING ${UPNAME}.swarm.key
[[ ! -s $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key ]] \
&& MSG=$MSG" ${PLAYER}/.ipfs/${UPNAME}.swarm.key NOT FOUND" && ERR="NO LOCAL KEY"
## CREATE 32 octets swarm.key ( maximum individual Fork : octal 8^32 = decimal 7,922816251×10^28 )
echo -e '/key/swarm/psk/1.0.0/\n/base16/' > $HOME/.zen/tmp/${MOATS}/swarm.key
head -c 32 /dev/urandom | od -t x1 -A none - | tr -d '\n ' >> $HOME/.zen/tmp/${MOATS}/swarm.key
echo '' >> $HOME/.zen/tmp/${MOATS}/swarm.key
## EXTRACT CURRENT SECRET FROM JSONUPLANET
# which is PLAYER pub encrypted base16 of swarm.key
###################################################
## check if we have a player slot with cyphered key
IN16=$(cat ${JSONUPLANET} | jq -r '."${PLAYER}"')
## secret is only decrypted by wish source player
[[ ${IN16} == "" || ${IN16} == "null" ]] \
&& IN16=$(cat ${JSONUPLANET} | jq -r ".secret") && echo "get IN16 from secret field"
if [[ ${IN16} == "" || ${IN16} == "null" ]]; then
echo "NO SECRET FOUND" \
&& echo ">> 🔑 ${UPNAME} SECRET SWARM.KEY GENERATION 🔑" \
&& cat $HOME/.zen/tmp/${MOATS}/swarm.key \
&& cp $HOME/.zen/tmp/${MOATS}/swarm.key $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
&& echo "------- KEY LOADED -----> ${PLAYER}/.ipfs/${UPNAME}.swarm.key"
## THIS IS A PRIMAL TIDDLER
else
echo "VERIFICATION ${IN16}"
## DEBASE16
echo "${IN16}" | base16 -d \
> ~/.zen/tmp/${MOATS}/swarmkey.crypted
echo ">> natools.py decrypt "
## DECODING with PLAYER secret.dunikey
${MY_PATH}/../tools/natools.py decrypt \
-f pubsec \
-k $HOME/.zen/game/players/${PLAYER}/secret.dunikey \
-i ~/.zen/tmp/${MOATS}/swarmkey.crypted \
-o ~/.zen/tmp/${MOATS}/swarmkey.decrypted
echo ">> comparing decrypted key"
## CHEK KEY WITH ACTUAL ONE
[[ $(diff ~/.zen/tmp/${MOATS}/swarmkey.decrypted $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key) ]] \
&& echo "- 📸 WARNING 📸 - UPDATING ${UPNAME}.swarm.key ..." && ERR="TW SWARM CHANGED"
## UPDATE PLAYER LOCAL SWARMKEY FROM VALUE FOUND IN HIS OWN WISH TIDDLER !
[[ -s ~/.zen/tmp/${MOATS}/swarmkey.decrypted ]] \
&& cp ~/.zen/tmp/${MOATS}/swarmkey.decrypted \
$HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
&& echo "PLAYER ${UPNAME}.swarm.key IS VALID" \
|| { echo "ERROR PLAYER ${UPNAME}.swarm.key IS NOT VALID"; exit 1; }
fi
#~ (RE)CREATE SECRET
${MY_PATH}/../tools/natools.py encrypt \
-p ${PLAYERPUB} \
-i $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
-o $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc
ENCODING=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc | base16)
rm $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc
echo "==> base16 ${PLAYER} encrypted swarm.key is secret"
#~ echo "${SECRET}"
#~ echo "${ENCODING}"
#################################################################
## MAKE KEY ENCODING FOR FRIENDS
friends=($(ls ~/.zen/game/players/${PLAYER}/FRIENDS | grep "@" 2>/dev/null))
for f in ${friends[@]};
do
## Extract FRIENDG1PUB from TW (Astroport Tiddler)
ftw=${HOME}/.zen/game/players/${PLAYER}/FRIENDS/${f}/index.html
[[ ! -s ${ftw} ]] && echo "FRIENDS/${f} : $(cat "$HOME/.zen/game/players/${PLAYER}/FRIENDS/${f}")" && continue
## Check if "f=PRESIDENT" in my friend "email" TW
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} --render '.' "${f}_.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${f}"
PRESIDENT=$(cat ~/.zen/tmp/${MOATS}/${f}_.json | jq -r .[].president)
[[ ${PRESIDENT} != ${f} ]] && echo "${f} Astroport is run by ${PRESIDENT}... No fork..." && continue
## Check if Astroport is different from my node
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} --render '.' "${f}_Astroport.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
FRIENDG1PUB=$(cat ~/.zen/tmp/${MOATS}/${f}_Astroport.json | jq -r .[].g1pub)
echo "___________________"
echo "$f : $FRIENDG1PUB"
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/${f}_Astroport.json | jq -r .[].astroport)
[[ ${ASTROPORT} != "/ipns/${IPFSNODEID}" ]] \
&& echo "FOREIGN ASTROPORT=${ASTROPORT}" \
&& foreign="YES" \
&& ASTROPORTS=("${ASTROPORTS[@]}" "${ASTROPORT}")
if [[ ${FRIENDG1PUB} && ${FRIENDG1PUB} != "null" ]]; then
#~ CHECK IF player ALREADY IN JSON
echo "cat ${JSONUPLANET} | jq -r '.\"${f}\"'"
FRIENDIN=$(cat ${JSONUPLANET} | jq -r '."${f}"')
[[ "${FRIENDIN}" != "null" && "${FRIENDIN}" != "" ]] \
&& echo "${FRIENDIN} ALREADY IN FORK ${UPNAME} TIDDLER." \
&& continue
echo "#~ Create FRIENDG1PUB encrypted version of swarm.key"
${MY_PATH}/../tools/natools.py encrypt \
-p ${FRIENDG1PUB} \
-i $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
-o $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc
FENCODING=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc | base16)
rm $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc
echo "## Addd email=crypt(swarmkey) field to ${JSONUPLANET} tiddler."
cat ${JSONUPLANET} | jq '. | ."_f_" = "_FENCODING_"' > ~/.zen/tmp/${MOATS}/json.up \
&& sed -i 's/_f_/'"$f"'/g; s/_FENCODING_/'"$FENCODING"'/g' ~/.zen/tmp/${MOATS}/json.up \
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
else
echo "- FATAL ERROR - Friend TW ${ftw} is broken !!"
continue
fi
if [[ ${foreign} == "YES" ]]; then
echo "## Check if friend have an ${UPNAME} tiddler and that secret is the same"
## SEARCH FOR ${UPNAME} tiddler IN FRIEND TW
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} \
--render '.' "${f}_${UPNAME}.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${UPNAME}"
## CONTROL SWARMKEY DECODING (must be equal)
OUT16=$(cat ~/.zen/tmp/${MOATS}/${f}_${UPNAME}.json | jq -r '[]."'${PLAYER}'"')
echo "${IN16}"
echo "${OUT16}"
[[ ${IN16} == ${OUT16} ]] \
&& echo "OK STATIONS +1 : TW sharing the same wish. " \
&& OKSTATIONS=("${OKSTATIONS[@]}" "${ASTROPORT}") \
|| echo "NO GOOD! TW not synchronized."
foreign=""
fi
done
ZENSTATIONS=($(echo "${OKSTATIONS[@]}" | tr ' ' '\n' | sort -u)) ## REMOVE DUPLICATE
echo "<<< My Friends are located in ${#ASTROPORTS[@]} ASTROPORT(s) : ${#ZENSTATIONS[@]} are OK >>>"
## IPFSNODEID IS FORKING TO NEW UPLANET
if [[ ${#ZENSTATIONS[@]} -ge 3 ]]; then
echo "UPlanet.ZERO /// ENTERING WARPING ZONE /// ${UPNAME} ACTIVATION"
## HERE each PLAYER share the same wish
# only secret field is "!=" in each, as it is self encoding key
# we must find our email="The same" in each friends TW
## CONTROL
# round looking in friends TW... Can be done before...
## APPLY ?!
##################################################
# Let's engage Astroport.ONE code mutation...
# tools/my.sh
SECRETNAME=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key | tail -n 1)
echo "SECRETNAME=$SECRETNAME"
#######################################################################
echo "# UPlanet Swarm Bootstrap Stations #
# https://ipfs.${UPNAME} ipfs.${UPNAME}
#################################################################
" > ~/.zen/tmp/${MOATS}/new_straps.list
# Prepare "new_straps.list" from WAN only
for station in ${ZENSTATIONS[@]}; do
[[ ! -s ~/.zen/tmp/swarm/${station}/myIPFS.txt ]] \
&& echo "Missing swarm/${station}/myIPFS.txt" \
&& continue
bootnode=$(cat ~/.zen/tmp/swarm/${station}/myIPFS.txt)
echo "${bootnode}"
iptype=$(echo ${bootnode} | cut -d '/' -f 2)
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
isnodeipLAN=$(echo $nodeip | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")
echo " ${iptype} address :: ${nodeip} (= ${isnodeipLAN})"
[[ ${nodeip} == ${isnodeipLAN} ]] && echo "LAN NODE... no good for bootstrap" && continue
echo "### OK adding to new_straps.list"
echo "${bootnode}" >> ~/.zen/tmp/${MOATS}/new_straps.list
done
## INTRODUCE NEW BOOSTRAP LIST
cp ~/.zen/tmp/${MOATS}/new_straps.list ~/.zen/game/MY_boostrap_nodes.txt
#######################################################################
# make G1PalPay refuse not from "UPlanet Master Key" primal TX
# STABLE COIN : activate OpenCollective sync
# and adapt 20H12.process.sh
## UPNAME = domain.tld
# PACTHING Astroport.ONE code
grep -rl --exclude-dir='.git*' 'copylaradio.com' ~/.zen | xargs sed -i "s~copylaradio.com~${UPNAME,,}~g"
rm ~/.zen/game/myswarm_secret.dunikey
# now we add key into ~/.ipfs/swarm.key
#~ cp $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key ~/.ipfs/swarm.key
# it will make IPFSNODEID restarting in private mode
fi
## UPDATE JSONUPLANET
cat ${JSONUPLANET} | jq '. | ."UPname" = "_UPNAME_"' > ~/.zen/tmp/${MOATS}/json.up \
&& sed -i 's/_UPNAME_/'"$UPNAME"'/g' ~/.zen/tmp/${MOATS}/json.up \
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
cat ${JSONUPLANET} | jq '. | ."hash" = "_HASH_"' > ~/.zen/tmp/${MOATS}/json.up \
&& sed -i 's/_HASH_/'"$AHAH"'/g' ~/.zen/tmp/${MOATS}/json.up \
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
cat ${JSONUPLANET} | jq '. | ."secret" = "_SECRET_"' > ~/.zen/tmp/${MOATS}/json.up \
&& sed -i 's/_SECRET_/'"$ENCODING"'/g' ~/.zen/tmp/${MOATS}/json.up \
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
jq '.[] + {created: $MOATS, modified: $MOATS}' --arg MOATS "$MOATS" "${JSONUPLANET}" > ~/.zen/tmp/${MOATS}/json.up \
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
### PUT BACK IN TW
tiddlywiki --load ${INDEX} \
--import ${JSONUPLANET} "application/json" \
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "newindex.html" "text/plain"
if [[ -s ~/.zen/tmp/${MOATS}/newindex.html ]]; then
[[ $(diff ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} ) ]] \
&& mv ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} \
&& echo "===> Mise à jour ${INDEX}"
cat ${JSONUPLANET} | jq
else
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${MOATS}/newindex.html"
echo "XXXXXXXXXXXXXXXXXXXXXXX"
fi
rm -Rf ~/.zen/tmp/${MOATS}
exit 0

View File

@ -54,9 +54,9 @@ for VUID in $(cat ~/.zen/bunkerbox/crowd.json | jq -r '.posts | .[] | .video.id'
echo ">>>>>>>>>>>>>>>> Downloading VIDEO" echo ">>>>>>>>>>>>>>>> Downloading VIDEO"
# Choose 360p or 480p or 240p # Choose 360p or 480p or 240p
VSIZE=360 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.') VSIZE=360 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
[[ "$VIDEOSRC" == "" ]] && VSIZE=480 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.') [[ "$VIDEOSRC" == "" ]] && VSIZE=480 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
[[ "$VIDEOSRC" == "" ]] && VSIZE=240 &&VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.') [[ "$VIDEOSRC" == "" ]] && VSIZE=240 &&VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
VTHUMB="$(cat ~/.zen/bunkerbox/$VUID/$VUID.json | jq -r --arg VSIZE "$VSIZE" '.video.thumbnails[] | select(.height == $VSIZE) | .url')" VTHUMB="$(cat ~/.zen/bunkerbox/$VUID/$VUID.json | jq -r --arg VSIZE "$VSIZE" '.video.thumbnails[] | select(.height == $VSIZE) | .url')"
echo ">>>>>>>>>>>>>>>> Downloading Video $VSIZE Thumbnail" echo ">>>>>>>>>>>>>>>> Downloading Video $VSIZE Thumbnail"

View File

@ -1,4 +1,4 @@
# UPlanet Swarm Bootstrap Stations # Adapt for your domain # # CONTAINS Address of 1st Bootstrap Stations (24/24 Public IP) - DO NOT EDIT MANUALY -
# https://ipfs.copylaradio.com ipfs.copylaradio.com # https://ipfs.copylaradio.com ipfs.copylaradio.com
################################################################# #################################################################
# astroport.libra.copylaradio.com # astroport.libra.copylaradio.com
@ -7,6 +7,9 @@
# 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

View File

@ -1,6 +0,0 @@
## 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

View File

@ -1,48 +0,0 @@
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/install.kubo_v0.20.0_linux.sh * “ipfs” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/kubo_v0.20.0_linux.install.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

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 AstroID & ZenCard System and Astroport.ONE** **Embark on a Cosmic Journey with ZenCard Payment 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 QRCode based Payment System of your distributed storage solutions? Look no further! Our revolutionary ZenCard 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,6 +19,19 @@ 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.
@ -60,21 +73,43 @@ 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)
Tested on "Linux Mint" (Debian like distro compatible), the **hacker way for using & buidling new blockchain services** ... There is 2 methods one for server and one for Linux Mint desktop
INSTALL COMMAND ## 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** ...
```
# 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)
``` ```
> TODO: MORE MODULAR INSTALL. > PLEASE REPORT ANY ISSUES
> 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...
@ -91,12 +126,7 @@ If all has gone well, you should find these processes running...
``` ```
> Become Official REGIONAL Station # LAUNCH
> - 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
@ -104,10 +134,6 @@ 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".
@ -118,9 +144,8 @@ It is defined by email, salt, pepper, lat, lon and PASS
``` ```
Browse available functions Browse available functions
A Station can host multiple "PLAYERs and TiddlyWikis". A Station can host multiple "PLAYER and its TiddlyWiki".
---
# "BASH API" : "♥BOX" # "BASH API" : "♥BOX"
## http://astroport.localhost:1234 ## http://astroport.localhost:1234
@ -331,9 +356,7 @@ 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"
```http ### ```/?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}```
GET /?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}
```
| Parameter | Type | Description | | Parameter | Type | Description |
| :-------- | :------- | :-------------------------------- | | :-------- | :------- | :-------------------------------- |
@ -343,21 +366,19 @@ GET /?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}
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)
```http ### ```/?uplanet=${PLAYER}&salt=${LAT}&pepper=${LON}&g1pub=${PASS}```
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 |
| `zlat` | `decimal` | **Required** LATITUDE with 2 decimals digits | | `salt` | `decimal` | **Required** LATITUDE with 2 decimals digits |
| `zlon` | `decimal` | **Required** LONGITUDE with 2 decimals digits | | `pepper` | `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
@ -477,13 +498,12 @@ 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 | Clef publique, balise de la station | | ipfsnodeid | date de creation du document |
| 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 station lors de son raffraichissement de cache Afin de propager la carte chaque Stations lors de son raffraichissement de cache demande aux Boostrap de la récupérer
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}
``` ```
@ -491,7 +511,7 @@ STATION MAP UPSYNC : http://$nodeip:12345/?${GNODEID}=${IPFSNODEID}
# 20H12 # 20H12
Chaque jour, les ASTROBOTs captent les :star: (tiddler 'email') de leurs PLAYERs puis exécutent le protocole de synchronisation Ŋ1 Chaque jour, les ASTROBOTs captent les :star: de leurs PLAYERs puis exécutent le protocole de synchronisation Ŋ1
[20H12.sh](/qo-op/Astroport.ONE/src/branch/master/20h12.sh) [20H12.sh](/qo-op/Astroport.ONE/src/branch/master/20h12.sh)
@ -542,10 +562,10 @@ https://ipfs.copylaradio.com/ipfs/QmUtGpGeMZvwp47ftqebVmoFWCmvroy5wEtWsKvWvDWJpR
This "digital art" structure is a selection of some of the most valuable Free & OpenSource Software I ever had in my hand. This "digital art" structure is a selection of some of the most valuable Free & OpenSource Software I ever had in my hand.
Credits is going to all the kindness and care provided to make valuable and secure software available for all Credits is going to all the kindness and care provided to make valuable and secure software available for all
Do you know [G1](https://monnaie-libre.fr) ? The best crypto coin you could ever dream about... Did you ever dring a beer bought in G1 ?
Thanks for contributions on [Swarm BUDGET](https://opencollective.com/monnaie-libre#category-BUDGET)
You can pay me a beer or more by contributing to our OpenCollective
https://opencollective.com/monnaie-libre#category-ABOUT
## IPFS Ecosystem Directory Submission Form ## IPFS Ecosystem Directory Submission Form
https://airtable.com/appLWiIrg9SQaEtEq/shrjwvk9pAeAk0Ci7 https://airtable.com/appLWiIrg9SQaEtEq/shrjwvk9pAeAk0Ci7

View File

@ -1,141 +0,0 @@
#!/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
[[ ! -s ~/.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}))
#######################################################################
## Adapt $USER for the UPlanet /home/$USER Private Swarm specific one
#######################################################################
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 "
/| /\\
/^^^/ |^\Z / |
| \Z / |
/ @ \Z / / \_______
( \ _ / \Z / / /
( ---- /G |\ |Z / / /
( / ---- \ /---'/\ |Z / / /
\/--' /--/ /Z / /
| /--/ |Z / / \_______
/ /--/ |Z \ / /
--/ /--/ \Z | / /
/ /--/ \Z / /
|--| \Z/ /
|---| / /----'
\---| /^^^^^^^^^^^^\Z
\-/ \Z
/ / | \Z
\---' |\________| |_______ |Z
\--' /\/ \|_|_|_|| |_|_|_|_|\_ |Z
'------' / / / |_ /Z
\---' | / `````` /Z
\--' /\/ \ _____________/Z
'------' \
"
############################################
echo "CONNECT WITH THIS COMMAND"
echo "ipfs cat /ipns/${IPFSNODEID}/x_ssh.sh | bash"
############################################
## PROMETHEUS NODE
if [[ -s ~/.zen/prometheus/prometheus ]]; then
echo "UPDATING ~/.zen/prometheus/prometheus.yml"
## ADD ALL SWARM NODES TO MONITORING LIST for prometheus (GRAFANA) node
ncrunning=$(ps axf --sort=+utime | grep -w 'prometheus' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
[[ $ncrunning ]] \
&& echo "RESTARTING" && kill -HUP $ncrunning \
|| { cd ~/.zen/prometheus/; ./prometheus & }
fi
## LAUNCHING node_exporter
ncrunning=$(ps axf --sort=+utime | grep -w 'node_exporter' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
[[ $ncrunning ]] \
&& echo "RESTARTING" && kill -HUP $ncrunning \
|| { /usr/local/bin/node_exporter & }
exit 0

View File

@ -1,15 +1,11 @@
#!/bin/bash #!/bin/bash
######################################################################## ########################################################################
# Version: 1.0 # Version: 0.5
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
######################################################################## ########################################################################
# PAD COCODING : https://pad.p2p.legal/s/G1PalPay # PAD COCODING : https://pad.p2p.legal/s/G1PalPay
# This script monitors G1 Blockchain # This script monitors G1 Blockchain
######################################################################## ########################################################################
# TODO : CHECK RX coming from UPlanet Wallet
## meaning an initial 3.1G1 from a ZenStation admin wallet
## if not relay payment to ZenStation admin
########################################################################
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##*/}"
@ -19,25 +15,26 @@ ME="${0##*/}"
CESIUM=${myCESIUM} CESIUM=${myCESIUM}
GCHANGE=${myGCHANGE} GCHANGE=${myGCHANGE}
echo "$ME RUNNING (•‿‿•)" echo "(✜‿‿✜) G1PalPay : Receiving & Relaying payments to emails found in comment"
echo "$ME RUNNING"
######################################################################## ########################################################################
# PALPAY SERVICE : MONITOR INCOMING TX & NEW TIDDLERS # PALPAY SERVICE
######################################################################## ########################################################################
######################################################################## ########################################################################
INDEX="$1" ## TW file INDEX="$1"
[[ ! ${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 PLAYER="$2"
[[ ! ${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) ## TW /ipns/ ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
[[ ! ${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) ## PLAYER WALLET G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
[[ ! $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,81 +44,35 @@ MOATS="$3"
################################################################### ###################################################################
## CREATE APP NODE PLAYER PUBLICATION DIRECTORY ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
################################################################### ###################################################################
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 "=====(•‿‿•)====== ( ◕‿◕) (◕‿◕ ) =======(•‿‿•)======= ${PLAYER} echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
${INDEX}"
echo "(✜‿‿✜) G1PalPay : CHECK LAST 30 TX comment"
# CHECK LAST 30 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 30 -j \ ${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
> $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 1
############################## ##############################
## CONTROL WALLET
########################################################################################
if [[ ${UPLANETNAME} != "" ]]; then
echo "UPLANET ORIGIN CONTROL"
while read LINE; do
echo "${LINE}"
JSON=${LINE}
TXIDATE=$(echo $JSON | jq -r .date)
TXIPUBKEY=$(echo $JSON | jq -r .pubkey)
TXIAMOUNT=$(echo $JSON | jq -r .amount)
COMMENT=$(echo $JSON | jq -r .comment)
lastTXdate=$(cat ~/.zen/game/players/${PLAYER}/.uplanet.check)
[[ -z lastTXdate ]] && lastTXdate=0
[[ $(cat ~/.zen/game/players/${PLAYER}/.uplanet.check) -ge $TXIDATE ]] \
&& continue
[[ $(echo "$TXIAMOUNT < 0" | bc) -eq 1 ]] \
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.uplanet.check \
&& continue
echo "# CHECK FOR PRIMAL REGULAR TX in INCOMING PAYMENTS"
# silkaj money history DsEx1pS33vzYZg4MroyBV9hCw98j1gtHEhwiZ5tK7ech | tail -n 3 | head -n 1
# │ 2017-11-25 │ 5nk2qdh1…:GWD │ 200 │ 18.332 │ │
line=$(silkaj money history $TXIPUBKEY | tail -n 3 | head -n 1)
pub8=$(echo $line | awk -F'│' '{gsub(/[[:space:]]*/, "", $3); split($3, a, ":"); print substr(a[1], 1, 8)}')
# pub8=$(echo $line | cut -d '│' -f 3 | cut -c 1-8)
# PUB8= UPLANET WALLET
done < $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json
fi
########################################################## ##########################################################
############# CHECK FOR N1COMMANDs IN PAYMENT COMMENT ############# CHECK FOR N1COMMANDs IN PAYMENT COMMENT
################################################################# #################################################################
# LOG / cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[]
## TREAT ANY COMMENT STARTING WITH N1: exemple : N1Kodi.sh
## EXTRACT /ASTROBOT/N1ProgramNames
ls ${MY_PATH}/../ASTROBOT/ | grep "N1" | cut -d "." -f 1 > ~/.zen/tmp/${MOATS}/N1PROG
while read prog; do
echo "# SCAN FOR N1 COMMAND : $prog"
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 ## TREAT ANY COMMENT STARTING WITH N1
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep 'N1' > ~/.zen/tmp/${MOATS}/myN1.json
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)
TXIPUBKEY=$(echo ${NLINE} | jq -r .pubkey) TXIPUBKEY=$(echo ${NLINE} | jq -r .pubkey)
TXIAMOUNT=$(echo $NLINE | jq -r .amount)
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
# 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
[[ $(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-)
@ -129,11 +80,9 @@ while read NLINE; do
if [[ -s ${MY_PATH}/../ASTROBOT/${CMD}.sh ]]; then if [[ -s ${MY_PATH}/../ASTROBOT/${CMD}.sh ]]; then
echo "RECEIVED CMD=${CMD} from ${TXIPUBKEY}" echo "RECEIVED CMD=${CMD} from ${TXIPUBKEY}"
${MY_PATH}/../ASTROBOT/${CMD}.sh ${INDEX} ${PLAYER} ${MOATS} ${TXIPUBKEY} ${TH} ${TRAIL} ${TXIAMOUNT} ${MY_PATH}/../ASTROBOT/${CMD}.sh ${INDEX} ${PLAYER} ${MOATS} ${TXIPUBKEY} ${TH} ${TRAIL}
## WELL DONE . ## WELL DONE .
[[ $? == 0 ]] \ [[ $? == 0 ]] && echo "${CMD} DONE" && echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.ndate ## MEMORIZE LAST TXIDATE
&& echo "${CMD} DONE" \
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.ndate ## MEMORIZE LAST TXIDATE
else else
@ -144,19 +93,18 @@ while read NLINE; do
done < ~/.zen/tmp/${MOATS}/myN1.json done < ~/.zen/tmp/${MOATS}/myN1.json
######################################################################################## ########################################################################################
echo "# CHECK FOR EMAILs IN PAYMENT COMMENT" ############# CHECK FOR EMAILs IN PAYMENT COMMENT
## DEBUG ## cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -r ## DEBUG ## cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -r
################################################################# #################################################################
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep '@' \ cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep '@' > ~/.zen/tmp/${MOATS}/myPalPay.json
> ~/.zen/tmp/${MOATS}/myPalPay.json
# IF COMMENT CONTAINS EMAIL ADDRESSES # IF COMMENT CONTAINS EMAIL ADDRESSES
# SPREAD & TRANSFER AMOUNT TO NEXT (REMOVING IT FROM LIST)... # SPREAD & TRANSFER AMOUNT TO NEXT (REMOVING IT FROM LIST)... Other G1PalPay will continue the transmission...
## Other G1PalPay will continue the transmission...
######################################################################## ########################################################################
## GET @ in JSON INLINE ## GET @ in JSON INLINE
while read LINE; do while read LINE; do
echo "MATCHING IN COMMENT"
echo "${LINE}" echo "${LINE}"
JSON=${LINE} JSON=${LINE}
TXIDATE=$(echo $JSON | jq -r .date) TXIDATE=$(echo $JSON | jq -r .date)
@ -165,120 +113,92 @@ while read LINE; do
TXIAMOUNTUD=$(echo $JSON | jq -r .amountUD) TXIAMOUNTUD=$(echo $JSON | jq -r .amountUD)
COMMENT=$(echo $JSON | jq -r .comment) COMMENT=$(echo $JSON | jq -r .comment)
lastTXdate=$(cat ~/.zen/game/players/${PLAYER}/.atdate) echo ">>> TODO CHECK TX HAPPENS LAST 24H (WHAT IS TXIDATE=$TXIDATE FORMAT ??)"
[[ -z lastTXdate ]] && lastTXdate=0 [[ $(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"))
[[ $(echo "$TXIAMOUNT < 0" | bc) -eq 1 ]] \
&& echo "TX-OUT :: ${LINE}" \
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate \
&& continue
## DIVIDE INCOMING AMOUNT TO SHARE ## DIVIDE INCOMING AMOUNT TO SHARE
echo "N=${#TXIMAILS[@]}" echo "N=${#TXIMAILS[@]}"
N=${#TXIMAILS[@]} N=${#TXIMAILS[@]}
SHARE=$(echo "scale=2; $TXIAMOUNT / $N" | bc)
SHAREE=$(echo "scale=2; $TXIAMOUNT / $N" | bc) echo "$TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS % $SHARE %"
SHARE=$(makecoord ${SHAREE})
## SHARE is received AMOUT divided by numbers of EMAILS in comment
echo "% ${#TXIMAILS[@]} % $SHARE % $TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS"
# let's loop over TXIMAILS
for EMAIL in "${TXIMAILS[@]}"; do for EMAIL in "${TXIMAILS[@]}"; do
[[ ${EMAIL} == $PLAYER ]] \ [[ ${EMAIL} == $PLAYER ]] && echo "ME MYSELF" && continue
&& echo "ME MYSELF" \
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate \
&& continue
echo "EMAIL : ${EMAIL}" echo "EMAIL : ${EMAIL}"
ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED="" # RESET VAR ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED="" # RESET VAR
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more $($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more
[[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS}
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}" echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
[[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS}
if [[ ! ${ASTROTW} ]]; then if [[ ! ${ASTROTW} ]]; then
echo "# PLAYER ${EMAIL} INCONNU $(date)" echo "# PLAYER INCONNU $(date)"
continue
fi fi
if [[ ! ${ASTROG1} ]]; then [[ ! ${ASTROG1} ]] \
echo "<html><head><meta charset='UTF-8'> && echo "<html><body><h1>SORRY ${EMAIL} YOUR ACCOUNT IS MISSING</h1>" \
<style> && 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 \
body { && ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro "NEED FOR ACCOUNT" \
font-family: 'Courier New', monospace; && continue
}
pre {
white-space: pre-wrap;
}
</style></head><body>" > ~/.zen/tmp/palpay.bro
echo "<h1>BRO.<h1>
$PLAYER wants to send you ${SHARE} G1...<br>
<br>(♥‿‿♥)... on <a href='https://qo-op.com'>UPlanet</a>
</body></html>" >> ~/.zen/tmp/palpay.bro
${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro "BRO. $PLAYER INVITATION" ## MAKE FRIENDS & SEND G1
continue echo "NEW PalPay Friend $ASTROMAIL
fi
sleep 3
## SEND G1
echo "PalPay____________
SEND ${SHARE} G1 to $ASTROMAIL
TW : $ASTROTW TW : $ASTROTW
G1 : ${ASTROG1}" G1 : ${ASTROG1}
ASTROIPFS : $ASTROIPFS
RSS : $ASTROFEED"
echo PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "UPLANET:PALPAY" if [[ ${ASTROG1} != ${G1PUB} ]]; then
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "UPLANET:PALPAY"
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "G1PalPay:$N:$TXIPUBKEY"
STAMP=$? STAMP=$?
else
STAMP=0
fi
## DONE STAMP IT ## DONE STAMP IT
[[ $STAMP == 0 ]] \ [[ $STAMP == 0 ]] && echo "STAMP DONE" && echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate ## MEMORIZE LAST TXIDATE
&& echo "REDISTRIBUTION DONE" \
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate
done done
done < ~/.zen/tmp/${MOATS}/myPalPay.json done < ~/.zen/tmp/${MOATS}/myPalPay.json
echo "====(•‿‿•)======= %%%%% (°▃▃°) %%%%%%% ======(•‿‿•)========" echo "=========== %%%%% (°▃▃°) %%%%%%% =============="
######################################################################################## ########################################################################################
## SEARCH FOR TODAY MODIFIED TIDDLERS WITH MULTIPLE EMAILS IN TAG ## SEARCH FOR TODAY MODIFIED TIDDLERS WITH MULTIPLE EMAILS IN TAG
# This can could happen in case Tiddler is copied OR PLAYER manualy adds an email tag to Tiddler to share with someone... # This can could happen in case Tiddler is copied OR PLAYER manualy adds an email tag to Tiddler to share with someone...
################################################################# #################################################################
echo "# EXTRACT [days[-1]] DAYS TIDDLERS" echo "# EXTRACT TODAY TIDDLERS"
tiddlywiki --load ${INDEX} \ tiddlywiki --load ${INDEX} \
--output ~/.zen/tmp/${MOATS} \ --output ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/ \
--render '.' "today.${PLAYER}.tiddlers.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days[-1]]' --render '.' "today.${PLAYER}.tiddlers.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-1]]'
# cat ~/.zen/tmp/${MOATS}/today.${PLAYER}.tiddlers.json | jq -rc # LOG
## FILTER MY OWN EMAIL ## FILTER MY OWN EMAIL
cat ~/.zen/tmp/${MOATS}/today.${PLAYER}.tiddlers.json \ # cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json | jq -rc # LOG
| 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 ]] \ cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json \
&& echo "NO EXTRA @tags.json TIDDLERS TODAY" | sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' > ~/.zen/tmp/${MOATS}/@tags.json 2>/dev/null ## REMOVE PLAYER EMAIL IN INLINE JSON
[[ ! -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 new EMAIL in TAGS treatment" echo "******************TIDDLERS with 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
################################ ## 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"
@ -286,26 +206,26 @@ while read LINE; do
echo "---------------------------------- PalPAY for Tiddler" echo "---------------------------------- PalPAY for Tiddler"
TCREATED=$(echo ${LINE} | jq -r .created) TCREATED=$(echo ${LINE} | jq -r .created)
TTITLE=$(echo ${LINE} | jq -r .title) TTITLE=$(echo ${LINE} | jq -r .title)
TTEXT=$(echo ${LINE} | jq -r '.text | match("/ipfs/[^\"\\s]+") | .string | first')
TTAGS=$(echo ${LINE} | jq -r .tags) TTAGS=$(echo ${LINE} | jq -r .tags)
## Extract "/ipfs/CID" from Tiddler - to pin TOPIN - ## PREPARE PINNING -
TOPIN=$(echo ${LINE} | jq -r .ipfs) ## Tiddler produced by "Astroport Desktop" TOPIN=$(echo ${LINE} | jq -r .ipfs) ## Tiddler produced by "Astroport Desktop"
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && TOPIN=$(echo ${LINE} | jq -r ._canonical_uri) ## Tiddler is exported to IPFS [[ -z ${TOPIN} ]] && TOPIN=$(echo ${LINE} | jq -r ._canonical_uri) ## Tiddler is exported to IPFS
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && TOPIN=$(echo ${LINE} | jq -r '.text | match("/ipfs/[^\"\\s]+") | .string | first') ## Ket first /ipfs/ link from text field [[ ! $(echo ${TOPIN} | grep '/ipfs') ]] \
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && echo "NOT COMPATIBLE ${TOPIN}" && TOPIN="" && echo "NOT COMPATIBLE ${TOPIN}" \
&& TOPIN=""
echo "$TTITLE" echo "$TTITLE"
## Count extra emails found ## Count emails found
emails=($(echo "$TTAGS" | sed "s~${PLAYER}~ ~g" | 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}"
MSG="SEND + $nb JUNE TO BROs : ${emails[@]}" MSG="SEND + $zen ZEN TO BROs : ${emails[@]}"
echo $MSG echo $MSG
ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED="" ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED=""
@ -314,62 +234,45 @@ while read LINE; do
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}" echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
[[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS} [[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS}
echo "TOPIN=${TOPIN}" if [[ ${ASTROG1} && ${ASTROG1} != ${G1PUB} ]]; then
if [[ ${TOPIN} && ${ASTROG1} && ${ASTROG1} != ${G1PUB} ]]; then
############################## ## SEND zen ZEN (G1 dice JUNE) TO ALL ## MAKE ONE EACH AFTER ALL EMAIL CONSUMED ##
### GET PAID & GET PINNED !! #~ ~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
############################## #~ ${MY_PATH}/../tools/PAY4SURE.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a ${zen} -p ${ASTROG1} -c "${emails[@]} $TTITLE" -m > /dev/null 2>&1
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${nb}" "${ASTROG1}" "${emails[@]} /ipfs/${TOPIN}" ## Filling comment with email list will make players resend to all ## MAY BE A BAD IDEA ###
echo ${LINE} > ~/.zen/tmp/${MOATS}/line
LINEH=$(ipfs add -q ~/.zen/tmp/${MOATS}/line)
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${zen}" "${ASTROG1}" "${emails[@]} /ipfs/$LINEH"
echo "<html><head><meta charset='UTF-8'> echo "<html><body><h1>BRO ${PLAYER}</h1> : $MSG" > ~/.zen/tmp/${MOATS}/g1message
<style>
body {
font-family: 'Courier New', monospace;
}
pre {
white-space: pre-wrap;
}
</style></head><body><h1>BRO ${PLAYER}</h1> : $MSG" > ~/.zen/tmp/${MOATS}/g1message
## PINNING IPFS MEDIA - PROOF OF COPY SYSTEM - ## PINNING IPFS MEDIA - PROOF OF COPY SYSTEM -
[[ ! -z $TOPIN ]] \ [[ ! -z $TOPIN ]] \
&& ipfs pin add $TOPIN \ && ipfs pin add $TOPIN \
&& echo "<br> <a href='${myIPFSGW}'/ipns/${ASTROTW}#${TTITLE}>${TTITLE}</a> && echo "<h2>PINNING $TOPIN</h2>(☼‿‿☼)" >> ~/.zen/tmp/${MOATS}/g1message
<br>( ${emails[@]} )<br>
<h2>PIN: <a href='${myIPFSGW}'$TOPIN>$TOPIN</a></h2>(☼‿‿☼)" >> ~/.zen/tmp/${MOATS}/g1message
## lazy mode... NOT FINISHING HTML TAGGING... browser shoud display html page ;) ## lazy mode... NOT FINISHING HTML TAGGING... browser shoud display html page ;)
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message "BRO. ${ZMAIL} TW5 PIN" ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message "PIN TIDDLER"
else else
## ${ZMAIL} NOT A PLAYER YET
## SEND MESSAGE TO INFORM ${ZMAIL} OF THIS EXISTING TIDDLER ## SEND MESSAGE TO INFORM ${ZMAIL} OF THIS EXISTING TIDDLER
echo "<html><head><meta charset='UTF-8'> echo "<html><body>
<style>
body {
font-family: 'Courier New', monospace;
}
pre {
white-space: pre-wrap;
}
</style></head><body>
<h1>BRO. </h1> <h1>BRO. </h1>
<br> <a href='${myIPFSGW}'/ipns/${ASTROTW}#${TTITLE}>${TTITLE}</a> <br>
<br>( ${emails[@]} )<br> <a href='${myIPFSGW}'/ipns/${ASTROTW}>${PLAYER}</a> HAS SHARED A TIDDLER WITH YOU.
<br><b>${TTITLE}</b><br>(✜‿‿✜) <br><b>${TTITLE}</b><br>(✜‿‿✜)
... Join <a href='https://qo-op.com'>UPlanet</a> ... Join <a href='https://qo-op.com'>UPlanet</a> open a TW !
</body></html>" > ~/.zen/tmp/palpay.bro </body></html>" > ~/.zen/tmp/palpay.bro
${MY_PATH}/../tools/mailjet.sh "${ZMAIL}" ~/.zen/tmp/palpay.bro "BRO. ${PLAYER} TW5 link" ${MY_PATH}/../tools/mailjet.sh "${ZMAIL}" ~/.zen/tmp/palpay.bro "TIDDLER TW SHARING"
fi fi
done < ~/.zen/tmp/${MOATS}/@tags.json done < ~/.zen/tmp/${MOATS}/@tags.json
echo "=====(•‿‿•)====== ( ◕‿◕) (◕‿◕ ) =======(•‿‿•)=======" echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
# rm -Rf $HOME/.zen/tmp/${MOATS} rm -Rf $HOME/.zen/tmp/${MOATS}
ls $HOME/.zen/tmp/${MOATS}
exit 0 exit 0

View File

@ -42,22 +42,22 @@ mkdir -p ~/.zen/tmp/${MOATS}
##################################################### #####################################################
# CREATION DE LA CLEF DERIVEE "G1VOEU" # CREATION DE LA CLEF DERIVEE "G1VOEU"
##################################################### #####################################################
source ~/.zen/game/players/${PLAYER}/secret.june ## LE PEPPER DU PLAYER DEVIENT LE SECRET1 DU G1VOEU source ~/.zen/game/players/${PLAYER}/secret.june ## LE PEPPER DU PLAYER DEVIENT LE SALT DU G1VOEU
[[ ${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 12 | 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
VoeuName=$(echo "${TITRE}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # VoeuName EST LE TITRE DU VOEU : CapitalGluedWords + EMAIL VoeuName=$(echo "${TITRE}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # VoeuName EST LE TITRE DU VOEU : CapitalGluedWords + EMAIL
SECRET2="${VoeuName} ${PLAYER} ${SALT}" ## SECRET2 est "TitreDuVoeu PLAYER SALT" SECRET2="${VoeuName} ${PLAYER}" ## SECRET2 est "TitreDuVoeu PLAYER"
echo "${SECRET2}" && [[ ! ${SECRET2} ]] && echo "EMPTY SECRET2 - ERROR" && exit 1 echo "${SECRET2}" && [[ ! ${SECRET2} ]] && echo "EMPTY SECRET2 - ERROR" && exit 1
echo "## keygen PLAYER DERIVATE WISH KEY" echo "## keygen PLAYER DERIVATE WISH KEY"
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/wish.dunikey "${SECRET1}${UPLANETNAME}" "${SECRET2}${UPLANETNAME}" ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/wish.dunikey "${SECRET1}" "${SECRET2}"
WISHG1PUB=$(cat ~/.zen/tmp/${MOATS}/wish.dunikey | grep "pub:" | cut -d ' ' -f 2) WISHG1PUB=$(cat ~/.zen/tmp/${MOATS}/wish.dunikey | grep "pub:" | cut -d ' ' -f 2)
echo "WISHG1PUB (G1PUB) = ${WISHG1PUB}" echo "WISHG1PUB (G1PUB) = ${WISHG1PUB}"
[[ ${WISHG1PUB} == "" ]] && echo "EMPTY WISHG1PUB G1PUB - ERROR" && exit 1 [[ ${WISHG1PUB} == "" ]] && echo "EMPTY WISHG1PUB G1PUB - ERROR" && exit 1
@ -66,7 +66,7 @@ mv ~/.zen/tmp/${MOATS}/wish.dunikey ~/.zen/game/players/${PLAYER}/voeux/${VoeuNa
echo "# NOUVEAU VOEU" echo "# NOUVEAU VOEU"
mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/ mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey "${SECRET1}${UPLANETNAME}" "${SECRET2}${UPLANETNAME}" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey "${SECRET1}" "${SECRET2}"
ipfs key import ${WISHG1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey ipfs key import ${WISHG1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey
VOEUNS=$(ipfs key list -l | grep -w "${WISHG1PUB}" | cut -d ' ' -f 1 ) VOEUNS=$(ipfs key list -l | grep -w "${WISHG1PUB}" | cut -d ' ' -f 1 )
echo "/ipns/${VOEUNS}" echo "/ipns/${VOEUNS}"
@ -78,7 +78,7 @@ ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc | base16)
#~ echo $ENCODING #~ echo $ENCODING
## TEST IPFS ## TEST IPFS
#~ ipfs --timeout=30s cat --progress=false /ipns/${VOEUNS} > ~/.zen/tmp/${VOEUNS}.json #~ ipfs --timeout=30s cat /ipns/${VOEUNS} > ~/.zen/tmp/${VOEUNS}.json
#~ [[ -s ~/.zen/tmp/${VOEUNS}.json ]] \ #~ [[ -s ~/.zen/tmp/${VOEUNS}.json ]] \
#~ && echo "HEY !!! UN CHANNEL EXISTE DEJA POUR CE VOEU ! ~/.zen/tmp/${VOEUNS}.json - EXIT -" \ #~ && echo "HEY !!! UN CHANNEL EXISTE DEJA POUR CE VOEU ! ~/.zen/tmp/${VOEUNS}.json - EXIT -" \
#~ && exit 1 #~ && exit 1
@ -92,7 +92,7 @@ echo ${WISHG1PUB} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.wish
echo "# CREATION QR CODE" echo "# CREATION QR CODE"
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | xargs | cut -d ' ' -f 2) LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png" "$LIBRA/ipns/${VOEUNS}" qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png" "$LIBRA/ipns/${VOEUNS}"
@ -141,17 +141,19 @@ echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key-'${Voe
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-key-'${VoeuName}'","text":"'${WISHG1PUB}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-g1.json echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-key-'${VoeuName}'","text":"'${WISHG1PUB}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-g1.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-'${VoeuName}'","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-'${VoeuName}'","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
# TEXT="<a target='_blank' href='"/ipns/${VOEUNS}"'><img src='"/ipfs/${IVOEUPLAY}"'></a><br><br><a target='_blank' href='"/ipns/${VOEUNS}"'>"${VoeuName}"</a>" # TEXT="<a target='_blank' href='"/ipns/${VOEUNS}"'><img src='"/ipfs/${IVOEUPLAY}"'></a><br><br><a target='_blank' href='"/ipns/${VOEUNS}"'>"${VoeuName}"</a>"
#:[tag[G1CopierYoutube]] [tag[pdf]] #:[tag[G1CopierYoutube]] [tag[pdf]]
# Contains QRCode linked to G1VoeuTW and BUTTON listing G1Voeux # Contains QRCode linked to G1VoeuTW and BUTTON listing G1Voeux
# <img width='600' src='"/ipfs/${IMAGIC}"'><br> # <img width='600' src='"/ipfs/${IMAGIC}"'><br>
TEXT="<a target='_blank' href='#:[tag[G1"${VoeuName}"]]' ><img src='"/ipfs/${IVOEUPLAY}"'></a><br>\n TEXT="<a target='_blank' href='#:[tag[G1"${VoeuName}"]]' ><img src='"/ipfs/${IVOEUPLAY}"'></a><br>
<a target='_blank' href='"/ipns/${VOEUNS}"'>TW G1Voeu "${PLAYER}"</a><br><br>\n\n <a target='_blank' href='"/ipns/${VOEUNS}"'>TW G1Voeu "${PLAYER}"</a><br><br>
<\$button class='tc-tiddlylink'>\n <\$button class='tc-tiddlylink'>
<\$list filter='[tag[G1"${VoeuName}"]]'>\n <\$list filter='[tag[G1"${VoeuName}"]]'>
<\$action-navigate \$to=<<currentTiddler>> \$scroll=no/>\n <\$action-navigate \$to=<<currentTiddler>> \$scroll=no/>
</\$list>\n </\$list>
ALL G1"${VoeuName}"\n Afficher tous vos G1"${VoeuName}"
</\$button>" </\$button>"
# NEW IVEU TIDDLER # NEW IVEU TIDDLER

View File

@ -1,103 +0,0 @@
#!/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} (◕‿◕ ) "
#~ ## 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 Key Scan _______________________________"
## 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"
## COMBINE & SHUFFLE KEYS
combined=("${LWKEYS[@]}" "${LSKEYS[@]}" "${LRKEYS[@]}" "${WKEYS[@]}" "${SKEYS[@]}" "${RKEYS[@]}")
UKEYS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u | shuf ))
echo "SYNC ${#UKEYS[@]} GEOKEYS..."
## STORAGE FOR IPFS GET UplanetKeyS
mkdir -p ~/.zen/tmp/flashmem
## Refresh flashmem/UplanetKey every 3 hours => DATA SHAKER
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
echo "SYNC $key"
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 --progress=false -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[@]} GEOKEYS"
echo "=========================="
## Search for TW /ipfs/ and refresh
TWS=($(cat ~/.zen/tmp/flashmem/*/TWz/*/_index.html | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf))
echo "SYNC ${#TWS[@]} TWs..."
floop=0
medo=0
for tw in ${TWS[@]}; do
[[ -d ~/.zen/tmp/flashmem/tw/$tw ]] \
&& echo "$key already copied" && medo=$((medo +1)) && continue
echo "SYNC $key"
floop=$((floop +1))
mkdir -p ~/.zen/tmp/flashmem/tw/$tw
ipfs --timeout 180s get --progress=false -o ~/.zen/tmp/flashmem/tw/$tw/index.html /ipns/$tw
[[ $? == 0 ]] \
&& medo=$((medo +1)) && floop=$((floop -1)) \
|| rm -Rf ~/.zen/tmp/flashmem/tw/$tw
[ $floop -gt 33 ] && break
done
echo "=========================="
echo "(✜‿‿✜) ${ME} :: $medo SUCCESS missing $floop KEYS from ${#TWS[@]} TWS"
echo "=========================="
exit 0

View File

@ -25,13 +25,12 @@ echo "## RUNNING NODE.refresh"
if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
# ONLY FRESH DATA HERE # ONLY FRESH DATA HERE
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1) BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
## Getting actual online version ## Getting actual online version
#~ ipfs get -o ~/.zen/tmp/${IPFSNODEID} /ipns/${IPFSNODEID}/ #~ ipfs get -o ~/.zen/tmp/${IPFSNODEID} /ipns/${IPFSNODEID}/
## COPY STATION yt-dlp.list ## COPY STATION yt-dlp.list
cp $HOME/.zen/.yt-dlp.list ~/.zen/tmp/${IPFSNODEID}/yt-dlp.list cp $HOME/.zen/.yt-dlp.list ~/.zen/tmp/${IPFSNODEID}/yt-dlp.list
cp $HOME/.zen/.yt-dlp.mp3.list ~/.zen/tmp/${IPFSNODEID}/yt-dlp.mp3.list
## COPY COINS VALUE OF THE DAY ## COPY COINS VALUE OF THE DAY
rm -Rf ~/.zen/tmp/${IPFSNODEID}/COINS/ rm -Rf ~/.zen/tmp/${IPFSNODEID}/COINS/
@ -39,8 +38,7 @@ 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
rm -f ~/.zen/tmp/${IPFSNODEID}/20h12.log ## TODO REMOVE cp -f /tmp/20h12.log ~/.zen/tmp/${IPFSNODEID}/
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))
@ -48,18 +46,12 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
## RUNING FOR ALL LOCAL PLAYERS ## RUNING FOR ALL LOCAL PLAYERS
for PLAYER in ${PLAYERONE[@]}; do for PLAYER in ${PLAYERONE[@]}; do
echo "${PLAYER} GCHANGE FRIENDS" echo "${PLAYER} GCHANGE FRIENDS"
[[ -d ~/.zen/tmp/${IPFSNODEID}/${PLAYER} && ${PLAYER} != "" ]] \ [[ -d ~/.zen/tmp/${IPFSNODEID}/${PLAYER} && ${PLAYER} != "" ]] && rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/ ## TODO REMOVE (PROTOCOL UPGRADE)
&& rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/ mkdir -p ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/
cp -Rf ~/.zen/game/players/${PLAYER}/FRIENDS/* ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/ 2>/dev/null
done done
## STOP GCHANGE SWARM SHARING --- too big data --- deprecated
rm -Rf ~/.zen/tmp/${IPFSNODEID}/GCHANGE ## UGGLY PATCH
## INFORM GPS LOCATION cp ~/.zen/GPS ~/.zen/tmp/${IPFSNODEID}/
[[ -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
@ -68,14 +60,14 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
echo "############################################ MY MAP " echo "############################################ MY MAP "
ls ~/.zen/tmp/${IPFSNODEID}/ ls ~/.zen/tmp/${IPFSNODEID}/
echo "############################################" echo "############################################"
NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1) NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
ROUTING=$(ipfs add -rwHq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 ) ROUTING=$(ipfs add -rwHq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 )
ipfs name publish /ipfs/${ROUTING} ipfs name publish /ipfs/${ROUTING}
echo ">> $NSIZE Bytes STATION BALISE > ${myIPFS}/ipns/${IPFSNODEID}" echo ">> $NSIZE Bytes STATION BALISE > ${myIPFS}/ipns/${IPFSNODEID}"
fi fi
echo "## CLEANING SWARM 3 DAYS OLD" ## CLEANING SWARM 30 DAYS OLD
find ~/.zen/tmp/swarm/ -mtime +3 -type d -exec rm -Rf '{}' \; find ~/.zen/tmp/swarm/ -mtime +30 -type d -exec rm -Rf '{}' \;
exit 0 exit 0

View File

@ -11,45 +11,32 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
## Publish All PLAYER TW, ## Publish All PLAYER TW,
# Run TAG subprocess: tube, voeu # Run TAG subprocess: tube, voeu
############################################ ############################################
echo "## RUNNING PLAYER.refresh echo "## RUNNING PLAYER.refresh"
_..._
.' '. _
/ .-°°-\ _/ \\
.-| /:. | | |
| \ |:. /.-'-./
| .-'-;:__.' =/
.'= A=|STRO _.='
/ _. | ;
;-.-'| \ |
/ | \ _\ _\\
"
PLAYERONE="$1" PLAYERONE="$1"
# [[ $isLAN ]] && PLAYERONE=$(cat ~/.zen/game/players/.current/.player 2>/dev/null) # [[ $isLAN ]] && PLAYERONE=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
[[ ! ${PLAYERONE} ]] && PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null)) [[ ! ${PLAYERONE} ]] && PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
echo "FOUND ${#PLAYERONE[@]} ASTRONAUTS : ${PLAYERONE[@]}" echo "FOUND : ${PLAYERONE[@]}"
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
echo "RENEWING LOCAL UPLANET REPOSITORY (ADMIN=${CURRENT}) echo "RENEWING UPLANET NODE CACHE
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??" ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??"
rm -Rf ~/.zen/tmp/${IPFSNODEID}/UPLANET
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET
echo "CLEANING TW NODE CACHE ~/.zen/tmp/${IPFSNODEID}/TW/"
rm -Rf ~/.zen/tmp/${IPFSNODEID}/TW/
## RUNING FOR ALL LOCAL PLAYERS ## RUNING FOR ALL LOCAL PLAYERS
for PLAYER in ${PLAYERONE[@]}; do for PLAYER in ${PLAYERONE[@]}; do
[[ ! -d ~/.zen/game/players/${PLAYER:-undefined} ]] && echo "BAD ${PLAYERONE}" && continue [[ ! -d ~/.zen/game/players/${PLAYER:-undefined} ]] && echo "BAD ${PLAYERONE}" && continue
[[ ! $(echo "${PLAYER}" | grep '@') ]] && continue [[ ! $(echo "${PLAYER}" | grep '@') ]] && continue
start=`date +%s`
# CLEAN LOST ACCOUNT # CLEAN LOST ACCOUNT
[[ ! -s ~/.zen/game/players/${PLAYER}/secret.dunikey ]] \ [[ ! -s ~/.zen/game/players/${PLAYER}/secret.dunikey ]] \
&& rm -Rf ~/.zen/game/players/${PLAYER} \ && rm -Rf ~/.zen/game/players/${PLAYER} \
&& echo "WARNING - ERASE ${PLAYER} - BADLY PLUGGED" \ && echo "${PLAYER} WAS BADLY PLUGGED" \
&& continue && continue
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}")
### UPGRADE PLAYER for myos IPFS API ### DOUBLON WITH VISA.new (TO REMOVE) ### UPGRADE PLAYER for myos IPFS API ### DOUBLON WITH VISA.new (TO REMOVE)
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
@ -57,30 +44,32 @@ 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 "##### ${YOUSER} ################################ ~/.zen/tmp/${MOATS}"
echo "##################################################################"
echo ">>>>> PLAYER : ${PLAYER} >>>>>>>>>>>>> REFRESHING TW STATION"
echo "##################################################################" echo "##################################################################"
echo ">>>>> PLAYER : ${PLAYER} >>>>>>>>>>>>> REFRESHING TW "
echo "################################################ $(date)"
PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null)
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
$MY_PATH/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck COINS=$($MY_PATH/../tools/COINScheck.sh $G1PUB | tail -n 1)
cat ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck ###DEBUG MODE
COINS=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck | 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 (= 10 €/OC) ? #~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 1 €OC) ?
echo "## >>>>>>>>>>>>>>>> REFRESH ASTRONAUTE TW" echo "##################################################################"
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)
############### CANNOT FIND PLAYER KEY ###########
if [[ ! ${ASTRONAUTENS} ]]; then if [[ ! ${ASTRONAUTENS} ]]; then
echo "${PLAYER} TW IS DISCONNECTED... RECREATING IPNS KEYS" echo "${PLAYER} TW IS DISCONNECTED... RECREATING IPNS KEYS"
## TODO : EXTRACT & DECRYPT secret.june FROM TW
ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player
ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player
@ -101,407 +90,194 @@ for PLAYER in ${PLAYERONE[@]}; do
mkdir -p ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/ mkdir -p ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/
################### GET LATEST TW ################### GET LATEST TW
rm -f ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
echo "GETTING TW..." echo "GETTING TW..."
####################################################################################################
ipfs --timeout 480s get --progress=false -o ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html /ipns/${ASTRONAUTENS} ipfs --timeout 480s get -o ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html /ipns/${ASTRONAUTENS}
####################################################################################################
## PLAYER TW IS ONLINE ? ## PLAYER TW IS ONLINE ?
if [ ! -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ]; then if [ ! -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ]; then
NOWCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain) NOWCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain)
LASTCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.* | tail -n 1) LASTCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.* | tail -n 1)
try=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.try 2>/dev/null) || try=3 echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>"
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" echo "<a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>"
echo "$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED" echo ">> %%% WARNING %%%"
echo ">> %%% WARNING TRY LEFT : $try %%%"
echo "------------------------------------------------" echo "------------------------------------------------"
echo " * <a href='${myIPFS}/ipfs/${LASTCHAIN}'>LAST</a>" echo " * <a href='${myIPFS}/ipfs/${LASTCHAIN}'>LAST</a>"
echo " *<a href='${myIPFS}/ipfs/${NOWCHAIN}'>NOW</a>" echo " *<a href='${myIPFS}/ipfs/${NOWCHAIN}'>NOW</a>"
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
## SEND AN EMAIL ALERT TO PLAYER ## SEND AN EMAIL ALERT TO PLAYER
echo "<html><head><meta charset='UTF-8'> echo "<html><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>" > ~/.zen/tmp/result
<style>
body {
font-family: 'Courier New', monospace;
}
pre {
white-space: pre-wrap;
}
</style></head><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW LOADING TIMEOUT</a>" > ~/.zen/tmp/result
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
echo "<br>" >> ~/.zen/tmp/result echo "" >> ~/.zen/tmp/result
echo "<br><a href='${myIPFS}/ipfs/${LASTCHAIN}'>[yesterday]</a>: /ipfs/${LASTCHAIN}" >> ~/.zen/tmp/result echo "<br><a href='${myIPFS}/ipfs/${LASTCHAIN}'>ANCIENT</a>" >> ~/.zen/tmp/result
echo "<br><a href='${myIPFS}/ipfs/${NOWCHAIN}'>[today]</a>: /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result echo "<br><a href='${myIPFS}/ipfs/${NOWCHAIN}'>NEW</a>" >> ~/.zen/tmp/result
echo "<br>" >> ~/.zen/tmp/result echo "" >> ~/.zen/tmp/result
echo "<br> %%% WARNING %%% $try TRY LEFT %%%" >> ~/.zen/tmp/result echo "<br> %%% WARNING %%%" >> ~/.zen/tmp/result
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
echo "<br>ipfs name publish --key=${PLAYER} /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result echo "<br>PLEASE REPAIR BY SAVING ONLINE</body></html>" >> ~/.zen/tmp/result
echo "</body></html>" >> ~/.zen/tmp/result echo "OR RUNNING CLI COMMAND : ipfs name publish --key=${PLAYER} /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result
try=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.try 2>/dev/null) || try=3
[[ $try == 0 && "${CURRENT}" != "${PLAYER}" ]] \ [[ $try == 0 ]] \
&& echo "PLAYER ${PLAYER} UNPLUG" \ && echo "PLAYER ${PLAYER} UNPLUG" \
&& ${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} "ALL" \ && ${MY_PATH}/../tools/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \
&& continue && continue
try=$((try-1)) try=$((try-1))
echo "$try" > ~/.zen/game/players/${PLAYER}/ipfs/moa/.try echo "$try" > ~/.zen/game/players/${PLAYER}/ipfs/moa/.try
echo " %%% WARNING %%% ${PLAYER} STATION UNPLUG IN $try DAY(S)." >> ~/.zen/tmp/result
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "TW LOADING TIMEOUT" $MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "UNPLUG WARNING"
continue continue
fi else
#############################################################
## FOUND TW ## FOUND TW
err=""
############################################################# #############################################################
## CHECK "GPS" Tiddler ## CHECK WHO IS ACTUAL OFFICIAL GATEWAY
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
[[ ! -s ~/.zen/tmp/${MOATS}/GPS.json || $(cat ~/.zen/tmp/${MOATS}/GPS.json) == "[]" ]] \
&& msg="${PLAYER} GPS : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)"
#############################################################
## CHECK MadeInZion
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \ tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \ --output ~/.zen/tmp/${MOATS} \
--render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' ## MadeInZion Tiddler --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' ## MadeInZion Tiddler
[[ ! -s ~/.zen/tmp/${MOATS}/MadeInZion.json || $(cat ~/.zen/tmp/${MOATS}/MadeInZion.json) == "[]" ]] \ [[ ! -s ~/.zen/tmp/${MOATS}/MadeInZion.json ]] && echo "${PLAYER} MadeInZion : BAD TW (☓‿‿☓) " && continue
&& msg="${PLAYER} MadeInZion : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)" && player="" \
|| player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
lang=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json 2>/dev/null | jq -r .[].dao) player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
[[ ${lang} == "null" ]] && lang="fr"
#############################################################
## CHECK "AstroID" Tiddler
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'AstroID.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'AstroID' ## AstroID Tiddler
[[ $(cat ~/.zen/tmp/${MOATS}/AstroID.json 2>/dev/null) == "[]" ]] && rm ~/.zen/tmp/${MOATS}/AstroID.json
########################################## used by Astroport :: Lasertag :: TW plugin ##
## CHECK "$:/config/NewTiddler/Tags"
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'TWsign.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '$:/config/NewTiddler/Tags' ## $:/config/NewTiddler/Tags Tiddler
signature=$(cat ~/.zen/tmp/${MOATS}/TWsign.json | jq -r .[].text)
echo "${player} SIGNATURE = $signature"
############################################################# [[ ${player} != ${PLAYER} ]] \
## CHECK "Astroport" TIDDLER && echo "> BAD PLAYER=$player in TW" \
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' ## Astroport Tiddler
[[ ! -s ~/.zen/tmp/${MOATS}/Astroport.json || $(cat ~/.zen/tmp/${MOATS}/Astroport.json) == "[]" ]] \
&& msg="${PLAYER} Astroport : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)"
############################################################ BAD TW SIGNATURE
[[ ( ${player} != ${PLAYER} || ${PLAYER} != ${signature} || "${err}" == "(☓‿‿☓)" ) && ${PLAYER} != ${CURRENT} ]] \
&& echo "> (☓‿‿☓) BAD PLAYER=$player in TW (☓‿‿☓) $msg" \
&& ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ALL" \
&& continue \ && continue \
|| echo "${PLAYER} OFFICIAL TW - (⌐■_■) -" || echo "${PLAYER} OFFICIAL TW - (⌐■_■) -"
## GET "Astroport" TIDDLER
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' ## Astroport Tiddler
BIRTHDATE=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].birthdate) BIRTHDATE=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].birthdate)
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport) ## ZenStation IPNS address ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport) ## Raccorded G1Station IPNS address
CURCHAIN=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].chain | rev | cut -f 1 -d '/' | rev) # Remove "/ipfs/" part CURCHAIN=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].chain | rev | cut -f 1 -d '/' | rev) # Remove "/ipfs/" part
[[ ${CURCHAIN} == "" || ${CURCHAIN} == "null" ]] \ [[ ${CURCHAIN} == "" || ${CURCHAIN} == "null" ]] \
&& CURCHAIN="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # AVOID EMPTY && CURCHAIN="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # AVOID EMPTY
SBIRTH=$(${MY_PATH}/../tools/MOATS2seconds.sh ${BIRTHDATE})
SNOW=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
DIFF_SECONDS=$(( SNOW - SBIRTH ))
days=$((DIFF_SECONDS / 60 / 60 / 24))
################################################## ANOTHER ASTROPORT !!
IPNSTAIL=$(echo ${ASTROPORT} | rev | cut -f 1 -d '/' | rev) # Remove "/ipns/" part
########### ASTROPORT is not IPFSNODEID => EJECT TW
if [[ ${IPNSTAIL} != ${IPFSNODEID} || ${IPNSTAIL} == "_ASTROPORT_" ]]; then
echo "> PLAYER MOVED TO ${IPNSTAIL} : UNPLUG "
${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE" "Now TW is plugged to ${ASTROPORT}"
echo ">>>> CIAO ${PLAYER}"
continue
fi
################ VERIFICATIONS DONE ######################
echo "ASTROPORT ZenStation : ${ASTROPORT}"
echo "CURCHAIN=${CURCHAIN}" echo "CURCHAIN=${CURCHAIN}"
echo "================================== TW $days days old" IPNSTAIL=$(echo ${ASTROPORT} | rev | cut -f 1 -d '/' | rev) # Remove "/ipns/" part
echo "TW ASTROPORT GATEWAY : ${ASTROPORT}"
############################################## +2 DAYS & AstroID = UNPLUG !!
## REMOVE TW OLDER THAN 2 DAYS WITH AstroID
[[ -s ~/.zen/tmp/${MOATS}/AstroID.json && $days -gt 2 && "${CURRENT}" != "${PLAYER}" ]] \
&& ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ALL" "TW EJECTION. AstroID found in TW." \
&& echo "(#__#) AstroID +2 DAYS = SECURITY ERROR (#__#)" && continue
####################################################################### RTFM DUMB FIREWALL
############################################################################################
###################################### ######################################
#### UPLANET GEO COORD EXTRACTION #### UPLANET GEO COORD EXTRACTION
## GET "GPS" TIDDLER - 0.00 0.00 (if empty: null) ## GET "GPS" TIDDLER - 0.00 0.00 (if empty: null)
ZLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat) tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
[[ $ZLAT == "null" || $ZLAT == "" ]] && ZLAT="0.00" --output ~/.zen/tmp/${MOATS} \
ZLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon) --render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
[[ $ZLON == "null" || $ZLON == "" ]] && ZLON="0.00" UMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
[[ $UMAPNS == "null" ]] && UMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu"
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
[[ $LAT == "null" ]] && LAT="0.00"
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
[[ $LON == "null" ]] && LON="0.00"
LAT=$(makecoord ${ZLAT}) echo "LAT=${LAT}; LON=${LON}; UMAPNS=${UMAPNS}"
LON=$(makecoord ${ZLON})
### GET UMAP ENV ## STORE IN PLAYER CACHE
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
echo "UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON"
UMAPNS=$(echo $UMAPIPNS | cut -d '/' -f 3)
#############################################
# MAKE "GPS" TIDDLER
cat ${MY_PATH}/../templates/data/GPS.json \
| sed -e "s~_MOATS_~${MOATS}~g" \
-e "s~_PLAYER_~${PLAYER}~g" \
-e "s~_LAT_~${LAT}~g" \
-e "s~_LON_~${LON}~g" \
-e "s~_UMAPNS_~${UMAPNS}~g" \
-e "s~_SECTORTW_~${SECTORIPNS}/TW~g" \
> ~/.zen/tmp/${MOATS}/GPS.json
## UPDATE 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}/
################# PERSONAL VDO.NINJA PHONEBOOTH ########### ASTROPORT is not IPFSNODEID => EJECT TW
if [[ "${days}" == "3" ]]; then ## MOVED PLAYER (KEY IS KEPT ON LAST CONNECTED ASTROPORT)
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}") ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_USER=$(echo $YOUSER | sed "s~\.~_~g") ## TODO UNPLUG PLAYER
# MAKE "VISIO" TIDDLER ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cat ${MY_PATH}/../templates/data/VISIO.json \ if [[ ${IPNSTAIL} != ${IPFSNODEID} || ${IPNSTAIL} == "_ASTROPORT_" ]]; then
| sed -e "s~_IPFSNINJA_~${VDONINJA}~g" \ echo "> I AM ${IPFSNODEID} : PLAYER MOVED TO ${IPNSTAIL} : EJECTION "
-e "s~_MOATS_~${MOATS}~g" \ echo "UNPLUG PLAYER"
-e "s~_PLAYER_~${PLAYER}~g" \ ${MY_PATH}/../tools/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE"
-e "s~_PHONEBOOTH_~${_USER}~g" \ echo ">>>> ASTRONAUT ${PLAYER} TW CAPSULE EJECTION TERMINATED"
> ~/.zen/tmp/${MOATS}/VISIO.json continue
else
echo "[]" > ~/.zen/tmp/${MOATS}/VISIO.json
fi fi
#####################################################################
# MAKE "CESIUM" TIDDLER
if [[ "${days}" == "4" ]]; then
echo "Create CESIUM Tiddler"
cat ${MY_PATH}/../templates/data/CESIUM.json \
| sed -e "s~_G1PUB_~${G1PUB}~g" \
-e "s~_MOATS_~${MOATS}~g" \
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
-e "s~_PLAYER_~${PLAYER}~g" \
> ~/.zen/tmp/${MOATS}/CESIUM.json
else
echo "[]" > ~/.zen/tmp/${MOATS}/CESIUM.json
fi fi
#####################################################################
########## $:/moa picture ## CREATE EMAIL from email tiddler ########
## GET $:/moa Tiddlers ####################################### START
echo "GET $:/moa Tiddlers"
###################################################### [tag[$:/moa]] used for "DID" declaration
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'FRIENDS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[$:/moa]]' ## $:/moa EMAIL Tiddlers
#####################################################################
fplayers=($(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq -rc .[].title))
echo "${fplayers[@]}"
UPLAYERSTIDS=()
for fp in ${fplayers[@]}; do
[[ ! "${fp}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] && echo "BAD ${fp} FORMAT" && continue
[[ "${fp}" == "${PLAYER}" ]] && echo "IT'S ME - CONTINUE" && continue
FPLAYER=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .player')
[[ $FPLAYER == 'null' || $FPLAYER == '' ]] \
&& echo "FPLAYER null - NOGOOD${fp} -" \
&& continue
# AUTO CORRECT : sed -i "s~${fp}~NOGOOD${fp}~g" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
FTW=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .tw')
[[ ${FTW} == "/ipns/" || ${FTW} == "null" || ${FTW} == "" ]] && echo "WEIRD FTW ${FTW} - CONTINUE" && continue
FG1PUB=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .g1pub')
[[ $FG1PUB == 'null' || $FG1PUB == '' ]] && echo "FG1PUB null - CONTINUE" && continue
IHASH=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .text' | sha256sum | cut -d ' ' -f 1)
echo ":: coucou :: $FPLAYER :: (ᵔ◡◡ᵔ) ::"
echo "TW: $FTW"
echo "G1: $FG1PUB"
echo "IHASH: $IHASH"
UPLAYERSTIDS=("${UPLAYERSTIDS[@]}" "[[${FPLAYER^^}|${FPLAYER^^}]]")
## GET ORIGINH FROM LAST KNOWN TW STATE
mkdir -p ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}
## CHECK ALREADY IN ${FPLAYER^^} IHASH
rm -f ~/.zen/tmp/${MOATS}/finside.json
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'finside.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${FPLAYER^^}" ## ${FPLAYER^^} autoload Tiddlers
INSIDEH=$(cat ~/.zen/tmp/${MOATS}/finside.json | jq -rc '.[].ihash')
echo "INSIDEH: $INSIDEH"
if [[ -s ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html ]]; then
tiddlywiki --load ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' "${FPLAYER}.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${FPLAYER}" ## GET ORIGIN
ORIGINH=$(cat ~/.zen/tmp/${MOATS}/${FPLAYER}.json | jq -r '.[].text' | sha256sum | cut -d ' ' -f 1)
## CAN USE IPFSH=$(cat ~/.zen/tmp/${MOATS}/${FPLAYER}.json | jq -r '.[].text' | ipfs add -q)
## TODO MICROLEDGER TIDDLER...
# we are monitoring email tiddler image change (the G1BILLET background can be made of).
echo "ORIGINH: $ORIGINH"
else
ORIGINH="$INSIDEH"
fi
( ## REFRESH LOCAL PLAYER CACHE with FRIEND ACTUAL TW (&) will be used TOMORROW
ipfs --timeout 480s cat --progress="false" ${FTW} > ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html
) &
## UPDATE IF IHASH CHANGED -> New drawing => Friend get informed
if [[ -z $INSIDEH || $INSIDEH != $IHASH || $ORIGINH != $INSIDEH ]]; then
cat ${MY_PATH}/../templates/data/_UPPERFPLAYER_.json \
| sed -e "s~_UPPERFPLAYER_~${FPLAYER^^}~g" \
-e "s~_FPLAYER_~${FPLAYER}~g" \
-e "s~_MOATS_~${MOATS}~g" \
-e "s~_IHASH_~${IHASH}~g" \
-e "s~_FRIENDTW_~${FTW}~g" \
-e "s~_PLAYER_~${PLAYER}~g" \
> ~/.zen/tmp/${MOATS}/${FPLAYER^^}.json
echo "Insert New ${FPLAYER^^}.json"
#~ cat ~/.zen/tmp/${MOATS}/${FPLAYER^^}.json | jq
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--import ${HOME}/.zen/tmp/${MOATS}/${FPLAYER^^}.json 'application/json' \
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
--render "$:/core/save/all" "newindex.html" "text/plain"
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|| echo "ERROR - CANNOT IMPORT ${FPLAYER^^}.json - ERROR"
if [[ $ORIGINH != $INSIDEH && $ORIGINH != "" ]]; then
echo "ORIGINH Update"
rm -f ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--import ${HOME}/.zen/tmp/${MOATS}/${FPLAYER}.json 'application/json' \
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
--render "$:/core/save/all" "newindex.html" "text/plain"
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|| echo "ERROR - CANNOT IMPORT ${FPLAYER}.json - ERROR"
fi
fi
done
## GET $:/moa Tiddlers ####################################### END
################## PREPARE LIST TO INSERT IN SECTORTW_NEWS TID
echo "${UPLAYERSTIDS[@]}"
UPLAYERSTIDS_STR=""
for item in "${UPLAYERSTIDS[@]}"; do
UPLAYERSTIDS_STR+="\n* $item"
done
# Trim leading space
UPLAYERSTIDS_STR="${UPLAYERSTIDS_STR# }"
######################################
# (RE)MAKE "SECTORTW_NEWS" TIDDLER
cat ${MY_PATH}/../templates/data/SECTORTW_NEWS.json \
| sed -e "s~_SECTOR_~${SECTOR}~g" \
-e "s~_MOATS_~${MOATS}~g" \
-e "s~_UPLANET_~https://qo-op.com~g" \
-e "s~_UPLAYERSTIDS_~${UPLAYERSTIDS_STR}~g" \
-e "s~_SECTORTW_~${SECTORIPNS}/TW~g" \
> ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json
echo "SECTORTW_NEWS $SECTOR SECTORTW=${SECTORIPNS}/TW :: ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json"
${MY_PATH}/TW/import_tiddler.sh \
~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json
############################################################# #############################################################
# Connect_PLAYER_To_Gchange.sh : Sync FRIENDS TW - TODO : REWRITE ## GWIP == myIP or TUBE !!
######################################### BETTER USE json FILE IN /ipns/$IPFSNODEID/COINS #############################################################
#~ echo "##################################################################" # Connect_PLAYER_To_Gchange.sh : Sync FRIENDS TW
##############################################################
echo "##################################################################"
[[ -s ~/.zen/tmp/coucou/${G1PUB}.gchange.json ]] \ [[ $(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 "NO Gchange account found" || echo "1 G1 + 10 ẑen needed to activate ★★★★★ system"
############################################################## # G1PalPay - 1 G1 + 10 ZEN mini -> Check for G1 TX incoming comments #
# G1PalPay - 2 G1 mini -> Check for G1 TX incoming comments # [[ $(echo "$COINS > 1" | bc -l) -eq 1 ]] \
############################################################## && echo "## RUNNING G1PalPay Wallet Monitoring " \
if [[ $(echo "$COINS >= 2" | bc -l) -eq 1 ]]; then && ${MY_PATH}/G1PalPay.sh ${HOME}/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" \
############################################################## || echo "> ZenCard is not activated ($ZEN)"
# G1PalPay.sh #
##############################################################
echo "## RUNNING G1PalPay Wallet Monitoring "
${MY_PATH}/G1PalPay.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}"
############################################################## ### CHECK FOR pending (TODO! In case PAY4SURE have abandonned pendings)
###############
# VOEUX.create.sh # # 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}" ${MY_PATH}/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" "${G1PUB}"
############################################################## ###############
# VOEUX.refresh.sh # # VOEUX.refresh.sh #
############################################################## ##############################################################
## RUN ASTROBOT G1Voeux SUBPROCESS (SPECIFIC Ŋ1 COPY)
##############################################################
${MY_PATH}/VOEUX.refresh.sh "${PLAYER}" "${MOATS}" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ${MY_PATH}/VOEUX.refresh.sh "${PLAYER}" "${MOATS}" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
else ###################
echo "> ZenCard not activated ($ZEN ZEN)" # REFRESH PLAYER_feed #
fi
################################## ##################################
## PATCH : RESTORE PLAYER GPS.json (protect cache erased by WISH treatment) echo "# TW : GW API + LightBeam Feed + Friends"
cp -f ~/.zen/game/players/${PLAYER}/GPS.json ~/.zen/tmp/${MOATS}/ TUBE=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 3)
## WRITE TIDDLERS IN TW SECTORTW_NEWS.json
FEEDNS=$(ipfs key list -l | grep -w "${PLAYER}_feed" | cut -d ' ' -f 1)
[[ ! ${FEEDNS} ]] && echo ">>>>> ERROR ${PLAYER}_feed IPNS KEY NOT FOUND - ERROR" && continue
# WRITE lightbeam params
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
###########################
# 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/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"'$myIPFS'"}]' > ~/.zen/tmp/${MOATS}/8080.json
## COPY DATA PRODUCED BY GCHANGE STAR EXTRACTION
FRIENDSFEEDS=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/FRIENDSFEEDS 2>/dev/null)
echo "★★★★★ FRIENDS FEEDS : "${FRIENDSFEEDS}
ASTRONAUTES=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/ASTRONAUTES 2>/dev/null)
echo "★★★★★ FRIENDS TW : "${ASTRONAUTES}
## 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
#~ ## ADD --import "$HOME/.zen/tmp/${MOATS}/friends.json" "application/json" \ ## MANUAL TW RSS REGISTRATION
## 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}/SECTORTW_NEWS.json "application/json" \ --import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
--import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \ --import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
--import ~/.zen/tmp/${MOATS}/VISIO.json "application/json" \
--import ~/.zen/tmp/${MOATS}/CESIUM.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
&& echo "TW UPlanet tiddlers updated" \
|| echo "ERROR - CANNOT CREATE TW NEWINDEX - ERROR"
########################### ###########################
########################
## SEND TODAY ZINE
#### UPlanetZINE/day${days}/index.${lang}.html
TODAYZINE="${MY_PATH}/../templates/UPlanetZINE/day${days}/index.${lang}.html"
[[ ! -s ${TODAYZINE} ]] && TODAYZINE="${MY_PATH}/../templates/UPlanetZINE/day${days}/index.html"
[[ -s ${TODAYZINE} && ${days} -gt 0 ]] \
&& echo "SENDING TODAYZINE DAY ${days} + mailjet TW import " \
&& ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ${TODAYZINE} "ZINE #${days}" "${HOME}/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html" \
|| echo "NO ZINE FOR DAY ${days}"
#################### ####################
## TW NEWINDEX .... #####
## ANY CHANGES ?
############################################################## ##############################################################
echo "LOCAL BACKUP + MICROLEDGER TW" DIFF=$(diff ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html)
if [[ $DIFF ]]; then
echo "DIFFERENCE DETECTED !! "
echo "Backup & Upgrade TW local copy..."
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
[[ -s ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain ]] \ [[ -s ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain ]] \
@ -509,161 +285,105 @@ for PLAYER in ${PLAYERONE[@]}; do
&& echo "# CHAIN : ${CURCHAIN} -> ${ZCHAIN}" \ && echo "# CHAIN : ${CURCHAIN} -> ${ZCHAIN}" \
&& [[ ${CURCHAIN} != "" && ${ZCHAIN} != "" ]] \ && [[ ${CURCHAIN} != "" && ${ZCHAIN} != "" ]] \
&& sed -i "s~${CURCHAIN}~${ZCHAIN}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html && sed -i "s~${CURCHAIN}~${ZCHAIN}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
else
## COUNT NO CHANGE
try=$(cat ~/.zen/game/players/${PLAYER}/ipfs/_nochange 2>/dev/null) || try=0
((try++)) && echo $try > ~/.zen/game/players/${PLAYER}/ipfs/_nochange
echo "NO CHANGE $try TIMES"
fi
##############################################################
################################################## ##################################################
######## UPDATING ${PLAYER}/ipfs/moa/.chain ##################################################
cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \ ################## UPDATING PLAYER MOA
[[ $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)
## CLEAN .chain CACHE
find ~/.zen/game/players/${PLAYER}/ipfs/moa/ -mtime +30 -type f -exec rm -f '{}' \;
##########################################
## TW IPFS ADD & PUBLISH
##########################################
TW=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1) TW=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
ipfs --timeout 720s name publish --key=${PLAYER} /ipfs/${TW} ipfs name publish --key=${PLAYER} /ipfs/${TW}
[[ $DIFF ]] && echo ${TW} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
## LOCAL PLAYER CACHING
echo ${TW} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
echo ${MOATS} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats echo ${MOATS} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
echo "================================================" echo "================================================"
echo " NEW TW ${PLAYER} : = ${myIPFS}/ipfs/${TW}" echo " NEW TW ${PLAYER} : = ${myIPFS}/ipfs/${TW}"
echo " $myIPFSGW/ipns/${ASTRONAUTENS}" echo " $myIPFSGW/ipns/${ASTRONAUTENS}"
echo "================================================" echo "================================================"
ipfs pin rm ${CURCHAIN}
######################### REPLACE TW with REDIRECT to latest IPFS or IPNS (reduce 12345 cache size)
[[ ! -z ${TW} ]] && TWLNK="/ipfs/${TW}" || TWLNK="/ipns/${ASTRONAUTENS}"
echo "<meta http-equiv=\"refresh\" content=\"0; url='${TWLNK}'\" />${PLAYER}" \
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
#########################################################
##### TW JSON RSS EXPORT
###################
# REFRESH PLAYER_feed KEY
echo "(☉_☉ ) (☉_☉ ) (☉_☉ ) RSS" echo "(☉_☉ ) (☉_☉ ) (☉_☉ ) RSS"
#########################################################################################
## CREATING 30 DAYS JSON RSS STREAM ## CREATING 30 DAYS JSON RSS STREAM
# [days:created[-30]!is[system]!tag[G1Voeu]!externalTiddler[yes]!tag[load-external]]
#########################################################################################
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \ tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/game/players/${PLAYER}/ipfs \ --output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
--render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]!externalTiddler[yes]!tag[load-external]]' [[ ! -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 ]] \ ## TODO CREATING 30 DAYS XML RSS STREAM
&& echo "NO ${PLAYER} RSS - BAD "
echo "~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json"
########################################################
#### PLAYER ACCOUNT HAVE NEW TIDDLER or NOT #########
if [[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" && "${CURRENT}" != "${PLAYER}" ]]; then
echo "ALERT -- RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN -- $days DAYS"
## DEAD PLAYER ??
if [[ ${days} -eq 27 ]]; then
echo "<html><head><meta charset='UTF-8'>
<style>
body {
font-family: 'Courier New', monospace;
}
pre {
white-space: pre-wrap;
}
</style></head><body><h1>🔋WARNING</h1>" > ~/.zen/tmp/alert
echo "<br><h3><a href=$(myIpfsGw)/ipfs/${CURCHAIN}> ${PLAYER} TW 🔌📺 </a></h3> 🌥 $ZEN ZEN 🌥 </body></html>" >> ~/.zen/tmp/alert
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/alert "TW ZEN ALERT"
echo "<<<< PLAYER TW WARNING <<<< ${DIFF_SECONDS} > ${days} days"
fi
if [[ ${days} -gt 29 && $(echo "$COINS <= 2" | bc -l) -eq 1 ]]; then
#################################### UNPLUG ACCOUNT
echo ">>>> PLAYER TW UNPLUG >>>>> ${days} days => BYE BYE ${PLAYER} ZEN=$ZEN"
${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} "ALL"
continue
fi
## PAY 1 ZEN TO UMAPG1PUB
[[ "${UMAPG1PUB}" != "" ]] \
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "0.1" "${UMAPG1PUB}" "UPLANET:TW:${YOUSER}:/ipfs/${TW}"
else
### PLAYER ALIVE PUBLISH RSS &
FEEDNS=$(ipfs key list -l | grep -w "${PLAYER}_feed" | cut -d ' ' -f 1)
[[ ${FEEDNS} ]] \
&& IRSS=$(ipfs add --pin=false -q ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json | tail -n 1) \
&& echo "Publishing ${PLAYER}_feed: /ipns/${FEEDNS} => /ipfs/${IRSS}" \
&& ipfs --timeout 300s name publish --key="${PLAYER}_feed" /ipfs/${IRSS} \
|| echo ">>>>> WARNING ${PLAYER}_feed IPNS KEY PUBLISHING CUT - WARNING"
fi
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html
#########################################################
## 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
# tiddlywiki.js --load my-wiki.html --render "[[$:/plugins/sq/feeds/templates/rss]]" "feed.xml" "text/plain" "$:/core/templates/wikified-tiddler" # tiddlywiki.js --load my-wiki.html --render "[[$:/plugins/sq/feeds/templates/rss]]" "feed.xml" "text/plain" "$:/core/templates/wikified-tiddler"
### $:/plugins/sycom/atom-feed/atom.xml ### $:/plugins/sycom/atom-feed/atom.xml
#~ 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.xml" 'text/plain' "$:/core/templates/wikified-tiddler" 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]' #~ --output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.xml" 'text/plain' "$:/core/templates/wikified-tiddler" 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
SBIRTH=$(${MY_PATH}/../tools/MOATS2seconds.sh ${BIRTHDATE})
SNOW=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
DIFF_SECONDS=$(( SNOW - SBIRTH ))
days=$((DIFF_SECONDS / 60 / 60 / 24))
echo "PLAYER TW was created $days ago"
################################################# ##################################
################### COPY DATA TO UP LEVEL GRIDS #### PLAYER ACCOUNT CLEANING #########
################################################# ## IF ZEN < 11
## && EMPTY RSS + 30 DAYS BIRTHDATE
## ==> UNPLUG
[[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" ]] \
&& echo "RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN --" \
&& [[ $(echo "$COINS < 2.1" | bc -l) -eq 1 ]] \
&& [[ ${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 "<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" \
&& echo "<<<< PLAYER TW WARNING <<<< ${DIFF_SECONDS} > ${days} days" \
&& [[ ${DIFF_SECONDS} -gt $(( 30 * 24 * 60 * 60 )) ]] \
&& 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} \
&& continue
#################################### UNPLUG ACCOUNT
IRSS=$(ipfs add -q ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json | tail -n 1) \
&& ipfs name publish --key="${PLAYER}_feed" /ipfs/${IRSS}
######################### REPLACE TW with REDIRECT to latest IPFS or IPNS (reduce 12345 cache size)
[[ ! -z ${TW} ]] && TWLNK="/ipfs/${TW}" || TWLNK="/ipns/${ASTRONAUTENS}"
echo "<meta http-equiv=\"refresh\" content=\"0; url='${TWLNK}'\" />${PLAYER}" \
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html
if [[ ${LAT} && ${LON} ]]; then
## SECTOR BANK COORD ## SECTOR BANK COORD
SLAT="${LAT::-1}" SECLAT="${LAT::-1}"
SLON="${LON::-1}" SECLON="${LON::-1}"
## REGION ## REGION
RLAT=$(echo ${LAT} | cut -d '.' -f 1) REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
RLON=$(echo ${LON} | cut -d '.' -f 1) REGLON=$(echo ${LON} | cut -d '.' -f 1)
echo "(⌐■_■) /UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}"
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.?? ## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${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/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/RSS/ ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
#### CREATE ALL JSON COMPILATION
${MY_PATH}/../tools/json_dir.all.sh \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/RSS/
## IPFS PLAYER TW # ${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER} mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}
# /ipfs/${TW} = /TW/${PLAYER}/index.html 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='/ipfs/${TW}'\" />${TODATE}:${PLAYER}" \ echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPNS}'\" />" > ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/_index.html
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER}/index.html
# /ipns/${ASTRONAUTENS} = /TW/${PLAYER}/_index.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${ASTRONAUTENS}'\" />${PLAYER}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER}/_index.html
## IPNS UMAP _index.html ##
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${UMAPNS}'\" />${TODATE}:_${LAT}_${LON}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_index.html
ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON} 2>/dev/null
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
#####################################################################
## DAY=7 : SEND ${G1LEVEL1} G1 to PLAYER
[[ ${days} -eq 7 && "${CURRENT}" != "${PLAYER}" && "${CURRENT}" != "" ]] \
&& echo "7 DAY. PLAYER STEP ONE SUCCEED." \
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "${G1LEVEL1}" "${G1PUB}" "UPLANET:WELCOME:${MIUSER}:${YOUSER}" \
&& echo "UPLANET:WELCOME:${MIUSER}:${YOUSER}" && echo "(⌐■_■) ~~~ OFFICIAL ~~ _${LAT}_${LON} ~~~ $ASTRONAUTENS"
#####################################################################
############ CURRENT #################### _ForkUPlanetZERO ?
if [[ $(echo "$COINS > 10" | bc -l) -eq 1 ]]; then
[[ ${CURRENT} == ${PLAYER} ]] && ${MY_PATH}/../ASTROBOT/_ForkUPlanetZERO.sh
fi fi
#################################### NEED > 100 G1 ##################
##################################################################### ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON} 2>/dev/null
##################################################################### echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
## MAINTAIN R/RW TW STATE ## MAINTAIN R/RW TW STATE
[[ ${ASTRONS} == "" ]] \ [[ ${ASTRONS} == "" ]] \
@ -674,14 +394,8 @@ for PLAYER in ${PLAYERONE[@]}; do
## CLEANING CACHE ## CLEANING CACHE
rm -Rf ~/.zen/tmp/${MOATS} rm -Rf ~/.zen/tmp/${MOATS}
echo
end=`date +%s`
dur=`expr $end - $start`
echo "${PLAYER} refreshing took $dur seconds (${MOATS})"
done done
echo "============================================ PLAYER.refresh DONE." echo "============================================ PLAYER.refresh DONE."
exit 0 exit 0

View File

@ -12,15 +12,7 @@ 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")
@ -31,15 +23,9 @@ for i in $*; do
UMAPS=("$i" ${UMAPS[@]}) UMAPS=("$i" ${UMAPS[@]})
done done
## NO $i PARAMETERS - GET ALL UMAPS [[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
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
######## DETERMINE REGIONS FOR ALL UMAPS ################ ######## INIT REGIONS ########################
for UMAP in ${UMAPS[@]}; do for UMAP in ${UMAPS[@]}; do
LAT=$(echo ${UMAP} | cut -d '_' -f 2) LAT=$(echo ${UMAP} | cut -d '_' -f 2)
@ -48,10 +34,10 @@ for UMAP in ${UMAPS[@]}; do
[[ ${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
RLAT=$(echo ${LAT} | cut -d '.' -f 1) REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
RLON=$(echo ${LON} | cut -d '.' -f 1) REGLON=$(echo ${LON} | cut -d '.' -f 1)
MYREGIONS=("_${RLAT}_${RLON}" ${MYREGIONS[@]}) MYREGIONS=("_${REGLAT}_${REGLON}" ${MYREGIONS[@]})
done done
@ -63,25 +49,24 @@ REGIONS=($(echo "${MYREGIONS[@]}" | tr ' ' '\n' | sort -u))
echo "ACTIVATED REGIONS : ${REGIONS[@]}" echo "ACTIVATED REGIONS : ${REGIONS[@]}"
for REGION in ${REGIONS[@]}; do for REGION in ${REGIONS[@]}; do
echo "-------------------------------------------------------------------"
echo "_____REGION ${REGION} $(date)" echo "_____REGION ${REGION}"
mkdir -p ~/.zen/tmp/${MOATS}/${REGION} mkdir -p ~/.zen/tmp/${MOATS}/${REGION}
RLAT=$(echo ${REGION} | cut -d '_' -f 2) REGLAT=$(echo ${REGION} | cut -d '_' -f 2)
RLON=$(echo ${REGION} | cut -d '_' -f 3) REGLON=$(echo ${REGION} | cut -d '_' -f 3)
################################## TODO : make sharing key protocol evolve ################################## TODO : make sharing key protocol evolve
## FOR NOW ONLY 1ST BOOSTRAP PUBLISH REGION KEYS ## FOR NOW ONLY 1ST BOOSTRAP PUBLISH REGION KEYS
# 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
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
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) COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}" echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
@ -98,17 +83,15 @@ 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 240s get --progress=false -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/ ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## SHOULD NEED 12 SIGNATURES
## FULL REFRESH DEMO... ZEN CHAINING COMING LATER
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}/RSS mkdir -p ~/.zen/tmp/${MOATS}/${REGION}/RSS
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${RLAT}_${RLON}.week.rss.json rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
rm -f ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL rm -f ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
## START WITH LOCAL SECTORS RSS WEEK ## START WITH LOCAL SECTORS RSS WEEK
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*.week.rss.json 2>/dev/null)) RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
for RSS in ${RSSNODE[@]}; do for RSS in ${RSSNODE[@]}; do
[[ $(cat ${RSS}) != "[]" ]] \ [[ $(cat ${RSS}) != "[]" ]] \
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \ && cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
@ -116,12 +99,8 @@ for REGION in ${REGIONS[@]}; do
done done
NL=${#RSSNODE[@]} NL=${#RSSNODE[@]}
echo "
---
" >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
## ADD SWARM SECTORS RSS WEEK ## ADD SWARM SECTORS RSS WEEK
RSSWARM=($(ls ~/.zen/tmp/swarm/*/UPLANET/SECTORS/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*.week.rss.json 2>/dev/null)) RSSWARM=($(ls ~/.zen/tmp/swarm/*/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
for RSS in ${RSSWARM[@]}; do for RSS in ${RSSWARM[@]}; do
[[ $(cat ${RSS}) != "[]" ]] \ [[ $(cat ${RSS}) != "[]" ]] \
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \ && cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
@ -135,44 +114,42 @@ for REGION in ${REGIONS[@]}; do
## REMOVE SECTORS PARTS ## REMOVE SECTORS PARTS
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/*.week.rss.json rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/*.week.rss.json
## MAKE FINAL _${RLAT}_${RLON}.week.rss.json ## MAKE FINAL _${REGLAT}_${REGLON}.week.rss.json
mv ~/.zen/tmp/${MOATS}/${REGION}/RSS/.all.json \ mv ~/.zen/tmp/${MOATS}/${REGION}/RSS/.all.json \
~/.zen/tmp/${MOATS}/${REGION}/RSS/_${RLAT}_${RLON}.week.rss.json ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
## PREPARING JOURNAL ## PREPARING AiApi link
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON} mkdir -p ~/.zen/tmp/${IPFSNODEID}/REGIONS
RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL)
################################### cp ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL \
## NODE PUBLISH REGION TODATENS LINK ~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.JOURNAL.md
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />/_${RLAT}_${RLON}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON}/_index.html rm ~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.week.cid 2>/dev/null ## TODO REMOVE
## 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
#~ ## 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._${RLAT}_${RLON}.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}
rm ~/.zen/tmp/${MOATS}/${REGION}/N_* 2>/dev/null echo "SHOW TROPHY" > ~/.zen/tmp/${MOATS}/${REGION}/TODO
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N_${TOTL} rm ~/.zen/tmp/${MOATS}/${REGION}/RWEEKCID 2>/dev/null ## TODO REMOVE
RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL 2>/dev/null) echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N
if [[ ${RWEEKCID} ]]; then
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/QmYNH85cJCwSVw4c7SyHtc2jtgh7dL5RegozX7e8Re28a9/md.htm?src=/ipfs/${RWEEKCID}'\" />" \
> ~/.zen/tmp/${MOATS}/${REGION}/Journal._${RLAT}_${RLON}.view.html
cp ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL \ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${RWEEKCID}'\" />" \
~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON}/JOURNAL.md > ~/.zen/tmp/${MOATS}/${REGION}/Journal._${REGLAT}_${REGLON}.redir.html
fi
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1) IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1)
ipfs --timeout 180s name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP} ipfs name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} > /dev/null 2>&1 ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} ${TODATE}${REGIONG1PUB} > /dev/null 2>&1
done done

View File

@ -1,282 +0,0 @@
#!/bin/bash
########################################################################
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
# INSERT NEW TIDDLERS FROM RSS JSON INTO UPLANET TW
# DETECTING CONFLICT WITH SAME TITLE
# ASKING TO EXISTING SIGNATURES TO UPDATE THEIR TW OR FORK TITLE
# CALLED BY "SECTOR.refresh.sh"
# SEND 10 ZEN TO EACH SIGNATURE
########################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
. "$MY_PATH/../tools/my.sh"
RSS=$1 ## filepath to RSS
SECTOR=$2 ## Sector identifier _0.0_0.0
MOATS=$3 ## temp cache access
INDEX=$4 ## SECTOR TW index file
echo
[[ ! -s ${RSS} ]] && echo "BAD RSS INPUT" && exit 1
[[ "$(cat ${RSS})" == "[]" ]] && echo "EMPTY RSS " && exit 0
[[ ! -d ~/.zen/tmp/${MOATS}/${SECTOR}/ ]] && echo "- ERROR - BAD UPLANET CONTEXT - look inside code - " && exit 1
[[ ! -s ${INDEX} ]] \
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
&& echo "- WARNING - REFRESHING SECTOR FROM empty TEMPLATE *****"
## EXTRACT PLAYER FROM RSS FILE NAME
PLAYER=$(echo ${RSS} | rev | cut -d '/' -f 1 | rev | sed "s~.rss.json~~g")
## GET PLAYER INFORMATION
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${PLAYER})
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
echo "======= ${INDEX} =======
SECTOR ${SECTOR} TW INSERTING ${PLAYER}
${RSS}
=================================================================="
cat "${RSS}" | jq 'sort_by(.created) | reverse | .[]' | jq -r '.title' > ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list
##
gloops=0
signatures=0
while read title; do
[[ ${floop} -gt 1 ]] && echo "Other Tiddlers are similaR... BREAK LOOP" && break
# FILTER "UPPERCASE" + Astroport Tid, less than 4 characters title Tiddlers (ex: GPS, ...).
[[ ${title} == "GettingStarted" || "${title^^}" == "${title}" || "${title::3}" == '$:/' || ${title::4} == ${title} || ${title} == "AstroID" || ${title} == "Voeu1.png" || ${title} == "Astroport" || ${title} == "MadeInZion" || ${title} == "G1Visa" || ${title} == "ZenCard" || ${title::5} == "Draft" ]] \
&& echo "FILTERED TITLE ${title}" && continue
## CHECK FOR TIDDLER WITH SAME TITTLE IN SECTOR TW
rm -f ~/.zen/tmp/${MOATS}/TMP.json
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${MOATS} --render '.' 'TMP.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${title}"
ISHERE=$(cat ~/.zen/tmp/${MOATS}/TMP.json | jq -r ".[].title")
[[ ! "${ISHERE}" ]] && echo "No Tiddler found in ${INDEX}"
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
echo "Importing Title: $title"
cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json
#~ echo "DEBUG"
#~ cat ~/.zen/tmp/${MOATS}/NEW.json | jq
#~ 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} \
--import ~/.zen/tmp/${MOATS}/NEW.json 'application/json' \
--output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' "${SECTOR}.html" 'text/plain'
[[ -s ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ]] \
&& rm ${INDEX} \
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ${INDEX} \
&& ((gloops++)) \
&& echo "GLOOPS (${gloops}) : ${title}" \
&& signatures=$((signatures + TMPSIGN))
[[ ! -s ${INDEX} ]] && echo "ERROR. TW could not ingest ~/.zen/tmp/${MOATS}/NEW.json" && exit 1
else
## SAME TIDDLER
echo "TIDDLER : $title (${TMPSIGN} signature(s)) ... ALREADY EXISTS..."
## Remove [] and put inline to compare
cat ~/.zen/tmp/${MOATS}/TMP.json | jq -rc .[] > ~/.zen/tmp/${MOATS}/INSIDE.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
echo "... Tiddlers are similar ..."
((floop++))
continue
fi
floop=1
## LOG TIDDLERS
#~ 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
## NEED SIGNATURES & TIDDLER SIMILARITY TO COME UP
## CHECK FOR EMAIL SIGNATURES DIFFERENCE
NTAGS=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags)
NEMAILS=($(echo "$NTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
NSIGN=${#NEMAILS[@]}
echo "New Tiddler $NSIGN signatures : ${NEMAILS[*]}"
ITAGS=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .tags)
IEMAILS=($(echo "$ITAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
ISIGN=${#IEMAILS[@]}
echo "Inside Tiddler $ISIGN signatures : ${IEMAILS[*]}"
## New should have more signatures than Inside
[[ ${NSIGN} -le ${ISIGN} ]] && echo "Most signed already in..." && continue
## UPLANET GRID COLLISION PARAM ###
# [[ ${NSIGN} -le 3 ]] && update TW OR continue
# https://www.copylaradio.com/blog/blog-1/post/decentralized-information-ecosystem-51
if [[ "${NEMAILS[*]}" != "${IEMAILS[*]}" ]]; then
## SEARCH FOR DIFFERENCE IN EMAIL SIGNATURES TAGS
COMMON=(); NUNIQUE=(); IUNIQUE=()
# Detect common and unique elements
for email in "${NEMAILS[@]}"; do
if [[ " ${IEMAILS[*]} " == *" $email "* ]]; then
COMMON+=("$email")
else
NUNIQUE+=("$email")
fi
done
for email in "${IEMAILS[@]}"; do
if [[ " ${NEMAILS[*]} " != *" $email "* ]]; then
IUNIQUE+=("$email")
fi
done
# Print the results
echo "Common email addresses : ${COMMON[*]}"
echo "Email addresses unique in NEW Tiddler : ${NUNIQUE[*]}"
echo "Email addresses unique in INSIDE Tiddler : ${IUNIQUE[*]}"
combined=("${IEMAILS[@]}" "${NEMAILS[@]}")
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
NEWTID=$(ipfs add -q ~/.zen/tmp/${MOATS}/NEW.json | tail -n 1)
INSIDETID=$(ipfs add -q ~/.zen/tmp/${MOATS}/INSIDE.json | tail -n 1)
###############################
## TODO : check STAR level and activate auto merge
for email in "${unique_combined[@]}"; do
echo "<html>
<head>
<style>
body {
font-family: 'Courier New', monospace;
}
pre {
white-space: pre-wrap;
}
</style></head>
<body>
<h1>$(date)</h1>
<h2>$title</h2>
Tiddler appears in <b>${unique_combined[*]}</b> TW(s)
<br>
<ul>
<li><a href='$(myIpfsGw)/ipfs/${INSIDETID}'>Actual Tiddler</a></li>
<li><a href='$(myIpfsGw)/ipfs/${NEWTID}'>NEW Tiddler</a> being overwrite by ${NUNIQUE[*]}</li>
</ul>
<h2><a href='$(myIpfsGw)${VDONINJA}/?room=${MOATS}'>Record VISIO for this event...</a></h2>
</body></html>" > ~/.zen/tmp/${MOATS}/g1message
${MY_PATH}/../tools/mailjet.sh "$email" ~/.zen/tmp/${MOATS}/g1message "Upgrade Tiddler : ${title}"
done
## SEND ZEN G1PalPay Signal
#~ ##############################################################
#~ G1AMOUNT=$(echo "$NSIGN / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
#~ G1AMOUNT=$NSIGN ## SEND FLUID COIN
#~ echo "***** SECTOR $SECTOR REWARD *****************"
#~ echo "SPREAD $NSIGN G1 TO ${unique_combined[@]} SIGNATURES
#~ to ${PLAYER} WALLET ${ASTROG1}"
#~ echo "************************************************************"
#~ ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "${$G1AMOUNT}" "${ASTROG1}" "${unique_combined[@]}"
#~ ################################################ GRATITUDE SENT
## AND OVER WRITE TIDDLER...
else
echo "SIGNATURES ARE THE SAME : ${NEMAILS[*]}"
fi
echo "______________________"
#~ echo "CHECKING DIFFERENCES"
#~ diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json
## TODO CHECK MORE DIFFERENCE
DATENEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .modified)
TEXTNEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .text)
TAGSNEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags)
DATEINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .modified)
TEXTINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .text)
TAGSINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .tags)
TIDLEREMAILSNEW=($(echo "$TAGSNEW" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) ## MUST BE SAME IN BOTH
TIDLEREMAILSINSIDE=($(echo "$TAGSINSIDE" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) ## MUST BE SAME IN BOTH
# [[ "${TIDLEREMAILSNEW[*]}" == "${TIDLEREMAILSINSIDE[*]}" ]]
if [ ${DATENEW} -gt ${DATEINSIDE} ]; then
echo "Newer Tiddler version... Updating SECTOR TW"
tiddlywiki --load ${INDEX} \
--import ~/.zen/tmp/${MOATS}/NEW.json "application/json" \
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "${SECTOR}.html" "text/plain"
[[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.html ]] \
&& rm ${INDEX} \
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}.html ${INDEX} \
|| ((gloops--))
signatures=$((signatures + ISIGN))
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
####################################################
################################################ ${signatures} -gt ${gloops}
## SECTOR SENDS GRATITUDE TO PUBLISHING PLAYER
###################################################
#~ if [[ ${gloops} -gt 0 && ${signatures} -gt ${gloops} && ${ASTROG1} ]]; then
#~ # GENERATE SECTOR PRIVATE KEY ################################
#~ ${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)
#~ cp -f ~/.zen/tmp/coucou/${G1SECTOR}.COINS ~/.zen/tmp/${IPFSNODEID}/${SECTOR}.COINS
#~ ##############################################################
#~ GRATITUDE=$($MY_PATH/../tools/getcoins_from_gratitude_box.sh)
#~ G1AMOUNT=$(echo "$GRATITUDE / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
#~ echo "***** SECTOR $SECTOR REWARD *****************"
#~ echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
#~ to ${PLAYER} WALLET ${ASTROG1} (${gloops} Tiddlers)"
#~ echo "************************************************************"
#~ ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "${G1AMOUNT}" "${ASTROG1}" "THANKS ${gloops} GLOOPS"
#~ ################################################ GRATITUDE SENT
#~ fi
exit 0

View File

@ -12,13 +12,7 @@ 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")
@ -29,13 +23,8 @@ for i in $*; do
UMAPS=("$i" ${UMAPS[@]}) UMAPS=("$i" ${UMAPS[@]})
done done
## NO $i PARAMETERS - GET ALL UMAPS [[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
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
@ -45,10 +34,10 @@ for UMAP in ${UMAPS[@]}; do
[[ ${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
SLAT="${LAT::-1}" SECLAT="${LAT::-1}"
SLON="${LON::-1}" SECLON="${LON::-1}"
MYSECTORS=("_${SLAT}_${SLON}" ${MYSECTORS[@]}) MYSECTORS=("_${SECLAT}_${SECLON}" ${MYSECTORS[@]})
done done
@ -60,36 +49,36 @@ SECTORS=($(echo "${MYSECTORS[@]}" | tr ' ' '\n' | sort -u))
echo "ACTIVATED SECTORS : ${SECTORS[@]}" echo "ACTIVATED SECTORS : ${SECTORS[@]}"
for SECTOR in ${SECTORS[@]}; do for SECTOR in ${SECTORS[@]}; do
echo "############################################"
echo "_____SECTOR ${SECTOR}" echo "_____SECTOR ${SECTOR}"
echo "################################ $(date)"
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/ mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/
SLAT=$(echo ${SECTOR} | cut -d '_' -f 2) SLAT=$(echo ${SECTOR} | cut -d '_' -f 2)
SLON=$(echo ${SECTOR} | cut -d '_' -f 3) SLON=$(echo ${SECTOR} | cut -d '_' -f 3)
############################################################## ##############################################################
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}" G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${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}" ${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)
@ -99,27 +88,17 @@ for SECTOR in ${SECTORS[@]}; do
start=`date +%s` start=`date +%s`
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#~ ## IPFS GET ONLINE YESTERDATE SECTORNS #~ ## IPFS GET ONLINE YESTERDATE SECTORNS
ipfs --timeout 180s get --progress=false -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/ ipfs --timeout 180s 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}" "${G1PUB}"
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.
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
### SHOW ${SECTOR}
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}
## 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 ${MOATS}" && echo "UPDATING 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})
@ -128,9 +107,16 @@ 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 : BOOSTRAP DISTRIBUTED (jeu du mouchoir, token ring aléatoire) ## CONTROL ACTINGNODE SWAPPING
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[@]}
@ -147,19 +133,15 @@ 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 : STRAPS[0] get key control ## IF NOT UPDATED FOR TOO LONG
[ ${DIFF_SECONDS} -gt $(( 26 * 60 * 60 )) ] \ [ ${DIFF_SECONDS} -gt $(( 24 * 60 * 60 )) ] \
&& echo ">>>>>>>>>>>>>> More than 26H update - BOOSTRAP 0 ACTION -" \ && echo "More than 24H update" \
&& ACTINGNODE=${STRAPS[0]} && ACTINGNODE=${STRAPS[0]}
echo "* ACTINGNODE=${ACTINGNODE}" [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
&& 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
@ -170,14 +152,6 @@ for SECTOR in ${SECTORS[@]}; do
mv ${UREFRESH}.shuf ${UREFRESH} mv ${UREFRESH}.shuf ${UREFRESH}
echo "SETTING NEXT REFRESHER : $(cat ${UREFRESH} | head -n 1)" echo "SETTING NEXT REFRESHER : $(cat ${UREFRESH} | head -n 1)"
############ 101 ZEN (11.1 G1) REFILL ?!
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
[[ ${COINS} == "" || ${COINS} == "null" ]] \
&& [[ ${ZEN} -lt 100 && ${CURRENT} != "" ]] \
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "11.1" "${G1PUB}" "UPLANET:101ZEN:${SECTOR}:${MIUSER}" \
&& echo "UPLANET:101:${SECTOR}:${MIUSER}" && echo " ~~~ (♥‿‿♥) ~~ ${SECTOR} ~~ (♥‿‿♥) ~~~ "
############################################################## ##############################################################
## FEED SECTOR TW WITH UMAPS RSS ## FEED SECTOR TW WITH UMAPS RSS
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/TW mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/TW
@ -186,26 +160,16 @@ 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}
## REFRESH ALL TWs in that SECTOR
rm -Rf ~/.zen/tmp/${MOATS}/${SECTOR}/TWz
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/TWz
cp -rf ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/TW/* \
~/.zen/tmp/${MOATS}/${SECTOR}/TWz
cp -rf ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/TW/* \
~/.zen/tmp/${MOATS}/${SECTOR}/TWz 2>/dev/null
## 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[@]}")
@ -213,27 +177,21 @@ 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
echo "Number of RSS : "${TOTL} echo "Number of RSS : "${TOTL}
rm ~/.zen/tmp/${MOATS}/${SECTOR}/N_RSS* ## TODO REMOVE
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${SECTOR}/N echo ${TOTL} > ~/.zen/tmp/${MOATS}/${SECTOR}/N
########################################################################################### ###########################################################################################
@ -247,8 +205,8 @@ for SECTOR in ${SECTORS[@]}; do
" > ~/.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
@ -284,12 +242,41 @@ for SECTOR in ${SECTORS[@]}; do
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 \
| sed -e "s~_ZONE_~SECTOR ${SECTOR}~g" \
-e "s~_UPZONE_~REGION ${REGION}~g" \
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
-e "s~_ZONENS_~${TODATENS}~g" \
-e "s~_UPZONENS_~${TODATEREGIONNS}~g" \
-e "s~_SECTORG1PUB_~${G1PUB}~g" \
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
-e "s~_LAT_~${REGLAT}~g" \
-e "s~_LON_~${REGLON}~g" \
-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
# -e "s~_RWEEKCID_~/ipfs/QmY4rLRgSXjhhsW3WoKUJYpLe2A1dJCFXb7stNLcAp95w9~g" \
##################################
cp -f ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html ~/.zen/tmp/${MOATS}/${SECTOR}/index.html
########################################################################################### ###########################################################################################
## ADD SECTOR ZENPUB.png & INFO.png ## ADD SECTOR ZENPUB.png & INFO.png
convert -font 'Liberation-Sans' \ convert -font 'Liberation-Sans' \
-pointsize 80 -fill purple -draw 'text 50,120 "'"${ZEN} Zen"'"' \ -pointsize 80 -fill purple -draw 'text 50,120 "'"${ZEN} Zen"'"' \
-pointsize 30 -fill purple -draw 'text 40, 180 "'"${SECTOR}:${YESTERDATE}"'"' \ -pointsize 30 -fill purple -draw 'text 40, 180 "'"${SECTOR}"'"' \
$MY_PATH/../images/G1WorldMap.png "${HOME}/.zen/tmp/${MOATS}/${SECTOR}.png" $MY_PATH/../images/G1WorldMap.png "${HOME}/.zen/tmp/${MOATS}/${SECTOR}.png"
# CREATE G1PUB AMZQR # CREATE G1PUB AMZQR
amzqr ${G1PUB} -l H -p "$MY_PATH/../images/zenticket.png" -c -n ZENPUB.png -d ~/.zen/tmp/${MOATS}/${SECTOR}/ amzqr ${G1PUB} -l H -p "$MY_PATH/../images/zenticket.png" -c -n ZENPUB.png -d ~/.zen/tmp/${MOATS}/${SECTOR}/
@ -299,103 +286,40 @@ for SECTOR in ${SECTORS[@]}; do
## zday marking ## zday marking
rm ~/.zen/tmp/${MOATS}/${SECTOR}/z* 2>/dev/null 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 ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 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
###########################################################################################
### APPLY ON APP MODEL TODATE REGIONNS LINKING
RLAT=$(echo ${SLAT} | cut -d '.' -f 1)
RLON=$(echo ${SLON} | cut -d '.' -f 1)
REGION="_${RLAT}_${RLON}"
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}"
cat ${MY_PATH}/../templates/UPlanetSector/index.html \
| sed -e "s~_ZONE_~SECTOR ${SECTOR}~g" \
-e "s~_UPZONE_~REGION ${REGION}~g" \
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
-e "s~_ZONENS_~${TODATENS}~g" \
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
-e "s~_UPZONENS_~${TODATEREGIONNS}~g" \
-e "s~_SECTORG1PUB_~${G1PUB}~g" \
-e "s~_IPFSNINJA_~${VDONINJA}~g" \
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
-e "s~_HACKGIPFS_~${HACKGIPFS}~g" \
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
-e "s~_LAT_~${SLAT}~g" \
-e "s~_LON_~${SLON}~g" \
-e "s~_EARTHCID_~${EARTHCID}~g" \
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${RLAT}\&southWestLon=${RLON}\&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)
################
## DOES CHAIN CHANGED or INIT ? ## DOES CHAIN CHANGED or INIT ?
[[ ${ZCHAIN} != ${IPFSPOP} || ${ZCHAIN} == "" ]] \ [[ ${ZCHAIN} != ${IPFSPOP} || ${ZCHAIN} == "" ]] \
&& echo "${MOATS}:${IPFSNODEID}:${IPFSPOP}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain \ && echo "${MOATS}:${IPFSNODEID}:${IPFSPOP}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain \
&& 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
# Send 1 ZEN to UPlanet REGIONG1PUB Wallet containing REGION TW HASH
INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}"
echo "> INTERCOM ${INTERCOM} (${ZEN} ZEN)"
if [[ ${ZEN} -gt 11 ]]; then
echo "---ZZZ-- SECTOR 2 REGION ZEN CHAINING ---ZZZ------ZZZ----"
${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 --timeout 240s name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${YESTERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1
################# REGISTER UPlanet SECTOR to G1PODs echo "% START PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}"
${MY_PATH}/../tools/timeout.sh -t 20 \ start=`date +%s`
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey -n ${myDATA} \ ipfs name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
set -n "UPlanet SECTOR ${SECTOR}" -v " " -a " " -d "UPlanet ${myUPLANET}" \ ipfs key rm ${TODATE}${G1PUB} ${YESYERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1
-pos ${SLAT} ${SLON} -s ${myLIBRA}/ipfs/${IPFSPOP} \ end=`date +%s`
-A ${MY_PATH}/../images/zenticket.png echo "_____SECTOR${SECTOR} PUBLISH time was "`expr $end - $start` seconds.
${MY_PATH}/../tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey -n ${myCESIUM} \
set -n "UPlanet SECTOR ${SECTOR}" -v " " -a " " -d "UPlanet ${myUPLANET}" \
-pos ${SLAT} ${SLON} -s ${myLIBRA}/ipfs/${IPFSPOP} \
-A ${MY_PATH}/../images/zenticket.png
###################################################### ######################################################
rm ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey
[[ ${ZCHAIN} != "" ]] && ipfs pin rm ${ZCHAIN}
################################################### ###################################################
## 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 (☉_☉ )"
rm -Rf ~/.zen/tmp/${IPFSNODEID}/SECTORS/ ## TODO REMOVE mkdir -p ~/.zen/tmp/${IPFSNODEID}/SECTORS/
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${SLAT}_${SLON} rm -f ~/.zen/tmp/${IPFSNODEID}/SECTORS/${SECTOR}.week.rss.json
## CREATING 7 DAYS JSON RSS STREAM ## CREATING 7 DAYS JSON RSS STREAM
tiddlywiki --load ${INDEX} \ tiddlywiki --load ${INDEX} \
--output ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${SLAT}_${SLON} \ --output ~/.zen/tmp/${IPFSNODEID}/SECTORS --render '.' "${SECTOR}.week.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-7]!is[system]!tag[G1Voeu]]'
--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}'\" />_${SLAT}_${SLON}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${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

@ -1,7 +0,0 @@
[
{
"title": "/TEST/ForemostPoets-Moonraker.mp3",
"text": "<audio controls><source src='/ipfs/Qmc799UU3zqFojnR13qSiJYKx8mKPXJ3CXMgKyLGvVndUD' type='audio/mpeg'>Your browser does not support the audio element.</audio>",
"tags": "mp3"
}
]

View File

@ -1,33 +0,0 @@
#!/bin/bash
# Generate a unique timestamp
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
# Check if TiddlyWiki file exists
TW="$1"
[[ ! -s $TW ]] && echo "No TiddlyWiki found at: $TW" && exit 1
# Check if Tiddler title is provided
TITLE="$2"
[[ -z $TITLE ]] && echo "Need a Tiddler title" && exit 1
# Delete the specified Tiddler from the TiddlyWiki
echo "Deleting Tiddler: $TITLE"
tiddlywiki --load $TW \
--deletetiddlers "$TITLE" \
--output ~/.zen/tmp --render "$:/core/save/all" "${MOATS}.html" "text/plain"
# Check if deletion was successful
if [[ -s ~/.zen/tmp/${MOATS}.html ]]; then
echo "Tiddler deleted successfully."
cp ~/.zen/tmp/${MOATS}.html ${TW}
rm ~/.zen/tmp/${MOATS}.html
echo "Updated TiddlyWiki:
${TW}"
else
echo "ERROR: Cannot delete $TITLE from
$TW"
exit 1
fi
exit 0

View File

@ -1,41 +0,0 @@
#!/bin/bash
# Generate a unique timestamp
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
# Check if TiddlyWiki file exists
TW="$1"
[[ ! -s $TW ]] \
&& echo "Missing TiddlyWiki index.html \$1: $TW" \
&& exit 1
# Check if Tiddler JSON file exists
TIDDLER="$2"
[[ ! -s $TIDDLER || $TIDDLER == "" ]] \
&& echo "Missing Tiddler JSON file \$2: $TIDDLER" \
&& exit 1
# Add created and modified fields to the Tiddler JSON file
echo "Putting ${TIDDLER} in ${TW}"
jq '.[] + {created: $MOATS, modified: $MOATS}' --arg MOATS "$MOATS" "$TIDDLER" > "${TIDDLER}.tmp"
# Run TiddlyWiki import command
echo "Running TiddlyWiki import..."
tiddlywiki --load "${TW}" \
--import "${TIDDLER}.tmp" 'application/json' \
--output /tmp \
--render '$:/core/save/all' "${MOATS}.html" 'text/plain'
# Check if import was successful
if [[ -s /tmp/${MOATS}.html ]]; then
echo "Import successful."
cp /tmp/${MOATS}.html ${TW}
rm /tmp/${MOATS}.html
rm "${TIDDLER}.tmp"
echo "Updated TiddlyWiki:
${TW}"
exit 0
else
echo "ERROR"
exit 1
fi

View File

@ -1,19 +0,0 @@
TiddlyWiki acts as a distributed object database
this scripts provides elemental TW interactions
* Import a Tiddler (json) in a TiddliWiki
```./import_tiddler.sh tiddlywiki.html ForemostPoets-Moonraker.json```
https://talk.tiddlywiki.org/t/how-to-add-extract-modify-tiddlers-from-command-line-to-do-ipfs-media-transfer/4345?u=papiche
* Delete a Tiddler (title) from a TiddliWiki
```./delete_tiddler.sh tiddlywiki.html "/TEST/ForemostPoets-Moonraker.mp3"```
https://talk.tiddlywiki.org/t/how-to-filter-and-delete-multiple-tiddlers/4950
you can add more complex queries ....

File diff suppressed because one or more lines are too long

View File

@ -11,20 +11,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
## SEEK FOR UPLANET KEYS ## SEEK FOR UPLANET KEYS
# GET & UPDATE IPNS # GET & UPDATE IPNS
############################################ ############################################
echo "############################################" echo "## RUNNING UPLANET.refresh"
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")
@ -36,21 +23,16 @@ mkdir ~/.zen/tmp/${MOATS}
## 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 -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq)) MEMAPS=($(ls -t ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/ 2>/dev/null))
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/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) )
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}") combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u)) unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
echo "ACTIVATED ${#unique_combined[@]} UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories echo "ACTIVATED UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories
######################################################
### LEVEL 1 ###########################################
######################################################
for UMAP in ${unique_combined[@]}; do for UMAP in ${unique_combined[@]}; do
start=`date +%s` start=`date +%s`
echo echo "____________REFRESHING ${UMAP}__________"
echo "-------------------------------------------------------------------"
echo "____________REFRESHING ${UMAP}__________ $(date)"
LAT=$(echo ${UMAP} | cut -d '_' -f 2) LAT=$(echo ${UMAP} | cut -d '_' -f 2)
LON=$(echo ${UMAP} | cut -d '_' -f 3) LON=$(echo ${UMAP} | cut -d '_' -f 3)
@ -58,23 +40,19 @@ for UMAP in ${unique_combined[@]}; do
[[ ${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
SLAT="${LAT::-1}" SECLAT="${LAT::-1}"
SLON="${LON::-1}" SECLON="${LON::-1}"
## REGION ## REGION
RLAT=$(echo ${LAT} | cut -d '.' -f 1) REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
RLON=$(echo ${LON} | cut -d '.' -f 1) REGLON=$(echo ${LON} | cut -d '.' -f 1)
############################################################## ##############################################################
## UMAP WALLET CHECK ## UMAP WALLET CHECK
############################################################## ##############################################################
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${UMAP}.dunikey "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}" G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${UMAP}.dunikey | grep 'pub:' | cut -d ' ' -f 2) [[ ! ${G1PUB} ]] && echo "ERROR generating WALLET" && exit 1
[[ ! ${G1PUB} ]] && echo "ERROR generating UMAP WALLET" && exit 1
COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1) COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1)
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1) echo "UMAP (${COINS} G1) WALLET : ${G1PUB}"
echo "UMAP (${COINS} G1) ${ZEN} ZEN : ${G1PUB}"
## ORIGIN ########################################################## ## ORIGIN ##########################################################
## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY ## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY
@ -84,42 +62,31 @@ for UMAP in ${unique_combined[@]}; do
echo "ORIGIN : ${myIPFS}/ipns/${UMAPNS}" echo "ORIGIN : ${myIPFS}/ipns/${UMAPNS}"
###################### SPATIO TEMPORAL KEYS ###################### SPATIO TEMPORAL KEYS
## TODATE #########################################
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
## YESTERDATE ############### ## YESTERDATE ###############
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}" ${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 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 #########################################
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start=`date +%s`
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## IPFS GET YESTERDATENS
mkdir ~/.zen/tmp/${MOATS}/${UMAP} mkdir ~/.zen/tmp/${MOATS}/${UMAP}
echo "## IPFS GET YESTERDATENS /ipns/${YESTERDATENS}/" ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
ipfs --timeout 300s get --progress=false -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
if [[ $? != 0 ]]; then
echo "(╥☁╥ ) swarm online 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}" "${G1PUB}"
fi
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end=`date +%s`
echo "_____UMAP${UMAP} GET time was "`expr $end - $start` seconds.
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## FORMAT CONTROL WARNING ## FORMAT CONTROL WARNING
[[ ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN || ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} ]] \ [[ ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN || ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} ]] \
&& echo ">>> INFO - INTIALIZE UMAP FORMAT - NEW UMAP KEY -" \ && echo ">>> INFO - INTIALIZE UMAP FORMAT - NEW UMAP KEY -" \
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} \ && mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} \
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN \ && 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}/RSS
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW
@ -127,11 +94,35 @@ for UMAP in ${unique_combined[@]}; do
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 -f ~/.zen/tmp/${MOATS}/${UMAP}/z*.html 2>/dev/null rm ~/.zen/tmp/${MOATS}/${UMAP}/z* ## TODO RESTRICT T O z*.html
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain 2>/dev/null | rev | cut -d ':' -f 1 | rev 2>/dev/null) ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
[[ "${ZCHAIN}" != "" ]] \ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
&& echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
# ++++++++++++++++++++ - - - - ADAPT TO NODE TREATMENT TIME
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 ## NODE SELECTION in UMAP.refresher
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher" UREFRESH="${HOME}/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher"
@ -150,34 +141,19 @@ for UMAP in ${unique_combined[@]}; 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]}
# ++++++++++++++++++++ - - - - 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 ## IF NOT UPDATED FOR TOO LONG
[[ ${DIFF_SECONDS} -gt $(( 26 * 60 * 60 )) || ${DIFF_SECONDS} -eq 0 ]] \ [ ${DIFF_SECONDS} -gt 100800 ] \
&& echo ">>>>>>>>>>>>>> More than 26H update - BOOSTRAP 0 ACTION -" \ && echo "More than 28H update" \
&& ACTINGNODE=${STRAPS[0]} && ACTINGNODE=${STRAPS[0]}
echo "* ACTINGNODE=${ACTINGNODE}" echo "* ACTINGNODE=${ACTINGNODE}"
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
echo ">> ACTINGNODE NOT ME - CONTINUE -" && echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
ipfs key rm "${TODATE}${G1PUB}" "${YESTERDATE}${G1PUB}" "${G1PUB}" && continue
echo "------8<-------------8<------------------8<-----------------8<-----------------8<" ########################################
continue # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PASSING THERE MAKE IPFSNODEID UMAP REFRESHER
fi
################################################################################
# ~~~~~~~~~~~~~ GOING FURTHER ~~~ MEANS IPFSNODEID IS UMAP REFRESHER ~~~~~~~~~~~
################################################################################
## NEXT REFRESHER ## NEXT REFRESHER
# TODO: INTRODUCE NODE BALANCE AND CHOOSE THE MOST CONFIDENT ONE # TODO: INTRODUCE NODE BALANCE AND CHOOSE THE MOST CONFIDENT ONE
rm ${UREFRESH} rm ${UREFRESH}
@ -191,14 +167,6 @@ for UMAP in ${unique_combined[@]}; do
echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)" echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)"
######################################################## # NODE SELECTION in UMAP.refresher ######################################################## # NODE SELECTION in UMAP.refresher
############ 101 ZEN (11.1 G1) REFILL ?!
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
[[ ${COINS} == "" || ${COINS} == "null" ]] \
&& [[ ${ZEN} -lt 100 && ${CURRENT} != "" ]] \
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "11.1" "${G1PUB}" "UPLANET:101ZEN:${UMAP}:${MIUSER}" \
&& echo "UPLANET:101:${UMAP}:${MIUSER}" && echo " ~~~ (ZEN‿‿ZEN) ~~ _${LAT}_${LON} ~~ (ZEN‿‿ZEN) ~~~ "
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON} ## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON}
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
@ -212,7 +180,7 @@ for UMAP in ${unique_combined[@]}; do
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 "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${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}
@ -241,81 +209,10 @@ for UMAP in ${unique_combined[@]}; do
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/${TODATEREGIONNS}'\" />" > ~/.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
####################################################################################
#######################################################################################
echo "# NEXTNS : UMAP, SECTOR, REGION ## BOOSTRAP TO SWARM ##"
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
####################################################################################
#################################################################################
## DEMAIN DATA
####################################################################################
## UMAP NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.umap
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${LAT}" "${DEMAINDATE}${UPLANETNAME}${LON}"
ipfs key rm "next" > /dev/null 2>&1
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
echo "UMAP NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
ipfs key rm "next" > /dev/null 2>&1
rm ~/.zen/tmp/${MOATS}/next.priv
## BOOSTRAP SWARM PUBLICATION _next.umapns
echo "${G1PUB}:${DEMAINDATE}:${NEXTNS}" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.umapns
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.umapns \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
## SECTOR NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.sector
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${SECTOR}" "${DEMAINDATE}${UPLANETNAME}${SECTOR}"
ipfs key rm "next" > /dev/null 2>&1
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
echo "SECTOR NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
ipfs key rm "next" > /dev/null 2>&1
rm ~/.zen/tmp/${MOATS}/next.priv
## BOOSTRAP SWARM PUBLICATION _next.sectorns
echo "${SECTORG1PUB}:${DEMAINDATE}:${NEXTNS}" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.sectorns
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.sectorns \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
## REGION NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.region
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${REGION}" "${DEMAINDATE}${UPLANETNAME}${REGION}"
ipfs key rm "next" > /dev/null 2>&1
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
echo "REGION NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
ipfs key rm "next" > /dev/null 2>&1
rm ~/.zen/tmp/${MOATS}/next.priv
## BOOSTRAP SWARM PUBLICATION _next.regionns
echo "${REGIONG1PUB}:${DEMAINDATE}:${NEXTNS}" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.regionns
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.regionns \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
####################################################################################
## TODATE DATA
echo "WRITE $TODATE DATA ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}"
####################################################################################
echo "${TODATENS}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TODATENS
echo "${SECTORNS}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/SECTORNS
echo "${TODATEREGIONNS}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/REGIONNS
echo "${G1PUB}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/G1PUB
echo "${SECTORG1PUB}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/SECTORG1PUB
echo "${REGIONG1PUB}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/REGIONG1PUB
####################################################################################
ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
## 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 \ cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json ~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null
~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null
RSSFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json 2>/dev/null)) RSSFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json 2>/dev/null))
for RSSFILE in ${RSSFILES[@]}; do for RSSFILE in ${RSSFILES[@]}; do
cp ${RSSFILE} ~/.zen/tmp/${MOATS}/${UMAP}/RSS/ cp ${RSSFILE} ~/.zen/tmp/${MOATS}/${UMAP}/RSS/
@ -324,8 +221,7 @@ for UMAP in ${unique_combined[@]}; do
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
## COLLECT TW LINKS FROM NODE & SWARM ## COLLECT TW LINKS FROM NODE & SWARM
# %%%%%%%%%% ################################################## # %%%%%%%%%% ##################################################
cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* \ cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* ~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null
~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null
TWFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null)) TWFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
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)
@ -336,8 +232,8 @@ for UMAP in ${unique_combined[@]}; do
################################## ##################################
## OSM2IPFS ## OSM2IPFS
### UMAP = 0.01° Planet Slice ### UMAP = 0.01° Planet Slice
UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${TODATENS}/_index.html" UMAPGEN="${EARTHCID}/Umap.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" USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${UMAPNS}/_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
@ -374,7 +270,7 @@ for UMAP in ${unique_combined[@]}; do
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 -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 \ && 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 \
&& [[ $(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" \
@ -385,31 +281,11 @@ for UMAP in ${unique_combined[@]}; do
## 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
## GET ALL WALLETS
echo "* GET WALLETS https://g1-stats.axiom-team.fr/data/geoloc-members.json"
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
&& curl -s "https://g1-stats.axiom-team.fr/data/geoloc-members.json" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
&& [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json) ]] \
&& mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json \
&& echo "UPDATED WALLALL" \
|| rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json
## FILTER LOCAL WALLETS
target_lat=${LAT}
target_lon=${LON}
precision=0.1
jq --argjson target_lat "$target_lat" \
--argjson target_lon "$target_lon" \
--argjson precision "$precision" \
'.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/${MOATS}/${UMAP}/wallets.json
echo "MAKING _index.p4n.html with ./templates/P4N/index.html" echo "MAKING _index.p4n.html with ./templates/P4N/index.html"
## CREATE INDEX LOADING JSONs ON OPENSTREETMAP ## CREATE INDEX LOADING JSONs ON OPENSTREETMAP
cat ${MY_PATH}/../templates/P4N/index.html \ cat ${MY_PATH}/../templates/P4N/index.html \
| sed -e "s~43.61000~${LAT}~g" \ | sed -e "s~43.2218~${LAT}~g" \
-e "s~1.43000~${LON}~g" \ -e "s~1.3977~${LON}~g" \
-e "s~_SERVICE_~Commons~g" \ -e "s~_SERVICE_~Commons~g" \
-e "s~_UMAP_~${UMAP}~g" \ -e "s~_UMAP_~${UMAP}~g" \
-e "s~http://127.0.0.1:8080~~g" \ -e "s~http://127.0.0.1:8080~~g" \
@ -465,26 +341,19 @@ for UMAP in ${unique_combined[@]}; do
echo "JSON UMAP WORLD READY /ipfs/${IAMAP}/world.js" echo "JSON UMAP WORLD READY /ipfs/${IAMAP}/world.js"
########################################################################################### ###########################################################################################
### APPLY ON APP MODEL ### APPLY ON APP MODEL
SLAT="${LAT::-1}" SECLAT="${LAT::-1}"
SLON="${LON::-1}" SECLON="${LON::-1}"
SECTOR="_${SLAT}_${SLON}" SECTOR="_${SECLAT}_${SECLON}"
TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}") TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}")
PHONEBOOTH="${G1PUB::30}" PHONEBOOTH="${G1PUB::30}"
cat ${MY_PATH}/../templates/UPlanetUmap/index.html \ cat ${MY_PATH}/../templates/UPlanetUmap/index.html \
| sed -e "s~_ZONE_~${UMAP}~g" \ | 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~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
-e "s~_ZONENS_~${TODATENS}~g" \ -e "s~_ZONENS_~${TODATENS}~g" \
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
-e "s~_IPFSNINJA_~${VDONINJA}~g" \
-e "s~_HACKGIPFS_~${HACKGIPFS}~g" \
-e "s~_UPZONE_~SECTOR ${SECTOR}~g" \
-e "s~_UPZONENS_~${TODATESECTORNS}~g" \ -e "s~_UPZONENS_~${TODATESECTORNS}~g" \
-e "s~_UPUPZONE_~REGION ${REGION}~g" \
-e "s~_UPUPZONENS_~${TODATEREGIONNS}~g" \
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \ -e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
-e "s~_G1PUB_~${G1PUB}~g" \
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~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~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${LAT}\&southWestLon=${LON}\&deg=0.01~g" \
-e "s~http://127.0.0.1:8080~~g" \ -e "s~http://127.0.0.1:8080~~g" \
@ -509,66 +378,29 @@ for UMAP in ${unique_combined[@]}; do
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null) ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
[[ ${ZCHAIN} && ${ZMOATS} ]] \ [[ ${ZCHAIN} && ${ZMOATS} ]] \
&& cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain.${ZMOATS} \ && cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain.${ZMOATS} \
&& echo "UPDATING MOATS=${MOATS}" && 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 > 11 ?)"
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 ? ## MICRO LEDGER CHAIN CHANGED or INIT ?
[[ ${ZCHAIN} != ${UMAPROOT} || ${ZCHAIN} == "" ]] \ [[ ${ZCHAIN} != ${UMAPROOT} || ${ZCHAIN} == "" ]] \
&& echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain \ && echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain \
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats \ && echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats \
&& UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) \ && UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
&& echo "ROOT was ${ZCHAIN}"
echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}" echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
ipfs --timeout 300s name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT} ipfs name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
end=`date +%s` 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. echo "(UMAP) ${UMAP} ${TODATE} PUBLISH time was "`expr $end - $start` seconds.
ipfs key rm "${TODATE}${G1PUB}" "${YESTERDATE}${G1PUB}" "${G1PUB}" ## REMOVE IPNS KEY
[[ ${ZCHAIN} != "" ]] && ipfs pin rm ${ZCHAIN}
################# PUBLISH UPlanet UMAP to G1PODs
${MY_PATH}/../tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${UMAP}.dunikey -n ${myDATA} \
set -n "UPlanet ${UMAP}" -v " " -a " " -d "UPlanet ${myUPLANET}" \
-pos ${LAT} ${LON} -s ${myLIBRA}/ipfs/${UMAPROOT} \
-A ${MY_PATH}/../images/extension_territoire.jpg
${MY_PATH}/../tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${UMAP}.dunikey -n ${myCESIUM} \
set -n "UPlanet ${UMAP}" -v " " -a " " -d "UPlanet ${myUPLANET}" \
-pos ${LAT} ${LON} -s ${myLIBRA}/ipfs/${UMAPROOT} \
-A ${MY_PATH}/../images/extension_territoire.jpg
rm ~/.zen/tmp/${MOATS}/*.priv
rm ~/.zen/tmp/${MOATS}/${UMAP}.dunikey
done 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
######################################################

View File

@ -19,32 +19,29 @@ SALT="$1"
PEPPER="$2" PEPPER="$2"
PLAYER="$3" PLAYER="$3"
PSEUDO="$4" PSEUDO="$4"
[[ $PSEUDO == "" ]] && PSEUDO="Anonymous"
LANG="$5" ## Fill UP TW with VIDEO URL or UMAP NS
[[ $LANG == "" ]] && LANG="_LANG_" URL="$5"
## UPLANET UMAP ## UPLANET SECTOR
LAT="$6" LAT="$6"
[[ $LAT == "" ]] && LAT="0.00"
LON="$7" LON="$7"
[[ $LON == "" ]] && LON="0.00"
################################################################################ ################################################################################
YOU=$(myIpfsApi); YOU=$(myIpfsApi);
LIBRA=$(head -n 2 ${MY_PATH}/../A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
################################################################################ ################################################################################
## LIST TW MODELS ## LIST TW MODELS
################################################################################ ################################################################################
#~ TWMODEL="/ipfs/bafybeid7xwuqkgyiffehs77x3wky3dghjncxepr5ln6dewapgvbwrqi7n4" TWMODEL="/ipfs/bafybeie6sx76balvpeehvbh5du7oc5fhjuwydryympeh3qnm5s3b2jrvwe"
#~ # ipfs cat $TWMODEL > templates/twdefault.html # ipfs cat $TWMODEL > templates/twdefault.html
TWUPLANET="/ipfs/bafybeigpwapdih24vnakummoyj6vodxiem4i6ezp5hxa35yt3paxpqz53y" ## WITH LIGHTBEAMS SAVER MINIMAL="/ipfs/bafybeicpfrsx44lkib4352eulvohmgdpaww3sau3qtbj7fzj6qw7xsokhy"
TWUPLANET="/ipfs/bafybeidxa45qgbf34p7uvmphj5zt6jp2zgpw7ouwb3e3urnbu4jrt2dgiq" ## WITH IPFS SAVER # ipfs cat $MINIMAL > templates/twuplanet.html
# ipfs cat $TWUPLANET > templates/twuplanet.html
################################################################################ ################################################################################
mkdir -p ~/.zen/tmp/${MOATS}/TW mkdir -p ~/.zen/tmp/${MOATS}/TW
## TEST chargement ONLINE TW !!! ## Chargement TW !!!
if [[ $SALT != "" && PEPPER != "" ]]; then if [[ $SALT != "" && PEPPER != "" ]]; then
## Creating SALT/PEPPER IPNS KEY ## Creating SALT/PEPPER IPNS KEY
@ -54,47 +51,39 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
echo "SCANNING /ipns/${ASTRONAUTENS} for 180s" echo "SCANNING /ipns/${ASTRONAUTENS} for 180s"
## GETTING LAST TW via IPFS or HTTP GW ## GETTING LAST TW via IPFS or HTTP GW
ipfs --timeout 180s cat --progress=false /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html [[ $YOU ]] \
&& ipfs --timeout 180s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html
if [[ -s ~/.zen/tmp/${MOATS}/TW/index.html ]]; then [[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] \
echo "TW FOUND... BACKUP TIDDLERS" && [[ -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
# BACKUP tiddlers && echo "TW FOUND ENTER 'yes' TO RESET TW. HIT ENTER TO KEEP IT." \
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} \ && read ENTER \
--render '.' 'backup.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[!is[system]]' && [[ $ENTER != "" ]] && rm ~/.zen/tmp/${MOATS}/TW/index.html
[[ -s ~/.zen/tmp/${MOATS}/backup.json ]] \ # EXTEND SEARCH IN WEB2.0
&& echo ">> Tiddlers Backup : ~/.zen/tmp/${MOATS}/backup.json" \ #~ [[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
|| echo "ERROR EXTRACTING TIDDLERS" #~ && echo "Trying curl on $LIBRA" \
#~ && curl -m 30 -so ~/.zen/tmp/${MOATS}/TW/index.html "$LIBRA/ipns/${ASTRONAUTENS}"
rm ~/.zen/tmp/${MOATS}/TW/index.html
fi
############################################# #############################################
## CREATE NEW TW FROM TEMPLATE ## AUCUN RESULTAT
cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html if [ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]; then
#### REFILL WITH BACKUP # COPY TW TEMPLATE
if [[ -s ~/.zen/tmp/${MOATS}/backup.json ]]; then [[ ${LON} && ${LAT} ]] \
&& cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html \
|| cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html \ else
--import ~/.zen/tmp/${MOATS}/backup.json "application/json" \
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "tw.html" "text/plain"
[[ -s ~/.zen/tmp/${MOATS}/tw.html ]] \
&& cp -f ~/.zen/tmp/${MOATS}/tw.html ~/.zen/tmp/${MOATS}/TW/index.html
echo "BACKUP RESTORED"
fi
############################################# #############################################
# EXISTING TW : DATA TESTING & CACHE # EXISTING TW : DATA TESTING & CACHE
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) ## Can be deleted AstroID=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[]._canonical_uri)
[[ -z $HPass ]] && HPass=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[].HPASS) ## Double HPASS HPass=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[].HPASS)
echo "AstroID=$AstroID ($HPass)" echo "AstroID=$AstroID ($HPass)"
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'ZenCard.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'ZenCard' tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'ZenCard.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'ZenCard'
ZenCard=$(cat ~/.zen/tmp/${MOATS}/ZenCard.json | jq -r .[]._canonical_uri) ZenCard=$(cat ~/.zen/tmp/${MOATS}/ZenCard.json | jq -r .[]._canonical_uri)
@ -109,11 +98,11 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
else else
echo ">> NO ACTIVE TW - CREATING FRESH NEW ONE" echo ">> NO ACTIVE TW - CREATING FRESH NEW ONE"
cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
fi fi
fi
ipfs key rm ${MOATS} 2>/dev/null ## CLEANING MOATS KEY ipfs key rm ${MOATS} 2>/dev/null ## CLEANING MOATS KEY
@ -135,7 +124,7 @@ fi
[[ $SALT == "" ]] && SALT=$(${MY_PATH}/../tools/diceware.sh 4 | xargs) [[ $SALT == "" ]] && SALT=$(${MY_PATH}/../tools/diceware.sh 4 | xargs)
#~ echo "-> ID : $SALT" #~ echo "-> ID : $SALT"
[[ $PEPPER == "" ]] && PEPPER=$(${MY_PATH}/../tools/diceware.sh 4 | xargs) [[ $PEPPER == "" ]] && PEPPER=$(${MY_PATH}/../tools/diceware.sh 2 | xargs)
#~ echo "-> PASS : $PEPPER" #~ echo "-> PASS : $PEPPER"
[[ ! $PSEUDO ]] && PSEUDO=${PLAYER%%[0-9]*} [[ ! $PSEUDO ]] && PSEUDO=${PLAYER%%[0-9]*}
@ -143,9 +132,8 @@ fi
[[ $(ls ~/.zen/game/players/$PSEUDO 2>/dev/null) ]] && echo "$PSEUDO EST DEJA UN PLAYER. EXIT" && exit 1 [[ $(ls ~/.zen/game/players/$PSEUDO 2>/dev/null) ]] && echo "$PSEUDO EST DEJA UN PLAYER. EXIT" && exit 1
# PSEUDO=${PSEUDO,,} #lowercase # PSEUDO=${PSEUDO,,} #lowercase
[[ ! ${PLAYER} ]] \ [[ ! ${PLAYER} ]] && PLAYER=${PSEUDO}${RANDOM:0:3}@$(${MY_PATH}/../tools/diceware.sh 1 | xargs).${RANDOM:0:3} \
&& PLAYER=${PSEUDO}${RANDOM:0:3}@$(${MY_PATH}/../tools/diceware.sh 1 | xargs).${RANDOM:0:3} \ && echo "ADRESSE EMAIL ?" && read OPLAYER && [[ $OPLAYER ]] && PLAYER=$OPLAYER
&& echo "ADRESSE EMAIL ?" && read OPLAYER && [[ $OPLAYER ]] && PLAYER=$OPLAYER ## CLI MODE
PLAYER=${PLAYER,,} PLAYER=${PLAYER,,}
@ -153,6 +141,13 @@ PLAYER=${PLAYER,,}
PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-5) PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-5)
############################################################ ############################################################
######### TODO Ajouter d'autres clefs IPNS, GPG ?
# MOANS=$(ipfs key gen moa_${PLAYER})
# MOAKEYFILE=$(${MY_PATH}/give_me_keystore_filename.py "moa_${PLAYER}")
# echo "Coffre personnel multimedia journalisé dans votre 'Astroport' (amis de niveau 3)"
# echo "Votre clef moa_${PLAYER} <=> $MOANS ($MOAKEYFILE)"; sleep 2
############################################################
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/secret.dunikey "$SALT" "$PEPPER" ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/secret.dunikey "$SALT" "$PEPPER"
G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
@ -163,31 +158,44 @@ G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
## secret.june = SALT PEPPER CREDENTIALS # PLAYER=geg-la_debrouille@super.chez-moi.com
echo "SALT=\"$SALT\"" > ~/.zen/game/players/${PLAYER}/secret.june YUSER=$(echo ${PLAYER} | cut -d '@' -f1) # YUSER=geg-la_debrouille
echo "PEPPER=\"$PEPPER\"" >> ~/.zen/game/players/${PLAYER}/secret.june LYUSER=($(echo "$YUSER" | sed 's/[^a-zA-Z0-9]/\ /g')) # LYUSER=(geg la debrouille)
#### CLYUSER=$(printf '%s\n' "${LYUSER[@]}" | tac | tr '\n' '.' ) # CLYUSER=debrouille.la.geg.
## MOVE ${MOATS} secret.dunikey IN PLAYER DIRECTORY YOMAIN=$(echo ${PLAYER} | cut -d '@' -f 2) # YOMAIN=super.chez-moi.com
mv ~/.zen/tmp/${MOATS}/secret.dunikey ~/.zen/game/players/${PLAYER}/ # echo "NEXT STYLE GW : https://ipfs.$CLYUSER$YOMAIN.$(myHostName)"
# echo "MY PLAYER API GW : $(myPlayerApiGw)"
NID="${myIPFS}" NID="${myIPFS}"
WID="https://ipfs.$CLYUSER$YOMAIN.$(myHostName)/api" ## Next Generation API # TODO PLAYER IPFS Docker entrance
WID="https://ipfs.$(myHostName)/api"
WID="https://ipfs.$(myHostName)/api"
WID="${myAPI}" ## https://ipfs.libra.copylaradio.com WID="${myAPI}" ## https://ipfs.libra.copylaradio.com
# WID="http://ipfs.$(myHostName):5001"
USALT=$(echo "$SALT" | jq -Rr @uri)
UPEPPER=$(echo "$PEPPER" | jq -Rr @uri)
DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
[[ $isLAN ]] && NID="http://ipfs.localhost:8080" \ [[ $isLAN ]] && NID="http://ipfs.localhost:8080" \
&& WID="http://ipfs.localhost:5001" && WID="http://ipfs.localhost:5001"
# Create ${PLAYER} "IPNS Key" ####
ipfs key rm ${PLAYER} >/dev/null 2>&1
ipfs key rm ${G1PUB} >/dev/null 2>&1 mv ~/.zen/tmp/${MOATS}/secret.dunikey ~/.zen/game/players/${PLAYER}/
# Create Player "IPNS Key" (key import)
ipfs key rm ${PLAYER}
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/secret.player "$SALT" "$PEPPER" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/secret.player "$SALT" "$PEPPER"
TWNS=$(ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player) TWNS=$(ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
ASTRONAUTENS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player) ASTRONAUTENS=$(ipfs key import $G1PUB -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
## TODO MAKE CLEANER
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/G1SSB # Prepare astrXbian sub-datastructure "old scarf code" mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/G1SSB # Prepare astrXbian sub-datastructure "old scarf code"
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.png "$G1PUB" ## Check by VISA.print.sh
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.png "$G1PUB"
cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/ipfs/QR.png cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/ipfs/QR.png
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/ipfs/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible) echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/ipfs/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible)
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png "$myLIBRA/ipns/${ASTRONAUTENS}" qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png "$myLIBRA/ipns/${ASTRONAUTENS}"
############################################################################ ############################################################################
@ -195,10 +203,6 @@ qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png "$myLIBRA/ip
#~ secFromDunikey=$(cat ~/.zen/game/players/${PLAYER}/secret.dunikey | grep "sec" | cut -d ' ' -f2) #~ secFromDunikey=$(cat ~/.zen/game/players/${PLAYER}/secret.dunikey | grep "sec" | cut -d ' ' -f2)
#~ echo "$secFromDunikey" > ~/.zen/tmp/${MOATS}/${PSEUDO}.sec #~ echo "$secFromDunikey" > ~/.zen/tmp/${MOATS}/${PSEUDO}.sec
USALT=$(echo "$SALT" | jq -Rr @uri)
UPEPPER=$(echo "$PEPPER" | jq -Rr @uri)
DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
## PGP ENCODING SALT/PEPPER API ACCESS ## PGP ENCODING SALT/PEPPER API ACCESS
echo "${DISCO}" > ~/.zen/tmp/${MOATS}/topgp echo "${DISCO}" > ~/.zen/tmp/${MOATS}/topgp
cat ~/.zen/tmp/${MOATS}/topgp | gpg --symmetric --armor --batch --passphrase "$PASS" -o ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc cat ~/.zen/tmp/${MOATS}/topgp | gpg --symmetric --armor --batch --passphrase "$PASS" -o ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc
@ -211,8 +215,9 @@ rm ~/.zen/tmp/${MOATS}/topgp
## Add logo to QRCode ## Add logo to QRCode
cp ${MY_PATH}/../images/astrologo_nb.png ~/.zen/tmp/${MOATS}/fond.png cp ${MY_PATH}/../images/astrologo_nb.png ~/.zen/tmp/${MOATS}/fond.png
## ASTROID ~~~~~ ## ASTROID ~~~~~ || &&&&&
ASTROIDQR="$(cat ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc | tr '-' '~' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )" ASTROIDQR="$(cat ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc | tr '-' '~' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )"
[[ ${PSEUDO} == "UPlanet" ]] && ASTROIDQR="$(cat ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc | tr '-' '&' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )"
## MAKE amzqr ASTROID PGP QRCODE ## MAKE amzqr ASTROID PGP QRCODE
amzqr "${ASTROIDQR}" \ amzqr "${ASTROIDQR}" \
-d ~/.zen/tmp/${MOATS} \ -d ~/.zen/tmp/${MOATS} \
@ -225,18 +230,12 @@ convert ~/.zen/game/players/${PLAYER}/result_qrcode.png -resize 480 ~/.zen/game/
ASTROQR="/ipfs/$(ipfs add -q $HOME/.zen/game/players/${PLAYER}/AstroID.png | tail -n 1)" ASTROQR="/ipfs/$(ipfs add -q $HOME/.zen/game/players/${PLAYER}/AstroID.png | tail -n 1)"
## DO NOT PIN ASTROID QRCODE
ipfs pin rm ${ASTROQR}
############################################################################ TW ############################################################################ TW
### INITALISATION WIKI dans leurs répertoires de publication IPFS ### INITALISATION WIKI dans leurs répertoires de publication IPFS
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/moa/ mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/moa/
[[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \ [[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] && cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
&& cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html sed "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/tmp/${MOATS}/TW/index.html > ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/tmp/${MOATS}/TW/index.html \
> ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
# INSERT ASTROPORT ADDRESS # INSERT ASTROPORT ADDRESS
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
@ -245,122 +244,99 @@ sed -i "s~${ASTROPORT}~/ipns/${IPFSNODEID}~g" ~/.zen/game/players/${PLAYER}/ipfs
# TW CHAIN INIT WITH TWMODEL # TW CHAIN INIT WITH TWMODEL
sed -i "s~_MOATS_~${MOATS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_MOATS_~${MOATS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~_CHAIN_~${TWUPLANET}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_CHAIN_~${TWMODEL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~_TWMODEL_~${TWUPLANET}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_TWMODEL_~${TWMODEL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~_ASTRONAUTENS_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_TW_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## AND HACK QRCODE.sh FOR _PGP KEY_ TO VERIFY LAST HASH OF PROVIDED PASS ## AND HACK QRCODE.sh FOR _PGP KEY_ TO VERIFY LAST HASH OF PROVIDED PASS
HPASS=$(echo $PASS | sha512sum | cut -d ' ' -f 1) HPASS=$(echo $PASS | sha512sum | cut -d ' ' -f 1)
[[ ${HPass} != "" && ${HPass} != "null" ]] && SRCPASS=${HPass} || SRCPASS="_HPASS_" [[ ${HPass} != "" ]] && SRCPASS=${HPass} || SRCPASS="_HPASS_"
sed -i "s~${SRCPASS}~${HPASS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~${SRCPASS}~${HPASS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## 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
sed -i "s~_URL_~${URL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
# INSERT PLAYER DATA # INSERT PLAYER DATA
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
[[ -z ${CURRENT} ]] && CURRENT=${PLAYER}
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
sed -i "s~_CURRENT_~${CURRENT}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~_WISHKEY_~${G1PUB}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~_G1PUB_~${G1PUB}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_G1PUB_~${G1PUB}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
#~ sed -i "s~_QRSEC_~${PASsec}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html #~ sed -i "s~_QRSEC_~${PASsec}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1)
# La Clef IPNS porte comme nom G1PUB et ${PLAYER} # La Clef IPNS porte comme nom G1PUB et ${PLAYER}
sed -i "s~_MEDIAKEY_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~_MEDIAKEY_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~k2k4r8kxfnknsdf7tpyc46ks2jb3s9uvd3lqtcv9xlq9rsoem7jajd75~${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~k2k4r8kxfnknsdf7tpyc46ks2jb3s9uvd3lqtcv9xlq9rsoem7jajd75~${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~_ASTRONAUTENS_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## AstroID Tiddler UPGRADE ## AstroID Tiddler UPGRADE
cat ${MY_PATH}/../templates/data/AstroID.json \ cat ${MY_PATH}/../templates/data/AstroID.json \
| sed -e "s~/ipfs/bafybeifbebc3ewnzrzbm44arddedbralegnxklhua5d5ymzaqtf2kaub7i~${ASTROQR}~g" \ | sed -e "s~/ipfs/bafybeifbebc3ewnzrzbm44arddedbralegnxklhua5d5ymzaqtf2kaub7i~${ASTROQR}~g" \
-e "s~_PLAYER_~${PLAYER}~g" \ -e "s~_PLAYER_~${PLAYER}~g" \
-e "s~_MOATS_~${MOATS}~g" \
-e "s~_G1PUB_~${G1PUB}~g" \ -e "s~_G1PUB_~${G1PUB}~g" \
-e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \ -e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \
-e "s~_HPASS_~${HPASS}~g" \ -e "s~_HPASS_~${HPASS}~g" \
> ~/.zen/tmp/${MOATS}/AstroID.json > ~/.zen/tmp/${MOATS}/AstroID.json
sed -i "s~${AstroID}~${ASTROQR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## NOT CYPHERED AstroID
sed -i "s~tube.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~tube.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed -i "s~ipfs.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html sed -i "s~ipfs.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## PREPARE UMAP LAT LON replacement ## PREPARE UMAP LAT LON replacement
[[ ! ${LAT} ]] && LAT="0.00" [[ ! ${LAT} ]] && LAT="0.00"
[[ ! ${LON} ]] && LON="0.00" [[ ! ${LON} ]] && LON="0.00"
UMAP=${URL}
[[ ! $(echo ${UMAP} | grep "/ipns/") ]] && UMAP="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu" ## DEFAULT = 0.00
SECTOR="_${LAT::-1}_${LON::-1}" ### SECTOR = 0.1° Planet Slice in MadeInZion Tiddler if [[ ${LAT} && ${LON} ]]; then
echo "UPlanet 0.1° SECTOR : ${SECTOR}"
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
sed -i "s~_SECTOR_~${SECTOR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
sed -i "s~_DAO_~${LANG}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
sed -i "s~_NUMBER_~${#PLAYERONE[@]}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
# GET ACTUAL GPS VALUES # GET ACTUAL GPS VALUES
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \ tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS'
--output ~/.zen/tmp/${MOATS} \
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS'
OLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat) OLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
OLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon) OLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
OUMAP=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
# REPLACE WITH NEW LAT LON UMAP # REPLACE WITH NEW LAT LON UMAP
sed -i "s~${OLAT}~${LAT}~g" ~/.zen/tmp/${MOATS}/GPS.json sed -i "s~${OLAT}~${LAT}~g" ~/.zen/tmp/${MOATS}/GPS.json
sed -i "s~${OLON}~${LON}~g" ~/.zen/tmp/${MOATS}/GPS.json sed -i "s~${OLON}~${LON}~g" ~/.zen/tmp/${MOATS}/GPS.json
## Add _SECTORTW_ sed -i "s~${OUMAP}~${UMAP}~g" ~/.zen/tmp/${MOATS}/GPS.json
cat ~/.zen/tmp/${MOATS}/GPS.json | jq '.[0] + {"sectortw": "_SECTORTW_"}' \ fi
> ~/.zen/tmp/${MOATS}/GPStw.json \
&& mv ~/.zen/tmp/${MOATS}/GPStw.json ~/.zen/tmp/${MOATS}/GPS.json SECTOR="_${LAT::-1}_${LON::-1}" ### SECTOR = 0.1° Planet Slice in MadeInZion Tiddler
echo "UPlanet 0.1° SECTOR : ${SECTOR}"
sed -i "s~_SECTOR_~${SECTOR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## 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)
########### ###########
## GET OLD16 FROM MadeInZion ## GET OLD16
tiddlywiki \ 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'
--load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'MIZ.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
OLD16=$(cat ~/.zen/tmp/${MOATS}/MIZ.json | jq -r ".[].secret") OLD16=$(cat ~/.zen/tmp/${MOATS}/MIZ.json | jq -r ".[].secret")
[[ ${OLD16} == "" || ${OLD16} == "null" ]] && OLD16="_SECRET_" [[ ${OLD16} == "" || ${OLD16} == "null" ]] && OLD16="_SECRET_"
echo "${OLD16}"
# TODO : MAKE NODE FORGET PASS THEN DECODE ${PLAYER}/secret.june FROM TW # PROD # ## USING SWARMKEY (derivated from IPFSNODE "/proc/cpuinfo" key made by _12345.sh) ## HARDWARE SPECIFIC KEY ##
# TODO : NODE COULD FORGET PASS THEN DECODE ${PLAYER}/secret.dunikey FROM TW # PROD #
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_ "
if [[ "${MACHINEPUB}" != "" ]]; then ${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
#~ echo "# CRYPTO ENCODING PLAYER KEY WITH MACHINEPUB ENCODING=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc | base16)
${MY_PATH}/../tools/natools.py encrypt \
-p ${MACHINEPUB} \
-i $HOME/.zen/game/players/${PLAYER}/secret.june \
-o $HOME/.zen/tmp/${MOATS}/secret.june.${G1PUB}.enc
ENCODING=$(cat ~/.zen/tmp/${MOATS}/secret.june.$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
echo "ENCODING: ${ENCODING}" # IN CASE ORIGINAL STATION NEEDS ACCESS # COULD BE REMOVED ?
# GIVE ZEN STATION TW ACCESS #
########### ###########
#~ echo "# CRYPTO DECODING TESTING..." #~ echo "# CRYPTO DECODING TESTING..."
tiddlywiki \ tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
--load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \ cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r ".[].secret" | base16 -d > ~/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2
--output ~/.zen/tmp/${MOATS} \ ${MY_PATH}/../tools/natools.py decrypt -f pubsec -k $HOME/.zen/game/myswarm_secret.dunikey -i $HOME/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2 -o $HOME/.zen/tmp/${MOATS}/crypto.2
--render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
cat ~/.zen/tmp/${MOATS}/MadeInZion.json \
| jq -r ".[].secret" | base16 -d \
> ~/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2
${MY_PATH}/../tools/natools.py decrypt \
-f pubsec \
-k $HOME/.zen/game/myswarm_secret.dunikey \
-i $HOME/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2 \
-o $HOME/.zen/tmp/${MOATS}/crypto.2
#~ echo "DEBUG : $(cat $HOME/.zen/tmp/${MOATS}/crypto.2)" #~ echo "DEBUG : $(cat $HOME/.zen/tmp/${MOATS}/crypto.2)"
########### ###########
## CRYPTO PROCESS VALIDATED ## CRYPTO PROCESS VALIDATED
[[ -s ~/.zen/tmp/${MOATS}/crypto.2 ]] \ [[ -s ~/.zen/tmp/${MOATS}/crypto.2 ]] && echo "NATOOLS LOADED STATION TW KEY " \
&& echo "NATOOLS LOADED STATION TW KEY " \
|| echo "NATOOLS ERRORS - CHECK STATION" # MACHINEPUB CRYPTO ERROR || echo "NATOOLS ERRORS - CHECK STATION" # MACHINEPUB CRYPTO ERROR
else
echo " - WARNING - MISSING ~/.zen/game/myswarm_secret.dunikey - WARNING -"
fi
########### SECTOR = 0.1° UPLANET SLICE ########### SECTOR = 0.1° UPLANET SLICE
OSECTOR=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].sector) OSECTOR=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].sector)
[[ ${OSECTOR} != "null" ]] && sed -i "s~${OSECTOR}~${SECTOR}~g" ~/.zen/tmp/${MOATS}/MadeInZion.json [[ ${OSECTOR} != "null" ]] && sed -i "s~${OSECTOR}~${SECTOR}~g" ~/.zen/tmp/${MOATS}/MadeInZion.json
@ -370,7 +346,6 @@ cat ${MY_PATH}/../templates/data/local.api.json | sed "s~_NID_~${WID}~g" > ~/.ze
cat ${MY_PATH}/../templates/data/local.gw.json | sed "s~_NID_~${NID}~g" > ~/.zen/tmp/${MOATS}/local.gw.json cat ${MY_PATH}/../templates/data/local.gw.json | sed "s~_NID_~${NID}~g" > ~/.zen/tmp/${MOATS}/local.gw.json
# Create"${PLAYER}_feed" Key ! DERIVATED ! "$SALT" "$PEPPER $G1PUB" # Create"${PLAYER}_feed" Key ! DERIVATED ! "$SALT" "$PEPPER $G1PUB"
ipfs key rm "${PLAYER}_feed" 2>/dev/null
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/feed.ipfskey "$SALT" "$PEPPER $G1PUB" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/feed.ipfskey "$SALT" "$PEPPER $G1PUB"
FEEDNS=$(ipfs key import "${PLAYER}_feed" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/feed.ipfskey) FEEDNS=$(ipfs key import "${PLAYER}_feed" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/feed.ipfskey)
@ -379,10 +354,26 @@ FEEDNS=$(ipfs key import "${PLAYER}_feed" -f pem-pkcs8-cleartext ~/.zen/tmp/${MO
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
## NATOOLS ENCRYPT
#~ echo "# NATOOLS ENCODING MYSELF feed.ipfskey (TODO: could be decoded to compare with G1lib.js) "
${MY_PATH}/../tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/tmp/${MOATS}/feed.ipfskey -o $HOME/.zen/tmp/${MOATS}/feed.ipfskey.$G1PUB.enc
ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/feed.ipfskey.$G1PUB.enc | base16)
#~ echo ${ENCODING}
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-feed","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
#~ echo
#~ echo "IPFS GATEWAY : ${NID}"
# cat ~/.zen/tmp/${MOATS}/local.gw.json | jq -r
#~ echo "IPFS API : ${WID}"
# cat ~/.zen/tmp/${MOATS}/local.api.json | jq -r
#~ echo ">>> RSS FEED : ${myIPFS}/ipns/${FEEDNS}"
#~ ## CHANGE SELECTED GW & API
## ADD SYSTEM TW ## ADD SYSTEM TW
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \ tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/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" \
--import ~/.zen/tmp/${MOATS}/lightbeam-natools.json "application/json" \
--import ~/.zen/tmp/${MOATS}/local.api.json "application/json" \ --import ~/.zen/tmp/${MOATS}/local.api.json "application/json" \
--import ~/.zen/tmp/${MOATS}/local.gw.json "application/json" \ --import ~/.zen/tmp/${MOATS}/local.gw.json "application/json" \
--import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \ --import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \
@ -478,6 +469,9 @@ echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/.g1pub
echo "${ASTRONAUTENS}" > ~/.zen/game/players/${PLAYER}/.playerns echo "${ASTRONAUTENS}" > ~/.zen/game/players/${PLAYER}/.playerns
echo "SALT=\"$SALT\"" > ~/.zen/game/players/${PLAYER}/secret.june
echo "PEPPER=\"$PEPPER\"" >> ~/.zen/game/players/${PLAYER}/secret.june
#~ echo; echo "Création Clefs et QR codes pour accès au niveau Astroport Ŋ1"; sleep 1 #~ echo; echo "Création Clefs et QR codes pour accès au niveau Astroport Ŋ1"; sleep 1
echo "--- PLAYER : ${PLAYER} - DATA PROTOCOL LAYER LOADED"; echo "--- PLAYER : ${PLAYER} - DATA PROTOCOL LAYER LOADED";
@ -485,10 +479,9 @@ echo "--- PLAYER : ${PLAYER} - DATA PROTOCOL LAYER LOADED";
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open "${myIPFS}/ipns/${ASTRONAUTENS}" && espeak "YOUR PASS IS $PASS" [[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open "${myIPFS}/ipns/${ASTRONAUTENS}" && espeak "YOUR PASS IS $PASS"
####### CORRECT NO CURRENT ? PLAYER = .current ################# PREPARE DOCKERIZATION
[[ ! -e ~/.zen/game/players/.current ]] \ #~ [[ -l ~/.zen/game/players/.current ]] \
&& rm ~/.zen/game/players/.current 2>/dev/null \ #~ && ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
&& ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
. "${MY_PATH}/../tools/my.sh" . "${MY_PATH}/../tools/my.sh"
@ -506,8 +499,12 @@ echo "$PASS" > ~/.zen/game/players/${PLAYER}/.pass
# TODO : Allow Astronaut PASS change ;) # TODO : Allow Astronaut PASS change ;)
##################################################### #####################################################
## DISCONNECT AND CONNECT CURRENT PLAYER
#~ rm -f ~/.zen/game/players/.current
#~ ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
## MANAGE GCHANGE+ & Ŋ1 EXPLORATION ## MANAGE GCHANGE+ & Ŋ1 EXPLORATION
${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" ${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" 1>/dev/null
### IF PRINTER -> PRINT VISA ### IF PRINTER -> PRINT VISA
LP=$(ls /dev/usb/lp* 2>/dev/null) LP=$(ls /dev/usb/lp* 2>/dev/null)
@ -518,121 +515,72 @@ 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 " 'Astronaut' $PSEUDO" echo " 'Astronaute' $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 : with PASS : $PASS" echo "* AstroID : 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}"
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 ""
####tools##########################################getUMAP_ENV.sh echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to command.sh # KEEP IT
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1) echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
### SEND AstroID and ZenCard to EMAIL
(
echo "<html><body><h1>UPlanet : ZenCard</h1>
This is your ZenCard : your public key (your flag)" > ~/.zen/tmp/${MOATS}/ZenCard.txt
echo "<br><a href='${myIPFSGW}${IASTRO}'>ZenCard</a><br><img src='${myIPFSGW}${IASTRO}'\>
<br>it contains you Ẑen and TW address
<br></body></html>" >> ~/.zen/tmp/${MOATS}/ZenCard.txt
ipns2did="" $MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/ZenCard.txt "ZenCard"
# Loop through the ASTRONAUTENS two characters at a time #~ mpack -a -s "✅ UPlanet : ZenCard" -d ~/.zen/tmp/${MOATS}/intro.txt \
for ((i = 0; i < ${#ASTRONAUTENS}; i += 2)); do #~ ~/.zen/tmp/${MOATS}/pseudo.png ${PLAYER}
ipns2did+=" ${ASTRONAUTENS:i:2}"
# Check if 10 doublets have been added
if (( (i / 2 + 1) % 14 == 0 )); then
ipns2did+="<br>" # Add a newline character
fi
done
# Print the result with leading space removed echo "<html><body>
echo -e "${ipns2did:1}" <h1>UPlanet : AstroID ($PASS)</h1>
####################################################### EMAIL This is your AstroID : your private key (your ring)" > ~/.zen/tmp/${MOATS}/AstroID.txt
[[ -s ${MY_PATH}/../templates/UPlanetZINE/day0/index.${LANG}.html ]] \ echo "
&& ZINE="${MY_PATH}/../templates/UPlanetZINE/day0/index.${LANG}.html" \ <br>You own one of the 'Rings of the Lords' on <a href='https://qo-op.com'>Uplanet</a> 0.1° SECTOR : ${SECTOR}
|| ZINE="${MY_PATH}/../templates/UPlanetZINE/day0/index.html" <br>it is forged from SECRET1=$SALT SECRET2=$PEPPER then secured by PIN : $PASS
##UPlanetZine::/ipfs/QmUjgQYK74UgRoyLFfmR2LMX7rd6vNxmtWeUtRxjemELuZ - chained release - <br>
cat ${ZINE} \ <br>Your ASTROPORT STATION is <a href='${myAPI}'>NODE#${IPFSNODEID}</a>
| sed -e "s~/ipfs/QmdmeZhD8ncBFptmD5VSJoszmu41edtT265Xq3HVh8PhZP~${ASTROQR}~g" \ " >> ~/.zen/tmp/${MOATS}/AstroID.txt
-e "s~/ipfs/QmTL7VDgkYjpYC2qiiFCfah2pSqDMkTANMeMtjMndwXq9y~${IASTRO}~g" \ echo "<br><a href='${myIPFS}/ipns/${ASTROTW}#AstroID'>AstroID</a><br><img src='${myIPFSGW}${ASTROQR}'\>
-e "s~_MOATS_~${MOATS}~g" \ <br>
-e "s~_PLAYER_~${PLAYER}~g" \ <br>Print it and delete from TW to keep it secure.
-e "s~_G1PUB_~${G1PUB}~g" \ </body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.txt
-e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \
-e "s~_ASTRODID_~${ipns2did:1}~g" \
-e "s~0448~${PASS}~g" \
-e "s~_SALT_~${SALT}~g" \
-e "s~_PEPPER_~${PEPPER}~g" \
-e "s~_IPFSNODEID_~${IPFSNODEID}~g" \
-e "s~_EARTHCID_~${EARTHCID}~g" \
-e "s~_SECTOR_~${SECTOR}~g" \
-e "s~_SLAT_~${SLAT}~g" \
-e "s~_SLON_~${SLON}~g" \
> ~/.zen/tmp/${MOATS}/UPlanetZine.html
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.txt "AstroID"
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/UPlanetZine.html "${PLAYER} MULTIPASS"
#####################################################################"_EARTHCID_
#~ echo "<html><head>
#~ <style>
#~ body {
#~ font-family: 'Courier New', monospace;
#~ }
#~ pre {
#~ white-space: pre-wrap;
#~ }
#~ </style></head>
#~ <body>
#~ <center>
#~ <h3><a href='${myUPLANET}'>UPlanet</a></h3>
#~ <h1>\"<a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}'>TW5</a>\"</h1>
#~ did:/ipns/${ASTRONAUTENS}
#~ <hr>
#~ <hr><a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}#AstroID'>AstroID<br>
#~ <img width=300px src='$(myIpfsGw)${ASTROQR}'\></a><br>
#~ <h2>SECRET1=\"$SALT\"<br>SECRET2=\"$PEPPER\"</h2>
#~ <h2> CODE : $PASS </h2>
#~ <hr>
#~ <a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}#ZenCard' title='${G1PUB}'>ZenCard</a><br>
#~ <img src='$(myIpfsGw)${IASTRO}'\><br><hr>
#~ ${G1PUB}" > ~/.zen/tmp/${MOATS}/AstroID.html
#~ echo "
#~ <h3> /-> ASTROPORT : <a href='$(myIpfsGw)/ipns/${IPFSNODEID}'>/ipns/${IPFSNODEID}</a></h3>
#~ <h3> /--> SECTOR : <a href='${EARTHCID}/map_render.html?southWestLat=${LAT::-1}&southWestLon=${LON::-1}&deg=0.1'>${SECTOR}</a></h3>
#~ " >> ~/.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 "<br>${MOATS}<br>- print a copy -</center></body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.html
#~ $MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.html "TW5 & AstroID"
#~ 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,8 +15,6 @@ 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
@ -39,6 +37,9 @@ 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} == "" ]] \
@ -50,14 +51,13 @@ echo "%% ${COINS} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
############################### ###############################
## EXTRACT G1Voeu from PLAYER TW ## EXTRACT G1Voeu from PLAYER TW
echo "Exporting ${PLAYER} TW [days:created[-360]tag[G1Voeu]]" 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' '[days:created[-360]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 ]] \ [[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] && echo "AUCUN G1VOEU - EXIT -" && exit 0
&& echo "AUCUN G1VOEU - EXIT -" && exit 0
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 cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json | jq -r '.[].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 "
@ -92,16 +92,14 @@ do
## RUNNING WISH REFRESH : PLAYER CACHE ## RUNNING WISH REFRESH : PLAYER CACHE
mkdir -p ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/${WISH} mkdir -p ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/${WISH}
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json \
| jq .[] | jq -r 'select(.wish=="'${WISH}'")' \
> ~/.zen/tmp/${MOATS}/${WISH}.json
########################################################################## ##########################################################################
########################################################################## ##########################################################################
## RUN SPECIFIC G1Voeu ASTROBOT PROGRAM (like G1CopierYoutube.sh) ## RUN SPECIFIC G1Voeu ASTROBOT PROGRAM (like G1CopierYoutube.sh)
if [[ -s $MY_PATH/../ASTROBOT/G1${WISHNAME}.sh ]]; then if [[ -s $MY_PATH/../ASTROBOT/G1${WISHNAME}.sh ]]; then
echo "........................ Astrobot G1${WISHNAME}.sh PROGRAM FOUND !" echo "........................ Astrobot G1${WISHNAME}.sh PROGRAM FOUND !"
echo "________________________________ Running it *****" echo "________________________________ Running it *****"
${MY_PATH}/../ASTROBOT/G1${WISHNAME}.sh "$INDEX" "${PLAYER}" "$MOATS" "~/.zen/tmp/${MOATS}/${WISH}.json" ${MY_PATH}/../ASTROBOT/G1${WISHNAME}.sh "$INDEX" "${PLAYER}" "$MOATS"
echo "________________________________ Finished ******" echo "________________________________ Finished ******"
else else
echo "......................... NO G1${WISHNAME} PROGRAM... " echo "......................... NO G1${WISHNAME} PROGRAM... "
@ -167,27 +165,7 @@ 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
@ -277,22 +255,16 @@ do
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME} ${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}
WISHFLUX=$(ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/* | tail -n 1) # ADDING JSONS TO IPFS WISHFLUX=$(ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/* | tail -n 1) # ADDING JSONS TO IPFS
ipfs --timeout 180s name publish -k $VOEUKEY /ipfs/$WISHFLUX # PUBLISH $VOEUKEY ipfs name publish -k $VOEUKEY /ipfs/$WISHFLUX # PUBLISH $VOEUKEY
echo "## ASK ${myIPFSGW}${IPNS_VOEUNS} TO REFRESH" ## TODO LOOP BOOSTRAP & ONLINE FRIENDS echo "## ASK ${myIPFSGW}${IPNS_VOEUNS} TO REFRESH" ## TODO LOOP BOOSTRAP & ONLINE FRIENDS
curl -m 120 -so ~/.zen/tmp/${WISHNAME}.astroindex.html "${myIPFSGW}${IPNS_VOEUNS}" & curl -m 120 -so ~/.zen/tmp/${WISHNAME}.astroindex.html "${myIPFSGW}${IPNS_VOEUNS}" &
## MOVE INTO PLAYER AREA ## MOVE INTO PLAYER AREA
echo ">>> ${PLAYER} G1${WISHNAME} Ŋ1 FLUX $(myIpfsGw)${IPNS_VOEUNS}" echo ">>> ${PLAYER} G1${WISHNAME} Ŋ1 FLUX $(myIpfsGw)/${IPNS_VOEUNS}"
echo "WALLET ${VOEUKEY} FOUNDED by ${G1PUB}" echo "WALLET ${VOEUKEY} FOUNDED by ${G1PUB}"
cp -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/* ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/ 2>/dev/null cp -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/* ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/ 2>/dev/null
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo "SEARCH WORLD SAME WISH CACHE"
[[ "$WISHNAME" != "" ]] && cat ~/.zen/game/world/$WISHNAME/*/.link 2>/dev/null
## ANYTIME A PLAYER CHOOSE AN ASTROPORT - LOCAL WISH CACHE IS EXTENDED -
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
done < ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt done < ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
################################################ ################################################
@ -303,32 +275,38 @@ 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} == "" ]] && LAT="0.00" [[ ${LAT} == "null" ]] && 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} == "" ]] && LON="0.00" [[ ${LON} == "null" ]] && 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
SECLAT="${LAT::-1}"
## GET UMAP ENV SECLON="${LON::-1}"
$(${MY_PATH}/../tools/getUMAP_ENV.sh ${LAT} ${LON} | tail -n 1) SECTOR="_${SECLAT}_${SECLON}"
echo "export UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS SECTOR=$SECTOR SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS REGION=$REGION REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON" ##############################################################
SECTORG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
############################################################## ##############################################################
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 "***** PLAYER $PLAYER *************************************" echo "***** PLAYER $PLAYER *************************************"
echo "GRATITUDE ${GRATITUDE} ZEN (${G1AMOUNT} G1) echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
to UMAP_${LAT}_${LON} WALLET ${UMAPG1PUB}" to ${SECTOR} WALLET ${SECTORG1PUB}"
echo "************************************************************" echo "************************************************************"
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}")
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}" "${UMAPG1PUB}" "UPLANET:UWISH:$YOUSER:/ipfs/${MYWISHFLUX}" ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${SECTORG1PUB}" "ipfs://${MYWISHFLUX}"
fi fi
################################################ ################################################
################################################ GRATITUDE SENT TO SECTOR ################################################ GRATITUDE SENT TO SECTOR
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo "TODO : REFRESH WORLD SAME WISH CACHE"
cat ~/.zen/game/world/$WISHNAME/*/.link 2>/dev/null
## ANYTIME A PLAYER CHOOSE AN ASTROPORT - LOCAL WISH CACHE IS EXTENDED -
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
############################################
exit 0 exit 0

View File

@ -1,76 +0,0 @@
################################################################################
# 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"
G1PUB="$3"
## 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)
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
RLON=$(echo ${LON} | cut -d '.' -f 1)
REGION="_${RLAT}_${RLON}"
${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}/../tools/timeout.sh -t 20 ${MY_PATH}/../tools/jaklis/jaklis.py history -n 40 -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 | tail -n 1)
ipfs_pop=$(echo "$intercom" | rev | cut -d ':' -f 1 | rev)
todate=$(echo "$intercom" | rev | cut -d ':' -f 2 | rev)
echo "SYNC ${SECTOR} <= $todate (=${YESTERDATE})=> $ipfs_pop"
[[ ${todate} != ${YESTERDATE} ]] && echo "NO GOOD MEMORY - EXIT" && exit 1
## TODO: SECURITY PATCH : check payment emitter is from BOOSTRAP
if [[ $ipfs_pop ]]; then
g1pub=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .pubkey' ~/.zen/tmp/${MOATS}/${REGION}.g1history.json | tail -n 1)
echo "INFO :: $g1pub Memory updater"
ipfs --timeout 180s get --progress="false" -o ~/.zen/tmp/${MOATS}/${SECTOR} $ipfs_pop \
&& ipfs pin rm $ipfs_pop \
|| echo "$ipfs_pop ERROR ... "
else
echo "WARNING cannot revover any memory !!"
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.
exit 0

View File

@ -1,89 +0,0 @@
################################################################################
# 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"
G1PUB="$3"
## 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
SLAT="${LAT::-1}"
SLON="${LON::-1}"
SECTOR="_${SLAT}_${SLON}"
${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}/../tools/timeout.sh -t 20 ${MY_PATH}/../tools/jaklis/jaklis.py history -n 40 -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 | tail -n 1)
ipfs_pop=$(echo "$intercom" | rev | cut -d ':' -f 1 | rev)
todate=$(echo "$intercom" | rev | cut -d ':' -f 2 | rev)
echo "SYNC ${UMAP} <= $todate (=${YESTERDATE})=> $ipfs_pop"
[[ ${todate} != ${YESTERDATE} ]] && echo "NO GOOD MEMORY - EXIT" && exit 1
if [[ $ipfs_pop ]]; then
echo "FOUND $todate MEMORY SLOT"
g1pub=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .pubkey' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 1)
echo "INFO :: $g1pub Memory updater"
## ADD SECURITY : check payment emitter is a "BOOSTRAP" (TODO)
nodeid=$(${MY_PATH}/../tools/g1_to_ipfs.py $g1pub)
ipfs --timeout 360s get --progress="false" -o ~/.zen/tmp/${MOATS}/${UMAP} $ipfs_pop \
&& ipfs pin rm $ipfs_pop \
|| echo "$ipfs_pop ERROR ... "
else
echo "WARNING cannot revover any memory !!"
fi
## REMOVE PREVIOUS PIN (in case last one was not mine)
antecom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .comment' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 2 | head -n 1)
ipfs_b=$(echo "$antecom" | rev | cut -d ':' -f 1 | rev)
[[ ! -z ${ipfs_b} ]] && ipfs pin rm ${ipfs_b}
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

View File

@ -1,42 +0,0 @@
#!/bin/bash
####################################
# stats.sh
# analyse LOCAL & SWARM data structure
####################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
. "${MY_PATH}/tools/my.sh"
echo "==========================================================="
####################################
# search for active TWS
####################################
echo " ## SEARCH TW in UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/*"
METW=($(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
SWARMTW=($(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
combined=("${METW[@]}" "${SWARMTW[@]}")
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
echo "${#unique_combined[@]} TW(S) : ${unique_combined[@]}"
echo "==========================================================="
####################################
# search for active UMAPS
####################################
echo " ## SEARCH UMAPS in UPLANET/__/_*_*/_*.?_*.?/*"
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[@]}")
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
echo "${#unique_combined[@]} UMAP(S) : ${unique_combined[@]}"
echo "==========================================================="
for umap in ${unique_combined[@]}; do
lat=$(echo $umap | cut -d '_' -f 2)
lon=$(echo $umap | cut -d '_' -f 3)
echo $lat $lon
${MY_PATH}/tools/getUMAP_ENV.sh $lat $lon | tail -n 1
echo
done

View File

@ -170,7 +170,7 @@
let durees = []; let durees = [];
// Récupérer les données // Récupérer les données
fetch('http://127.0.0.1:8080_VOEUNS_/__PLAYER_.tiddlers.rss.json') fetch('http://127.0.0.1:8080_VOEUNS_/__PLAYER_.tiddlers.json')
.then(res => res.json()) .then(res => res.json())
.then(data => { .then(data => {
// Extraire les gifanime // Extraire les gifanime

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,13 +0,0 @@
# 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

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

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

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

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

61
YNOV.md
View File

@ -1,61 +0,0 @@
# 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"

118
_12345.sh
View File

@ -12,16 +12,15 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "${MY_PATH}/tools/my.sh" . "${MY_PATH}/tools/my.sh"
## SEND LOG TO ~/.zen/tmp/_12345.log ## SEND LOG TO ~/.zen/tmp/_12345.log
rm ~/.zen/tmp/_12345.log
exec 2>&1 >> ~/.zen/tmp/_12345.log exec 2>&1 >> ~/.zen/tmp/_12345.log
PORT=12345 PORT=12345
YOU=$(myIpfsApi); ## API of $USER running ipfs YOU=$(myIpfsApi); ## API of $USER running ipfs
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | xargs | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
## KILLING OLD DAEMON OF MYSELF ## KILLING OLD DAEMON OF MYSELF
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1) ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 2)
[[ $ncrunning != "" ]] && echo "(≖‿‿≖) - KILLING Already Running MAP Server - (≖‿‿≖) " && kill -9 $ncrunning [[ $ncrunning != "" ]] && echo "(≖‿‿≖) - KILLING Already Running MAP Server - (≖‿‿≖) " && kill -9 $ncrunning
## WHAT IS NODEG1PUB ## WHAT IS NODEG1PUB
@ -48,14 +47,13 @@ CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1)
####################################################### #######################################################
## CREATE MySwarm KEYS ? ## CREATE MySwarm KEYS ?
if [[ ${CHAN} == "" || ${CHAN} == "null" || ! -s ~/.zen/game/myswarm_secret.june ]]; 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}
ipfs key rm "MySwarm_${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${UPLANETNAME}" "$SECRET2${UPLANETNAME}" ${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${UPLANETNAME}" "$SECRET2${UPLANETNAME}" ${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
@ -67,65 +65,32 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${CHAN}'\" />" > ~/.z
############################################################ ############################################################
############################################################ ############################################################
echo 0 > ~/.zen/tmp/random.sleep echo 0 > ~/.zen/tmp/random.sleep
################################################################### ###################
############################################### # NEVER ENDING LOOP
##############################
#### UPLANET GEOKEYS_refresh
${MY_PATH}/RUNTIME/GEOKEYS_refresh.sh &
################################################################### ###################################################################
## WILL SCAN ALL BOOSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS ## WILL SCAN ALL BOOSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS
################################################################### ###################################################################
###################
# NEVER ENDING LOOP
while true; do while true; do
start=`date +%s` start=`date +%s`
MOATS=$(date -u +"%Y%m%d%H%M%S%4N") MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
[[ ${myIP} == "" ]] && source "${MY_PATH}/tools/my.sh" ## correct 1st run DHCP latency
echo "/ip4/${myIP}/tcp/4001/p2p/${IPFSNODEID}" > ~/.zen/tmp/${IPFSNODEID}/myIPFS.txt
[[ ! -z ${zipit} ]] \
&& myIP=${zipit} \
&& echo "/ip4/${zipit}/tcp/4001/p2p/${IPFSNODEID}" > ~/.zen/tmp/${IPFSNODEID}/myIPFS.txt
lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats) lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats)
duree=$(expr ${MOATS} - $lastrun) duree=$(expr ${MOATS} - $lastrun)
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H in ms ) ## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H )
if [[ ${duree} -gt 3600000 || ${duree} == "" ]]; then if [[ ${duree} -gt 3600000 ]]; then
### STOP SWARM SYNC 1H BEFORE 20H12
if [[ -s /tmp/20h12.log ]]; then
current_time=$(date +%s)
file_modification_time=$(stat -c %Y "/tmp/20h12.log")
time_difference=$((current_time - file_modification_time))
[ "$time_difference" -ge $(( 23 * 60 * 60 )) ] \
&& echo "$(date +"%H%M") : 20H12 is coming... " && continue
fi
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
[[ ${PLAYERONE[@]} == "" ]] && echo "EMPTY ASTROPORT - NO PLAYER - NO PUBLISHING" && continue
## CHECK IF IPFS NODE IS RESPONDING
ipfs --timeout=30s swarm peers 2>/dev/null > ~/.zen/tmp/ipfs.swarm.peers
[[ ! -s ~/.zen/tmp/ipfs.swarm.peers || $? != 0 ]] \
&& echo "---- SWARM COMMUNICATION BROKEN / RESTARTING IPFS DAEMON ----" \
&& sudo systemctl restart ipfs \
&& sleep 60
${MY_PATH}/ping_bootstrap.sh
#### UPLANET FLASHMEM UPDATES
${MY_PATH}/RUNTIME/GEOKEYS_refresh.sh &
##################################### #####################################
( ##### SUB-PROCESS £ ( ##### SUB-PROCESS RUN
exec 2>&1 >> ~/.zen/tmp/_12345.log
start=`date +%s` start=`date +%s`
# MONITOR pending # MONITOR pending
for player in ${PLAYERONE[@]}; do 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)
# Check Station PLAYER payments # Check Station PLAYER payments
PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX" 2>/dev/null)) PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX"))
for pending in "${PENDINGS[@]}"; do for pending in "${PENDINGS[@]}"; do
echo ${pending} echo ${pending}
# TODO TREAT PENDINGS # TODO TREAT PENDINGS
@ -158,7 +123,7 @@ while true; do
## IPFS GET TO /swarm/${ipfsnodeid} ## IPFS GET TO /swarm/${ipfsnodeid}
echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}" echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}"
ipfs --timeout 720s get --progress="false" -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 "__________________________________________________"
@ -187,12 +152,11 @@ while true; do
############ 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} \ curl -s -m 10 http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID} -o ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json
-o ~/.zen/tmp/swarm/${ipfsnodeid}/12345.${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}/12345.${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"
@ -201,23 +165,23 @@ while true; do
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" ]] \ [[ ${cznod} == "" || ${cznod} == "null" ]] && echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" && continue
&& echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" \
&& continue
[[ ${cznod} == ${IPFSNODEID} ]] \
&& echo "IPFSNODEID MIRROR ME" \
&& continue
echo "REFRESHING MY SWARM DATA WITH ZNOD=${znod}" if [[ ! -d ~/.zen/tmp/swarm/${znod} ]]; then
echo "COMPLETING MY SWARM DATA WITH ZNOD=${znod}"
mkdir -p ~/.zen/tmp/swarm/${znod} mkdir -p ~/.zen/tmp/swarm/${znod}
ipfs --timeout 180s get --progress="false" -o ~/.zen/tmp/swarm/${znod} /ipns/${znod} ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${znod} /ipns/${znod}
else
echo "____________ KNOW ${znod}"
# TODO : SPEEDUP REFRESH COMPARE _MySwarm.moats AND KEEP LASTEST
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 ${znod} FROM SWARM" echo "STATION IS STUCK... FOR TOO LONG... REMOVING 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"
@ -236,7 +200,7 @@ while true; do
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 | xargs | 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) ]] \
@ -249,19 +213,19 @@ while true; do
###################################### ######################################
############# RE PUBLISH SELF BALISE ############# RE PUBLISH SELF BALISE
# Clean Empty Directory # Clean Empty Directory (inode dependancy BUG ??)
du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du
while read branch; do [[ $branch =~ "4096" ]] && 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 IPFSNODEID cache # Scan local cache
ls ~/.zen/tmp/${IPFSNODEID}/ ls ~/.zen/tmp/${IPFSNODEID}/
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1) BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
## IPFS GET LAST ONLINE IPFSNODEID MAP ## IPFS GET LAST PUBLISHED MAP VERSION
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 --progress="false" -o ~/.zen/tmp/_${IPFSNODEID}/ /ipns/${IPFSNODEID}/ ipfs get -o ~/.zen/tmp/_${IPFSNODEID}/ /ipns/${IPFSNODEID}/
NSIZE=$(du -b ~/.zen/tmp/_${IPFSNODEID} | tail -n 1 | xargs | 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
@ -315,7 +279,6 @@ 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"
@ -336,35 +299,26 @@ Content-Type: application/json; charset=UTF-8
arr=(${URL//[=&]/ }) arr=(${URL//[=&]/ })
##################################################################### #####################################################################
### UPSYNC STATION REQUEST :12345/?G1PUB=g1_to_ipfs(G1PUB)&... ### UPSYNC STATION REQUEST /?G1PUB=g1_to_ipfs(G1PUB)&...
## & JOIN 1234
### TODO : include CODE HASH & TOKEN .... ### TODO : include CODE HASH & TOKEN ....
##################################################################### #####################################################################
if [[ ${arr[0]} != "" ]]; then if [[ ${arr[0]} != "" ]]; then
## CHECK URL CONSISTENCY ( do we get G1PUB=IPNSPUB right ? ) ## CHECK URL CONSISTENCY ( G1PUB=IPNSPUB is right ? )
GPUB=${arr[0]} GPUB=${arr[0]}
ASTROTOIPFS=$(${MY_PATH}/tools/g1_to_ipfs.py ${arr[0]} 2>/dev/null) ASTROTOIPFS=$(${MY_PATH}/tools/g1_to_ipfs.py ${arr[0]} 2>/dev/null)
if [[ "${ASTROTOIPFS}" == "${arr[1]}" && ${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"
( (
timeon=`date +%s`
mkdir -p ~/.zen/tmp/swarm/${ASTROTOIPFS} mkdir -p ~/.zen/tmp/swarm/${ASTROTOIPFS}
echo "<<< MAJOR TOM TO GROUND CONTROL >>> UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}" echo "UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}"
ipfs --timeout 240s get --progress="false" -o ~/.zen/tmp/swarm/${ASTROTOIPFS} /ipns/${ASTROTOIPFS} ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ASTROTOIPFS} /ipns/${ASTROTOIPFS}
timeoff=`date +%s`
echo ">>> GROUND CONTROL FINISH in $(( timeoff - timeon )) sec <<<"
) & ) &
fi
### PATCH 1234 : send & forget mode
if [[ ${arr[0]} == "salt" ]]; then
echo "'(ᵔ◡◡ᵔ)' SALT MODE RECEIVED... "
## JUST ADD SOME LINE OF CODE ...
fi fi
fi fi
#### 12345 NETWORK MAP TOKEN #### 12345 NETWORK MAP TOKEN

View File

@ -1,51 +0,0 @@
services:
wotwizard:
image: poka/wotwizard:latest
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- duniterv1_data:/app/data
- data:/app/rsrc/duniter/System/
networks:
- frontend
duniter:
image: pinidh/duniter:1.8-dev
restart: unless-stopped
ports:
- 127.0.0.1:9220:9220
environment:
DEBUG_ENTRYPOINT: "true"
DUNITER_AUTO_SYNC: "true"
DUNITER_SYNC_HOST: "duniter.pini.fr:443"
DUNITER_UPNP: "false"
DUNITER_BMA_ENABLED: 'true'
DUNITER_BMA_IPV4: "0.0.0.0"
DUNITER_BMA_REMOTE_PORT: "443"
DUNITER_BMA_REMOTE_HOST: "duniterww.localhost"
DUNITER_WS2P_HOST: "0.0.0.0"
DUNITER_WS2P_PORT: '20901'
DUNITER_WS2P_PUBLIC: 'true'
DUNITER_WS2P_REMOTE_HOST: "duniterww.localhost"
DUNITER_WS2P_REMOTE_PORT: "443"
DUNITER_WS2P_REMOTE_PATH: "ws2p"
DUNITER_POW_CPU: "0.5""
DUNITER_POW_NBCORES: "1"
volumes:
- duniterv1_data:/app/data
- etc/etc/duniter
networks:
frontend:
ipv4_address: 172.18.0.42
mem_limit: 5g
volumes:
data:
duniterv1_data:
networks:
frontend:
logging:
options:

View File

@ -1,110 +0,0 @@
version: '3'
services:
duniter:
container_name: duniter
environment:
- DEBUG_ENTRYPOINT=${DUNITER_DEBUG_ENTRYPOINT:-${DEBUG_ENTRYPOINT:-${DEBUG:-}}}
- DUNITER_AUTO_SYNC=${DUNITER_AUTO_SYNC:-true}
- DUNITER_BMA_ENABLED=${DUNITER_BMA_ENABLED:-true}
- DUNITER_BMA_IP4=${DUNITER_BMA_IP4:-0.0.0.0}
- DUNITER_BMA_REMOTE_HOST=${DUNITER_BMA_REMOTE_HOST:-duniter.localhost}
- DUNITER_BMA_REMOTE_PORT=${DUNITER_BMA_REMOTE:-443}
- DUNITER_GVA_ENABLED=${DUNITER_GVA_ENABLED:-true}
- DUNITER_GVA_PATH=${DUNITER_GVA_PATH:-gva}
- DUNITER_GVA_PORT=${DUNITER_GVA_PORT:-30901}
- DUNITER_GVA_REMOTE_HOST=${DUNITER_GVA_REMOTE_HOST:-duniter.localhost}
- DUNITER_GVA_REMOTE_PATH=${DUNITER_GVA_REMOTE_PATH:-gva}
- DUNITER_GVA_REMOTE_PORT=${DUNITER_GVA_REMOTE_PORT:-443}
- DUNITER_GVA_REMOTE_TLS=${DUNITER_GVA_REMOTE_TLS:-false}
- DUNITER_GVA_WHITELIST=${DUNITER_GVA_WHITELIST:-127.0.0.1,::1}
- DUNITER_MANUAL_CONFIG=${DUNITER_MANUAL_CONFIG:-false}
- DUNITER_POW_PREFIX=${DUNITER_POW_PREFIX:-}
- DUNITER_POW_CPU=${DUNITER_POW_CPU:-0.8}
- DUNITER_POW_NBCORES=${DUNITER_POW_NBCORES:-1}
- DUNITER_START_OPTS=${DUNITER_START_OPTS:-direct_webstart}
- DUNITER_SYNC_HOST=${DUNITER_SYNC_HOST:-g1.duniter.org:443}
- DUNITER_SYNC_OPTS=${DUNITER_SYNC_OPTS:-}
- DUNITER_WS2P_HOST=${DUNITER_WS2P_HOST:-0.0.0.0}
- DUNITER_WS2P_PORT=${DUNITER_W2SP_PORT:-20901}
- DUNITER_WS2P_PUBLIC=${DUNITER_W2SP_PUBLIC:-true}
- DUNITER_WS2P_REMOTE_HOST=${DUNITER_WS2P_REMOTE_HOST:-duniter.localhost}
- DUNITER_WS2P_REMOTE_PATH=${DUNITER_WS2P_REMOTE_PATH:-ws2p}
- DUNITER_WS2P_REMOTE_PORT=${DUNITER_WS2P_REMOTE_PORT:-443}
image: duniter/duniter:dev
networks:
- private
ports:
- 0.0.0.0:10901:10901
- 0.0.0.0:20901:20901
- 0.0.0.0:30901:30901
- 0.0.0.0:9220:9220
restart: unless-stopped
volumes:
- data:/var/lib/duniter
- etc:/etc/duniter
# Don't auto-updated duniter
labels:
- "com.centurylinklabs.watchtower.enable=false"
# We start duniter but adding g1nkgo local IP to the allow list, so we can use GVA without rate limits (in theory)
entrypoint: /bin/sh -c "while ! getent hosts g1nkgo_host > /dev/null 2>&1; do echo 'Waiting for g1nkgo_host...'; sleep 1; done && G1NKGO_IP=`getent hosts g1nkgo_host | awk '{ print $$1 }'` && export DUNITER_GVA_WHITELIST=$$G1NKGO_IP,$${DUNITER_GVA_WHITELIST:-127.0.0.1,::1} && echo $$DUNITER_GVA_WHITELIST && exec /docker-entrypoint.sh"
g1nkgo:
# image: g1nkgo:latest
image: comunes/g1nkgo:latest
build:
context: .
container_name: g1nkgo
restart: always
hostname: g1nkgo
ports:
- "1801:80"
- "14431:443"
volumes:
- ~/.ginkgo/nginx-conf:/etc/nginx/:rw
# - ./assets:/usr/share/nginx/html/assets:rw
labels:
- "com.centurylinklabs.watchtower.enable=true"
networks:
private:
aliases:
- g1nkgo_host
environment:
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# Useful for having logs with local time
- TZ=${TZ:-Europe/Copenhagen}
# Sentry conf
# SENTRY_DSN=https://306345cb87ee4e1cbbe9023fb4afc5fc@sentry.comunes.org/6
# Card customization
# Empty for default
- CARD_TEXT=${CARD_TEXT:-Ğ1 Wallet}
# Nodes space-separated
# The duniter nodes are only used at boot time, later it tries to calculate periodically the nodes
# that are available with the less latency
# SENTRY_DSN no tiene valor predeterminado, por lo que no se incluye aquí.
- DUNITER_NODES=${DUNITER_NODES:-https://g1.duniter.fr https://g1.le-sou.org https://g1.cgeek.fr https://g1.monnaielibreoccitanie.org https://g1.duniter.fr https://g1.le-sou.org https://g1.cgeek.fr}
- CESIUM_PLUS_NODES=${CESIUM_PLUS_NODES:-https://g1.data.le-sou.org https://g1.data.e-is.pro https://g1.data.presles.fr https://g1.data.mithril.re}
- GVA_NODES=${GVA_NODES:-https://g1v1.p2p.legal:443/gva https://g1.asycn.io:443/gva https://duniter.pini.fr:443/gva https://duniter.cuates.net:443/gva}
watchtower:
image: containrrr/watchtower
container_name: g1nkgo-watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# Additional watchtower args
# commmand:
networks:
- private
networks:
private:
name: ${DOCKER_NETWORK_PRIVATE:-duniter}
# Not in use
# public:
# name: ${DOCKER_NETWORK_PUBLIC:-host}
volumes:
data:
etc:

View File

@ -1,12 +0,0 @@
version: '3'
services:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- /PATH_TO_YOUR_CONFIG:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
restart: unless-stopped
privileged: true
network_mode: host

View File

@ -1,15 +0,0 @@
version: '3'
services:
ipfs_node_1:
image: ipfs/go-ipfs:latest
container_name: ipfs_node_1
environment:
IPFS_SWARM_KEY_FILE: _SWARM_KEY_FILE_
volumes:
- _IPFSDATA_:/export
- _IPFSDATA_:/data/ipfs
ports:
- "64001:4001"
- "64001:4001/udp"
- "127.0.0.1:68080:8080"
- "127.0.0.1:65001:5001"

View File

@ -1,16 +0,0 @@
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

@ -16,79 +16,34 @@ 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 ###################################################################
## ADD PROPOSAL ON THE METHOD if hash uuidgen 2>/dev/null; then
GAMES_DIR="games"
GAMES=$(find "$GAMES_DIR" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)
GAMES=$(ls $MY_PATH/games/)
GAMES=($(ls -d $MY_PATH/games/))
# Above methods are breaking with games names containing SPACE !
# 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
echo "CHOOSE NEXT"
fi
done
########################################
# copy game files to user specific executable space
# $HOME/.zen/adventure/$newplayer
########################################
homefolder=$(pwd) homefolder=$(pwd)
newplayer=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10) newplayer=$(uuidgen)
## Copy Player Game Files ## Copy Player Game Files
mkdir -p $HOME/.zen/adventure/$newplayer mkdir -p $HOME/.zen/adventure/$newplayer
cp -r ${MY_GAME}/rooms $HOME/.zen/adventure/$newplayer/rooms cp -r $MY_PATH/rooms $HOME/.zen/adventure/$newplayer/rooms
cp -r ${MY_GAME}/art $HOME/.zen/adventure/$newplayer/art cp -r $MY_PATH/art $HOME/.zen/adventure/$newplayer/art
cp -r ${MY_GAME}/script $HOME/.zen/adventure/$newplayer/script cp -r $MY_PATH/script $HOME/.zen/adventure/$newplayer/script
cp -r ${MY_GAME}/logic $HOME/.zen/adventure/$newplayer/logic cp -r $MY_PATH/logic $HOME/.zen/adventure/$newplayer/logic
fi
################################################################### ###################################################################
echo "Loading... $newplayer/rooms/start.sh" echo "Loading..."
echo echo
sleep 2 sleep 4
################################################################### ###################################################################
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
################################################################### ###################################################################
# cleaning game files if hash uuidgen 2>/dev/null; then
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

View File

@ -1,49 +0,0 @@
#!/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

View File

@ -1,24 +0,0 @@
#!/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

View File

@ -1,34 +0,0 @@
#!/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

File diff suppressed because one or more lines are too long

View File

@ -1,49 +0,0 @@
#!/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

@ -1,62 +0,0 @@
#!/bin/bash
clear
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
sleep 1
# Here's this room's script.
echo "Sur la direction du sud, vous traversez une zone plus sombre et humide."
echo "Le sol est glissant à cause de l'argile qui colle sous vos bottes"
echo "Vous finissez par croiser un chemin qui traverse la forêt d'Est en Ouest"
echo
echo "Un terminal informatique est installé là."
echo
echo "Il ressemble à une grosse calculatrice"
# Here we tell the player whether the lever is on or off.
leverstate=`cat ../logic/leverlogic.ben`
if [ "$leverstate" = "on" ]; then
echo "'VISA SVP' clignote sur l'écran..."
else
echo "La machine affiche l'heure : 20:12"
fi
echo
echo "Il est tard pour explorer le chemin à pied, vous devriez retourner d'où vous venez."
echo
echo "Que faites vous?"
# In this set of actons lies the logic switch used later in the game.
# You have to set this switch to reach the endgame.
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) ./mainroom.sh
exit ;;
s ) echo "Si vous continuez à marcher dans la forêt. Vous allez vous perdre. Demi tour." ;;
e ) echo "Le chemin qui part à l'Est est plein de boue... Impossble d'aller par là." ;;
w ) echo "Une rivière vous empêche de passer." ;;
u ) leverstate=`cat ../logic/leverlogic.ben`
if [ "$leverstate" = "on" ]; then
echo "A chaque frappe d'une touche. l'écran fait défiler le texte 'SCANNEZ VISA SVP'."
else
sed -i 's/off/on/' ../logic/leverlogic.ben
echo "Vous pianotez sur l'appareil..."
sleep 3
echo "A moment où vous touchez la touche '#' L'écran se met à clignoter..."
echo "Puis le message 'ACTIVATION STATION' défile sur les caractères lumineux."
fi
;;
h ) echo "Le terminal comporte un clavier numérique. Un petit écran.. Il est réalisé avec un mini ordinateur Raspberry Pi. Il porte l'adresse G1TAG [https://g1sms.fr]" ;;
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
esac
done
esac
exit

View File

@ -1,71 +0,0 @@
#!/bin/bash
clear
# This is the endgame. This file does nothing but give you the final bit of storyline.
# Use (over-use) of 'sleep' is for dramatic effect - play around with it, see how it reads.
# Let's reset the lever, now that we're done with it.
sed -i 's/on/off/' ../logic/leverlogic.ben
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
sleep 1
echo "Voici la fin de cette petite aventure."
echo
sleep 4
echo "Vous venez de visiter la forêt où s'est posé Astroport ONE."
sleep 3
echo
echo "Une oeuvre habitable. Un jardin sur sol vivant. Un progamme pair à pair interplanétaire"
sleep 4
echo
echo "Les terraformeurs"
echo "En quête de la meilleure façon de vivre sur le vaisseau spatial Terre..."
echo
sleep 5
echo "Vous aussi ouvrez votre Ambassade."
echo "Activez le JEu. Invitez vos visiteurs à rêver d'un monde meilleur"
echo "Reproduisez, améliorez, partagez les plans pour y parvenir."
echo
sleep 7
echo "Il est l'heure de laisser derrière vous la civilisation thermo industrielle."
echo "Gagnez en autonomie, en convivialité, en optimisme, en conscience."
echo
sleep 5
echo
echo "EMBARQUEZ VERS LE FUTUR"
echo
sleep 9
echo
file1="../art/bigfinish.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
echo
read -p "Appuyez sur [ENTER] pour terminer..."
echo
clear
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
echo "Merci d'avoir joué le jeu"
echo "Je suis heureux de vous avoir fait partager le rêve des astronautes terraformeurs."
echo
echo "Le futur ne se prédit pas, il se construit. Il se vit."
echo
echo " - @Fred"
echo
# That's all, folks!
exit

View File

@ -1,88 +0,0 @@
#!/bin/bash
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
clear
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# This room gives the player a typical poisoned apple style scenaro.
# Just because something looks shiny and fun, doesn't make it any
# less deadly.
sleep 1
echo "Dans une cabine, un écran est disposé en coin. Un tout petit ordinateur"
echo "y est raccordé... D'autres fils sortent de l'appareil. Une webcam. Une imprimante."
echo
echo "Que voulez vous faire?"
myIP=$(hostname -I | awk '{print $1}' | head -n 1)
isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")
[[ ! $myIP || $isLAN ]] && myIP="127.0.1.1"
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) echo "Vous êtes dans une cabine. Des QRCode sont collés à la parois nord" ;;
s ) echo "Cette paroie comporte un miroir. Pour se faire une beauté avant d'enregistrer une capsule vidéo." ;;
w ) ./kroo.sh
exit ;;
e ) echo "Vous êtes face à l'écran. Au dessus des hauts parleurs, une webcam" ;;
u ) leverstate=`cat ../logic/stationlogic.ben`
if [ "$leverstate" = "on" ]; then
echo "A chaque frappe d'une touche. l'écran fait défiler le texte 'SCANNEZ VISA SVP'."
else
sed -i 's/off/on/' ../logic/stationlogic.ben
echo "Vous appuyez sur l'interupteur de l'écran. Y apparaît alors :"
sleep 3
echo "AMBASSADE MadeInZion - TerraPi4 - 2 To -"
echo ""
echo
sleep 2
echo "INTERNET est dangereux. il vend vos information personnelles pour que vous deveniez un produit. "
sleep 2
echo
echo "Rebootez INTERNET. Activez votre TW sur le Système de Fichiers Interplanétaire (IPFS)."
sleep 2
echo
echo "On y échange en pair à pair. La monnaie y est Libre."
sleep 4
file1="../art/astrored.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
echo
echo "____ Astroport déclenche à 20:12 la synchronisation de ses ambassades..."
echo "Rapport 2022 : https://ipfs.asycn.io/ipfs/QmUtGpGeMZvwp47ftqebVmoFWCmvroy5wEtWsKvWvDWJpR"
sleep 3
echo
echo "ASTROPORT ONE"
echo "VISA pour le vaisseau spatial TERRE."
if [[ -d ~/.zen/Astroport.ONE ]]; then
read -p "Appuyez sur [ENTER] pour activer votre Station Astroport.ONE"
espeak "Astroport Command" > /dev/null 2>&1
~/.zen/Astroport.ONE/command.sh
else
espeak "Please Install Astroport" > /dev/null 2>&1
echo "Install Astroport.ONE ..."
echo "bash <(wget -qO- https://raw.githubusercontent.com/papiche/Astroport.ONE/master/install.sh)"
./end.sh
fi
fi
exit
;;
h ) echo "'DEMARRER API http://$myIP:1234 ... Une Station Astroport.ONE.?." ;;
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
esac
done
esac
exit

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