Merge branch 'papiche:master' into master

This commit is contained in:
Jonio 2024-02-05 16:10:58 +01:00 committed by GitHub
commit 17137be26d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
158 changed files with 9593 additions and 90961 deletions

32
.readthedocs.yaml Normal file
View File

@ -0,0 +1,32 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.12"
# You can also specify other tool versions:
# nodejs: "19"
# rust: "1.64"
# golang: "1.19"
# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/conf.py
# Optionally build your docs in additional formats such as PDF and ePub
# formats:
# - pdf
# - epub
# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
# python:
# install:
# - requirements: docs/requirements.txt

View File

@ -109,7 +109,7 @@ while true; do
COOKIE=$(echo "$REQ" | grep '^Cookie:' | cut -d ' ' -f2)
echo "COOKIE=$COOKIE"
############### ############### ############### ###############
[[ $XDG_SESSION_TYPE == 'x11' ]] && espeak "Dong" >/dev/null 1>&2 &
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && espeak "Dong" >/dev/null 1>&2 &
############################################################################
[[ $URL == "/test" || $URL == "" ]] && continue

View File

@ -10,6 +10,22 @@ start=`date +%s`
echo "20H12 (♥‿‿♥) $(hostname -f) $(date)"
espeak "Ding" > /dev/null 2>&1
## IPFS DAEMON STATUS
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
[[ ! $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
floop=0
while [[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]]; do
sleep 10
((floop++)) && [ $floop -gt 36 ] \
&& echo "ERROR. IPFS daemon not restarting" \
&& $MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "IPFS RESTART ERROR 20H12" \
&& exit 1
done
# espeak "CODE git pull" > /dev/null 2>&1
## REMOVE TMP BUT KEEP SWARM
mv ~/.zen/tmp/swarm ~/.zen/swarm
mv ~/.zen/tmp/coucou ~/.zen/coucou
@ -17,20 +33,12 @@ rm -Rf ~/.zen/tmp/*
mv ~/.zen/swarm ~/.zen/tmp/swarm
mv ~/.zen/coucou ~/.zen/tmp/coucou
## IPFS DAEMON STATUS
LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START ONLY FOR SYNC -
[[ $LOWMODE == "" ]] && LOWMODE=$(ipfs --timeout 10s swarm peers 2>&1 | grep Error) ## IPFS IS STOPPED
[[ ! $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
# espeak "CODE git pull" > /dev/null 2>&1
## PROCESS TW BACKOFFICE TREATMENT
## UPDATE G1BILLETS code
[[ -s ~/.zen/G1BILLET/G1BILLETS.sh ]] \
&& cd ~/.zen/G1BILLET/ && git pull \
&& rm -Rf ~/.zen/G1BILLET/tmp/*
## UPDATE Astroport.ONE code
cd ~/.zen/Astroport.ONE/
git pull
@ -81,7 +89,7 @@ echo "20H12 (♥‿‿♥) Execution time was $dur seconds."
rm ~/.zen/game/players/localhost/latest
## MAIL LOG : support@qo-op.com ##
$MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log"
$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
@ -104,11 +112,15 @@ else
fi
echo "IPFS LOW MODE ?"
## IPFS DISABLED : STOP IT
## IF IPFS DAEMON DISABLED : WAIT 1H & STOP IT
[[ $LOWMODE != "" ]] \
&& echo "ON. $LOWMODE" \
&& sleep 360 \
&& sudo systemctl stop ipfs \
|| { echo "OFF. RESTART IPFS" && sudo systemctl restart ipfs; }
&& exit 0
echo "OFF. RESTART IPFS"
sleep 60
sudo systemctl restart ipfs
exit 0

View File

@ -67,49 +67,49 @@ Content-Type: text/html; charset=UTF-8
##############################################
# ATPASS : /?player=PLAYER&atpass=G1PUB&$VoeuName=ONELINE
##############################################
if [[ ${APPNAME} == "atpass" ]]; then
#~ if [[ ${APPNAME} == "atpass" ]]; then
echo "CREATING @PASS"
#~ echo "CREATING @PASS"
end=`date +%s`
echo "(@PASS) creation time was "`expr $end - $start` seconds.
exit 0
fi
#~ end=`date +%s`
#~ echo "(@PASS) creation time was "`expr $end - $start` seconds.
#~ exit 0
#~ fi
##############################################
# YOUTUBE : /?player=PLAYER&(youtube | pdf | image) =_URL_
##############################################
if [[ ${APPNAME} == "youtube" || ${APPNAME} == "pdf" || ${APPNAME} == "image" ]]; then
#~ if [[ ${APPNAME} == "youtube" || ${APPNAME} == "pdf" || ${APPNAME} == "image" ]]; then
APPNAME=$(echo ${APPNAME} | sed -r 's/\<./\U&/g' | sed 's/ //g') ## First letter Capital
#~ APPNAME=$(echo ${APPNAME} | sed -r 's/\<./\U&/g' | sed 's/ //g') ## First letter Capital
[[ ! ${THIS} ]] && THIS="https://www.youtube.com/watch?v=BCl2-0HBJ2c"
#~ [[ ! ${THIS} ]] && THIS="https://www.youtube.com/watch?v=BCl2-0HBJ2c"
echo ">>> COPY ${APPNAME} for ${PLAYER} from ${THIS}"
#~ echo ">>> COPY ${APPNAME} for ${PLAYER} from ${THIS}"
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
[[ ! ${G1PUB} ]] && espeak "NOT MY PLAYER " && echo "${PLAYER} IS NOT MY PLAYER" && exit 1
#~ G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
#~ [[ ! ${G1PUB} ]] && espeak "NOT MY PLAYER " && echo "${PLAYER} IS NOT MY PLAYER" && exit 1
echo "================================================"
echo "${PLAYER} : ${myIPFS}/ipns/${ASTRONAUTENS}"
echo " = /ipfs/${TW}"
echo "================================================"
#~ echo "================================================"
#~ echo "${PLAYER} : ${myIPFS}/ipns/${ASTRONAUTENS}"
#~ echo " = /ipfs/${TW}"
#~ echo "================================================"
${MY_PATH}/../ajouter_media.sh "${THIS}" "${PLAYER}" "${APPNAME}" &
#~ ${MY_PATH}/../ajouter_media.sh "${THIS}" "${PLAYER}" "${APPNAME}" &
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.${PLAYER}.http
echo "${myIPFS}/ipns/${ASTRONAUTENS}" >> ~/.zen/tmp/${MOATS}.${PLAYER}.http
(
cat ~/.zen/tmp/${MOATS}.${PLAYER}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
rm ~/.zen/tmp/${MOATS}.${PLAYER}.http
) &
#~ echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.${PLAYER}.http
#~ echo "${myIPFS}/ipns/${ASTRONAUTENS}" >> ~/.zen/tmp/${MOATS}.${PLAYER}.http
#~ (
#~ cat ~/.zen/tmp/${MOATS}.${PLAYER}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
#~ rm ~/.zen/tmp/${MOATS}.${PLAYER}.http
#~ ) &
# ### REFRESH CHANNEL COPY
#~ # ### REFRESH CHANNEL COPY
end=`date +%s`
echo "(TW) MOA Operation time was "`expr $end - $start` seconds.
exit 0
#~ end=`date +%s`
#~ echo "(TW) MOA Operation time was "`expr $end - $start` seconds.
#~ exit 0
fi
#~ fi
exit 1

View File

@ -100,20 +100,20 @@ if [[ ${QRCODE} == "station" ]]; then
ISTATION=$(cat ~/.zen/tmp/ISTATION)
fi
## SHOW G1PALPAY FRONT (IFRAME)
sed "s~_STATION_~${myIPFS}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
[[ ! $isLAN ]] && sed -i "s~MENU~DEMO~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://127.0.0.1:8080~${myIPFS}~g" ~/.zen/tmp/${MOATS}/index.htm
sed "s~_STATION_~${myIPFSW}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
[[ ! $isLAN ]] && sed -i "s~MENU~HOSTING~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://127.0.0.1:8080~${myIPFSW}~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://127.0.0.1:33101~${myG1BILLET}~g" ~/.zen/tmp/${MOATS}/index.htm
sed -i "s~http://astroport.localhost:1234~${myASTROPORT}~g" ~/.zen/tmp/${MOATS}/index.htm
WSTATION="/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/index.htm)"
echo $WSTATION > ~/.zen/tmp/WSTATION
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
sed "s~_TWLINK_~${myIPFS}${WSTATION}/~g" ${MY_PATH}/../templates/index.302 > ~/.zen/tmp/${MOATS}/index.redirect
sed "s~_TWLINK_~${myIPFSW}${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
echo "url='"${myIPFS}${WSTATION}"'" >> ~/.zen/tmp/${MOATS}/index.redirect
echo "url='"${myIPFSW}${WSTATION}"'" >> ~/.zen/tmp/${MOATS}/index.redirect
(
cat ~/.zen/tmp/${MOATS}/index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
@ -155,14 +155,13 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/secret.key "$salt" "$pepper"
G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.key | grep 'pub:' | cut -d ' ' -f 2)
echo "${MY_PATH}/../tools/jaklis/jaklis.py balance -p ${G1PUB}"
echo "COINScheck.sh ${G1PUB}"
${MY_PATH}/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${G1PUB}.curcoin
cat ~/.zen/tmp/${G1PUB}.curcoin
CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | cut -d '.' -f 1) ## ROUNDED G1 COIN
CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | cut -d '.' -f 1)
CURZEN=$(echo "($CURCOINS - 1) * 10" | bc | cut -d '.' -f 1)
echo "SOURCE WALLET : $CURCOINS G1 / $CURZEN ZEN"
echo "= $CURCOINS G1 / $CURZEN ZEN"
[[ ${WHAT} == "" ]] && echo "<br> Missing amount <br>" >> ~/.zen/tmp/${MOATS}/disco
[[ ${WHAT} == "" ]] && echo "<br> Missing WHAT <br>" >> ~/.zen/tmp/${MOATS}/disco
[[ ${VAL} == "" || ${VAL} == "undefined" ]] && echo "<br> Missing Destination PublicKey <br>" >> ~/.zen/tmp/${MOATS}/disco
G1DEST=$(echo "$VAL" | cut -d ':' -f 1) ## G1PUB:CHK format
@ -172,7 +171,7 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
## GET DESTINATION ACCOUNT AMOUNT
DESTM=$(${MY_PATH}/../tools/COINScheck.sh ${G1DEST} | tail -n 1)
DESTMZEN=$(echo "($DESTM - 1) * 10" | bc | cut -d '.' -f 1)
echo "DEST WALLET : $DESTM G1 / $DESTMZEN ZEN"
echo "DEST WALLET = $DESTM G1 / $DESTMZEN ZEN"
if [[ ${APPNAME} == "pay" ]]; then
@ -228,7 +227,7 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
## history & read
# cp ~/.zen/tmp/${MOATS}/secret.key ~/.zen/tmp/
qrencode -s 6 -o "${HOME}/.zen/tmp/${MOATS}/disco.qr.png" "${G1PUB}:ZEN"
qrencode -s 6 -o "${HOME}/.zen/tmp/${MOATS}/disco.qr.png" "${G1PUB}"
QRURL=${myIPFS}/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/disco.qr.png)
ONVADIRE="<h1> ${CURZEN} ẐEN </h1>${G1PUB}<br><br><img src=${QRURL} />"
echo "${ONVADIRE}" >> ~/.zen/tmp/${MOATS}/disco
@ -254,13 +253,24 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
##############################################
if [[ ${APPNAME} == "logout" ]]; then
player=$(echo "${salt}" | cut -d '_' -f 1 | cut -d ' ' -f 1) ## EMAIL_dice_words kind
## REMOVE PLAYER IPNS KEY FROM STATION
[[ "${salt}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
&& PLAYER=${salt} \
[[ "${player}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
&& PLAYER=${player} \
|| PLAYER=${WHAT}
echo "TW : $myIPFS/ipns/$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)" > ~/.zen/tmp/${MOATS}/${MOATS}.log
echo "<h1>$PLAYER LOGOUT ...</h1>" >> ~/.zen/tmp/${MOATS}/${MOATS}.log
ISTHERE=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
if [[ ! ${ISTHERE} ]]; then
(
echo "$HTTPCORS
<h1>LOGOUT ERROR</h1><h2>${PLAYER} keys not found on ZEN Station</h2>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 \
&& echo "SLURP PLAYER ERROR ${player}"
) &
exit 0
fi
echo "<h1><a href='$myIPFS/ipns/${ISTHERE}'>TW</a></h1>" > ~/.zen/tmp/${MOATS}/${MOATS}.log
echo "<h2>$PLAYER LOGOUT ...</h2>removing keys : " >> ~/.zen/tmp/${MOATS}/${MOATS}.log
ipfs key rm ${G1PUB} >> ~/.zen/tmp/${MOATS}/${MOATS}.log
ipfs key rm ${PLAYER} >> ~/.zen/tmp/${MOATS}/${MOATS}.log
ipfs key rm "${PLAYER}_feed" >> ~/.zen/tmp/${MOATS}/${MOATS}.log
@ -275,8 +285,10 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
if [[ ${APPNAME} == "login" ]]; then
[[ "${salt}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
&& PLAYER=${salt} \
player=$(echo "${salt}" | cut -d '_' -f 1 | cut -d ' ' -f 1) ## EMAIL_dice_words kind
[[ "${player}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] \
&& PLAYER=${player} \
|| PLAYER=${WHAT}
ISTHERE=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
@ -328,7 +340,7 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
(
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}
) &
exit 0
@ -545,7 +557,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
(
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}
) &
exit 0
@ -584,7 +596,7 @@ if [[ ${QRCODE:0:2} == "G1" && ${AND} == "tw" ]]; then
cat ~/.zen/tmp/${MOATS}/g1voeu.json >> ~/.zen/tmp/${MOATS}/index.redirect
(
cat ~/.zen/tmp/${MOATS}/index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
echo "BLURP g1voeu.json $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
) &
exit 0
@ -621,22 +633,24 @@ if [[ ${QRCODE:0:2} == "G1" && ${AND} == "tw" ]]; then
echo "url='"${LINK}"'" >> ~/.zen/tmp/${MOATS}/index.redirect
(
cat ~/.zen/tmp/${MOATS}/index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
echo "BLURP ${LINK} $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
) &
exit 0
fi
################################################################################
## QRCODE = IPNS or G1PUB ? Can be ASTRONAUTENS or G1PUB format
ZCHK="${QRCODE#*:}" # ChK or ZEN
QRCODE="${QRCODE%%:*}" ## TRIM :ZEN :ChK
ZCHK="$(echo $THAT | cut -d ':' -f 2-)" # ChK or ZEN
QRCODE="${QRCODE%%:*}" ## TRIM :ChK
################################################################################
################################################################################
## QRCODE IS IPNS FORMAT "12D3Koo" ( try ipfs_to_g1 )
IPNS2G1=$(${MY_PATH}/../tools/ipfs_to_g1.py ${QRCODE} 2>/dev/null)
[[ ${IPNS2G1} != "" ]] \
echo "IPNS2G1=${IPNS2G1} ZCHK=${ZCHK}"
[[ ${ZCHK} == "" && ${#IPNS2G1} -ge 40 && ${QRCODE::4} == "12D3" ]] \
&& 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 "PRULS /ipns/${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
&& exit 0
## TEST G1 TYPE ( try g1_to_ipfs )
@ -644,42 +658,45 @@ ASTROTOIPNS=$(${MY_PATH}/../tools/g1_to_ipfs.py ${QRCODE} 2>/dev/null)
[[ ! ${ASTROTOIPNS} ]] \
&& echo "${PORT} INVALID QRCODE : ${QRCODE}" \
&& (echo "$HTTPCORS ERROR - INVALID QRCODE : ${QRCODE}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& echo "PRULS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
&& exit 1
################################################################################
echo "############################################################################"
echo ">>> ${QRCODE} g1_to_ipfs $ASTROTOIPNS"
## GET VISITOR G1 WALLET AMOUNT : VISITORCOINS
echo "COINScheck : ${MY_PATH}/../tools/jaklis/jaklis.py balance -p ${QRCODE}"
echo "${ZCHK} COINScheck ${QRCODE}"
VISITORCOINS=$(${MY_PATH}/../tools/COINScheck.sh ${QRCODE} | tail -n 1)
COINSFILE=$HOME/.zen/tmp/${MOATS}/${QRCODE}.COINS
ZEN=$(echo "($VISITORCOINS - 1) * 10" | bc | cut -d '.' -f 1)
[[ ${VISITORCOINS} != "null" ]] \
&& ZEN=$(echo "($VISITORCOINS - 1) * 10" | bc | cut -d '.' -f 1) \
|| ZEN="-10"
DISPLAY="$VISITORCOINS G1"
[[ $ZCHK == "ZEN" ]] && DISPLAY="$ZEN ẐEN"
## WALLET VIERGE
###########################################
if [[ $VISITORCOINS == "null" ]]; then
## WALLET VIERGE
###########################################
if [[ $VISITORCOINS == "null" || ${ZEN} -lt 10 ]]; then
echo ""
echo "!! LOW ZEN WALLET ZEN=${ZEN}"
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}/index.redirect
echo "<h1>EMPTY. PLEASE CHARGE. </h1>
... Send dotation to made-in-zen ? Contact <a href='mailto:support@qo-op.com'>support</a>
($myHOST)" >> ~/.zen/tmp/${MOATS}/index.redirect
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}/index.redirect
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
## WE SEND WALLET AMOUNT DISPLAY
(
cat ~/.zen/tmp/${MOATS}/index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
) &
exit 0
fi
(
echo "$HTTPCORS <h2>${ZCHK} : ${QRCODE}</h2><h1>${DISPLAY}</h1>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
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}
) &
exit 0

View File

@ -168,7 +168,7 @@ mkdir -p ~/.zen/tmp/${MOATS}/
#~ echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
${MY_PATH}/../RUNTIME/VISA.new.sh "$SALT" "$PEPPER" "${EMAIL}" "$PSEUDO" "${WHAT}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt ## 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 "Le code de votre ASTROID est ${PASS}, scannez-le sur La♥Box ẐenStation (demo : https://astroport.copylaradio.com)" > ~/.zen/tmp/${MOATS}/intro.txt
@ -345,27 +345,27 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
if [[ $WHAT =~ ^[0-9]+$ ]]; then
echo "${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a ${WHAT} -p ${VAL} -c 'Bro' -m"
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a ${WHAT} -p ${VAL} -c 'Bro' -m 2>&1 >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
echo "${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${MOATS}.secret.key pay -a ${WHAT} -p ${VAL} -c 'Bro'"
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/tmp/${MOATS}/${MOATS}.secret.key" "${WHAT}" "${VAL}" "Bro"
echo "PAY4SURE " >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
fi
if [[ "$WHAT" == "history" ]]; then
sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey history -j >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key history -j >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
fi
if [[ "$WHAT" == "get" ]]; then
sed -i "s~text/html~application/json~g" ~/.zen/tmp/$PLAYER.pay.$WHAT.http
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey get >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key get >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
fi
if [[ "$WHAT" == "balance" ]]; then
~/.zen/Astroport.ONE/tools/timeout.sh -t 20 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey balance >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${MOATS}.secret.key balance >> ~/.zen/tmp/$PLAYER.pay.$WHAT.http
fi
cat ~/.zen/tmp/$PLAYER.pay.$WHAT.http

View File

@ -112,7 +112,7 @@ EMAIL="${PLAYER,,}" # lowercase
################################ START WORKING WITH KEYS
### SESSION "$LAT" "$LON" KEY
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/_ipns.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
${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"
###
@ -128,14 +128,16 @@ if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
## CHECK if PLAYER exists in SWARM
$($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}"
[[ ${ASTROTW} ]] \
&& (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${ASTROTW}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& exit 0
else
echo "BAD EMAIL $LAT $LON - OPEN UMAP IPNS LINK -"
(echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${REDIR}'\" /> '" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 0
echo "BAD EMAIL $EMAIL $LAT $LON"
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 &
exit 0
fi
@ -157,7 +159,7 @@ 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 "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
${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
@ -165,18 +167,18 @@ echo "UMAPNS : ${myIPFS}/ipns/${UMAPNS}"
## ALL TEST PASSED -> CREATE ZENCARD + ASTROID
NPASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-9) ## NOUVEAU PASS 8 CHIFFRES
NPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 8) ## STRONGER TW SECURITY "AlpH4nUm"
PPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2) ## STRONGER TW SECURITY "AlpH4nUm"
DPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2) ## STRONGER TW SECURITY "AlpH4nUm"
NPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10) ## STRONGER TW SECURITY "AlpH4nUm"
## CREATE ASTRONAUTE TW ON CURRENT ASTROPORT
(
echo VISA.new.sh "${EMAIL}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}"
echo VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}"
##### (☉_☉ ) #######
${MY_PATH}/../RUNTIME/VISA.new.sh "${EMAIL}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
# ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt ## Send VISA.new log to EMAIL
${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 ## Send VISA.new log to EMAIL
${MY_PATH}/../tools/mailjet.sh "support@qo-op.com" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG VISA.new $EMAIL" ## Send VISA.new log to EMAIL
end=`date +%s`
echo "(TW REGISTRATION) Operation time was "`expr $end - $start` seconds.
@ -184,15 +186,8 @@ echo "(TW REGISTRATION) Operation time was "`expr $end - $start` seconds.
########################################
################################################################################
## WRITE INTO 12345 SWARM CACHE LAYER
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/_visitors
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${UMAPNS}'\" />" > ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/index.html
echo "${EMAIL}:${IPFSROOT}:${MOATS}" >> ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/_visitors/${EMAIL}.log
########################################
## Calculating TW IPNS ADDRESS
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${EMAIL}" "${NPASS}")
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}")
## HTTP nc ON PORT RESPONSE
echo "$HTTPCORS
@ -224,7 +219,7 @@ echo "$HTTPCORS
<h1>UPlanet Registration</h1>
Your AstroID seeds are:<br>
<br>
<h2>${EMAIL}</h2>
<h2>${EMAIL}_${PPASS}_${DPASS}</h2>
<h1>${NPASS}</h1>
Generating account...

View File

@ -40,14 +40,7 @@ Content-Type: text/html; charset=UTF-8
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
## 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 | cut -d " " -f 1)
if [[ ${alreadypublishing} ]]; then
echo "$HTTPCORS {[error: ALREADY IPNS ERROR]}" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
exit 1
fi
## START MANAGING UPLANET LAT/LON & PLAYER
## RUNNING UPLANET LAT/LON TW DETECTION
mkdir -p ~/.zen/tmp/${MOATS}/
# GET RECEPTION : zone=0.001&ulat=0.02&ulon=0.01
DEG=${THAT}
@ -62,24 +55,53 @@ LON=${WHAT}
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.http
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}.http
LAT=$(makecoord $LAT)
LON=$(makecoord $LON)
echo "REQUEST $LAT / $LON / $DEG"
## REGION & ABOVE LEVEL
if [[ $DEG == "0.1" || $DEG == "1" ]]; then
LAT=$(echo ${LAT} | cut -d '.' -f 1)
LON=$(echo ${LON} | cut -d '.' -f 1)
ZONE="_${LAT}_${LON}"
echo "ZONE = ${ZONE}"
ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${ZONE}" "${UPLANETNAME}${ZONE}")
ZONETW="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${YESTERDATE}${UPLANETNAME}${ZONE}" "${YESTERDATE}${UPLANETNAME}${ZONE}")
fi
## 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}")
fi
## UMAP LEVEL
if [[ $DEG == "0.001" ]]; then
LAT=$(makecoord $LAT)
LON=$(makecoord $LON)
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
totnum=$(( swarmnum + nodenum ))
echo " ## UMAP _${LAT}*_${LON}* = ${totnum} PLAYERs"
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
## TODO : REDIRECT TO THE STATION WITH THE MORE OF THIS UMAP ;)
echo '{ "gridNumbers": [ {"lat": '${LAT}', "lon": '${LON}', "number": "UMAP_'${LAT}'_'${LON}'", "ipns": "'${myIPFS}/ipns/${UMAPNS}/_index.html'" } ] }' >> ~/.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 &
rm -Rf ~/.zen/tmp/${MOATS}/
end=`date +%s`
echo "(EXPLORE ZONE $DEG)_${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
fi
## ALL OTHER DEG : SEARCH FOR UPLANET TW NUMBERS
@ -87,20 +109,22 @@ echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}.http
for i in $(seq 0 9);
do
ZLAT=$(echo "$LAT + $DEG * $i" | bc -l)
# [[ ! $(echo $ZLAT | grep "\." ) ]] && ZLAT="${ZLAT}."
ZLAT=$(echo "$LAT + $DEG * $i" | bc -l )
[[ -z ${ZLAT} ]] && ZLAT=0
# [[ ! $(echo $ZLAT | grep "\." ) ]] && ZLAT="${ZLAT}."
for j in $(seq 0 9); do
ZLON=$(echo "$LON + $DEG * $j" | bc -l)
# [[ ! $(echo $ZLON | grep "\." ) ]] && ZLON="${ZLON}."
echo " ## SEARCH _${ZLAT}*_${ZLON}*"
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 )
ZLON=$(echo "$LON + $DEG * $j" | bc -l )
[[ -z ${ZLON} ]] && ZLON=0
# [[ ! $(echo $ZLON | grep "\." ) ]] && ZLON="${ZLON}."
echo " ## SEARCH UPLANET/__/_*_*/_*.?_*.?/_${ZLAT}*_${ZLON}*"
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 )
totnum=$(( swarmnum + nodenum ))
[[ $totnum -gt 9 ]] && totnum="X"
[[ $totnum -gt 9 ]] && displaynum="X" || displaynum=$totnum
[[ $totnum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "" }
,' >> ~/.zen/tmp/${MOATS}.http && echo "$DEG :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "" }'
[[ $displaynum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${displaynum}'", "ipns": "'${ZONETW}'" }
,' >> ~/.zen/tmp/${MOATS}.http && echo "$DEG :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "'${ZONETW}'" }'
done
done
@ -109,9 +133,13 @@ sed -i '$ d' ~/.zen/tmp/${MOATS}.http ## REMOVE LAST ','
echo ']}' >> ~/.zen/tmp/${MOATS}.http
### SEND RESPONSE ON PORT
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
## CLEANING
rm -Rf ~/.zen/tmp/${MOATS}/
## TIMING
end=`date +%s`
echo "(ZONE) Operation time was "`expr $end - $start` seconds.
exit 0

View File

@ -1,17 +1,23 @@
::: :::::::: ::::::::::: ::::::::: :::::::: ::::::::: :::::::: ::::::::: :::::::::::
:+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
+#++:++#++: +#++:++#++ +#+ +#++:++#: +#+ +:+ +#++:++#+ +#+ +:+ +#++:++#: +#+
+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+
#+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+#
### ### ######## ### ### ### ######## ### ######## ### ### ###
cat << "EOF"
_____/\/\_____ ____________ ___/\/\_____ ____________ ____________ ____________ ____________ ____________ ___/\/\_____
___/\/\/\/\___ ___/\/\/\/\_ _/\/\/\/\/\_ _/\/\__/\/\_ ___/\/\/\___ _/\/\/\/\___ ___/\/\/\___ _/\/\__/\/\_ _/\/\/\/\/\_
_/\/\____/\/\_ _/\/\/\/\___ ___/\/\_____ _/\/\/\/\___ _/\/\__/\/\_ _/\/\__/\/\_ _/\/\__/\/\_ _/\/\/\/\___ ___/\/\_____
_/\/\/\/\/\/\_ _______/\/\_ ___/\/\_____ _/\/\_______ _/\/\__/\/\_ _/\/\/\/\___ _/\/\__/\/\_ _/\/\_______ ___/\/\_____
_/\/\____/\/\_ _/\/\/\/\___ ___/\/\/\___ _/\/\_______ ___/\/\/\___ _/\/\_______ ___/\/\/\___ _/\/\_______ ___/\/\/\___
_____/\/\_____ ____________ ___/\/\_____ ____________ ____________ ____________ ____________ ____________ ___/\/\_____
___/\/\/\/\___ ___/\/\/\/\_ _/\/\/\/\/\_ _/\/\__/\/\_ ___/\/\/\___ _/\/\/\/\___ ___/\/\/\___ _/\/\__/\/\_ _/\/\/\/\/\_
_/\/\____/\/\_ _/\/\/\/\___ ___/\/\_____ _/\/\/\/\___ _/\/\__/\/\_ _/\/\__/\/\_ _/\/\__/\/\_ _/\/\/\/\___ ___/\/\_____
_/\/\/\/\/\/\_ _______/\/\_ ___/\/\_____ _/\/\_______ _/\/\__/\/\_ _/\/\/\/\___ _/\/\__/\/\_ _/\/\_______ ___/\/\_____
_/\/\____/\/\_ _/\/\/\/\___ ___/\/\/\___ _/\/\_______ ___/\/\/\___ _/\/\_______ ___/\/\/\___ _/\/\_______ ___/\/\/\___
______________ ____________ ____________ ____________ ____________ _/\/\_______ ____________ ____________ ____________
_ __________ _,
_.-(_)._ ." ". .--""--. _.-{__}-._
.'________'. | .--------. | .' '. .:-'`____`'-:.
[____________] /` |________| `\ / .'``'. \ /_.-"`_ _`"-._\
/ / .\/. \ \| / / .\/. \ \ || .'/.\/.\'. | /` / .\/. \ `\
| \__/\__/ |\_/ \__/\__/ \_/| : |_/\_| ; | | \__/\__/ |
\ / \ / \ '.\ /.' / .-\ /-.
/'._ -- _.'\ /'._ -- _.'\ /'. `'--'` .'\/ '._-.__--__.-_.' \
/_ `""""` _\/_ `""""` _\ /_ `-./\.-' _\'. `""""""""` .'`\
(__/ '| \ _)_| |_)_/ \__)| ' | |
|_____'|_____| \__________/ | |;`_________'________`;-'
'----------' '----------' '--------------'`--------------------`
EOF

View File

@ -133,7 +133,7 @@ if [[ ! ${TIDDLER} ]]; then
## EXTRA PARAM TO TRY
# --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
/usr/local/bin/yt-dlp -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 \
--download-archive ${HOME}/.zen/.yt-dlp.list \
-S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \

View File

@ -20,7 +20,7 @@ keygen --help
PLAYER key & wishes can be controled through : ```~/.zen/Astroport.ONE/command.sh``` or directly through TW (Tag="voeu")
Each wish, is a derivated key, it has an IPNS publishing and can be associated to its own ASTROBOT program to take care about Friends data collect & merge.
VISA.new.sh is creating TW from ```templates/twdefault.html``` and ```templates/minimal.html```
VISA.new.sh is creating TW from ```templates/twdefault.html``` and ```templates/twuplanet.html```
This script is important as it initialize PLAYER and connect him to STATION... You can add more different templates...
Visit https://tiddlywiki.com to understand all the capacities this tools have inside.

View File

@ -1,5 +1,7 @@
# Introduction
[Astroport DEV Journal](https://pad.p2p.legal/s/AstroportDEVJournal#)
**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
@ -91,7 +93,7 @@ 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)
> PLEASE REPORT ANY ISSUES
> DOCKER MODE NOT READY TO USE !! FOLLOW AND ADAPT NEXT STEP
## DESKTOP : Using install.sh script
@ -224,7 +226,7 @@ USE "[astro.js](templates/ZenStation/G1PalPay_fichiers/astro.js)"
<script src="https://ipfs.asycn.io/ipfs/Qmae5v9zydax9u6C9ceDijURu5PYdd5avmv4NkenCw7RFv/astro.js"></script>
```
## ➤ PRIVATE ZONE (fonctionne sur toutes les Stations.)
## ➤ SALT API
### ```/?salt=${SALT}&pepper=${PEPPER}&${APPNAME}=${WHAT}&${OBJ}=${VAL}...```
### Créer (ou téléporter) un PLAYER TW : OFFICIAL <3BOX :
@ -337,7 +339,7 @@ GET /?salt=${SALT}&pepper=${PEPPER}&pay=1&g1pub=DsEx1pS33vzYZg4MroyBV9hCw98j1gtH
| `pay` | `integer` | **Required** G1 AMOUNT |
| `g1pub` | `G1PUB` | **Required** destination "wallet key" |
## ➤ PLAYER ZONE (disponible uniquement sur la Station qui héberge ${PLAYER})
## ➤ PLAYER (works only on LAN Station)
### ```/?player=${PLAYER}&${APPNAME}=${WHAT}&${OBJ}=${VAL}...```
### Exporter Tiddlers.json depuis son TW selon valeur des "tags" ( ici TAG=G1CopierYoutube)
@ -351,17 +353,7 @@ GET /?player=${PLAYER}&moa=json&tag=G1CopierYoutube
| `moa` | `string` | **Required** APP = output format |
| `tag` | `${VAL}` | TW filtering default G1CopierYoutube |
### Lancer la copie d'une URL (youtube | pdf ) par PLAYER dans son TW
```http
GET /?player=${PLAYER}&youtube=URLENCODED
```
| Parameter | Type | Description |
| :-------- | :------- | :-------------------------------- |
| `player` | `string` | **Required**. Your EMAIL token |
| `youtube or pdf` | `string` | **Required** URL kind = URL |
> CAN BE EXTENDED
## ➤ AMZQR : Create a QRCode with "amzqr"
### ```/?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}```
@ -374,21 +366,21 @@ GET /?player=${PLAYER}&youtube=URLENCODED
check available "logo.png" in [./images](./images)
## ➤ UPLANET : Create Umap, AstroID & ZenCard for PLAYER (email)
### ```/?uplanet=${PLAYER}&salt=${LAT}&pepper=${LON}&g1pub=${PASS}```
### ```/?uplanet=${PLAYER}&zlat=${LAT}&zlon=${LON}&g1pub=${PASS}```
| Parameter | Type | Description |
| :-------- | :------- | :-------------------------------- |
| `uplanet` | `email` | **Required** Your EMAIL token |
| `salt` | `decimal` | **Required** LATITUDE with 2 decimals digits |
| `pepper` | `decimal` | **Required** LONGITUDE with 2 decimals digits |
| `zlat` | `decimal` | **Required** LATITUDE with 2 decimals digits |
| `zlon` | `decimal` | **Required** LONGITUDE with 2 decimals digits |
| `g1pub` | `string` | **Facultative** choose Umap AstroID PASS |
Create à Umap key (LAT/LON), then a PLAYER TW with GPS as Umap IPNS reference
This API is used by OSM2IPFS code.
DEMO : https://ipfs.copylaradio.com/ipns/copylaradio.com
* [UPlanet Entrance](https://qo-op.com)
### QRCODE (API SandBox)
### QRCODE (API SandBox)
```http
GET /?qrcode=${G1PUB} | ${ASTRONAUTENS} | ${PGP_ASTROID_STRING}
```
@ -398,29 +390,6 @@ GET /?qrcode=${G1PUB} | ${ASTRONAUTENS} | ${PGP_ASTROID_STRING}
> Look for details & extend as you like in [~/.zen/Astroport.ONE/API/QRCODE.sh](API/QRCODE.sh)
### CODE BEHAVIOUR. monitor && rewards || fork signal
* Is IPNS key & PLAYER is local ? Redirect to [make a ASTROID (security level 6)](http://g1billet.localhost:33101/?montant=0&style=xbian&dice=6)
* Is G1*? Redirect to G1WishApp / Export Tagged Tiddlers json from TW
[http://astroport.localhost:1234/?qrcode=G1G1Serie&tw=k51qzi5uqu5dgobi9ozzzvdftqfd3hd7a1488nzymky1edz8j779jov7sbemc0](https://astroport.copylaradio.com/?qrcode=G1G1Serie&tw=k51qzi5uqu5dgobi9ozzzvdftqfd3hd7a1488nzymky1edz8j779jov7sbemc0)
redirect to
[http://ipfs.localhost:8080/ipns/k51qzi5uqu5din47zmnzk6tmk1tjqaeaj9pbb3qilmstbsf9uyc12qpdmigtd3/](https://ipfs.asycn.io/ipns/k51qzi5uqu5din47zmnzk6tmk1tjqaeaj9pbb3qilmstbsf9uyc12qpdmigtd3/)
[http://astroport.localhost:1234/?qrcode=G1G1Serie&tw=k51qzi5uqu5dgobi9ozzzvdftqfd3hd7a1488nzymky1edz8j779jov7sbemc0&json](https://astroport.copylaradio.com/?qrcode=G1G1Serie&tw=k51qzi5uqu5dgobi9ozzzvdftqfd3hd7a1488nzymky1edz8j779jov7sbemc0&json)
redirect to pure "tag=" result json
* Is G1PUB ... (FROM NEW ASTROID or empty G1BILLET)
* If balance is "null" : Send 1 G1 (G1BILLET)
* if GChange+ account exists : send 10 G1
* if Cesium+ account exists : send 50 G1
* Is ASTROID
* decode with PASS and make operation (same functions as SALT API are available)
## The Art of key derivation, chaining & use
In order to make (a little) clear how we use cryptography,
@ -474,6 +443,24 @@ So ASTROBOT while applying ScuttleButt replications will ".chain.ts" data and ch
Data can't be lost, but protocol chain can be break !
In case of some annoyance, we can monitor IPFS protocol to identify which IPFSNODEID key is acting badly and apply reaction based on DEFCON level (look into astrXbian code)
### MAILJET & GPS
In order for "Boostrap Station" to send emails to PLAYERs, we use [mailjet service](https://mailjet.com/).
```
## CREDENTIALS FILE
~/.zen/MJ_APIKEY
# IS USED BY
~/.zen/Astroport.ONE/tools/mailjet.sh
```
Boostrap location is specified in ~/.zen/GPS
```
cat ~/.zen/GPS
48.87039, 2.31673
```
### LOW RESSOURCE STATION CAN ACTIVATE LOW MODE (disable ipfs daemon)
```

View File

@ -51,9 +51,9 @@ echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
# CHECK LAST 10 INCOMING PAYMENTS
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey history -n 10 -j > $HOME/.zen/game/players/${PLAYER}/G1PalPay/$PLAYER.history.json
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey history -n 10 -j > $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json
[[ ! -s $HOME/.zen/game/players/${PLAYER}/G1PalPay/$PLAYER.history.json ]] \
[[ ! -s $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json ]] \
&& echo "NO PAYMENT HISTORY" \
&& exit 1
##############################
@ -62,27 +62,27 @@ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dun
#################################################################
## TREAT ANY COMMENT STARTING WITH N1
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/$PLAYER.history.json | jq -rc .[] | grep 'N1' > ~/.zen/tmp/${MOATS}/myN1.json
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep 'N1' > ~/.zen/tmp/${MOATS}/myN1.json
while read NLINE; do
## COMMENT FORMAT = N1$CMD:$TH:$TRAIL
IDATE=$(echo ${NLINE} | jq -r .date)
IPUBKEY=$(echo ${NLINE} | jq -r .pubkey)
TXIDATE=$(echo ${NLINE} | jq -r .date)
TXIPUBKEY=$(echo ${NLINE} | jq -r .pubkey)
COMMENT=$(echo ${NLINE} | jq -r .comment)
CMD=$(echo ${COMMENT} | cut -d ':' -f 1 | cut -c -12 ) # Maximum 12 characters CMD
[[ $(cat ~/.zen/game/players/${PLAYER}/.ndate) -ge $IDATE ]] && echo "$CMD $IDATE from $IPUBKEY 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)
TRAIL=$(echo ${COMMENT} | cut -d ':' -f 3-)
if [[ -s ${MY_PATH}/../ASTROBOT/${CMD}.sh ]]; then
echo "RECEIVED CMD=${CMD} from ${IPUBKEY}"
${MY_PATH}/../ASTROBOT/${CMD}.sh ${INDEX} ${PLAYER} ${MOATS} ${IPUBKEY} ${TH} ${TRAIL}
echo "RECEIVED CMD=${CMD} from ${TXIPUBKEY}"
${MY_PATH}/../ASTROBOT/${CMD}.sh ${INDEX} ${PLAYER} ${MOATS} ${TXIPUBKEY} ${TH} ${TRAIL}
## WELL DONE .
[[ $? == 0 ]] && echo "${CMD} DONE" && echo "$IDATE" > ~/.zen/game/players/${PLAYER}/.ndate ## MEMORIZE LAST IDATE
[[ $? == 0 ]] && echo "${CMD} DONE" && echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.ndate ## MEMORIZE LAST TXIDATE
else
@ -94,42 +94,39 @@ done < ~/.zen/tmp/${MOATS}/myN1.json
########################################################################################
############# CHECK FOR EMAILs IN PAYMENT COMMENT
## DEBUG ## cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/$PLAYER.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 '@' > ~/.zen/tmp/${MOATS}/myPalPay.json
# IF COMMENT CONTAINS EMAIL ADDRESSES
# SPREAD & TRANSFER AMOUNT TO NEXT (REMOVING IT FROM LIST)... Other G1PalPay will continue the transmission...
########################################################################
# this could lead in several account creation sharing % of incomes each time
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/$PLAYER.history.json | jq -rc .[] | grep '@' > ~/.zen/tmp/${MOATS}/myPalPay.json
## GET @ in JSON INLINE
while read LINE; do
echo "MATCHING IN COMMENT"
echo "${LINE}"
JSON=${LINE}
IDATE=$(echo $JSON | jq -r .date)
IPUBKEY=$(echo $JSON | jq -r .pubkey)
IAMOUNT=$(echo $JSON | jq -r .amount)
IAMOUNTUD=$(echo $JSON | jq -r .amountUD)
TXIDATE=$(echo $JSON | jq -r .date)
TXIPUBKEY=$(echo $JSON | jq -r .pubkey)
TXIAMOUNT=$(echo $JSON | jq -r .amount)
TXIAMOUNTUD=$(echo $JSON | jq -r .amountUD)
COMMENT=$(echo $JSON | jq -r .comment)
echo ">>> TODO CHECK TX HAPPENS LAST 24H (WHAT IS IDATE=$IDATE FORMAT ??)"
[[ $(cat ~/.zen/game/players/${PLAYER}/.atdate) -ge $IDATE ]] && echo "PalPay $IDATE from $IPUBKEY ALREADY TREATED - continue" && continue
echo ">>> TODO CHECK TX HAPPENS LAST 24H (WHAT IS TXIDATE=$TXIDATE FORMAT ??)"
[[ $(cat ~/.zen/game/players/${PLAYER}/.atdate) -ge $TXIDATE ]] && echo "PalPay $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" && continue
## GET EMAILS FROM COMMENT
ICOMMENT=($(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"))
## DIVIDE INCOMING AMOUNT TO SHARE
echo "N=${#ICOMMENT[@]}"
N=${#ICOMMENT[@]}
SHARE=$(echo "scale=2; $IAMOUNT / $N" | bc)
echo "N=${#TXIMAILS[@]}"
N=${#TXIMAILS[@]}
SHARE=$(echo "scale=2; $TXIAMOUNT / $N" | bc)
echo $IDATE $IPUBKEY $IAMOUNT [$IAMOUNTUD] $ICOMMENT % $SHARE %
echo "$TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS % $SHARE %"
for EMAIL in "${ICOMMENT[@]}"; do
for EMAIL in "${TXIMAILS[@]}"; do
[[ ${EMAIL} == $PLAYER ]] && echo "ME MYSELF" && continue
@ -146,9 +143,9 @@ while read LINE; do
fi
[[ ! ${ASTROG1} ]] \
&& echo "SORRY ${EMAIL} MISSING ASTROG1" \
&& echo " BRO. $PLAYER VEUX VOUS OFFRIR ${SHARE} G1 \n Inscrivez-vous sur UPlanet https://qo-op.com/" > ~/.zen/tmp/palpay.bro \
&& ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro \
&& echo "<html><body><h1>SORRY ${EMAIL} YOUR ACCOUNT IS MISSING</h1>" \
&& echo " BRO. $PLAYER WISH TO SEND YOU SOME ẐEN <br><br>(♥‿‿♥)... Join <a href='https://qo-op.com'>UPlanet</a> and receive it</body></html>" > ~/.zen/tmp/palpay.bro \
&& ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro "NEED FOR ACCOUNT" \
&& continue
@ -161,8 +158,7 @@ while read LINE; do
if [[ ${ASTROG1} != ${G1PUB} ]]; then
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a ${SHARE} -p ${ASTROG1} -c "G1PalPay:$N:$IPUBKEY" -m > /dev/null 2>&1
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "G1PalPay:$N:$TXIPUBKEY"
STAMP=$?
else
@ -172,7 +168,7 @@ while read LINE; do
fi
## DONE STAMP IT
[[ $STAMP == 0 ]] && echo "STAMP DONE" && echo "$IDATE" > ~/.zen/game/players/${PLAYER}/.atdate ## MEMORIZE LAST IDATE
[[ $STAMP == 0 ]] && echo "STAMP DONE" && echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate ## MEMORIZE LAST TXIDATE
done
@ -182,6 +178,7 @@ echo "=========== %%%%% (°▃▃°) %%%%%%% =============="
########################################################################################
## 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...
#################################################################
echo "# EXTRACT TODAY TIDDLERS"
tiddlywiki --load ${INDEX} \
@ -198,28 +195,32 @@ cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddl
# LOG
cat ~/.zen/tmp/${MOATS}/@tags.json
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
while read LINE; do
echo "---------------------------------- PalPé mec"
echo "---------------------------------- Sava PalPé mec"
echo "${LINE}"
echo "---------------------------------- PalPAY for Tiddler"
TCREATED=$(echo ${LINE} | jq -r .created)
TTITLE=$(echo ${LINE} | jq -r .title)
TTAGS=$(echo ${LINE} | jq -r .tags)
## PREPARE PINNING -
TOPIN=$(echo ${LINE} | jq -r .ipfs) ## Tiddler produced by "Astroport Desktop"
[[ -z ${TOPIN} ]] && TOPIN=$(echo ${LINE} | jq -r ._canonical_uri) ## Tiddler is exported to IPFS
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] \
&& echo "NOT COMPATIBLE ${TOPIN}" \
&& TOPIN=""
echo "$TTITLE"
## Count emails found
emails=($(echo "$TTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
nb=${#emails[@]}
zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10
zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10, 1 zen each
## Get first zmail
ZMAIL="${emails}"
@ -236,21 +237,34 @@ while read LINE; do
if [[ ${ASTROG1} && ${ASTROG1} != ${G1PUB} ]]; then
## SEND zen ZEN (G1 dice JUNE) TO ALL ## MAKE ONE EACH AFTER ALL EMAIL CONSUMED ##
~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a ${zen} -p ${ASTROG1} -c "${emails[@]} $TTITLE" -m > /dev/null 2>&1
#~ ~/.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
## Filling comment with email list will make players resend to all ## MAY BE A BAD IDEA ###
echo "OK PalPay : $MSG" > ~/.zen/tmp/${MOATS}/g1message
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><body><h1>BRO ${PLAYER}</h1> : $MSG" > ~/.zen/tmp/${MOATS}/g1message
## PINNING IPFS MEDIA - PROOF OF COPY SYSTEM -
[[ ! -z $TOPIN ]] && ipfs pin add $TOPIN && echo "PINNING $TOPIN" >> ~/.zen/tmp/${MOATS}/g1message
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message
[[ ! -z $TOPIN ]] \
&& ipfs pin add $TOPIN \
&& echo "<h2>PINNING $TOPIN</h2>(☼‿‿☼)" >> ~/.zen/tmp/${MOATS}/g1message
## lazy mode... NOT FINISHING HTML TAGGING... browser shoud display html page ;)
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message "PIN TIDDLER"
else
echo "ERREUR PalPay : ${TTITLE} : IMPOSSIBLE DE TROUVER ${emails[@]}" > ~/.zen/tmp/${MOATS}/g1message
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message
echo "NO ACCOUNT FOUND"
## SEND MESSAGE TO INFORM ${ZMAIL} OF THIS EXISTING TIDDLER
echo "<html><body>
<h1>BRO. </h1>
<br>
<a href='${myIPFSGW}'/ipns/${ASTROTW}>${PLAYER}</a> HAS SHARED A TIDDLER WITH YOU.
<br><b>${TTITLE}</b><br>(✜‿‿✜)
... Join <a href='https://qo-op.com'>UPlanet</a> open a TW !
</body></html>" > ~/.zen/tmp/palpay.bro
${MY_PATH}/../tools/mailjet.sh "${ZMAIL}" ~/.zen/tmp/palpay.bro "TIDDLER TW SHARING"
fi

View File

@ -103,7 +103,7 @@ mkdir -p ~/.zen/tmp/${MOATS}
cp ~/.zen/tmp/${MOATS}/START.png ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.ASTROLINK.png" "$LIBRA/ipns/$ASTRONAUTENS"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1ASTRO.png" "${G1PUB}:ZEN"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1ASTRO.png" "${G1PUB}"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png" "${WISHG1PUB}:ZEN"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.IPNS.png" "/ipns/${VOEUNS}"

View File

@ -48,7 +48,7 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
echo "${PLAYER} GCHANGE FRIENDS"
[[ -d ~/.zen/tmp/${IPFSNODEID}/${PLAYER} && ${PLAYER} != "" ]] && rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/ ## TODO REMOVE (PROTOCOL UPGRADE)
mkdir -p ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/
cp -Rf ~/.zen/game/players/${PLAYER}/FRIENDS/* ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/
cp -Rf ~/.zen/game/players/${PLAYER}/FRIENDS/* ~/.zen/tmp/${IPFSNODEID}/GCHANGE/${PLAYER}/FRIENDS/ 2>/dev/null
done
cp ~/.zen/GPS ~/.zen/tmp/${IPFSNODEID}/
@ -67,4 +67,7 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
fi
## CLEANING SWARM 30 DAYS OLD
find ~/.zen/tmp/swarm/ -mtime +30 -type d -exec rm -Rf '{}' \;
exit 0

View File

@ -19,9 +19,11 @@ PLAYERONE="$1"
echo "FOUND : ${PLAYERONE[@]}"
echo "CLEANING UPLANET KEYS ~/.zen/tmp/${IPFSNODEID}/UPLANET/_*_*"
rm -Rf ~/.zen/tmp/${IPFSNODEID}/UPLANET/_*_*
echo "CLEANING TW KEYS ~/.zen/tmp/${IPFSNODEID}/TW/"
echo "RENEWING UPLANET NODE CACHE
~/.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
@ -97,23 +99,23 @@ for PLAYER in ${PLAYERONE[@]}; do
NOWCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain)
LASTCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.* | tail -n 1)
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
echo "TW REFRESH FAILED : $myIPFS/ipns/${ASTRONAUTENS}"
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>"
echo "<a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>"
echo ">> %%% WARNING %%%"
echo "------------------------------------------------"
echo "LAST : ${myIPFS}/ipfs/${LASTCHAIN}"
echo "NOW : ${myIPFS}/ipfs/${NOWCHAIN}"
echo " * <a href='${myIPFS}/ipfs/${LASTCHAIN}'>LAST</a>"
echo " *<a href='${myIPFS}/ipfs/${NOWCHAIN}'>NOW</a>"
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
## SEND AN EMAIL ALERT TO PLAYER
echo "TW REFRESH FAILED : $myIPFS/ipns/${ASTRONAUTENS}" > ~/.zen/tmp/result
echo "------------------------------------------------" >> ~/.zen/tmp/result
echo "<html><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>" > ~/.zen/tmp/result
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
echo "" >> ~/.zen/tmp/result
echo "NOW CHAIN : ${myIPFS}/ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result
echo "PREVIOUS : ${myIPFS}/ipfs/${LASTCHAIN}" >> ~/.zen/tmp/result
echo "<br><a href='${myIPFS}/ipfs/${LASTCHAIN}'>ANCIENT</a>" >> ~/.zen/tmp/result
echo "<br><a href='${myIPFS}/ipfs/${NOWCHAIN}'>NEW</a>" >> ~/.zen/tmp/result
echo "" >> ~/.zen/tmp/result
echo " %%% WARNING %%%" >> ~/.zen/tmp/result
echo "------------------------------------------------" >> ~/.zen/tmp/result
echo "PLEASE REPAIR BY SAVING ONLINE" >> ~/.zen/tmp/result
echo "<br> %%% WARNING %%%" >> ~/.zen/tmp/result
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
echo "<br>PLEASE REPAIR BY SAVING ONLINE</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
@ -126,7 +128,7 @@ for PLAYER in ${PLAYERONE[@]}; do
try=$((try-1))
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
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "UNPLUG WARNING"
continue
@ -285,8 +287,8 @@ for PLAYER in ${PLAYERONE[@]}; do
&& 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/moa/_nochange 2>/dev/null) || try=0
((try++)) && echo $try > ~/.zen/game/players/${PLAYER}/ipfs/moa/_nochange
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
##############################################################
@ -310,24 +312,39 @@ for PLAYER in ${PLAYERONE[@]}; do
echo "================================================"
echo "(☉_☉ ) (☉_☉ ) (☉_☉ ) RSS"
## CREATING 30 DAYS RSS STREAM
## CREATING 30 DAYS JSON RSS STREAM
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ]] && echo "NO ${PLAYER} RSS - BAD ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json -"
## TODO CREATING 30 DAYS XML RSS STREAM
## 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"
### $:/plugins/sycom/atom-feed/atom.xml
#~ 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]]'
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"
##################################
#### PLAYER ACCOUNT CLEANING #########
## CHECK FOR EMPTY RSS + 30 DAYS BIRTHDATE + null G1
## 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 ]] \
&& SBIRTH=$(${MY_PATH}/../tools/MOATS2seconds.sh ${BIRTHDATE}) \
&& SNOW=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS}) \
&& [[ $(( SNOW - SBIRTH )) -gt $(( 27 * 24 * 60 * 60 )) ]] \
&& echo "ACCOUNT WILL BE UNPLUGGED IN 3.2.1 DAYS" > ~/.zen/tmp/alert \
&& ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/alert \
&& [[ $(( SNOW - SBIRTH )) > $(( 30 * 24 * 60 * 60 )) ]] \
&& echo ">>>> PLAYER UNPLUG >>>>> BYE BYE ${PLAYER}" \
&& [[ ${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
@ -343,15 +360,29 @@ for PLAYER in ${PLAYERONE[@]}; do
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html
## Publish on LAT/ON key on IPFSNODEID 12345 CACHE
[[ ${LAT} && ${LON} ]] \
&& mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/RSS/ \
&& cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/RSS/ \
&& mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/TW/${PLAYER} \
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/TW/${PLAYER}/ \
&& echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPNS}'\" />" > ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/_index.html
ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON} 2>/dev/null
if [[ ${LAT} && ${LON} ]]; then
## SECTOR BANK COORD
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
## REGION
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}/
echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPNS}'\" />" > ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/_index.html
fi
ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON} 2>/dev/null
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
## MAINTAIN R/RW TW STATE
@ -361,8 +392,10 @@ for PLAYER in ${PLAYERONE[@]}; do
&& ipfs key rm ${PLAYER}_feed \
&& ipfs key rm ${G1PUB}
## CLEANING CACHE
rm -Rf ~/.zen/tmp/${MOATS}
done
echo "PLAYER.refresh DONE."
echo "============================================ PLAYER.refresh DONE."
exit 0

View File

@ -9,71 +9,148 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "$MY_PATH/../tools/my.sh"
################################################################################
## REGION REFRESH
# SHARE & UPDATE IPNS TOGETHER
# UMAP > SECTOR > REGION
## Get from 100 sectors tiddlers with more than 2 signatures
############################################
echo "## RUNNING REGION.refresh"
echo "# # # # RUNNING REGION.refresh"
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
## CALLED BY UPLANET.refresh.sh
LAT=$1
LON=$2
MOATS=$3
UMAP=$4
REGIONNODE=$5
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir ~/.zen/tmp/${MOATS}
[[ ! -d ~/.zen/tmp/${MOATS-undefined}/${UMAP-undefined} ]] && echo "MISSING UMAP CONTEXT" && exit 1
## UMAPS list made BY UPLANET.refresh.sh
for i in $*; do
UMAPS=("$i" ${UMAPS[@]})
done
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
REGION="_${REGLAT}_${REGLON}"
echo "REGION ${REGION}"
[[ -s ~/.zen/tmp/${MOATS}/${UMAP}/${REGION}/index.html ]] && echo "ALREADY DONE" && exit 0
[[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
[[ "${REGIONNODE}" == "${IPFSNODEID}" ]] && echo ">>> MANAGING REGION PUBLICATION" || exit 0
######## INIT REGIONS ########################
for UMAP in ${UMAPS[@]}; do
##############################################################
REGIONG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}")
[[ ! ${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}"
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
LON=$(echo ${UMAP} | cut -d '_' -f 3)
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
REGIONNS=$(ipfs key import ${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
##############################################################
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${REGION}
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${REGIONNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${REGION}/index.html
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
REGIONMAPGEN="${EARTHCID}/Umap.html?southWestLat=${REGLAT}&southWestLon=${REGLON}&deg=1&ipns=${REGIONNS}"
REGIONSATGEN="${EARTHCID}/Usat.html?southWestLat=${REGLAT}&southWestLon=${REGLON}&deg=1&ipns=${REGIONNS}"
echo "<meta http-equiv=\"refresh\" content=\"0; url='${REGIONMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/REGION${REGION}.Map.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='${REGIONSATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/REGION${REGION}.Sat.html
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#~ ## IPFS GET ONLINE SECTORNS
mkdir ~/.zen/tmp/${MOATS}/${REGION}
ipfs --timeout 42s get -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${REGIONNS}/
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${REGLAT}*_${REGLON}*/RSS/*.rss.json 2>/dev/null))
for RSS in ${RSSNODE[@]}; do
echo ${RSS}
done
NL=${#RSSNODE[@]}
RSSWARM=($(ls ~/.zen/tmp/swarm/*/UPLANET/_${REGLAT}*_${REGLON}*/RSS/*.rss.json 2>/dev/null))
for RSS in ${RSSWARM[@]}; do
echo ${RSS}
done
NS=${#RSSWARM[@]}
TOTL=$((${NL}+${NS}))
MYREGIONS=("_${REGLAT}_${REGLON}" ${MYREGIONS[@]})
echo "Number of RSS : "${TOTL}
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N_RSS
IPFSPOP=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/N_RSS)
done
ipfs name publish -k ${REGIONG1PUB} /ipfs/${IPFSPOP}
## GET UNIQ REGIONS LIST
REGIONS=($(echo "${MYREGIONS[@]}" | tr ' ' '\n' | sort -u))
ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1
[[ ${REGIONS[@]} == "" ]] && echo "> NO REGION FOUND" && exit 0
echo "ACTIVATED REGIONS : ${REGIONS[@]}"
for REGION in ${REGIONS[@]}; do
echo "_____REGION ${REGION}"
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}
REGLAT=$(echo ${REGION} | cut -d '_' -f 2)
REGLON=$(echo ${REGION} | cut -d '_' -f 3)
################################## TODO : make sharing key protocol evolve
## 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...
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}" != "${IPFSNODEID}" ]] \
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
&& continue
##############################################################
REGIONG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}")
[[ ! ${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}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
REGIONNS=$(ipfs key import ${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${YESTERDATE}${UPLANETNAME}${REGION}" "${YESTERDATE}${UPLANETNAME}${REGION}"
ipfs key rm ${YESTERDATE}${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
YESTERDATEREGIONNS=$(ipfs key import ${YESTERDATE}${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}"
ipfs key rm ${TODATE}${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
TODATEREGIONNS=$(ipfs key import ${TODATE}${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
##############################################################
## GET from IPNS
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}/RSS
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
rm -f ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
## START WITH LOCAL SECTORS RSS WEEK
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
for RSS in ${RSSNODE[@]}; do
[[ $(cat ${RSS}) != "[]" ]] \
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
done
NL=${#RSSNODE[@]}
## ADD SWARM SECTORS RSS WEEK
RSSWARM=($(ls ~/.zen/tmp/swarm/*/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
for RSS in ${RSSWARM[@]}; do
[[ $(cat ${RSS}) != "[]" ]] \
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
&& ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
done
NS=${#RSSWARM[@]}
## CREATE /.all.json FROM *.rss.json
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${REGION}/RSS
## REMOVE SECTORS PARTS
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/*.week.rss.json
## MAKE FINAL _${REGLAT}_${REGLON}.week.rss.json
mv ~/.zen/tmp/${MOATS}/${REGION}/RSS/.all.json \
~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
## PREPARING AiApi link
mkdir -p ~/.zen/tmp/${IPFSNODEID}/REGIONS
RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL)
cp ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL \
~/.zen/tmp/${IPFSNODEID}/REGIONS/_${REGLAT}_${REGLON}.JOURNAL.md
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
TOTL=$((${NL}+${NS}))
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo "Numbers of REGION WEEK RSS : ${NL} + ${NS} : "${TOTL}
echo "SHOW TROPHY" > ~/.zen/tmp/${MOATS}/${REGION}/TODO
rm ~/.zen/tmp/${MOATS}/${REGION}/RWEEKCID 2>/dev/null ## TODO REMOVE
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${RWEEKCID}'\" />" \
> ~/.zen/tmp/${MOATS}/${REGION}/Journal._${REGLAT}_${REGLON}.redir.html
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1)
ipfs name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} ${TODATE}${REGIONG1PUB} > /dev/null 2>&1
done
exit 0

View File

@ -18,11 +18,13 @@ echo "> RUNNING SECTOR.refresh"
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir ~/.zen/tmp/${MOATS}
## CALLED BY UPLANET.refresh.sh
## UMAPS list made BY UPLANET.refresh.sh
for i in $*; do
UMAPS=("$i" ${UMAPS[@]})
done
[[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
######## INIT SECTORS ########################
for UMAP in ${UMAPS[@]}; do
@ -39,6 +41,7 @@ for UMAP in ${UMAPS[@]}; do
done
## GET UNIQ SECTORS LIST
SECTORS=($(echo "${MYSECTORS[@]}" | tr ' ' '\n' | sort -u))
[[ ${SECTORS[@]} == "" ]] && echo "> NO SECTOR FOUND" && exit 0
@ -53,22 +56,39 @@ for SECTOR in ${SECTORS[@]}; do
SLON=$(echo ${SECTOR} | cut -d '_' -f 3)
##############################################################
SECTORG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
[[ ! ${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}"
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
[[ ! ${G1PUB} ]] && echo "ERROR generating SECTOR WALLET" && exit 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)
${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
SECTORNS=$(ipfs key import ${SECTORG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv)
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)
rm ~/.zen/tmp/${MOATS}/${SECTOR}.priv
echo "${myIPFS}/ipns/${SECTORNS}/"
echo "ORIGIN : ${myIPFS}/ipns/${SECTORNS}/"
###################### SPATIO TEMPORAL KEYS
## 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}"
ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
## TODATE #########################################
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}"
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 ONLINE SECTORNS
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${SECTORNS}/
#~ ## IPFS GET ONLINE YESTERDATE SECTORNS
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end=`date +%s`
echo "_____SECTOR${SECTOR} GET time was "`expr $end - $start` seconds.
@ -83,7 +103,10 @@ for SECTOR in ${SECTORS[@]}; do
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
echo "SECTOR DATA is about ${DIFF_SECONDS} seconds old" # 5 Heures
hours=$((DIFF_SECONDS / 3600))
minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
seconds=$((DIFF_SECONDS % 60))
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)
@ -136,31 +159,40 @@ for SECTOR in ${SECTORS[@]}; do
## NEW TW TEMPLATE
[[ ! -s ${INDEX} ]] \
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/empty.html > ${INDEX}
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
&& echo "REFRESHING SECTOR FROM empty TEMPLATE *****"
## SET SECTOR
sed -i "s~_SECTOR_~${SECTOR}~g" ${INDEX}
## 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[@]}
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[@]}
combinedrss=("${RSSNODE[@]}" "${RSSWARM[@]}")
RSSALL=($(echo "${combinedrss[@]}" | tr ' ' '\n' | sort -u))
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/RSS
rm -f ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json
################################## TRANSFER SIGNED TIDDLER IN SECTOR TW
for RSS in ${RSSALL[@]}; do
## Extract New Tiddlers and maintain fusion in Sector TW.
${MY_PATH}/../tools/RSS2UPlanetTW.sh "${RSS}" "${SECTOR}" "${MOATS}" "${INDEX}"
## create sector RSS _all.json
cat ${RSS} >> ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json
done
TOTL=$((${NL}+${NS}))
##############################################################
# Update COIN & ZEN value
echo ${COINS} > ~/.zen/tmp/${MOATS}/${SECTOR}/COINS
echo ${ZEN} > ~/.zen/tmp/${MOATS}/${SECTOR}/ZEN
echo "Number of RSS : "${TOTL}
rm ~/.zen/tmp/${MOATS}/${SECTOR}/N_RSS*
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${SECTOR}/N_RSS_${TOTL}
rm ~/.zen/tmp/${MOATS}/${SECTOR}/N_RSS* ## TODO REMOVE
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${SECTOR}/N
###########################################################################################
## MAKE SECTOR PLANET WITH ASTONAUTENS LINKS
@ -173,8 +205,8 @@ for SECTOR in ${SECTORS[@]}; do
" > ~/.zen/tmp/world.js
floop=1
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))
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))
TWFILES=("${SWARMTW[@]}" "${NODETW[@]}")
for TWRED in ${TWFILES[@]}; do
@ -211,31 +243,51 @@ for SECTOR in ${SECTORS[@]}; do
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
echo "JSON WISH WORLD READY /ipfs/${IAMAP}/world.js"
###########################################################################################
### APPLY ON APP MODEL
### APPLY ON APP MODEL TODATE REGIONNS LINKING
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
REGION="_${REGLAT}_${REGLON}"
REGIONNS=$(${MY_PATH}/../tools/keygen -t ipfs "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}")
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_~${SECTORNS}/_index.html~g" \
-e "s~_UPZONENS_~${REGIONNS}~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
convert -font 'Liberation-Sans' \
-pointsize 80 -fill purple -draw 'text 50,120 "'"${ZEN} Zen"'"' \
-pointsize 30 -fill purple -draw 'text 40, 180 "'"${SECTOR}"'"' \
$MY_PATH/../images/G1WorldMap.png "${HOME}/.zen/tmp/${MOATS}/${SECTOR}.png"
# CREATE G1PUB AMZQR
amzqr ${G1PUB} -l H -p "$MY_PATH/../images/zenticket.png" -c -n ZENPUB.png -d ~/.zen/tmp/${MOATS}/${SECTOR}/
convert ~/.zen/tmp/${MOATS}/${SECTOR}/ZENPUB.png -resize 250 ~/.zen/tmp/${MOATS}/ZENPUB.png
# ADD IT
composite -compose Over -gravity NorthEast -geometry +0+0 ~/.zen/tmp/${MOATS}/ZENPUB.png ~/.zen/tmp/${MOATS}/${SECTOR}.png ~/.zen/tmp/${MOATS}/${SECTOR}/INFO.png
## zday marking
rm ~/.zen/tmp/${MOATS}/${SECTOR}/z*
rm ~/.zen/tmp/${MOATS}/${SECTOR}/z* 2>/dev/null
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}' />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />${TODATE} ${SECTOR}" > ~/.zen/tmp/${MOATS}/${SECTOR}/z$(date +%A-%d_%m_%Y).html
###################################################### CHAINING BACKUP
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1)
@ -247,17 +299,28 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
&& IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
######################################################
echo "% START PUBLISHING ${SECTOR} ${myIPFS}/ipns/${SECTORNS}"
echo "% START PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}"
start=`date +%s`
ipfs name publish -k ${SECTORG1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${SECTORG1PUB} > /dev/null 2>&1
ipfs name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${TODATE}${G1PUB} ${YESYERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1
end=`date +%s`
echo "_____SECTOR${SECTOR} PUBLISH time was "`expr $end - $start` seconds.
######################################################
###################################################
## EXTRACT SECTOR LAST WEEK TIDDLERS TO IPFSNODEID CACHE
echo "(☉_☉ ) ${REGION}.week.rss.json (☉_☉ )"
mkdir -p ~/.zen/tmp/${IPFSNODEID}/SECTORS/
rm -f ~/.zen/tmp/${IPFSNODEID}/SECTORS/${SECTOR}.week.rss.json
## CREATING 7 DAYS JSON RSS STREAM
tiddlywiki --load ${INDEX} \
--output ~/.zen/tmp/${IPFSNODEID}/SECTORS --render '.' "${SECTOR}.week.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-7]!is[system]!tag[G1Voeu]]'
## 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
done
exit 0

View File

@ -22,9 +22,9 @@ mkdir ~/.zen/tmp/${MOATS}
############################
## RUNING FOR ALL UMAP FOUND IN STATION MAP CACHE : "_LAT_LON"
## SEARCH UMAP (created by PLAYER.refresh.sh)
MEMAPS=($(ls -t ~/.zen/tmp/${IPFSNODEID}/UPLANET/ 2>/dev/null))
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/* | rev | cut -d '/' -f 1 | rev | sort | uniq 2>/dev/null) )
## SEARCH UMAP (created by PLAYER.refresh.sh) /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
MEMAPS=($(ls -t ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/ 2>/dev/null))
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* | rev | cut -d '/' -f 1 | rev | sort | uniq 2>/dev/null) )
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
echo "ACTIVATED UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories
@ -39,58 +39,86 @@ mkdir ~/.zen/tmp/${MOATS}
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
## SECTOR BANK COORD
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
## REGION
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
##############################################################
## UMAP WALLET CHECK
##############################################################
G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
[[ ! ${G1PUB} ]] && echo "ERROR generating WALLET" && exit 1
COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1)
echo "UMAP (${COINS} G1) WALLET : ${G1PUB}"
## ORIGIN ##########################################################
## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
ipfs key rm ${G1PUB} > /dev/null 2>&1
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
echo "${myIPFS}/ipns/${UMAPNS}"
##############################################################
echo "ORIGIN : ${myIPFS}/ipns/${UMAPNS}"
###################### SPATIO TEMPORAL KEYS
## YESTERDATE ###############
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
ipfs key rm ${YESTERDATE}${G1PUB} > /dev/null 2>&1
YESTERDATENS=$(ipfs key import ${YESTERDATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${YESTERDATE}.priv)
echo "YESTERDAY : ${myIPFS}/ipns/${YESTERDATENS}"
## TODATE #########################################
${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}"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## IPFS GET ONLINE UMAPNS
## IPFS GET YESTERDATENS
mkdir ~/.zen/tmp/${MOATS}/${UMAP}
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${UMAPNS}/
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## FORMAT CONTROL WARNING
[[ ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB} || ! -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 -" \
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} \
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/RSS
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW
echo "~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/"
echo "~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/"
## zday of the week for IPFSNODEID
rm ~/.zen/tmp/${MOATS}/${UMAP}/z* ## TODO RESTRICT T O z*.html
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
# ++++++++++++++++++++ - - - - ADAPT TO NODE TREATMENT TIME
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/_moats 2>/dev/null)
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))
echo "UMAP DATA is ${DIFF_SECONDS} 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 ...
echo "TODAY : $(cat ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher | head -n 1)"
TODAY=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher | head -n 1)
echo "TODAY : ${TODAY}"
echo "YESTERDAY : ${YESTERDAY}"
echo "------------------------------------------------->>>>>>>>>>>>>>>>"
continue
fi
@ -139,7 +167,9 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)"
######################################################## # NODE SELECTION in UMAP.refresher
# %%%%%%%%%% ##################################################
## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON}
# %%%%%%%%%% ##################################################
SLAT="${LAT::-1}"
SLON="${LON::-1}"
SECTOR="_${SLAT}_${SLON}"
@ -150,7 +180,7 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${SECTORG1PUB}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}"
ipfs key rm ${SECTORG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
SECTORNS=$(ipfs key import ${SECTORG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv)
ipfs key rm ${SECTORG1PUB}
@ -158,12 +188,9 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${SECTORNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}/index.html
SECTORMAPGEN="${EARTHCID}/map_render.html?southWestLat=${SLAT}&southWestLon=${SLON}&deg=0.1&ipns=${SECTORNS}"
SECTORSATGEN="${EARTHCID}/sat_render.html?southWestLat=${SLAT}&southWestLon=${SLON}&deg=0.1&ipns=${SECTORNS}"
echo "<meta http-equiv=\"refresh\" content=\"0; url='${SECTORMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}.SECTOR.Map.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='${SECTORSATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${SLAT}_${SLON}.SECTOR.Sat.html
# %%%%%%%%%% ##################################################
## REGION LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ${RLAT}_${RLON}
# %%%%%%%%%% ##################################################
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
RLON=$(echo ${LON} | cut -d '.' -f 1)
REGION="_${RLAT}_${RLON}"
@ -174,29 +201,28 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/REGION.priv "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}"
ipfs key rm ${REGIONG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
REGIONNS=$(ipfs key import ${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
TODATEREGIONNS=$(ipfs key import ${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
ipfs key rm ${REGIONG1PUB}
##############################################################
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${REGIONNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}/index.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}/index.html
REGIONMAPGEN="${EARTHCID}/map_render.html?southWestLat=${RLAT}&southWestLon=${RLON}&deg=1&ipns=${REGIONNS}"
REGIONSATGEN="${EARTHCID}/sat_render.html?southWestLat=${RLAT}&southWestLon=${RLON}&deg=1&ipns=${REGIONNS}"
echo "<meta http-equiv=\"refresh\" content=\"0; url='${REGIONMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}.REGION.Map.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='${REGIONSATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}.REGION.Sat.html
## COLLECT RSS FROM ALL PLAYERS WITH SAME UMAP IN SWARM MEMORY
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/RSS/*.rss.json ~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null
RSSFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/_${LAT}_${LON}/RSS/*.rss.json 2>/dev/null))
# %%%%%%%%%% ##################################################
## COLLECT RSS FROM ALL PLAYERS WITH SAME UMAP IN SWARM MEMORY /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
# %%%%%%%%%% ##################################################
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json ~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null
RSSFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json 2>/dev/null))
for RSSFILE in ${RSSFILES[@]}; do
cp ${RSSFILE} ~/.zen/tmp/${MOATS}/${UMAP}/RSS/
done
# %%%%%%%%%% ##################################################
## COLLECT TW LINKS FROM NODE & SWARM
cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}_${LON}/TW/* ~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null
TWFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
# %%%%%%%%%% ##################################################
cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* ~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null
TWFILES=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
for TWRED in ${TWFILES[@]}; do
ZMAIL=$(echo ${TWRED} | rev | cut -d '/' -f 2 | rev)
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW/${ZMAIL}
@ -206,8 +232,8 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
##################################
## OSM2IPFS
### UMAP = 0.01° Planet Slice
UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${UMAPNS}"
USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${UMAPNS}"
UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${TODATENS}/_index.html"
USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}&deg=0.01&ipns=${TODATENS}/_index.html"
echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Umap.html
echo "<meta http-equiv=\"refresh\" content=\"0; url='${USATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Usat.html
@ -224,35 +250,38 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
#### NOT WORKING !!!
## GEOLINKING CALCULATE SURROUNDING UMAPS ###############################
if [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/geolinks.json ]]; then
#~ if [[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/geolinks.json ]]; then
${MY_PATH}/../tools/Umap_geolinks.sh "${LAT}" "${LON}" "${UMAP}" "${MOATS}" "${UMAPNS}"
#~ ${MY_PATH}/../tools/Umap_geolinks.sh "${LAT}" "${LON}" "${UMAP}" "${MOATS}" "${UMAPNS}"
fi
### SET navigator.html ## MAKE EVOLVE template/umap.html
cp ${MY_PATH}/../templates/umap.html ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html
cat ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html | sed "s~Umap~Usat~g" > ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Usat.html
#~ fi
#~ ### SET navigator.html ## MAKE EVOLVE template/umap.html
#~ cp ${MY_PATH}/../templates/umap.html ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html
#~ cat ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Umap.html | sed "s~Umap~Usat~g" > ~/.zen/tmp/${MOATS}/${UMAP}/navigator_Usat.html
#### IS IT USEFUL ?..??
####################################
## MAKE GET POI's
### JSON UMAP SCRAPPING
# %%%%%%%%%% ##################################################
## GET FROM WEB2.0 POI's AROUND >>>>>>>>>>>>>>>>>>>>>>>>>
# %%%%%%%%%% ##################################################
####################################
echo "################### WEB2.0 SCRAPING TIME >>>>>>>>>>>>>>>>"
## RECORD P4N SPOT DATA
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
echo "P4N : https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr"
[[ -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
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}/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) ]] \
&& mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json \
&& echo "UPDATED" \
|| echo "NO CHANGE"
&& echo "UPDATED PARK4NIGHT" \
|| rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json
####################################
echo "GET GCHANGE ADS..."
echo "* gchange : ./tools/gchange_get_50km_around_LAT_LON_ads.sh ${LAT} ${LON}"
## 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
echo "MAKING _index.p4n.html with ./templates/P4N/index.html"
## CREATE INDEX LOADING JSONs ON OPENSTREETMAP
cat ${MY_PATH}/../templates/P4N/index.html \
| sed -e "s~43.2218~${LAT}~g" \
@ -262,16 +291,19 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
-e "s~http://127.0.0.1:8080~~g" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.p4n.html
# %%%%%%%%%% ##################################################
########################################################
## PREPARE Ŋ1 WORLD MAP ##################################################################
echo "CREATING SPHERICAL LOCATIONS"
# %%%%%%%%%% ##################################################
## PREPARE SPHERE MAP ##################################################################
echo "var examples = {};
examples['locations'] = function() {
var locations = {
" > ~/.zen/tmp/world.js
floop=1
SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${LAT}*_${LON}*/TW/*/index.html 2>/dev/null))
SWARMTW=($(ls ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
NODETW=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/*/index.html 2>/dev/null))
TWFILES=("${SWARMTW[@]}" "${NODETW[@]}")
for TWRED in ${TWFILES[@]}; do
@ -306,66 +338,61 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
" >> ~/.zen/tmp/world.js
IAMAP=$(ipfs add -qw ~/.zen/tmp/world.js | tail -n 1)
echo "JSON TW WORLD READY /ipfs/${IAMAP}/world.js"
echo "JSON UMAP WORLD READY /ipfs/${IAMAP}/world.js"
###########################################################################################
### APPLY ON APP MODEL
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
SECTOR="_${SECLAT}_${SECLON}"
SECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}")
cat ${MY_PATH}/../templates/UPlanetSector/index.html \
PHONEBOOTH="${G1PUB::30}"
cat ${MY_PATH}/../templates/UPlanetUmap/index.html \
| sed -e "s~_ZONE_~UMAP ${UMAP}~g" \
-e "s~_UPZONE_~SECTOR ${SECTOR}~g" \
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
-e "s~_ZONENS_~${UMAPNS}~g" \
-e "s~_UPZONENS_~${SECTORNS}~g" \
-e "s~_ZONENS_~${TODATENS}~g" \
-e "s~_UPZONENS_~${TODATESECTORNS}~g" \
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${LAT}\&southWestLon=${LON}\&deg=0.01~g" \
-e "s~http://127.0.0.1:8080~~g" \
> ~/.zen/tmp/${MOATS}/${UMAP}/_index.html
## Make it root App for ZONENS key
## Make it root App
#~ mv ~/.zen/tmp/${MOATS}/${UMAP}/_index.html \
#~ ~/.zen/tmp/${MOATS}/${UMAP}/index.html
##################################
###########################################################################################
########################################################
## COMBINE ALL JSON
json_array=()
# Loop through each *.rss.json file and append its content to the array
for file in ~/.zen/tmp/${MOATS}/${UMAP}/RSS/*.rss.json; do
# Use jq to extract the JSON array from each file
data=$(jq '.' "$file")
json_array+=("$data")
done
# Convert the array to a single JSON object
merged_json=$(jq -n '{"data": [ $json_array[] ]}')
echo "$merged_json" > ~/.zen/tmp/${MOATS}/${UMAP}/RSS/all.json
## CREATE .all.json for RSS in this UMAP
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${MOATS}/${UMAP}/RSS
##############################################################
############################ PUBLISHING UMAP
##############################################################
UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1)
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/_moats 2>/dev/null)
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
[[ ${ZCHAIN} && ${ZMOATS} ]] \
&& cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/_chain.${ZMOATS} \
&& cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain.${ZMOATS} \
&& echo "UPDATING MOATS"
## DOES CHAIN CHANGED or INIT ?
## MICRO LEDGER CHAIN CHANGED or INIT ?
[[ ${ZCHAIN} != ${UMAPROOT} || ${ZCHAIN} == "" ]] \
&& echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/_chain \
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}/_moats \
&& echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain \
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats \
&& UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
echo "PUBLISHING NEW UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
ipfs name publish --key=${G1PUB} /ipfs/${UMAPROOT}
ipfs name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
end=`date +%s`
ipfs key rm ${G1PUB} ## REMOVE IPNS KEY
ipfs key rm ${TODATE}${G1PUB} ${YESYERDATE}${G1PUB} ${G1PUB} ## REMOVE IPNS KEY
echo "(UMAP) ${UMAP} PUBLISH time was "`expr $end - $start` seconds.
echo "(UMAP) ${UMAP} ${TODATE} PUBLISH time was "`expr $end - $start` seconds.
done
@ -374,5 +401,6 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />" > ~/.z
${MY_PATH}/SECTOR.refresh.sh "${unique_combined[@]}"
### REGION = 1° Planet Slice
# ${MY_PATH}/REGION.refresh.sh "${LAT}" "${LON}" "${MOATS}" "${UMAP}" "${ACTINGNODE}"
${MY_PATH}/REGION.refresh.sh "${unique_combined[@]}"

View File

@ -33,10 +33,10 @@ LIBRA=$(head -n 2 ${MY_PATH}/../A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f
################################################################################
## LIST TW MODELS
################################################################################
TWMODEL="/ipfs/QmPr5SpFiaTVyjJuBmhyckwSCP1gHbhJbZFjC5YyxNHmJa"
TWMODEL="/ipfs/bafybeie6sx76balvpeehvbh5du7oc5fhjuwydryympeh3qnm5s3b2jrvwe"
# ipfs cat $TWMODEL > templates/twdefault.html
MINIMAL="/ipfs/bafybeici3sdhyf5mw5edbhednqyzfbfbilaykjke6ve6zqac6hrxjawzgi"
# ipfs cat $MINIMAL > templates/minimal.html
MINIMAL="/ipfs/bafybeicpfrsx44lkib4352eulvohmgdpaww3sau3qtbj7fzj6qw7xsokhy"
# ipfs cat $MINIMAL > templates/twuplanet.html
################################################################################
mkdir -p ~/.zen/tmp/${MOATS}/TW
@ -54,7 +54,7 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
[[ $YOU ]] \
&& ipfs --timeout 180s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html
[[ $XDG_SESSION_TYPE == 'x11' ]] \
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] \
&& [[ -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
&& echo "TW FOUND ENTER 'yes' TO RESET TW. HIT ENTER TO KEEP IT." \
&& read ENTER \
@ -71,7 +71,7 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
# COPY TW TEMPLATE
[[ ${LON} && ${LAT} ]] \
&& cp ${MY_PATH}/../templates/minimal.html ~/.zen/tmp/${MOATS}/TW/index.html \
&& cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html \
|| cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
else
@ -185,13 +185,14 @@ DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
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"
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)
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:ZEN" ## ZEN specific G1PUB QRCODE - break G1 compatibility -
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
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/ipfs/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible)
@ -404,7 +405,7 @@ DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
CIMG="${MY_PATH}/../images/zenticket.png"
# QRG1avatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] && amzqr "${G1PUB}:ZEN" -l H -p "$CIMG" -c -n QRG1avatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] && amzqr "${G1PUB}" -l H -p "$CIMG" -c -n QRG1avatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
# QRTWavatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] && amzqr "${myIPFSGW}/ipns/${ASTRONAUTENS}" -l H -p "$GIMG" -c -n QRTWavatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
@ -476,7 +477,7 @@ DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
echo "--- PLAYER : ${PLAYER} - DATA PROTOCOL LAYER LOADED";
# ls ~/.zen/game/players/${PLAYER}
[[ $XDG_SESSION_TYPE == 'x11' ]] && 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"
################# PREPARE DOCKERIZATION
#~ [[ -l ~/.zen/game/players/.current ]] \
@ -548,20 +549,32 @@ echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROF
### SEND AstroID and ZenCard to EMAIL
(
echo "✅ UPlanet : ZenCard<br>Print your ZenCard : Public key (and wallet address)" > ~/.zen/tmp/${MOATS}/intro.txt
echo "<br>It is your personal ZenCard. Use it to receive Zen." >> ~/.zen/tmp/${MOATS}/intro.txt
echo "<br><a href='$myIPFS/$IASTRO'>ẐenCard</a>" >> ~/.zen/tmp/${MOATS}/intro.txt
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
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/intro.txt
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/ZenCard.txt "ZenCard"
#~ mpack -a -s "✅ UPlanet : ZenCard" -d ~/.zen/tmp/${MOATS}/intro.txt \
#~ ~/.zen/tmp/${MOATS}/pseudo.png ${PLAYER}
echo "✅ UPlanet : AstroID ($PASS)<br>Print your AstroID : Private control key (secured by $PASS)" > ~/.zen/tmp/${MOATS}/intro.txt
echo "<br>Use it to send Zen to other Uplanet players https://qo-op.com" >> ~/.zen/tmp/${MOATS}/intro.txt
echo "<br><a href='$myIPFS/$ASTROQR'>AstroID</a>" >> ~/.zen/tmp/${MOATS}/intro.txt
echo "<html><body>
<h1>UPlanet : AstroID ($PASS)</h1>
This is your AstroID : your private key (your ring)" > ~/.zen/tmp/${MOATS}/AstroID.txt
echo "
<br>You own one of the 'Rings of the Lords' on <a href='https://qo-op.com'>Uplanet</a> 0.1° SECTOR : ${SECTOR}
<br>it is forged from SECRET1=$SALT SECRET2=$PEPPER then secured by PIN : $PASS
<br>
<br>Your ASTROPORT STATION is <a href='${myAPI}'>NODE#${IPFSNODEID}</a>
" >> ~/.zen/tmp/${MOATS}/AstroID.txt
echo "<br><a href='${myIPFS}/ipns/${ASTROTW}#AstroID'>AstroID</a><br><img src='${myIPFSGW}${ASTROQR}'\>
<br>
<br>Print it and delete from TW to keep it secure.
</body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.txt
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/intro.txt
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.txt "AstroID"
#~ mpack -a -s "✅ UPlanet : AstroID ($PASS)" -d ~/.zen/tmp/${MOATS}/intro.txt \
#~ $HOME/.zen/game/players/${PLAYER}/AstroID.png ${PLAYER}

View File

@ -58,7 +58,8 @@ tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1vo
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] && echo "AUCUN G1VOEU - EXIT -" && exit 0
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
echo $(cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt | wc -l)" VOEUX : ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt "
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 "
## ${PLAYER}.g1wishes.txt contains all TW G1PUB : IPNS key name
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
@ -110,10 +111,10 @@ do
##################################
## MAKE MY OWN EXTRACTION : [tag[G1'${WISHNAME}']!tag[G1Voeu]!sort[modified]limit[30]]
################################## MOA MAINTENANT
echo "> EXPORT [tag[G1${WISHNAME}]!tag[G1Voeu]] § $myIPFSGW${IPNS_VOEUNS}/_${PLAYER}.tiddlers.json"
tiddlywiki --load $INDEX \
echo "> EXPORT [tag[G1${WISHNAME}]!tag[G1Voeu]] § $myIPFSGW${IPNS_VOEUNS}/_${PLAYER}.tiddlers.rss.json"
tiddlywiki --load ${INDEX} \
--output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME} \
--render '.' _${PLAYER}'.tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1'${WISHNAME}']!tag[G1Voeu]!sort[modified]limit[30]]'
--render '.' _${PLAYER}'.tiddlers.rss.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1'${WISHNAME}']!tag[G1Voeu]!sort[modified]limit[30]]'
## RUN TW Ŋ1 search & copy treatment
@ -148,29 +149,30 @@ do
APLAYER=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
## EXPORT LAST 30 DAYS G1WishName in _${APLAYER}.tiddlers.json
rm -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.json
## EXPORT LAST 30 DAYS G1WishName in _${APLAYER}.tiddlers.rss.json
rm -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json
echo "$floop / ${#FINDEX[@]} TRY EXPORT [tag[G1${WISHNAME}]] FROM $APLAYER TW"
tiddlywiki --load ${FRIENDTW} \
--output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME} \
--render '.' _${APLAYER}'.tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1'${WISHNAME}']!tag[G1Voeu]!sort[modified]limit[30]]'
--render '.' _${APLAYER}'.tiddlers.rss.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1'${WISHNAME}']!tag[G1Voeu]!sort[modified]limit[30]]'
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.json ]] \
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json ]] \
&& echo "NO ${WISHNAME} - CONTINUE -" \
&& echo && ((floop++)) && continue
[[ $(cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.json) == "[]" ]] \
[[ $(cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json) == "[]" ]] \
&& echo "EMPTY ${WISHNAME} - CONTINUE -" && echo && ((floop++)) \
&& rm ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.json \
&& rm ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json \
&& continue
echo "## TIDDLERS FOUND ;) MIAM >>> (◕‿‿◕) <<<"
echo ">>> G1FRIEND § $myIPFS${IPNS_VOEUNS}/_${APLAYER}.tiddlers.json ${WISHNAME}"
echo ">>> G1FRIEND § $myIPFS${IPNS_VOEUNS}/_${APLAYER}.tiddlers.rss.json ${WISHNAME}"
# Extract Origin G1Voeu Tiddler
tiddlywiki --load ${FRIENDTW} --output ~/.zen/tmp --render '.' "${APLAYER}.${WISHNAME}.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${WISHNAME}"
FWISHNS=$(cat ~/.zen/tmp/${APLAYER}.${WISHNAME}.json | jq -r '.[].wishns')
# FWISHPROG=$(cat ~/.zen/tmp/${APLAYER}.${WISHNAME}.json | jq -r '.[].text')
# TIDDLER COULD CONTAIN #!/bin/bash PROGRAM !!!
[[ $FWISHNS == "null" ]] && echo "NO FWISHNS in ~/.zen/tmp/${APLAYER}.${WISHNAME}.json" && echo && ((floop++)) && continue
echo ">>> ${myIPFS}${FWISHNS}"
@ -249,6 +251,9 @@ do
echo "++WISH PUBLISHING++ ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/*"
ls ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/
## CREATE .all.json for 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
ipfs name publish -k $VOEUKEY /ipfs/$WISHFLUX # PUBLISH $VOEUKEY
@ -260,18 +265,42 @@ do
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
#~ echo "************************************************************"
#~ echo "Hop, 1 ZEN pour le Voeu $WISHNAME"
#~ echo $MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/game/players/$PLAYER/secret.dunikey pay -a 0.1 -p $VOEUKEY -c \'"ASTRO:${IPNS_VOEUNS} G1Voeu $WISHNAME"\' -m
#~ echo "************************************************************"
#~ echo "************************************************************"
#~ $MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/game/players/$PLAYER/secret.dunikey pay -a 0.1 -p $VOEUKEY -c "ASTRO:$VOEUXNS G1Voeu $WISHNAME" -m
#~ [[ ! $? == 0 ]] \
#~ && echo "POOOOOOOOOOOOOOOOOOOORRRRRR GUY. YOU CANNOT PAY A G1 FOR YOUR WISH"
done < ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
################################################
### SEND GRATITUDE TO SECTOR
## GET "GPS" TIDDLER
if [[ ${wishnumbers} -gt 0 ]]; then
tiddlywiki --load ${INDEX} \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
TWMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
[[ ${LAT} == "null" ]] && LAT="0.00"
LAT=$(makecoord $LAT)
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
[[ ${LON} == "null" ]] && LON="0.00"
LON=$(makecoord $LON)
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${TWMAPNS}"
rm ~/.zen/tmp/${MOATS}/GPS.json
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
SECTOR="_${SECLAT}_${SECLON}"
##############################################################
SECTORG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
##############################################################
GRATITUDE=$($MY_PATH/../tools/getcoins_from_gratitude_box.sh)
G1AMOUNT=$(echo "$GRATITUDE / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
echo "***** PLAYER $PLAYER *************************************"
echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
to ${SECTOR} WALLET ${SECTORG1PUB}"
echo "************************************************************"
MYWISHFLUX=$(ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/* | tail -n 1) # ADDING JSONS TO IPFS
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${SECTORG1PUB}" "ipfs://${MYWISHFLUX}"
fi
################################################
################################################ GRATITUDE SENT TO SECTOR
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo "TODO : REFRESH WORLD SAME WISH CACHE"
cat ~/.zen/game/world/$WISHNAME/*/.link 2>/dev/null

View File

@ -22,32 +22,39 @@ MADE BY
```
./ajouter_media.sh:## KEEPS KODI COMPATIBILITY (BROKEN astroport.py !! ) : TODO DEBUG
./ajouter_media.sh: # Funny Crypto Level # TODO MAKE IT MORE SECURE # THIS KEY OWNS THE DOMAIN NOW
./ajouter_media.sh: ## NB TEXT IS MADE WITH TIDDLERS FIELDS VALUES (LEARN TODO)
./ajouter_media.sh: #~ ## TODO
./ajouter_media.sh: FILE_NAME="$(echo "${TITLE}" | detox --inline).pdf" ## TODO make it better
./ajouter_media.sh: ## TODO : CHECK CACHE LAST MODIFIED
./setup_nginx.sh: echo "TODO: make it easier ;)"
./tools/Connect_PLAYER_To_Gchange.sh:# TODO: could make better ES stars requests
./tools/Connect_PLAYER_To_Gchange.sh:#### TODO RECUP ANNONCES Gchange ADD TO TW
./tools/RSS2UPlanetTW.sh: ## TODO EXTEND CONTROL TO text AND ipfs _canonical_url
./tools/RSS2UPlanetTW.sh: ## NB: COULD NEED SORTING (TODO)
./tools/streaming/install.sh:# TODO: why is this needed?
./tools/streaming/process-stream.sh:#TODO# Fix this one
./tools/make_video_gifanim_ipfs.sh:## Create gifanime ## TODO Search for similarities BEFORE ADD
./tools/create_ipfsnodeid_from_tmp_secret.dunikey.py:# TODO controls
./tools/cron_VRFY.sh:## TODO check for Station geoposition in ~/.zen/GPS and calibrate 20H12
./tools/cron_VRFY.sh:cat ~/.zen/GPS 2>/dev/null && echo " TODO calibrate 20H12 with GPS"
./RUNTIME/VISA.new.sh:######### TODO Ajouter d'autres clefs IPNS, GPG ?
./RUNTIME/VISA.new.sh:WID="https://ipfs.$CLYUSER$YOMAIN.$(myHostName)/api" ## Next Generation API # TODO PLAYER IPFS Docker entrance
./RUNTIME/VISA.new.sh: ############ TODO améliorer templates, sed, ajouter index.html, etc...
./RUNTIME/VISA.new.sh: ## TODO : FOR STRONGER SECURITY REMOVE THIS LINE
./RUNTIME/VISA.new.sh:# !! TODO !! # DEMO MODE. REMOVE FOR PRODUCTION - RECALCULATE AND RENEW AFTER EACH NEW KEY DELEGATION
./RUNTIME/VISA.new.sh:# TODO : Allow Astronaut PASS change ;)
./tools/search_for_this_email_in_players.sh:### TODO MAKE IT WORKS BETTER
./tools/PAY4SURE.sh: echo "SENT" > ${PENDINGFILE} ## TODO : MONITOR POTENTIAL CHAIN REJECTION (FORK/MERGE WINDOW)
./tools/duniter_getnode.sh:# TODO: REMOVE 777 PATCH, ACTIVATE ramdisk
./tools/search_for_this_email_in_players.sh: ## TODO ? SEARCH WITH DNSLINK
./tools/new_file_in_astroport.sh: ## Create gifanime ## TODO Search for similarities BEFORE ADD
./tools/new_file_in_astroport.sh: ## TODO ADD "httrack" for website copying
./tools/new_file_in_astroport.sh:# EXTRACT INDEX REFERENCE : TMDB or YOUTUBE (TODO : EXTEND)
./tools/new_file_in_astroport.sh: ## TODO USE IT TO MAKE A MEDIAKEY IMAGE KEY "SONDE" FOR FILTERING ?
./tools/new_file_in_astroport.sh: TidType="text/vnd.tiddlywiki" ## MAYBE REAL ONCE TW CAN SHOW ATTACHED IPFS VIDEO (TODO: TESTINGS)
./tools/new_file_in_astroport.sh:## TODO : Do we keep that ?
./tools/astroscan.sh:# TODO USE TW COMMANDS
./ASTROBOT/PLAYER.refresh.sh: #~ ## IF WALLET IS EMPTY : WHAT TODO ?
./ASTROBOT/G1PalPay.sh: echo ">>> TODO CHECK TX HAPPENS LAST 24H (WHAT IS IDATE=$IDATE FORMAT ??)"
./ASTROBOT/G1PalPay.sh: #### SEARCH FOR PALPAY ACOUNTS : TODO BETTER §§§
./ASTROBOT/GCHANGE.process.sh:# Create tiddler informing ... TODO Add keyword ... Use tag="annonce" for tiddlers propagation
./ASTROBOT/N1Kodi.sh: ## TODO CREATE A TEMP IPNS KEY ?!
./ASTROBOT/N1Kodi.sh:## TODO CREATE FROM FRIEND LOCAL KODI RSS
./ASTROBOT/_sandbox/_GCHANGE.process.sh:# Create tiddler informing ... TODO Add keyword ... Use tag="annonce" for tiddlers propagation
./ASTROBOT/_sandbox/_GCHANGE.process.sh:echo "TODO DEBUG. CONTINUE?"
./ASTROBOT/_sandbox/_GCHANGE.process.sh: # Message tiddlywiki TODO
./ASTROBOT/G1CopierYoutube.sh: ## TODO CORRECT - CACHE CHANGED -
./ASTROBOT/G1CopierYoutube.sh: ## TODO ACCEPT MORE WITH COINS
./ASTROBOT/G1CopierYoutube.sh: # TODO : DELAY COPY OPERATION... Astro can download quicker at 03:00 AM
./ASTROBOT/G1CopierYoutube.sh: ## COPY FROM YOUTUBE (TODO DOUBLE COPY & MKV to MP4 OPTIMISATION)
./ASTROBOT/G1CopierYoutube.sh: ## Create gifanime ## TODO Search for similarities BEFORE ADD
./ASTROBOT/G1CopierYoutube.sh: ## TODO : ADD EMAIL TAG ( TIMESTAMP & ADD SIGNATURE over existing ones)
./ASTROBOT/FRIENDS.manage.sh:# TODO USE WEB INTERFACE

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,400 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
/>
<meta name="description" content="A custom DataSource implementation.">
<title>Cesium DATA Demo</title>
<script src="./Cesium.js"></script>
<script>window.CESIUM_BASE_URL = "./";</script>
</head>
<body>
<style>
@import url(./Cesium.widgets.css);
</style>
<div id="cesiumContainer" class="fullSize"></div>
<div id="toolbar"></div>
<script id="cesium_sandcastle_script">
window.startup = function (Cesium) {
'use strict';
//Sandcastle_Begin
/**
* This class is an example of a custom DataSource. It loads JSON data as
* defined by Google's WebGL Globe, https://github.com/dataarts/webgl-globe.
* @alias WebGLGlobeDataSource
* @constructor
*
* @param {string} [name] The name of this data source. If undefined, a name
* will be derived from the url.
*
* @example
* const dataSource = new Cesium.WebGLGlobeDataSource();
* dataSource.loadUrl('sample.json');
* viewer.dataSources.add(dataSource);
*/
function WebGLGlobeDataSource(name) {
//All public configuration is defined as ES5 properties
//These are just the "private" variables and their defaults.
this._name = name;
this._changed = new Cesium.Event();
this._error = new Cesium.Event();
this._isLoading = false;
this._loading = new Cesium.Event();
this._entityCollection = new Cesium.EntityCollection();
this._seriesNames = [];
this._seriesToDisplay = undefined;
this._heightScale = 10000000;
this._entityCluster = new Cesium.EntityCluster();
}
Object.defineProperties(WebGLGlobeDataSource.prototype, {
//The below properties must be implemented by all DataSource instances
/**
* Gets a human-readable name for this instance.
* @memberof WebGLGlobeDataSource.prototype
* @type {String}
*/
name: {
get: function () {
return this._name;
},
},
/**
* Since WebGL Globe JSON is not time-dynamic, this property is always undefined.
* @memberof WebGLGlobeDataSource.prototype
* @type {DataSourceClock}
*/
clock: {
value: undefined,
writable: false,
},
/**
* Gets the collection of Entity instances.
* @memberof WebGLGlobeDataSource.prototype
* @type {EntityCollection}
*/
entities: {
get: function () {
return this._entityCollection;
},
},
/**
* Gets a value indicating if the data source is currently loading data.
* @memberof WebGLGlobeDataSource.prototype
* @type {Boolean}
*/
isLoading: {
get: function () {
return this._isLoading;
},
},
/**
* Gets an event that will be raised when the underlying data changes.
* @memberof WebGLGlobeDataSource.prototype
* @type {Event}
*/
changedEvent: {
get: function () {
return this._changed;
},
},
/**
* Gets an event that will be raised if an error is encountered during
* processing.
* @memberof WebGLGlobeDataSource.prototype
* @type {Event}
*/
errorEvent: {
get: function () {
return this._error;
},
},
/**
* Gets an event that will be raised when the data source either starts or
* stops loading.
* @memberof WebGLGlobeDataSource.prototype
* @type {Event}
*/
loadingEvent: {
get: function () {
return this._loading;
},
},
//These properties are specific to this DataSource.
/**
* Gets the array of series names.
* @memberof WebGLGlobeDataSource.prototype
* @type {string[]}
*/
seriesNames: {
get: function () {
return this._seriesNames;
},
},
/**
* Gets or sets the name of the series to display. WebGL JSON is designed
* so that only one series is viewed at a time. Valid values are defined
* in the seriesNames property.
* @memberof WebGLGlobeDataSource.prototype
* @type {String}
*/
seriesToDisplay: {
get: function () {
return this._seriesToDisplay;
},
set: function (value) {
this._seriesToDisplay = value;
//Iterate over all entities and set their show property
//to true only if they are part of the current series.
const collection = this._entityCollection;
const entities = collection.values;
collection.suspendEvents();
for (let i = 0; i < entities.length; i++) {
const entity = entities[i];
entity.show = value === entity.seriesName;
}
collection.resumeEvents();
},
},
/**
* Gets or sets the scale factor applied to the height of each line.
* @memberof WebGLGlobeDataSource.prototype
* @type {Number}
*/
heightScale: {
get: function () {
return this._heightScale;
},
set: function (value) {
if (value <= 0) {
throw new Cesium.DeveloperError("value must be greater than 0");
}
this._heightScale = value;
},
},
/**
* Gets whether or not this data source should be displayed.
* @memberof WebGLGlobeDataSource.prototype
* @type {Boolean}
*/
show: {
get: function () {
return this._entityCollection;
},
set: function (value) {
this._entityCollection = value;
},
},
/**
* Gets or sets the clustering options for this data source. This object can be shared between multiple data sources.
* @memberof WebGLGlobeDataSource.prototype
* @type {EntityCluster}
*/
clustering: {
get: function () {
return this._entityCluster;
},
set: function (value) {
if (!Cesium.defined(value)) {
throw new Cesium.DeveloperError("value must be defined.");
}
this._entityCluster = value;
},
},
});
/**
* Asynchronously loads the GeoJSON at the provided url, replacing any existing data.
* @param {object} url The url to be processed.
* @returns {Promise} a promise that will resolve when the GeoJSON is loaded.
*/
WebGLGlobeDataSource.prototype.loadUrl = function (url) {
if (!Cesium.defined(url)) {
throw new Cesium.DeveloperError("url is required.");
}
//Create a name based on the url
const name = Cesium.getFilenameFromUri(url);
//Set the name if it is different than the current name.
if (this._name !== name) {
this._name = name;
this._changed.raiseEvent(this);
}
//Load the URL into a json object
//and then process is with the `load` function.
const that = this;
return Cesium.Resource.fetchJson(url)
.then(function (json) {
return that.load(json, url);
})
.catch(function (error) {
//Otherwise will catch any errors or exceptions that occur
//during the promise processing. When this happens,
//we raise the error event and reject the promise.
this._setLoading(false);
that._error.raiseEvent(that, error);
return Promise.reject(error);
});
};
/**
* Loads the provided data, replacing any existing data.
* @param {Array} data The object to be processed.
*/
WebGLGlobeDataSource.prototype.load = function (data) {
//>>includeStart('debug', pragmas.debug);
if (!Cesium.defined(data)) {
throw new Cesium.DeveloperError("data is required.");
}
//>>includeEnd('debug');
//Clear out any data that might already exist.
this._setLoading(true);
this._seriesNames.length = 0;
this._seriesToDisplay = undefined;
const heightScale = this.heightScale;
const entities = this._entityCollection;
//It's a good idea to suspend events when making changes to a
//large amount of entities. This will cause events to be batched up
//into the minimal amount of function calls and all take place at the
//end of processing (when resumeEvents is called).
entities.suspendEvents();
entities.removeAll();
//WebGL Globe JSON is an array of series, where each series itself is an
//array of two items, the first containing the series name and the second
//being an array of repeating latitude, longitude, height values.
//
//Here's a more visual example.
//[["series1",[latitude, longitude, height, ... ]
// ["series2",[latitude, longitude, height, ... ]]
// Loop over each series
for (let x = 0; x < data.length; x++) {
const series = data[x];
const seriesName = series[0];
const coordinates = series[1];
//Add the name of the series to our list of possible values.
this._seriesNames.push(seriesName);
//Make the first series the visible one by default
const show = x === 0;
if (show) {
this._seriesToDisplay = seriesName;
}
//Now loop over each coordinate in the series and create
// our entities from the data.
for (let i = 0; i < coordinates.length; i += 3) {
const latitude = coordinates[i];
const longitude = coordinates[i + 1];
const height = coordinates[i + 2];
//Ignore lines of zero height.
if (height === 0) {
continue;
}
const color = Cesium.Color.fromHsl(0.6 - height * 0.5, 1.0, 0.5);
const surfacePosition = Cesium.Cartesian3.fromDegrees(
longitude,
latitude,
0
);
const heightPosition = Cesium.Cartesian3.fromDegrees(
longitude,
latitude,
height * heightScale
);
//WebGL Globe only contains lines, so that's the only graphics we create.
const polyline = new Cesium.PolylineGraphics();
polyline.material = new Cesium.ColorMaterialProperty(color);
polyline.width = new Cesium.ConstantProperty(2);
polyline.arcType = new Cesium.ConstantProperty(
Cesium.ArcType.NONE
);
polyline.positions = new Cesium.ConstantProperty([
surfacePosition,
heightPosition,
]);
//The polyline instance itself needs to be on an entity.
const entity = new Cesium.Entity({
id: `${seriesName} index ${i.toString()}`,
show: show,
polyline: polyline,
seriesName: seriesName, //Custom property to indicate series name
});
//Add the entity to the collection.
entities.add(entity);
}
}
//Once all data is processed, call resumeEvents and raise the changed event.
entities.resumeEvents();
this._changed.raiseEvent(this);
this._setLoading(false);
};
WebGLGlobeDataSource.prototype._setLoading = function (isLoading) {
if (this._isLoading !== isLoading) {
this._isLoading = isLoading;
this._loading.raiseEvent(this, isLoading);
}
};
//Now that we've defined our own DataSource, we can use it to load
//any JSON data formatted for WebGL Globe.
const dataSource = new WebGLGlobeDataSource();
dataSource
.loadUrl("./population909500.json")
.then(function () {
//After the initial load, create buttons to let the user switch among series.
function createSeriesSetter(seriesName) {
return function () {
dataSource.seriesToDisplay = seriesName;
};
}
for (let i = 0; i < dataSource.seriesNames.length; i++) {
const seriesName = dataSource.seriesNames[i];
Sandcastle.addToolbarButton(
seriesName,
createSeriesSetter(seriesName)
);
}
});
//Create a Viewer instances and add the DataSource.
const viewer = new Cesium.Viewer("cesiumContainer", {
animation: false,
timeline: false,
});
viewer.clock.shouldAnimate = false;
viewer.dataSources.add(dataSource);
//Sandcastle_End
Sandcastle.finishedLoading();
};
if (typeof Cesium !== 'undefined') {
window.startupCalled = true;
window.startup(Cesium);
}
</script>
</body>
</html>

View File

@ -1,40 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
/>
<title>Sorry. Empty Slot in your Metaverse ! </title>
<script src="./Cesium.js"></script>
<script>window.CESIUM_BASE_URL = "./";</script>
</head>
<body>
<style>
@import url(./Cesium.widgets.css);
</style>
<a href="javascript:history.go(-1)"><div id="cesiumContainer" class="fullSize"></div>
<div id="toolbar"></div></a>
<script id="cesium_sandcastle_script">
window.startup = function (Cesium) {
'use strict';
//Sandcastle_Begin
const viewer = new Cesium.Viewer("cesiumContainer", {
imageryProvider: new Cesium.TileMapServiceImageryProvider({
url: Cesium.buildModuleUrl("Assets/Textures/NaturalEarthII"),
}),
baseLayerPicker: false,
geocoder: false,
});
//Sandcastle_End
Sandcastle.finishedLoading();
};
if (typeof Cesium !== 'undefined') {
window.startupCalled = true;
window.startup(Cesium);
}
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

BIN
WWW/favicon.cesium.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
WWW/favicon.gchange.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
WWW/favicon.groceliande.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
WWW/favicon.minetest.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
WWW/favicon.p4n.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
WWW/favicon.radar.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

BIN
WWW/favicon.transiscope.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
WWW/favicon.tw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
WWW/favicon.vdo.ninja.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -102,6 +102,7 @@ while true; do
for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | grep -v '^[[:space:]]*$') # remove comments and empty lines
do
## ex: /ip4/149.102.158.67/tcp/4001/p2p/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u)
echo "############# RUN LOOP ######### $(date)"
ipfsnodeid=${bootnode##*/}
@ -114,7 +115,7 @@ while true; do
## PREPARE TO REFRESH SWARM LOCAL CACHE
mkdir -p ~/.zen/tmp/swarm/${ipfsnodeid}
mkdir -p ~/.zen/tmp/swarm/_${ipfsnodeid}
mkdir -p ~/.zen/tmp/-${ipfsnodeid}
## GET bootnode IP
iptype=$(echo ${bootnode} | cut -d '/' -f 2)
@ -122,22 +123,22 @@ while true; do
## IPFS GET TO /swarm/${ipfsnodeid}
echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}"
ipfs --timeout 720s get -o ~/.zen/tmp/swarm/_${ipfsnodeid}/ /ipns/${ipfsnodeid}/
ipfs --timeout 720s get -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/
## SHOW WHAT WE GET
echo "__________________________________________________"
ls ~/.zen/tmp/swarm/_${ipfsnodeid}/
ls ~/.zen/tmp/-${ipfsnodeid}/
echo "__________________________________________________"
## LOCAL CACHE SWITCH WITH LATEST
if [[ -s ~/.zen/tmp/swarm/_${ipfsnodeid}/_MySwarm.moats ]]; then
if [[ $(diff ~/.zen/tmp/swarm/_${ipfsnodeid}/_MySwarm.moats ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats) || $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats 2>/dev/null) == "" ]]; then
if [[ -s ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ]]; then
if [[ $(diff ~/.zen/tmp/-${ipfsnodeid}/_MySwarm.moats ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats) || $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats 2>/dev/null) == "" ]]; then
rm -Rf ~/.zen/tmp/swarm/${ipfsnodeid}
mv ~/.zen/tmp/swarm/_${ipfsnodeid} ~/.zen/tmp/swarm/${ipfsnodeid}
mv ~/.zen/tmp/-${ipfsnodeid} ~/.zen/tmp/swarm/${ipfsnodeid}
echo "UPDATED : ~/.zen/tmp/swarm/${ipfsnodeid}"
else
echo "TimeStamp unchanged : $(cat ~/.zen/tmp/swarm/${ipfsnodeid}/_MySwarm.moats)"
rm -Rf ~/.zen/tmp/swarm/_${ipfsnodeid}/
rm -Rf ~/.zen/tmp/-${ipfsnodeid}/
continue
fi
else
@ -158,7 +159,7 @@ while true; do
itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json | jq -r '.g1swarm' | rev | cut -d '/' -f 1 | rev )
ipfs ls /ipns/${itipnswarmap} | rev | cut -d ' ' -f 1 | rev | cut -d '/' -f 1 > ~/.zen/tmp/_swarm.${ipfsnodeid}
echo "ZNODS LIST"
echo "================ ${nodeip}:12345 ZNODS LIST"
cat ~/.zen/tmp/_swarm.${ipfsnodeid}
echo "============================================"
for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do

43
adventure/README.md Normal file
View File

@ -0,0 +1,43 @@
# BashVenture
> - ou tout jeu que vous créez avec -
est un simple ensemble de fichiers de script bash qui affichent des illustrations et du texte, attendent les données de l'utilisateur et agissent en conséquence. En général, le joueur se déplace sur une "carte" de fichiers scripts interconnectés, appelés salles, pour découvrir où il se trouve, ce qu'il doit faire et où il doit se rendre ensuite.
Les jeux peuvent également comporter une logique plus ou moins complexe, allant d'un simple ensemble d'interrupteurs et de leviers (comme dans la démo) jusqu'à un système complexe de décryptage ou de partage de secrets. Dans BashVenture, la logique est entièrement basée sur des fichiers - lorsque vous actionnez un interrupteur, par exemple, une entrée du fichier logique correspondant est modifiée. Cela signifie que les états logiques transcendent les salles et la mort du joueur - vous pouvez réinitialiser la logique quand vous le souhaitez, plutôt que de la lier à une salle ou à une zone spécifique, ou à la durée de vie si vous êtes le genre de joueur qui meurt souvent.
Le joueur se déplace dans le jeu en lançant des commandes. Les commandes par défaut sont aller vers le nord, le sud, l'est, l'ouest, utiliser et observer.
L'utilisateur décide de la marche à suivre en tapant respectivement n, s, e, w, u ou h. Vous pouvez personnaliser complètement le jeu en ajoutant vos propres commandes.
Il y a une introduction et plusieurs fin - et quelques méchants et choses qui peuvent vous tuer en cours de route. Je vous suggère fortement, avant de forker et d'essayer d'écrire votre propre jeu, de jouer à la démo et de vous faire une idée de la façon dont les mécanismes de jeu fonctionnent.
La magie d'un bon jeu d'aventure réside dans la narration ! Rédigez bien, testez souvent et ne compliquez pas trop les choses.
## Contenu du code ?
Il y a quatre types de fichiers dans ce projet, répartis dans leurs sous-répertoires respectifs :
### art
Tout le monde aime un peu d'art ASCII, n'est-ce pas ? Il y a quelques fichiers d'exemple avec des illustrations ici - mais si vous construisez un jeu vous-même et que vous voulez inclure plus d'illustrations, c'est l'endroit où il faut les mettre. Le titre est affiché dans chaque pièce, par souci de cohérence.
### rooms
Chaque "pièce" du jeu est stockée dans un fichier de pièce séparé. Il s'agit d'une pièce métaphorique - il peut s'agir d'une zone boisée, d'une grotte, de la lune, de la spaaaaaace, peu importe. Dans cette démo, il y a des pièces et des couloirs - les fichiers sont identiques. Tout est dans la formulation.
### script
Alors que les fichiers des salles contiennent la majorité des mots spéciaux de chaque salle, les fichiers de ce dossier contiennent des morceaux d'histoire plus longs et le texte d'introduction. Si vous souhaitez afficher de gros morceaux de texte provenant de fichiers dans votre jeu, c'est dans le dossier scripts qu'il faut les placer.
### logic
Ce qui fait d'une aventure en mode texte plus qu'un simple jeu de labyrinthe, c'est la logique. Vous pouvez placer des interrupteurs, demander aux utilisateurs de faire correspondre des mots ou de trouver des secrets. Vous pouvez en ajouter autant que vous le souhaitez !
![](game_map.png)
---
SOURCE CODE : https://github.com/apetro/BashVenture/

View File

@ -1,8 +1,6 @@
#!/bin/bash
###################################################################
# This Launch script is based on BashVenture.
# It runs on Astroport Stations and allow players to create their own digital stories
# First you have to install IPFS in order to play with everyone in the same network
#
# Remember, kids - sharing is caring! Keep it open. Spread the love.
# - @BenNunney
@ -10,15 +8,16 @@
# - @Fred
# $AGE×365,25×24×60×60×9,807÷299792458 = RELATIVE LIGHT GRAVITY SPEED
###################################################################
# Here we check to see if uuidgen is installed - if not it will default to single-user mode. To run this on a server
# and support multipe-users, check you have everything set up correctly.
# Read the original instructions : https://github.com/apetro/BashVenture/blob/master/README.md
###################################################################
# 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)

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1 @@
off

View File

@ -0,0 +1 @@
off

View File

@ -0,0 +1,58 @@
#!/bin/bash
clear
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
# This is close to the endgame, but affords the player a last set of things to try and do.
# Obviously if you use this framework to create a game of your own, you can extend this massively.
echo
sleep 1
echo "Vous décidez de sortir de la Sation Astroport."
echo
echoleverstate=`cat ../logic/stationlogic.ben`
if [ "$leverstate" = "on" ]; then
sleep 2
echo "Il ne dépend que de vous d'explorer ce nouveau futur."
echo "Le Visa MadeInZion inaugure un monde sans territoire, sans frontière, transnationnal, interplanétaire, à vous de voir?"
sleep 2
echo "Avant de nous rejoindre. Visitez notre 'bon coin' https://gchange.fr "
echo
sleep 3
echo "Ouvrez une ambassade? Installez IPFS, devenons hébergeur, fournisseur d'accès de nos Internets."
echo
sleep 4
echo "Ouvrez votre propriété au futur en commun, activez Astroport."
echo "Nous organisons des formations habitats posés, vissés et cousus. Eau potable. Biogaz, Marmite Norvégienne..."
echo "Comment nourrir le sol, reconnaitre les plantes... Redevenir ceuilleur, créateur."
echo
else
echo ""
echo "Aucune entrée n'est visible."
fi
echo
sleep 5
echo
echo "Que voulez vous faire?"
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) echo "Pas moyen de se déplacer." ;;
s ) echo ".Pas le choix." ;;
e ) echo "Pas par là." ;;
w ) echo "Plus à l'ouest que ça? Y'a pas!" ;;
u ) ./end.sh
exit ;;
h ) echo "Comment refuser une telle proposition..." ;;
* ) 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

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

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

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

View File

@ -0,0 +1,38 @@
#!/bin/bash
clear
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# Everybody clap your hands. I mean, here is the script.
sleep 1
echo "Vous atteignez une zone remplie de jeunes épineux"
echo "Vous reconnaissez des prunus, des aubépines."
echo "Quelques génévriers dont vous remarquez les baies noires."
echo "Un peu plus loin ce sont les ronces."
echo
echo "Plus vous progressez plus vous souffrez des épines. Existe-t-il un passage? Qui sait."
echo
echo "Que voulez vous faire?"
# And here's what you could have won...
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) echo "Un énorme roncier vous barre la route. Ca ne passe pas." ;;
s ) echo "Vers le sud, aucun passage en vue." ;;
e ) ./mainroom.sh
exit ;;
w ) echo "Vous voyez le même paysage à perte de vue" ;;
u ) echo "Vous cueillez une baie de genèvrier. Vous la portez à la bouche. Croquez. La saveur est délicieuse. La force de la plante vous envahi." ;;
h ) echo "Ce type de terrain est caractéritique des zones déboisées. La nature sort ses épines pour protéger les arbres qui poussent en dessous." ;;
* ) 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

@ -0,0 +1,35 @@
#!/bin/bash
clear
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# I like this room. There is no way to get out of it alive.
sleep 1
echo "Un évier derrière une fenère, une ancienne porte d'armoire comme table."
echo "Un meuble fait de planches de bois cousues rempli de bocaux"
echo "Une glacière recouverte d'une couche d'isolant Un bruleur à gaz."
echo "C'est un espace pour cuisiner."
sleep 3
echo
echo "Vous avez soif. Un filtre à eau gravitationnel vous fait face"
echo "vous attraper un gobelet et le remplissez à raz bord du liquide de la bombone"
echo "Vous portez le verre à vos lèvres..."
echo
sleep 5
echo "A la première gorgée vous vous sentez ramolir. Comment savoir combien vous avez bu"
echo "quand votre corps devenu impossible à garder droit s'est éffondré sur le sol."
echo "Simplement le temps de vous demander pourquoi?"
echo
echo "Vous sombrez dans l'inconscience."
sleep 4
echo "VOUS VOUS SENTEZ DECOLLER."
echo
read -p "Appuyez sur [ENTER] pour revenir..."
./mainroom.sh
exit

View File

@ -0,0 +1,58 @@
#!/bin/bash
clear
# This room gets a little artsy with sleep commands, to help with the
# narrative of the story. This is why there are two versions - foyer and foyer2.
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# It's script time again...
sleep 1
echo "Vous pénétrez à l'intérieur de l'Astroport."
echo
sleep 3
echo "Une voix synthétique vous accueille."
espeak "Welcome. Please Identify." > /dev/null 2>&1
echo
echo "Vous parcourez l'espace du regard"
echo "Au nord, face à vous se trouve un foyer où brule un feu."
echo
sleep 3
echo "A l'ouest sont suspendus tuyaux, ustensiles et bocaux. Une cuisine?"
echo "A l'est il y a un genre de 'photomaton' "
sleep 2
echo "Derrière vous, la porte par où vous êtes entré est encore ouverte."
echo
echo "Que voulez vous faire?"
# And once again the room logic.
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) echo "Vous vous asseyez sur le grand tapis devant le feu. Vous vous relaxez un instant."
./magic8.sh
;;
s ) ./bigroom.sh
exit ;;
e ) ./gameroom.sh
exit ;;
w ) ./grue.sh
exit ;;
u ) echo "Vous tapotez sur le barmoètre. Une photo satellite?"
./meteofrance.sh
exit
;;
h ) echo "La pièce est spacieuse. La chaleur du feu agréable, à gauche on dirait une cuisine explosée, à droite une chaise moletonnée fait face à un écran." ;;
* ) 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

@ -0,0 +1,40 @@
#!/bin/bash
clear
# Initialise the Title Art
file1="titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# So here's a little story all about how this script got flip-turned upside down...
sleep 1
echo "You're in a corridor, but it's quite a small one. You got here"
echo "the first time by hugging a statue of a kitten. Standard."
echo
echo "You see a glow coming from the rooms to your east and west, and"
echo "there's a big, old looking door to the south of you."
echo
echo "What would you like to do?"
# Imma let you finish, but here's the room choices.
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) echo "You faceplant the wall. Idiot." ;;
s ) ./bigroom.sh
exit ;;
e ) ./gameroom.sh
exit ;;
w ) ./grue.sh
exit ;;
u ) echo "There's nothing you can use right here." ;;
h ) echo "After hugging that cat you aren't sure you should try to hug yourself again." ;;
* ) echo "I'm sorry, I don't understand you. Commands are: n, e, s, w, u and h.";;
esac
done
esac
exit

View File

@ -0,0 +1,29 @@
#!/bin/bash
# magic 8 ball. Yup. Pick a random number, output message
# source: https://www.linuxjournal.com/content/bash-shell-games-lets-play-go-fish
answers=("Oui c'est certain." "C'est carrément ça."
"Sans aucun doute." "Oui - assurément."
"Comptez la dessus." "Comme je le vois, oui." "Très probablement."
"Bonne perspective." "Oui." "Les signes indiquent que oui."
"Réponse floue, essayez à nouveau." "Redemandez plus tard."
"Il vaut mieux ne pas vous le dire maintenant.." "Impossible de prédire maintenant."
"Concentrez-vous et demandez à nouveau." "N'y comptez pas."
"Ma réponse est non." "Mes sources disent que non."
"Rien de bon." "Très douteux.")
echo "Oh ! Boule magique, dis-moi la vérité, s'il te plaît...." ; echo ""
/bin/echo -n "Quelle est votre question ? "
read question
answer=$(( $RANDOM % 20 ))
echo ""
echo "J'ai regardé dans le futur et je dis: "
echo " ${answers[$answer]}" ; echo ""
sleep 3
./mainroom.sh
exit

View File

@ -0,0 +1,45 @@
#!/bin/bash
clear
# This is a repeat of the opening room in the start.sh file - if the player
# wants to go back to the main room, this saves going through the whole
# start script over again.
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# Shakesphere wrote this, honest.
sleep 1
echo "Vous êtes de retour à votre point de départ."
echo "La forêt qui vous entoure est immense."
echo "Vous ne pouvez pas vraiment en imaginer la taille,"
echo
echo "Vous pouvez vous diriger au nord, à l'est, au sud et à l'ouest."
echo
echo "Que voulez-vous faire ?"
# And the room logic once again.
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) ./white.sh
exit ;;
s ) ./brown.sh
exit ;;
e ) ./red.sh
exit ;;
w ) ./green.sh
exit ;;
u ) echo "Il n'y a rien que vous puissiez utiliser ici." ;;
h ) echo "Vous observez votre montre, il est 20:12" ;;
* ) 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

@ -0,0 +1,58 @@
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir -p ~/.zen/tmp/${MOATS}
################################################################################
# Choisir la source de capture
# https://fr.sat24.com/image?type=visual5HDComplete&region=fr
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
## TEST IPFS
[[ ! $(which ipfs) ]] && echo "Missing IPFS. Please install... https://ipfs.tech" && exit 1
## PREPARE FILE SYSTEM CACHE
mkdir -p ~/.zen/adventure/meteo.anim.eu
rm -f ~/.zen/adventure/meteo.anim.eu/meteo.png
## SCRAPING meteo.png
curl -m 20 --output ~/.zen/adventure/meteo.anim.eu/meteo.png https://s.w-x.co/staticmaps/wu/wu/satir1200_cur/europ/animate.png
if [[ ! -f ~/.zen/adventure/meteo.anim.eu/meteo.png ]]; then
echo "Impossible de se connecter au service meteo"
exit 1
else
echo "Mise à jour archive meteo : ${MOATS}"
echo ${MOATS} > ~/.zen/adventure/meteo.anim.eu/.moats
OLDID=$(cat ~/.zen/adventure/.meteo.index 2>/dev/null)
# TODO : COMPARE SIMILAR OR NOT
# ipfs get "/ipfs/$OLDID/meteo.anim.eu/meteo.png"
## PREPARE NEW index.html
sed "s/_OLDID_/$OLDID/g" ${MY_PATH}/../templates/meteo_chain.html > /tmp/index.html
sed -i "s/_IPFSID_/$IPFSID/g" /tmp/index.html
sed -i "s/_DATE_/$(date -u "+%Y-%m-%d#%H:%M:%S")/g" /tmp/index.html
sed "s/_PSEUDO_/${USER}/g" /tmp/index.html > ~/.zen/adventure/index.html
# Copy style css
cp -r ${MY_PATH}/../templates/styles ~/.zen/adventure/
INDEXID=$(ipfs add -rHq ~/.zen/adventure/* | tail -n 1)
echo $INDEXID > ~/.zen/adventure/.meteo.index
echo "METEO INDEX : http://127.0.0.1:8080/ipfs/$INDEXID"
IPFS=$(ipfs add -q ~/.zen/adventure/meteo.anim.eu/meteo.png | tail -n 1)
echo $IPFS > ~/.zen/adventure/meteo.anim.eu/.chain
fi

View File

@ -0,0 +1,41 @@
#!/bin/bash
clear
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# Set up the script for this room. It's a simple one!
sleep 1
echo "Vous entrez dans l'ancienne bergerie."
echo "Un canapé mauve est installé au milieu de l'espace"
echo "Une bache transparente vous sépare du ciel."
echo
echo "Vous êtes dans une serre."
echo "Une seule sortie. A l'Ouest, d'où vous venez."
echo
echo "Que voulez-vous faire?"
# And the choices go here.
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) echo "Une fente dans le mur vous laisse observer une carcasse de voiture. Une vieille 2cv. Un grillage vous empêche de passer." ;;
s ) echo "L'emplacement d'un grand feu se trouve la. Il ne reste que de la cendre." ;;
e ) echo "Une autre pièce remplie de gravats et d'éboulis se trouve devant vous. Impossible d'y accéder." ;;
w ) ./mainroom.sh
exit ;;
u ) echo "Vous vous asseyez dans le canapé. Vous vous sentez immédiatement happé par un nuage."
sleep 2
xdg-open "https://www.copylaradio.com/blog/blog-1/post/le-pas-a-pas-qui-libere-du-grand-mechant-cloud-36#scrollTop=0"
;;
h ) echo "Aucun détail particulier si ce n'est une tache sur le sofa." ;;
* ) 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

@ -0,0 +1,72 @@
#!/bin/bash
clear
# Logic in the game is stored in .ben files. This sample has just one 'logic' file.
# You can add more logic files by simply adding a 'sed' command and appropriate .ben file.
# First off, let us reset the game logic. Use this as an example.
sed -i='' 's/on/off/' ../logic/leverlogic.ben
# Who doen't love ASCII text, right?
# Next up, let's initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# Next up, let's load in the initial introduction. Script is also stored in .ben files.
sleep 5
file2="../script/opening.ben"
while IFS= read -r line
do
echo "$line"
done <"$file2"
read -p "Pressez sur [ENTER] pour démarrer..."
#Okay, now that the introduction is out of the way, we can start the first room!
clear
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
sleep 1
# Here's where you introduce the room to the player. Be sure to tell them if there
# Are exits - but don't give too much away. Make it fun for them to explore!
echo
echo "La téléportation vous a placé debout au centre d'une clairière."
echo "Vous vous trouvez près d'une ancienne bergerie aux gros murs de pierres."
echo "Le toit et une bonne partie des murs sont effondrés."
echo
echo "Tout autour la forêt. Des feuillus. Quelques arbustres épineux."
echo "Sous vos pieds. Le sol est rouge parsemé de cailloux blancs."
echo
echo "Vous pouvez vous diriger selon les points cardinaux."
echo "Au nord un chemin remonte, au sud un passage descend, à l'est, la bergerie, à l'ouest, des traces d'animaux"
echo
echo "Que voulez-vous faire? Les commandes sont : n, e, s, w, u et h."
# Now we wait for their response - and send them somewhere accordingly.
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) ./white.sh
exit ;; # These lines will take the player to a new room - a new script file.
s ) ./brown.sh
exit ;; # Be sure to include 'exit' otherwise the game won't quit properly!
e ) ./red.sh
exit ;;
w ) ./green.sh
exit ;;
u ) echo "Vous ouvrez votre sac il contient une tente, des vêtements, un thermos, une scie pliante et un couteau" ;; # Something to say? You can also just echo.
h ) echo "Comment avez-vous pu arriver ici.? Des souvenirs vous reviennent... https://ipfs.copylaradio.com/ipfs/QmWyCFvvvrE1xWudCnc14oDvaztLaRZ4guvQFVkkDLwa23#JOUR%201.%20PLANETE%201." ;;
* ) 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

@ -0,0 +1,62 @@
#!/bin/bash
clear
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
#Setting up the room...
sleep 1
echo "Vous parcourez un chemin qui monte en direction du nord.."
echo "Au sommet de cette petite colline vous découvrez un magestueux chêne"
echo "trônant au centre d'une clairière lumineuse. La forêt à cet endroit"
echo "forme un cercle tout autour..."
echo
echo "Un Astroport fait de vitres, de planches, de tôles et de chevrons"
echo "est posé là. Eclairé par les rayons du soleil."
echo
# Here we're going to check to see if the lever - the only logic we are using in this game - is on or off.
leverstate=`cat ../logic/leverlogic.ben`
if [ "$leverstate" = "on" ]; then
echo "Une poignée est apparue sur la porte de la façade..."
else
echo "Vous en faites le tour..."
echo "Aucune entrée n'est visible."
fi
echo
echo "Pas d'autre chemin praticable que celui d'où vous venez."
echo
echo "Que voulez-vous faire ?"
# Now lets capture this room's actions. Note that here, the actions change depending on whether or not
# the lever is on or off. If it's on, you go elsewhere. If it's off, you don't.
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) echo "Vous vous aventurez dans la forêt plus au nord. Sans boussole, vous allez vous perdre rapidement... " ;;
s ) ./mainroom.sh
exit ;;
e ) echo "Une corniche surplombe un ruisseau qui coule dans le fond de la ravine. Impossible de passer sans équipement" ;;
w ) echo "Vous voilà face à un Jardin luxuriant. Une cloture électrique le délimite et en empêche l'accès." ;;
h ) echo "Vous voyez à l'interieur de la Station une video en cours de projection..."
sleep 2
xdg-open "https://www.youtube.com/embed/Yk-WRXKysXM"
;;
u ) leverstate=`cat ../logic/leverlogic.ben`
if [ "$leverstate" = "on" ]; then
./kroo.sh
exit
else
echo "Vous cherchez une ouverture... Pas la moindre. Impossible d'entrer sans commettre une effraction..."
fi
;;
* ) 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

@ -0,0 +1,23 @@
Message de la Confédération Interplanétaire
La planète où vous vous trouvez est en danger. Les menaces sont nombreuses.
Vos gouvernements se disputent les dernières ressources. Le cycle du vivant est perturbé !
Le "contrat social" des 'pays civilisés' vascille. Les technocrates réclament plus de contrôle.
La commission extraterrestre est formelle. Vous êtes en danger.
Heureusement la monnaie libre a été découverte sur votre planète!
Elle s'utilise dans un jeu 'grandeur nature'. Astroport 20:12
Bienvenue dans l'aventure du changement de civilisation.
Les commandes pour vous déplacer et interagir sont
'n' aller au nord,
's' aller au sud,
'e' aller à l'est,
'w' aller à l'ouest,
'u' utiliser,
'h' observer plus en détail.
Ctrl-C pour quitter.
- - -

View File

@ -21,26 +21,9 @@ 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 "MERCI"
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
sleep 3
echo
file1="../art/bigfinish.ben"
while IFS= read -r line
@ -61,7 +44,7 @@ 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 "Le futur ne se prédit pas, il se construit."
echo
echo " - @Fred"
echo

View File

@ -21,7 +21,7 @@ echo "y est raccordé... D'autres fils sortent de l'appareil. Une webcam. Une i
echo
echo "Que voulez vous faire?"
myIP=$(hostname -I | awk '{print $1}' | head -n 1)
isLAN=$(route -n |awk '$1 == "0.0.0.0" {print $2}' | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")
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
@ -46,10 +46,10 @@ while true; do
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)."
echo "Rebootez INTERNET. Activez votre TW sur UPlanet (IPFS crypto drive) "
sleep 2
echo
echo "On y échange en pair à pair. La monnaie y est Libre."
echo "On y échange en pair à pair. La monnaie y est Libre. https://qo-op.com"
sleep 4
file1="../art/astrored.ben"
while IFS= read -r line

View File

@ -7,7 +7,7 @@
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir -p ~/.zen/tmp/${MOATS}
################################################################################
# Capture la photographie satellite de la France
# Choisir la source de capture
# https://fr.sat24.com/image?type=visual5HDComplete&region=fr
MY_PATH="`dirname \"$0\"`" # relative

View File

@ -63,7 +63,7 @@ while true; do
w ) ./green.sh
exit ;;
u ) echo "Vous ouvrez votre sac il contient une tente, des vêtements, un thermos, une scie pliante et un couteau" ;; # Something to say? You can also just echo.
h ) echo "Comment avez-vous pu arriver ici.? Des souvenirs vous reviennent... https://web.archive.org/web/20211129105224/https://oasis.astroport.com/a-quel-jeu-voulons-nous-jouer/" ;;
h ) echo "Comment avez-vous pu arriver ici.? Des souvenirs vous reviennent... https://ipfs.copylaradio.com/ipfs/QmWyCFvvvrE1xWudCnc14oDvaztLaRZ4guvQFVkkDLwa23#JOUR%201.%20PLANETE%201." ;;
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
esac
done

View File

@ -21,23 +21,26 @@
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START ONLY FOR SYNC -
# echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl')
if [[ $LOWMODE != "" ]]; then
espeak "Low Mode"
sudo systemctl start ipfs
fi
#~ LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START ONLY FOR SYNC -
#~ # echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl')
#~ if [[ $LOWMODE != "" ]]; then
#~ espeak "Low Mode"
#~ sudo systemctl start ipfs
#~ fi
########################################################################
#~ ########################################################################
espeak "restarting I P F S daemon"
[[ "$isLAN" ]] && sudo systemctl restart ipfs
#~ espeak "restarting I P F S daemon"
#~ [[ "$isLAN" ]] && sudo systemctl restart ipfs
## CHECK IF IPFS DAEMON IS STARTS WELL
floop=0
while [[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]]; do
sleep 1
((floop++)) && [ $floop -gt 10 ] && espeak 'Please check but IPFS cannot start' && exit 1
((floop++)) && [ $floop -gt 5 ] \
&& echo "ERROR. IPFS daemon not running on port 5001" \
&& espeak 'ERROR. I P F S daemon not running' \
&& exit 1
done
. "${MY_PATH}/tools/my.sh"
@ -50,11 +53,13 @@ shopt -s expand_aliases
alias zenity='zenity 2> >(grep -v GtkDialog >&2)'
alias espeak='espeak 1>&2>/dev/null'
########################################################################
[[ $(which ipfs) == "" ]] && echo "ERREUR! Installez ipfs" && echo "wget https://git.p2p.legal/axiom-team/astrXbian/raw/master/.install/ipfs_alone.sh -O /tmp/ipfs_install.sh && chmod +x /tmp/ipfs_install.sh && /tmp/ipfs_install.sh" && exit 1
[[ $(which ipfs) == "" ]] && echo "ERREUR! Installez ipfs" && exit 1
[[ $(which zenity) == "" ]] && echo "ERREUR! Installez zenity" && echo "sudo apt install zenity" && exit 1
[[ $(which ffmpeg) == "" ]] && echo "ERREUR! Installez ffmpeg" && echo "sudo apt install ffmpeg" && exit 1
[[ $(which xdpyinfo) == "" ]] && echo "ERREUR! Installez x11-utils" && echo "sudo apt install x11-utils" && exit 1
[[ $(which tiddlywiki) == "" ]] && echo "ERREUR! Installez tiddlywiki" && echo "sudo npm install -g tiddlywiki" && exit 1
mkdir -p ~/.zen/tmp/
exec 2>&1 >> ~/.zen/tmp/ajouter_media.log
URL="$1"
@ -101,7 +106,7 @@ espeak "Hello $PSEUDO"
G1PUB=$(myPlayerG1Pub)
[[ $G1PUB == "" ]] && espeak "ERROR NO G 1 PUBLIC KEY FOUND - EXIT" && exit 1
PLAYERNS=$(myPlayerNs) || ( echo "noplayerns" && exit 1 )
PLAYERNS=$(myPlayerNs) || { echo "noplayerns" && exit 1; }
ASTRONAUTENS=$(myAstroKey)
[[ $ASTRONAUTENS == "" ]] && echo "ASTRONAUTE manquant" && espeak "Astronaut Key Missing" && exit 1
@ -840,16 +845,16 @@ if [[ -s ~/Astroport/${PLAYER}/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json ]]; t
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
## GETTING LAST TW via IPFS or HTTP GW
LIBRA=$(head -n 2 ${MY_PATH}/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
rm -f ~/.zen/tmp/ajouter_media.html > /dev/null 2>&1
[[ $YOU ]] && echo " ipfs --timeout 120s cat /ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 120s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/ajouter_media.html
#~ [[ ! -s ~/.zen/tmp/ajouter_media.html ]] && echo "curl -m 12 $LIBRA/ipns/${ASTRONAUTENS}" && curl -m 12 -so ~/.zen/tmp/ajouter_media.html "$LIBRA/ipns/${ASTRONAUTENS}"
[[ ! -s ~/.zen/tmp/ajouter_media.html ]] && espeak "WARNING. WARNING. impossible to find your TW online"
rm -f ~/.zen/tmp/astronaut_TW.html > /dev/null 2>&1
[[ $YOU ]] && echo " ipfs --timeout 120s cat /ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 120s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/astronaut_TW.html
#~ [[ ! -s ~/.zen/tmp/astronaut_TW.html ]] && echo "curl -m 12 $LIBRA/ipns/${ASTRONAUTENS}" && curl -m 12 -so ~/.zen/tmp/astronaut_TW.html "$LIBRA/ipns/${ASTRONAUTENS}"
[[ ! -s ~/.zen/tmp/astronaut_TW.html ]] && espeak "WARNING. WARNING. impossible to find your TW online"
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ]] && espeak "FATAL ERROR. No player TW copy found ! EXIT" && exit 1
## TODO : CHECK CACHE LAST MODIFIED
echo "%%%%%%%%%%%%%% I GOT YOUR TW %%%%%%%%%%%%%%%%%%%%%%%%%%"
[[ -s ~/.zen/tmp/ajouter_media.html ]] \
&& cp -f ~/.zen/tmp/ajouter_media.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
[[ -s ~/.zen/tmp/astronaut_TW.html ]] \
&& cp -f ~/.zen/tmp/astronaut_TW.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
&& espeak "TW Found" \
|| espeak "USING LOCAL COPY"
###############################
@ -894,7 +899,7 @@ if [[ -s ~/Astroport/${PLAYER}/${CAT}/${MEDIAID}/${MEDIAKEY}.dragdrop.json ]]; t
echo "================================================"
echo
[[ $XDG_SESSION_TYPE == 'x11' ]] && xdg-open "http://ipfs.localhost:8080/ipns/$ASTRONAUTENS"
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open "http://ipfs.localhost:8080/ipns/$ASTRONAUTENS"
else

View File

@ -127,7 +127,7 @@ echo "$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) TW/Moa"
echo "$myIPFS/ipns/$ASTRONAUTENS"
echo "Activation Réseau P2P Astroport !"
[[ $XDG_SESSION_TYPE == 'x11' ]] && xdg-open "http://ipfs.localhost:8080/ipns/$ASTRONAUTENS"
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open "http://ipfs.localhost:8080/ipns/$ASTRONAUTENS"
echo
PS3="$PLAYER choisissez : __ "

View File

@ -0,0 +1,39 @@
version: "3"
volumes:
nextcloud-data:
nextcloud-db:
networks:
frontend:
# add this if the network is already existing!
# external: true
backend:
services:
nextcloud-app:
image: nextcloud
restart: always
volumes:
- nextcloud-data:/var/www/html
environment:
- MYSQL_PASSWORD=replace-with-secure-password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud-db
networks:
- frontend
- backend
nextcloud-db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- nextcloud-db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=replace-with-secure-password
- MYSQL_PASSWORD=replace-with-secure-password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- backend

View File

@ -0,0 +1,12 @@
version : '3.8'
services :
app :
image : 'jc21/nginx-proxy-manager:latest'
restart : unless-stopped
ports :
- '80:80'
- '81:81'
- '443:443'
volumes :
- ./data:/data
- ./letsencrypt:/etc/letsencrypt

BIN
images/UPlanet_IMPORT.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

BIN
images/UPlanet_IMPORT.xcf Normal file

Binary file not shown.

BIN
images/UPlanet_IN.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 KiB

BIN
images/UPlanet_IN.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

BIN
images/UPlanet_IN.xcf Normal file

Binary file not shown.

BIN
images/UPlanet_INrev.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

BIN
images/UPlanet_INrev.xcf Normal file

Binary file not shown.

BIN
images/UPlanet_OUT.xcf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

BIN
images/UPlanet_POI.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

BIN
images/UPlanet_SECTORTW.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

BIN
images/UPlanet_VISIO.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

View File

@ -37,14 +37,14 @@ echo "################ TW Ŋ1 PROTOCOL #############"
echo "##################################################"
echo ; echo "UPDATING SYSTEM REPOSITORY"
#~ [[ $XDG_SESSION_TYPE == 'x11' ]] && sudo add-apt-repository ppa:obsproject/obs-studio
#~ [[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update
echo "#############################################"
echo "######### INSTALL BASE & PYTHON3 PACKAGE ####"
echo "#############################################"
for i in git make cmake fail2ban npm argon2 netcat-traditional ncdu chromium* miller inotify-tools curl net-tools libsodium* libcurl4-openssl-dev python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli mpack; do
for i in git make cmake docker-compose fail2ban npm argon2 netcat-traditional ncdu chromium* miller inotify-tools curl net-tools libsodium* libcurl4-openssl-dev python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli python3-aiohttp mpack; do
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
sudo apt install -y $i
@ -56,7 +56,7 @@ echo "#############################################"
echo "######### INSTALL MULTIMEDIA TOOLS ######"
echo "#############################################"
# removed : sqlite
for i in qrencode pv gnupg pandoc ca-certificates basez jq bc file gawk ffmpeg dnsutils ntpdate v4l-utils espeak vlc mp3info musl-dev openssl* detox nmap httrack html2text ssmtp imagemagick; do
for i in qrencode pv gnupg gpa pandoc ca-certificates basez jq bc file gawk ffmpeg dnsutils ntpdate v4l-utils espeak vlc mp3info musl-dev openssl* detox nmap httrack html2text ssmtp imagemagick; do
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
sudo apt install -y $i
@ -65,7 +65,19 @@ for i in qrencode pv gnupg pandoc ca-certificates basez jq bc file gawk ffmpeg d
fi
done
if [[ $XDG_SESSION_TYPE == 'x11' ]]; then
echo "#############################################"
echo "######### FUN INSTALL ASCII ART TOOLS ######"
echo "#############################################"
for i in cmatrix cowsay; do
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
sudo apt install -y $i
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "INSTALL $i FAILED." >> /tmp/install.errors.log && continue
fi
done
if [[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]]; then
echo "#############################################"
echo "######### INSTALL DESKTOP TOOLS ######"
echo "#############################################"
@ -109,14 +121,13 @@ sudo npm install -g tiddlywiki
#~ ## DES SUGGESTIONS ?
#~ ## CONTACTER support@qo-op.com
#~ #################################################"
echo "######### CONFIGURE MAILJET ############"
## MAILJET SSMTP RELAYING : ADD YOUR CREDENTIALS
sudo cp ~/.zen/Astroport.ONE/templates/.ssmtprc /etc/ssmtp/ssmtp.conf
sudo ln -s /usr/sbin/ssmtp /usr/bin/ssmtp
sudo chmod 640 /etc/ssmtp/ssmtp.conf
sudo chgrp mail /etc/ssmtp/ssmtp.conf
#~ sudo cp ~/.zen/Astroport.ONE/templates/.ssmtprc /etc/ssmtp/ssmtp.conf
#~ sudo ln -s /usr/sbin/ssmtp /usr/bin/ssmtp
#~ sudo chmod 640 /etc/ssmtp/ssmtp.conf
#~ sudo chgrp mail /etc/ssmtp/ssmtp.conf
echo "$USER:support@g1sms.fr:mail.asycn.io:587" | (sudo su -c 'tee -a /etc/ssmtp/revaliases')
#~ echo "$USER:support@g1sms.fr:mail.asycn.io:587" | (sudo su -c 'tee -a /etc/ssmtp/revaliases')
## Correct PDF restrictions for imagemagick
echo "######### IMAGEMAGICK PDF ############"
@ -127,22 +138,10 @@ fi
echo "###########################"
echo "## ADDING CRYPTO LAYER ================"
echo "########################### ♥BOX"
sudo ln -f -s /usr/bin/python3 /usr/bin/python
echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc && source ~/.bashrc; echo "<<< CHECK YOUR >>> PATH=$PATH"
#~ mkdir -p ~/.venvs
#~ python3 -m venv ~/.venvs/astro
# python -m pip install -U pip
# python -m pip install -U setuptools wheel
# python -m pip install -U cryptography Ed25519 base58 google duniterpy pynacl pgpy pynentry SecureBytes
# python -m pip install -U silkaj
# python -m pip install -U protobuf==3.19.0
for i in pip setuptools wheel cryptography==3.4.8 Ed25519 base58 google duniterpy pynacl pgpy pynentry SecureBytes amzqr pdf2docx pyppeteer; do
for i in pip setuptools wheel cryptography Ed25519 base58 google duniterpy pynacl pgpy pynentry SecureBytes amzqr pdf2docx pyppeteer; do
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
python -m pip install -U $i
python -m pip install --break-system-packages -U $i
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "python -m pip install -U $i FAILED." >> /tmp/install.errors.log && continue
done
@ -157,7 +156,7 @@ if [[ $USER != 'xbian' ]]; then
if [[ $saisie != "" ]]; then
## PRINT & FONTS
sudo apt install ttf-mscorefonts-installer printer-driver-all cups -y
python -m pip install brother_ql
python -m pip --break-system-packages install brother_ql
sudo cupsctl --remote-admin
sudo usermod -aG lpadmin $USER
sudo usermod -a -G tty $USER
@ -177,6 +176,26 @@ if [[ $USER != 'xbian' ]]; then
fi
echo "########################### ♥BOX"
sudo ln -f -s /usr/bin/python3 /usr/bin/python
while IFS= read -r line
do
echo "$line" >> ~/.bashrc
done < ~/.zen/Astroport.ONE/ASCI_ASTROPORT.txt
echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc && source ~/.bashrc
echo "<<< UPDATED>>> PATH=$PATH"
echo "## ADDING lazydocker ================"
### ADD TO DOCKER GROUP
sudo usermod -aG docker $USER
# INSTALL lazydocker GUI
curl https://raw.githubusercontent.com/\
jesseduffield/lazydocker/master/scripts/\
install_update_linux.sh | bash
echo "#############################################"
echo "######### SYSTEM SETUP #########################"
echo "#############################################"
@ -189,43 +208,59 @@ echo "=== SETUP ASTROPORT"
~/.zen/Astroport.ONE/setup.sh
if [[ $(which kodi) && $XDG_SESSION_TYPE == 'x11' ]]; then
echo "#############################################"
echo " ### BONUS APP ## IPFS # KODI FR PLUGIN ## "
echo "#############################################"
(
mkdir -p ~/.zen/tmp/kodi
echo "PATIENTEZ..."
ipfs get -o ~/.zen/tmp/kodi/ /ipfs/Qmc2jg96KvQrLs5R29jn3hjUb1ViMWzeygtPR59fTP6AVT
echo '## INSTALL FRANCETV + VSTREAM + FILMSFORACTION'
mv ~/.kodi ~/.kodi.back 2>/dev/null
mv ~/.zen/tmp/kodi ~/.kodi
) &
fi
#~ if [[ $(which kodi) && $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]]; then
#~ echo "#############################################"
#~ echo " ### BONUS APP ## IPFS # KODI FR PLUGIN ## "
#~ echo "#############################################"
#~ (
#~ mkdir -p ~/.zen/tmp/kodi
#~ echo "PATIENTEZ..."
#~ ipfs get -o ~/.zen/tmp/kodi/ /ipfs/Qmc2jg96KvQrLs5R29jn3hjUb1ViMWzeygtPR59fTP6AVT
#~ echo '## INSTALL FRANCETV + VSTREAM + FILMSFORACTION'
#~ mv ~/.kodi ~/.kodi.back 2>/dev/null
#~ mv ~/.zen/tmp/kodi ~/.kodi
#~ ) &
#~ fi
echo "#############################################"
echo "### ANY ERRORS ?"
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo "xXX ERRORS XXx"
cat /tmp/install.errors.log
echo "xXX please report any errors encountered during install XXx"
echo "################XXXX#########################"
echo
echo "#############################################"
echo "Astroport.ONE INSTALLATION FINISHED"
echo "Astroport.ONE - Web3 Information System over IPFS - "
end=`date +%s`
echo Execution time was `expr $end - $start` seconds.
echo "#############################################"
echo "CREEZ VOTRE COMPTE SUR"
echo " http://astroport.localhost:1234"
echo "%%%%%%%% OU ~/.zen/Astroport.ONE/command.sh "
echo
echo "(DES) ACTIVATE with
~/.zen/Astroport.ONE/tools/cron_VRFY.sh ON (OFF)"
echo
echo "### FOR JOINING BOOSTRAP LIST #############################"
echo "### MAILJET CREDENTIALS
contact support@qo-op.com for initial UPlanet ~/.zen/MJ_APIKEY"
echo "#############################################"
echo ">>> Welcome Space Kitty <<<"
echo "Explore Web2.0 / WEb3 frontier"
echo "Please. Continue keygen procedure..."
echo
echo "COMAND INTERFACE"
echo "CLI : ~/.zen/Astroport.ONE/command.sh"
echo "WEB : http://127.0.0.1:1234/"
##########################################################
## ON BOARDING PLAYER
# ~/.zen/Astroport.ONE/start.sh
espeak "Please create a player"
espeak "Welcome Space Kitty" 2>/dev/null
[[ $XDG_SESSION_TYPE == 'x11' ]] \
&& xdg-open "http://astroport.localhost:1234" \
|| ~/.zen/Astroport.ONE/command.sh
#~ [[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] \
#~ && xdg-open "http://astroport.localhost:1234" \
#~ || ~/.zen/Astroport.ONE/command.sh
xdg-open "http://127.0.0.1:1234/" 2>/dev/null
else

24
install_lazydocker_linux.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
# allow specifying different destination directory
DIR="${DIR:-"$HOME/.local/bin"}"
# map different architecture variations to the available binaries
ARCH=$(uname -m)
case $ARCH in
i386|i686) ARCH=x86 ;;
armv6*) ARCH=armv6 ;;
armv7*) ARCH=armv7 ;;
aarch64*) ARCH=arm64 ;;
esac
# prepare the download URL
GITHUB_LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' https://github.com/jesseduffield/lazydocker/releases/latest | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
GITHUB_FILE="lazydocker_${GITHUB_LATEST_VERSION//v/}_$(uname -s)_${ARCH}.tar.gz"
GITHUB_URL="https://github.com/jesseduffield/lazydocker/releases/download/${GITHUB_LATEST_VERSION}/${GITHUB_FILE}"
# install/update the local binary
curl -L -o lazydocker.tar.gz $GITHUB_URL
tar xzvf lazydocker.tar.gz lazydocker
install -Dm 755 lazydocker -t "$DIR"
rm lazydocker lazydocker.tar.gz

4
search
View File

@ -6,11 +6,11 @@ if [ "$1" == "" ]; then
else
echo " Searching for "$1" recursively. Please Wait..."
echo "------------------------------------------------------------------------------"
grep -h -r --exclude-dir='.git*' --exclude='minimal.html' --exclude='empty.html' -H --colour=always "$1" ./
grep -h -r --exclude-dir='.git*' --exclude='twuplanet.html' --exclude='twsector.html' -H --colour=always "$1" ./
fi
echo "------------------------------------------------------------------------------"
if [ "$2" != "" ]; then
echo " To replace \"$1\" whith \"$2\", please run"
echo " grep -rl --exclude-dir='.git*' --exclude='minimal.html' --exclude='empty.html' '$1' ./ | xargs sed -i 's~$1~$2~g'"
echo " grep -rl --exclude-dir='.git*' --exclude='twuplanet.html' --exclude='twsector.html' '$1' ./ | xargs sed -i 's~$1~$2~g'"
fi
## THIS IS A GREAT RETRO ENGINEERING AND CODING TOOLS

View File

@ -25,21 +25,20 @@ sudo ./setup.sh
mkdir -p ~/.zen/tmp
########################################################################
# CREATE ~/astroport FILESYSTEM GATE
#~ echo '${TYPE};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME' > ~/Astroport/${PLAYER}/ajouter_video.modele.txt
# open_with_linux.py install
#######################################################################
# DEPRECATED
echo "#############################################"
## https://darktrojan.github.io/openwith/webextension.html"
~/.zen/Astroport.ONE/open_with_linux.py install
#~ echo "#############################################"
#~ ## https://darktrojan.github.io/openwith/webextension.html"
#~ ~/.zen/Astroport.ONE/open_with_linux.py install
echo "#############################################
# NOURRISSEZ VOTRE BLOB depuis Firefox !!
# https://addons.mozilla.org/firefox/addon/open-with
#############################################
## $HOME/.zen/Astroport.ONE/ajouter_media.sh ##
#############################################"
#~ echo "#############################################
#~ # NOURRISSEZ VOTRE BLOB depuis Firefox !!
#~ # https://addons.mozilla.org/firefox/addon/open-with
#~ #############################################
#~ ## $HOME/.zen/Astroport.ONE/ajouter_media.sh ##
#~ #############################################"
########################################################################
# SUDO permissions
@ -128,7 +127,6 @@ fi
### ADD 20h12.sh CRON ###############
~/.zen/Astroport.ONE/tools/cron_VRFY.sh ON
echo "#############################################"
## INSTALL yt-dlp & SYMLINK youtube-dl
echo "##INSTALL yt-dlp & SYMLINK youtube-dl ##########################"
~/.zen/Astroport.ONE/youtube-dl.sh

View File

@ -1,21 +0,0 @@
#!/bin/bash
#script to create the nginx configuraiton file
echo "server {" > ~/.zen/tmp/astroport_nginx.conf
echo " listen 443;" >> ~/.zen/tmp/astroport_nginx.conf
echo " server_name astroport.locallhost;" >> ~/.zen/tmp/astroport_nginx.conf
for i in {12245..12445};
do
echo " location /$i {" >> ~/.zen/tmp/astroport_nginx.conf
echo " proxy_pass http://localhost:$i;" >> ~/.zen/tmp/astroport_nginx.conf
echo " }" >> ~/.zen/tmp/astroport_nginx.conf
i=$(($i + 1))
done
echo "}" >> ~/.zen/tmp/astroport_nginx.conf
## IN CASE YOU WANT TO ACCESS API THROUGH HTTPS
echo "~/.zen/tmp/astroport_nginx.conf"
echo "Add this file to your nginx config and activate https using certbot..."
echo "TODO: make it easier ;)"

View File

@ -18,14 +18,14 @@
.rolling-text-container {
position: fixed;
bottom: 0;
left: 0;
top: 0;
left: 50;
width: 100%;
background-color: #333;
color: #fff;
padding: 10px;
text-align: center;
font-size: 16px;
font-size: 18px;
overflow: hidden;
z-index: 2; /* Ensure the rolling text is above the map */
}

View File

@ -2,7 +2,7 @@
<html>
<head>
<title>UPlanet : _ZONE_ : TW from UMAPS </title>
<title> ◓ _ZONE_ ◒ on UPlanet </title>
<meta charset="UTF-8">
<link rel="icon" type="image/x-icon" href="./favicon.ico">
<link rel="stylesheet" href="http://127.0.0.1:8080/ipfs/QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/demo.css">
@ -18,12 +18,12 @@
<script type="text/javascript" src="http://127.0.0.1:8080/ipfs/QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/sphere-hacked.js"></script>
<script type="text/javascript" src="http://127.0.0.1:8080/ipfs/QmeNpiKtvmejJExRNVrmsXUSFQbGuLjmwi49kz9Tuxi5vn/index_fichiers/jquery.sector-3d.js"></script>
<!--
// loZange
<script type="text/javascript" src="http://127.0.0.1:8080/ipfs/QmeNpiKtvmejJExRNVrmsXUSFQbGuLjmwi49kz9Tuxi5vn/index_fichiers/jquery.sector-3d.js"></script>
// Country
-->
<script type="text/javascript" src="http://127.0.0.1:8080/ipfs/QmQMHHefHe9SV5nLyaQNc89H6UsvsACtndG272CVDfQKp2/index_fichiers/jquery.sector-3d.js"></script>
-->
<script type="text/javascript" src="http://127.0.0.1:8080/ipfs/QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js"></script>
@ -43,6 +43,7 @@
<style>
body {
background: grey;
padding: 0;
margin: 0;
font-family: sans-serif;
@ -70,7 +71,7 @@
}
#yellow {
background: black;
background: grey;
position: absolute;
top: 5%;
right: 5%;
@ -78,7 +79,7 @@
}
#green {
background: black;
background: grey;
position: absolute;
top: 12%;
right: 5%;
@ -96,8 +97,8 @@
visibility: visible;
background: rgba(0, 0, 0, 0.9);
color: white;
width: 570px;
height: 480px;
width: 80%;
height: 45%;
position: absolute;
bottom: 0;
left: 0;
@ -114,9 +115,6 @@
}
#fullscreenButton {
position: fixed;
top: 10px;
left: 70px;
cursor: pointer;
}
@ -142,26 +140,31 @@ iframe {
<div id="locations"></div>
</div>
</div>
<br>
<br>_DATE_
<h1>_ZONE_</h1>
<p><a href="https://qo-op.com">"UPlanet"</a></p>
<p><a href="_UPLANETLINK_">"Sector Exploration"</a></p>
<p><a href="http://127.0.0.1:8080/ipns/_UPZONENS_">"_UPZONE_"</a></p>
<p><a href="http://127.0.0.1:8080/ipns/_ZONENS_">"_ZONE_"</a></p>
<a href="https://opencollective.com/monnaie-libre/projects/coeurbox/donate" target="coeurbox"><img title="REGION FINANCE ♥BOX" src="http://127.0.0.1:8080/ipfs/QmZp1T7MyLhLNYM1uuLQo1HWVx5NLbBzh56RXm9fDEtLrs" \></a>
<br>
<p>Distributed Information System</p>
<p>powered by <a href="https://github.com/papiche/Astroport.ONE">Astroport.ONE</a></p>
<p>designed by <a href="https://opencollective.com/monnaie-libre/projects/stiits">LaSTI</a></p>
<p>juiced by <a href="https://opencollective.com/monnaie-libre/projects/coeurbox">La♥BOX</a></p>
<p>refreshed by <a href="https://github.com/papiche/Astroport.ONE">Astroport.ONE</a></p>
<p>organize by <a href="https://opencollective.com/monnaie-libre/projects/stiits">LaSTI</a></p>
<p>stored on <a href="https://opencollective.com/monnaie-libre/projects/coeurbox">La♥BOX</a></p>
</div>
</div>
</div>
<div id="console">
<a href="_index.p4n.html" target="aframe">O</a> __ <a href="/ipns/_ZONENS_/TW" target="aframe">TW _ZONE_ </a> __ <a href="/ipns/_UPZONENS_/TW" target="aframe">TW _UPZONE_ </a>
<button onclick="hideConsole()"> X </button><button id="fullscreenButton" onclick="toggleConsoleFullScreen()">^^</button>
<iframe name="aframe" id="aframe" src="_index.p4n.html" width="100%" height="100%"></iframe>
| <a href="INFO.png" target="aframe" title="_SECTOR_ INFO"> _<img width=20 src="http://127.0.0.1:8080/ipfs/QmaeRPu6yYZ8iRACgkd4DtD1V1H8NdXT8yf5Gfxf17c9pm" ></a> |
<a href="https://transiscope.gogocarto.fr/map#/carte/@_LAT_,_LON_,12z?cat=all" target="aframe" title="- Transiscope - Le portail des alternatives"><img width=20 src="http://127.0.0.1:8080/ipfs/QmbM7PH7untyyZRYHTT1Y27rdaYNWUcBF1YAeXbFMW7GX8" ></a> |
<a href="/ipfs/QmXex8PTnQehx4dELrDYuZ2t5ag85crYCBxm3fcTjVWo2k/#/app/wot/tx/_SECTORG1PUB_/" target="aframe" title="SECTOR WALLET"><img width=20 src="http://127.0.0.1:8080/ipfs/QmQd7rNi13eHHWaEfqKLHxmY6V5HWakGsXNZH8QVoGQvNt" ></a> |
<a href="/ipns/_ZONENS_/TW" target="aframe" title="_ZONE_ TW NEWS"> _<img width=20 src="http://127.0.0.1:8080/ipfs/QmZX2Titv5L488iNVHwbRNeuZh2PJULSCfxoSgF4Qzv547" ></a> |
<a href="https://minetest.dustlabs.io/?launch" target="aframe" title="- Minetest - Building Blocks on UPlanet - DEV -"><img width=20 src="http://127.0.0.1:8080/ipfs/Qmeaaee1gojMHkos4Quqqw8dwmF4SDP8kTCgAdnJiTeVgJ" ></a> |
<a href="https://groceliande.com/" target="aframe" title="© Groceliande 2023"> ( <img width=20 src="http://127.0.0.1:8080/ipfs/QmTPYJqxmsZkNzjEQv1BZ4VWBwNvXLc8MdHwZEvhKrdaJQ" > ) </a>
<a href="http://127.0.0.1:8080/ipfs/QmcSkcJ2j7GAsC2XhVqGSNAKVRpXgxfjjvDbhD5YxrncZY/?room=_PHONEBOOTH_" target="aframe" title="_SECTOR_ VISIO 📺"> ( ° - °)📺<img width=20 src="http://127.0.0.1:8080/ipfs/QmU3JKMFDnRUWv1juLcA4YEPxHLcXrgrn9FdbXaPgZgwbT" ></a> |
&nbsp;&nbsp;&nbsp;<button id="fullscreenButton" onclick="toggleConsoleFullScreen()"> ^^ </button>&nbsp;&nbsp;&nbsp;<button onclick="hideConsole()"> X </button>
<iframe name="aframe" id="aframe" src="INFO.png" width="100%" height="100%"></iframe>
</div>
<script>

View File

@ -0,0 +1 @@
HELLO THERE

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

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