Merge branch 'papiche:master' into master
|
@ -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
|
2
12345.sh
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
111
API/QRCODE.sh
|
@ -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
|
||||
|
|
14
API/SALT.sh
|
@ -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
|
||||
|
|
|
@ -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...
|
||||
|
|
84
API/ZONE.sh
|
@ -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
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
::: :::::::: ::::::::::: ::::::::: :::::::: ::::::::: :::::::: ::::::::: :::::::::::
|
||||
:+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
|
||||
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
|
||||
+#++:++#++: +#++:++#++ +#+ +#++:++#: +#+ +:+ +#++:++#+ +#+ +:+ +#++:++#: +#+
|
||||
+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+
|
||||
#+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+#
|
||||
### ### ######## ### ### ### ######## ### ######## ### ### ###
|
||||
cat << "EOF"
|
||||
|
||||
|
||||
_____/\/\_____ ____________ ___/\/\_____ ____________ ____________ ____________ ____________ ____________ ___/\/\_____
|
||||
___/\/\/\/\___ ___/\/\/\/\_ _/\/\/\/\/\_ _/\/\__/\/\_ ___/\/\/\___ _/\/\/\/\___ ___/\/\/\___ _/\/\__/\/\_ _/\/\/\/\/\_
|
||||
_/\/\____/\/\_ _/\/\/\/\___ ___/\/\_____ _/\/\/\/\___ _/\/\__/\/\_ _/\/\__/\/\_ _/\/\__/\/\_ _/\/\/\/\___ ___/\/\_____
|
||||
_/\/\/\/\/\/\_ _______/\/\_ ___/\/\_____ _/\/\_______ _/\/\__/\/\_ _/\/\/\/\___ _/\/\__/\/\_ _/\/\_______ ___/\/\_____
|
||||
_/\/\____/\/\_ _/\/\/\/\___ ___/\/\/\___ _/\/\_______ ___/\/\/\___ _/\/\_______ ___/\/\/\___ _/\/\_______ ___/\/\/\___
|
||||
_____/\/\_____ ____________ ___/\/\_____ ____________ ____________ ____________ ____________ ____________ ___/\/\_____
|
||||
___/\/\/\/\___ ___/\/\/\/\_ _/\/\/\/\/\_ _/\/\__/\/\_ ___/\/\/\___ _/\/\/\/\___ ___/\/\/\___ _/\/\__/\/\_ _/\/\/\/\/\_
|
||||
_/\/\____/\/\_ _/\/\/\/\___ ___/\/\_____ _/\/\/\/\___ _/\/\__/\/\_ _/\/\__/\/\_ _/\/\__/\/\_ _/\/\/\/\___ ___/\/\_____
|
||||
_/\/\/\/\/\/\_ _______/\/\_ ___/\/\_____ _/\/\_______ _/\/\__/\/\_ _/\/\/\/\___ _/\/\__/\/\_ _/\/\_______ ___/\/\_____
|
||||
_/\/\____/\/\_ _/\/\/\/\___ ___/\/\/\___ _/\/\_______ ___/\/\/\___ _/\/\_______ ___/\/\/\___ _/\/\_______ ___/\/\/\___
|
||||
______________ ____________ ____________ ____________ ____________ _/\/\_______ ____________ ____________ ____________
|
||||
|
||||
_ __________ _,
|
||||
_.-(_)._ ." ". .--""--. _.-{__}-._
|
||||
.'________'. | .--------. | .' '. .:-'`____`'-:.
|
||||
[____________] /` |________| `\ / .'``'. \ /_.-"`_ _`"-._\
|
||||
/ / .\/. \ \| / / .\/. \ \ || .'/.\/.\'. | /` / .\/. \ `\
|
||||
| \__/\__/ |\_/ \__/\__/ \_/| : |_/\_| ; | | \__/\__/ |
|
||||
\ / \ / \ '.\ /.' / .-\ /-.
|
||||
/'._ -- _.'\ /'._ -- _.'\ /'. `'--'` .'\/ '._-.__--__.-_.' \
|
||||
/_ `""""` _\/_ `""""` _\ /_ `-./\.-' _\'. `""""""""` .'`\
|
||||
(__/ '| \ _)_| |_)_/ \__)| ' | |
|
||||
|_____'|_____| \__________/ | |;`_________'________`;-'
|
||||
'----------' '----------' '--------------'`--------------------`
|
||||
|
||||
EOF
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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.
|
||||
|
|
71
README.md
|
@ -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)
|
||||
```
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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}"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}°=1&ipns=${REGIONNS}"
|
||||
REGIONSATGEN="${EARTHCID}/Usat.html?southWestLat=${REGLAT}&southWestLon=${REGLON}°=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
|
||||
|
|
|
@ -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}\°=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
|
||||
|
|
|
@ -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}°=0.1&ipns=${SECTORNS}"
|
||||
SECTORSATGEN="${EARTHCID}/sat_render.html?southWestLat=${SLAT}&southWestLon=${SLON}°=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}°=1&ipns=${REGIONNS}"
|
||||
REGIONSATGEN="${EARTHCID}/sat_render.html?southWestLat=${RLAT}&southWestLon=${RLON}°=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}°=0.01&ipns=${UMAPNS}"
|
||||
USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}°=0.01&ipns=${UMAPNS}"
|
||||
UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}°=0.01&ipns=${TODATENS}/_index.html"
|
||||
USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}°=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}\°=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[@]}"
|
||||
|
||||
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
35
TODO.list
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 628 B |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 1.2 KiB |
17
_12345.sh
|
@ -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
|
||||
|
|
|
@ -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/
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
..,,..,,..
|
||||
|
||||
|
|
@ -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:,.
|
||||
|
|
@ -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
|
|
@ -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.
|
||||
';;. .,,',,:;.
|
||||
':;;'. .;:,,,.
|
||||
.,,'''''','..;,,.
|
||||
,:.
|
||||
.,
|
|
@ -0,0 +1,9 @@
|
|||
_______ _ ______ _
|
||||
|__ __| | | ____| | |
|
||||
| | | |__ ___ | |__ _ __ __| |
|
||||
| | | '_ \ / _ \ | __| | '_ \ / _` |
|
||||
| | | | | | __/ | |____| | | | (_| |_
|
||||
|_| |_| |_|\___| |______|_| |_|\__,_(_)
|
||||
|
||||
|
||||
|
|
@ -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'
|
||||
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
_____ _ _
|
||||
/ ____| (_) | |
|
||||
| (___ _ _ _ __ _ __ _ __ _ ___ ___| |
|
||||
\___ \| | | | '__| '_ \| '__| / __|/ _ \ |
|
||||
____) | |_| | | | |_) | | | \__ \ __/_|
|
||||
|_____/ \__,_|_| | .__/|_| |_|___/\___(_)
|
||||
| |
|
||||
|_|
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
_ _ _ ____ ___ _ ____
|
||||
/ \ ___| |_ _ __ ___ _ __ ___ _ __| |_ |___ \ / _ \ _ / |___ \
|
||||
/ _ \ / __| __| '__/ _ \| '_ \ / _ \| '__| __| __) | | | | (_) | | __) |
|
||||
/ ___ \\__ \ |_| | | (_) | |_) | (_) | | | |_ / __/| |_| | _ | |/ __/
|
||||
/_/ \_\___/\__|_| \___/| .__/ \___/|_| \__| |_____|\___/ (_) |_|_____|
|
||||
|_|
|
||||
|
||||
--- Un JEu de Forêt Jardin en Monnaie Libre sur IPFS ---
|
||||
|
|
@ -0,0 +1 @@
|
|||
off
|
|
@ -0,0 +1 @@
|
|||
off
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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®ion=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
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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.
|
||||
|
||||
- - -
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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®ion=fr
|
||||
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 : __ "
|
||||
|
|
|
@ -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
|
|
@ -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
|
After Width: | Height: | Size: 334 KiB |
After Width: | Height: | Size: 463 KiB |
After Width: | Height: | Size: 1.7 MiB |
After Width: | Height: | Size: 429 KiB |
After Width: | Height: | Size: 346 KiB |
After Width: | Height: | Size: 455 KiB |
After Width: | Height: | Size: 302 KiB |
After Width: | Height: | Size: 258 KiB |
131
install.sh
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
@ -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
|
||||
|
|
26
setup.sh
|
@ -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
|
||||
|
||||
|
|
|
@ -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 ;)"
|
|
@ -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 */
|
||||
}
|
||||
|
|
|
@ -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> |
|
||||
<button id="fullscreenButton" onclick="toggleConsoleFullScreen()"> ^^ </button> <button onclick="hideConsole()"> X </button>
|
||||
<iframe name="aframe" id="aframe" src="INFO.png" width="100%" height="100%"></iframe>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
HELLO THERE
|
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 347 KiB |
After Width: | Height: | Size: 138 KiB |