Compare commits
No commits in common. "master" and "master" have entirely different histories.
|
@ -1,5 +1,3 @@
|
|||
.env
|
||||
*.pyc
|
||||
__pycache__
|
||||
tiddlywiki.html
|
||||
tools/jaklis/.env
|
||||
|
|
30
12345.sh
|
@ -25,7 +25,7 @@ PORT=45779
|
|||
mkdir -p ~/.zen/tmp ~/.zen/game/players/localhost # ~/.zen & myos compatibility
|
||||
|
||||
## CHECK FOR ANY ALREADY RUNNING nc
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 1234' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 1234' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ $ncrunning ]] && echo "RESTARTING" && kill -9 $ncrunning
|
||||
## NOT RUNNING TWICE
|
||||
|
||||
|
@ -49,10 +49,6 @@ function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
|||
#############################
|
||||
while true; do
|
||||
|
||||
########################################################
|
||||
## /ipfs/QmQ9MdCEY1aMmpxBqZKcHTLafRxRFeK1Ku1DES1LCPaimA
|
||||
## TODO: STOP API ACCESS AFTER 20H12
|
||||
|
||||
start=`date +%s`
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/${MOATS}
|
||||
|
@ -71,19 +67,17 @@ while true; do
|
|||
## CHECK PORT IS FREE & KILL OLD ONE
|
||||
echo "SEARCHING FOR PORT ${PORT}"
|
||||
ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep'
|
||||
pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | awk '{gsub(/^ +| +$/,"")} {print $0}' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ $pidportinuse ]] && kill -9 $pidportinuse && echo "$(date) KILLING LOST $pidportinuse"
|
||||
|
||||
### START MAP STATION 12345
|
||||
## CHECK 12345 PORT RUNNING (STATION FoF MAP)
|
||||
maprunning=$(ps auxf --sort=+utime | grep -w '_12345.sh' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
maprunning=$(ps auxf --sort=+utime | grep -w '_12345.sh' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ ! $maprunning ]] \
|
||||
&& echo '(ᵔ◡◡ᵔ) MAP LAUNCHING http://'${myIP}':12345 (ᵔ◡◡ᵔ)' \
|
||||
&& exec $MY_PATH/_12345.sh &
|
||||
|
||||
############### ############### ############### ###############
|
||||
# THIS SCRIPT STORES $i PARAMETER IN
|
||||
# THOSE VARIABLES
|
||||
# RESET VARIABLES
|
||||
CMD="" THAT="" AND="" THIS="" APPNAME="" WHAT="" OBJ="" VAL=""
|
||||
|
||||
############### ############### ############### ############### templates/index.http
|
||||
|
@ -92,17 +86,12 @@ while true; do
|
|||
myHtml >> ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
||||
## REPLACE RESPONSE PORT
|
||||
sed -i -e "s~http://127.0.0.1:12345~http://127.0.0.1:${PORT}~g" \
|
||||
sed -i -e "s~http://127.0.0.1:12345~http://${myIP}:${PORT}~g" \
|
||||
~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
||||
## WAN REDIRECT TO HTTPS:// + /${PORT}
|
||||
[ -z "$isLAN" ] \
|
||||
&& sed -i -e "s~http://127.0.0.1:${PORT}~${myASTROPORT}/${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http \
|
||||
&& echo "WAN STATION"
|
||||
|
||||
[ -n "$(zIp)" ]\
|
||||
&& sed -i -e "s~http://127.0.0.1:${PORT}~$(zIp):${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http \
|
||||
&& echo "COEURBOX STATION"
|
||||
&& sed -i -e "s~http://${myIP}:${PORT}~${myASTROPORT}/${PORT}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
||||
## UPLANET HOME LINK REPLACEMENT
|
||||
sed -i -e "s~https://qo-op.com~${myUPLANET}~g" ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http
|
||||
|
@ -110,15 +99,10 @@ while true; do
|
|||
############################################################################
|
||||
## SERVE LANDING REDIRECT PAGE ~/.zen/tmp/${MOATS}/${PORT}.myHOST.http on PORT 1234 (LOOP BLOCKING POINT)
|
||||
############################################################################
|
||||
############### ############### ############### ############### WAIT FOR
|
||||
############### ############### ############### ############### 1234 KNOC
|
||||
REQ=$(cat $HOME/.zen/tmp/${MOATS}/${PORT}.myHOST.http | nc -l -p 1234 -q 1 && rm $HOME/.zen/tmp/${MOATS}/${PORT}.myHOST.http) ## # WAIT FOR 1234 PORT CONTACT
|
||||
############### ############### ############### ############### KNOC !!
|
||||
############### ############### ############### ###############
|
||||
|
||||
URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
|
||||
HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2)
|
||||
AGENT=$(echo "$REQ" | grep '^User-Agent:') ### TODO : BAN LESS THAN 3 SEC REQUEST
|
||||
HOST=$(echo "$HOSTP" | cut -d ':' -f 1)
|
||||
|
||||
## COOKIE RETRIEVAL ##
|
||||
|
@ -149,7 +133,7 @@ while true; do
|
|||
( nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo " (‿/‿) $PORT CONSUMED in "`expr $(date +%s) - $start`" seconds." ) &
|
||||
else
|
||||
mySalt | \
|
||||
sed "s~http://127.0.0.1:12345~http://${myASTROPORT}:${PORT}~g" | \
|
||||
sed "s~http://127.0.0.1:12345~${myASTROPORT}:${PORT}~g" | \
|
||||
sed "s~https://qo-op.com~${myUPLANET}~g" | \
|
||||
( nc -l -p ${PORT} -q 1 > /dev/null 2>&1 && echo " (‿/‿) $PORT CONSUMED in "`expr $(date +%s) - $start`" seconds." ) &
|
||||
fi
|
||||
|
|
143
20h12.process.sh
|
@ -4,141 +4,78 @@
|
|||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"${MY_PATH}\" && pwd )`" # absolutized and normalized
|
||||
. "${MY_PATH}/tools/my.sh"
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "$MY_PATH/tools/my.sh"
|
||||
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
|
||||
|
||||
########################################################################
|
||||
## CHECK IF IPFS NODE IS RESPONDING (ipfs name resolve ?)
|
||||
########################################################################
|
||||
ipfs --timeout=30s swarm peers 2>/dev/null > ~/.zen/tmp/ipfs.swarm.peers
|
||||
[[ ! -s ~/.zen/tmp/ipfs.swarm.peers || $? != 0 ]] \
|
||||
&& echo "---- SWARM COMMUNICATION BROKEN / RESTARTING IPFS DAEMON ----" \
|
||||
&& sudo systemctl restart ipfs \
|
||||
&& sleep 60
|
||||
|
||||
# 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" \
|
||||
&& $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
|
||||
|
||||
########################################################################
|
||||
# show ZONE.sh cache of the day
|
||||
echo "TODAY UPlanet landings"
|
||||
ls ~/.zen/tmp/ZONE_* 2>/dev/null
|
||||
|
||||
########################################################################
|
||||
## REMOVE TMP BUT KEEP swarm, flashmem and coucou
|
||||
## REMOVE TMP BUT KEEP SWARM
|
||||
mv ~/.zen/tmp/swarm ~/.zen/swarm
|
||||
mv ~/.zen/tmp/coucou ~/.zen/coucou
|
||||
mv ~/.zen/tmp/flashmem ~/.zen/flashmem
|
||||
rm -Rf ~/.zen/tmp/*
|
||||
mv ~/.zen/swarm ~/.zen/tmp/swarm
|
||||
mv ~/.zen/coucou ~/.zen/tmp/coucou
|
||||
mv ~/.zen/flashmem ~/.zen/tmp/flashmem
|
||||
|
||||
########################################################################
|
||||
### DELAY _12345 ASTROPORT DURING 20H12 UPDATE ###
|
||||
if [[ "${LOWMODE}" == "" ]]; then
|
||||
### NOT REFRESHING SWARM
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
MOATS_plus_5_hours=$(date -d "now + 5 hours" +"%Y%m%d%H%M%S%4N")
|
||||
mkdir ~/.zen/tmp/${IPFSNODEID}
|
||||
echo ${MOATS_plus_5_hours} > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
|
||||
echo 9000 > ~/.zen/tmp/random.sleep
|
||||
else
|
||||
# REFRESHING SWARM
|
||||
echo 0 > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
|
||||
curl -s "http://127.0.0.1:12345"
|
||||
sleep 300 ## WAIT FOR 5MN
|
||||
fi
|
||||
|
||||
########################################################################
|
||||
## UPDATE G1BILLETS code
|
||||
[[ -s ~/.zen/G1BILLET/G1BILLETS.sh ]] \
|
||||
&& cd ~/.zen/G1BILLET/ && git pull \
|
||||
&& rm -Rf ~/.zen/G1BILLET/tmp/*
|
||||
|
||||
########################################################################
|
||||
## UPDATE Astroport.ONE code
|
||||
cd ${MY_PATH}/
|
||||
cd ~/.zen/Astroport.ONE/
|
||||
git pull
|
||||
|
||||
########################################################################
|
||||
## SOON /ipns/ Address !!!
|
||||
|
||||
# espeak "20 HOURS 12 MINUTES. ASTROBOT RUNNING." > /dev/null 2>&1
|
||||
## Updating yt-dlp
|
||||
${MY_PATH}/youtube-dl.sh
|
||||
$MY_PATH/youtube-dl.sh
|
||||
sudo youtube-dl -U
|
||||
|
||||
########################################################################
|
||||
## DRAGON SSH WOT
|
||||
echo "DRAGONS WOT OFF"
|
||||
${MY_PATH}/RUNTIME/DRAGON_p2p_ssh.sh off
|
||||
# Refresh ~/.zen/game/world/G1VOEU
|
||||
# NOW RUN FROM PLAYER.refresh.sh !! ~/.zen/Astroport.ONE/RUNTIME/VOEUX.refresh.sh
|
||||
|
||||
########################################################################
|
||||
## PING BOOSTRAP & SWARM NODES
|
||||
${MY_PATH}/ping_bootstrap.sh > /dev/null 2>&1
|
||||
# espeak "Players refresh" > /dev/null 2>&1
|
||||
# Refresh ~/.zen/game/players/PLAYER
|
||||
~/.zen/Astroport.ONE/RUNTIME/PLAYER.refresh.sh
|
||||
|
||||
########################################################################
|
||||
######################################################### UPLANET ######
|
||||
#####################################
|
||||
# GeoKeys UMAP / SECTOR / REGION ...
|
||||
#####################################
|
||||
${MY_PATH}/RUNTIME/UPLANET.refresh.sh
|
||||
#####################################
|
||||
#####################################
|
||||
# Players TW analyse & ASTROBOT run
|
||||
#####################################
|
||||
${MY_PATH}/RUNTIME/PLAYER.refresh.sh
|
||||
#####################################
|
||||
#####################################
|
||||
# Node refreshing
|
||||
#####################################
|
||||
${MY_PATH}/RUNTIME/NODE.refresh.sh
|
||||
#####################################
|
||||
########################################################################
|
||||
########################################################################
|
||||
# espeak "REFRESHING UPLANET" > /dev/null 2>&1
|
||||
~/.zen/Astroport.ONE/RUNTIME/UPLANET.refresh.sh
|
||||
|
||||
########################################################################
|
||||
## REMOVE TMP BUT KEEP swarm, flashmem and coucou
|
||||
mv ~/.zen/tmp/${IPFSNODEID} ~/.zen/${IPFSNODEID}
|
||||
mv ~/.zen/tmp/swarm ~/.zen/swarm
|
||||
mv ~/.zen/tmp/coucou ~/.zen/coucou
|
||||
mv ~/.zen/tmp/flashmem ~/.zen/flashmem
|
||||
rm -Rf ~/.zen/tmp/*
|
||||
mv ~/.zen/${IPFSNODEID} ~/.zen/tmp/${IPFSNODEID}
|
||||
mv ~/.zen/swarm ~/.zen/tmp/swarm
|
||||
mv ~/.zen/coucou ~/.zen/tmp/coucou
|
||||
mv ~/.zen/flashmem ~/.zen/tmp/flashmem
|
||||
# espeak "REFRESHING NODE" > /dev/null 2>&1
|
||||
~/.zen/Astroport.ONE/RUNTIME/NODE.refresh.sh
|
||||
|
||||
########################################################################
|
||||
################################# updating ipfs bootstrap
|
||||
|
||||
## if [[ ! $isLAN ]]; then
|
||||
## REFRESH BOOSTRAP LIST (OFFICIAL SWARM)
|
||||
espeak "bootstrap refresh" > /dev/null 2>&1
|
||||
|
||||
ipfs bootstrap rm --all > /dev/null 2>&1
|
||||
|
||||
[[ -s ${HOME}/.zen/game/MY_boostrap_nodes.txt ]] \
|
||||
&& STRAPFILE="${HOME}/.zen/game/MY_boostrap_nodes.txt" \
|
||||
|| STRAPFILE="${MY_PATH}/A_boostrap_nodes.txt"
|
||||
|
||||
for bootnode in $(cat ${STRAPFILE} | grep -Ev "#") # remove comments
|
||||
for bootnode in $(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#") # remove comments
|
||||
do
|
||||
ipfsnodeid=${bootnode##*/}
|
||||
ipfs bootstrap add $bootnode
|
||||
done
|
||||
|
||||
## fi
|
||||
|
||||
########################################################################
|
||||
########################################################################
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
|
@ -148,23 +85,23 @@ seconds=$((dur % 60))
|
|||
echo "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds"
|
||||
echo "20H12 (♥‿‿♥) Execution time was $dur seconds."
|
||||
|
||||
# ~/.zen/Astroport.ONE/tools/ipfs_P2P_forward.sh ## COULD FORWARD LOCAL TCP PORT TO SWARM
|
||||
rm ~/.zen/game/players/localhost/latest
|
||||
|
||||
## MAIL LOG : support@qo-op.com ##
|
||||
${MY_PATH}/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "20H12"
|
||||
$MY_PATH/tools/mailjet.sh "support@qo-op.com" "/tmp/20h12.log" "20H12"
|
||||
|
||||
espeak "DURATION ${hours} hours ${minutes} minutes ${seconds} seconds" > /dev/null 2>&1
|
||||
|
||||
## RESTART
|
||||
|
||||
# espeak "Restarting Astroport Services" > /dev/null 2>&1
|
||||
## CLOSING API PORT
|
||||
[[ -s ~/.zen/.pid ]] && kill -9 $(cat ~/.zen/.pid) > /dev/null 2>&1
|
||||
## KILL ALL REMAINING nc
|
||||
killall nc 12345.sh > /dev/null 2>&1
|
||||
|
||||
## SYSTEMD OR NOT SYSTEMD
|
||||
## OPEN API ENGINE
|
||||
if [[ ! -f /etc/systemd/system/astroport.service ]]; then
|
||||
${MY_PATH}/12345.sh > ~/.zen/tmp/12345.log &
|
||||
~/.zen/Astroport.ONE/12345.sh > ~/.zen/tmp/12345.log &
|
||||
PID=$!
|
||||
echo $PID > ~/.zen/.pid
|
||||
else
|
||||
|
@ -174,24 +111,16 @@ else
|
|||
|
||||
fi
|
||||
|
||||
echo "IPFS DAEMON LEVEL"
|
||||
######### IPFS DAMEON NOT RUNNING ALL DAY
|
||||
echo "IPFS LOW MODE ?"
|
||||
## IF IPFS DAEMON DISABLED : WAIT 1H & STOP IT
|
||||
[[ $LOWMODE != "" ]] \
|
||||
&& echo "STOP IPFS $LOWMODE" \
|
||||
&& sleep 3600 \
|
||||
&& echo "ON. $LOWMODE" \
|
||||
&& sleep 360 \
|
||||
&& sudo systemctl stop ipfs \
|
||||
&& exit 0
|
||||
|
||||
echo "HIGH. RESTART IPFS"
|
||||
echo "OFF. RESTART IPFS"
|
||||
sleep 60
|
||||
sudo systemctl restart ipfs
|
||||
|
||||
#################################
|
||||
### DRAGON WOT : SSH P2P RING OPENING
|
||||
#################################
|
||||
sleep 30
|
||||
echo "DRAGONS WOT ON"
|
||||
${MY_PATH}/RUNTIME/DRAGON_p2p_ssh.sh
|
||||
|
||||
exit 0
|
||||
|
|
44
AI/Readme.md
|
@ -1,44 +0,0 @@
|
|||
# Pourquoi ?
|
||||
|
||||
## La Monnaie est Buggée !
|
||||
|
||||
Dans l'écosystème actuel, la notion de monnaie est sujette à des défauts.
|
||||
La distinction entre une unité non libre et une monnaie libre révèle des imperfections
|
||||
dans les échanges économiques.
|
||||
|
||||
## Blockchain = Registre Global
|
||||
|
||||
La blockchain, en tant que registre global, offre une opportunité de remédier aux lacunes du
|
||||
système financier actuel. Elle peut être envisagée comme une carte d'identité pour le Web3,
|
||||
offrant transparence et traçabilité.
|
||||
|
||||
## IA Apprentissage et Contrôle
|
||||
|
||||
La gestion de l'intelligence artificielle est cruciale. La comparaison entre un ChatGPT privé
|
||||
et Mistral libre souligne la nécessité d'un contrôle plus étendu.
|
||||
"The PILE", source d'information, demande une cohérence accrue pour garantir une
|
||||
diffusion fiable des connaissances.
|
||||
|
||||
## Loi de Moore vs Industrie
|
||||
|
||||
La cadence effrénée de la Loi de Moore, avec une progression tous les 1,5 ans,
|
||||
se heurte à la réalité industrielle où les cycles d'investissement s'étendent de 3 à 11 ans.
|
||||
Les rendements sur investissements sont souvent compromis, créant des opportunités pour de nouveaux acteurs.
|
||||
|
||||
## Web2.0 Épileptique
|
||||
|
||||
Les soubresauts du Web2.0, caractérisés par l'instabilité des données et de leur localisation,
|
||||
soulignent la nécessité d'une approche plus stable et cohérente.
|
||||
|
||||
# Comment ?
|
||||
|
||||
## UPlanet / Astroport.ONE
|
||||
|
||||
La solution réside dans UPlanet et Astroport.ONE, des initiatives axées sur la décentralisation et la régulation.
|
||||
En adoptant une blockchain multi-grille sphérique et des clés géospatiales, ces plateformes créent un réseau de :
|
||||
* stations index (300€)
|
||||
* stations IA avec stockage + GPU (2000€)
|
||||
|
||||
|
||||
Ces stations, en synergie, visent à résoudre les problèmes évoqués, offrant une alternative innovante
|
||||
pour les investisseurs souhaitant participer à la transformation du paysage technologique.
|
22
API/AMZQR.sh
|
@ -26,8 +26,6 @@ MOATS=$9
|
|||
COOKIE=$10"
|
||||
PORT="$1" THAT="$2" AND="$3" THIS="$4" APPNAME="$5" WHAT="$6" OBJ="$7" VAL="$8" MOATS="$9" COOKIE="$10"
|
||||
|
||||
[[ "$PORT" == "" ]] && echo "$MY_PATH/AMZQR.sh '0' 'la chaine a mettre en QRCODE' 'et' 'TV'" && exit 1
|
||||
|
||||
HTTPCORS="HTTP/1.1 200 OK
|
||||
Access-Control-Allow-Origin: ${myASTROPORT}
|
||||
Access-Control-Allow-Credentials: true
|
||||
|
@ -39,8 +37,6 @@ Content-Type: text/html; charset=UTF-8
|
|||
|
||||
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
||||
|
||||
|
||||
[[ ${MOATS} == "" ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/
|
||||
|
||||
##################################################
|
||||
|
@ -48,12 +44,10 @@ USTRING=$(urldecode "${THAT}")
|
|||
IMAGE="${THIS}"
|
||||
|
||||
[[ ! -s ${MY_PATH}/../images/${IMAGE}.png || ${USTRING} == "" ]] \
|
||||
&& echo "UNKNOW IMAGE ${IMAGE}" \
|
||||
&& ( [[ $PORT != "0" ]] && echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& exho "UNKNOW IMAGE ${IMAGE}" \
|
||||
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 1
|
||||
|
||||
echo amzqr "${USTRING}" -l H -c -p ${MY_PATH}/../images/${IMAGE}.png -n ${MOATS}.png -d ~/.zen/tmp/${MOATS}/
|
||||
|
||||
## RUN AMZQR
|
||||
amzqr "${USTRING}" -l H -c -p ${MY_PATH}/../images/${IMAGE}.png -n ${MOATS}.png -d ~/.zen/tmp/${MOATS}/
|
||||
IPFSMG=$(ipfs add -q ~/.zen/tmp/${MOATS}/${MOATS}.png | tail -n 1)
|
||||
|
@ -61,19 +55,7 @@ echo "${myIPFS}/ipfs/${IPFSMG}"
|
|||
|
||||
echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}/ipfs/${IPFSMG}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
|
||||
if [[ $PORT == "0" ]]; then
|
||||
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open ${myIPFS}/ipfs/${IPFSMG}
|
||||
|
||||
LP=$(ls /dev/usb/lp* 2>/dev/null | head -n1)
|
||||
if [[ $LP ]]; then
|
||||
echo "IMPRESSION QRCODE"
|
||||
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/${MOATS}/${MOATS}.png > ~/.zen/tmp/${MOATS}/toprint.bin 2>/dev/null
|
||||
sudo brother_ql_print ~/.zen/tmp/${MOATS}/toprint.bin $LP
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -Rf ~/.zen/tmp/${MOATS}/
|
||||
end=`date +%s`
|
||||
echo "(AMZQR) Operation time was "`expr $end - $start` seconds.
|
||||
echo "/ipfs/${IPFSMG}"
|
||||
exit 0
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
################################################################################
|
||||
## API: DRAGONS
|
||||
## Used by OSM2IPFS welcome.html
|
||||
# ?zone=DEG&ulat=LAT&ulon=LON
|
||||
## Search for TW numbers in received zone # >> return json
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
|
||||
start=`date +%s`
|
||||
|
||||
echo "PORT=$1
|
||||
THAT=$2
|
||||
AND=$3
|
||||
THIS=$4
|
||||
APPNAME=$5
|
||||
WHAT=$6
|
||||
OBJ=$7
|
||||
VAL=$8
|
||||
MOATS=$9
|
||||
COOKIE=$10"
|
||||
PORT="$1" THAT="$2" AND="$3" THIS="$4" APPNAME="$5" WHAT="$6" OBJ="$7" VAL="$8" MOATS="$9" COOKIE="$10"
|
||||
### transfer variables according to script
|
||||
|
||||
[[ $MOATS == "" ]] && echo "MISSING MOATS" && exit 1
|
||||
|
||||
HTTPCORS="HTTP/1.1 200 OK
|
||||
Access-Control-Allow-Origin: *
|
||||
Access-Control-Allow-Credentials: true
|
||||
Access-Control-Allow-Methods: GET
|
||||
Server: Astroport.ONE
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
|
||||
"
|
||||
|
||||
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
||||
|
||||
# PREPARE HTTP RESPONSE (application/json)
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/
|
||||
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}/http
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}/http
|
||||
|
||||
# ------------------------------------------------------------------- #
|
||||
# GET/?dragons
|
||||
# ------------------------------------------------------------------- #
|
||||
## RUNNING UPLANET STATIONS GPS DETECTION
|
||||
rm ~/.zen/tmp/DRAGONS.json
|
||||
|
||||
if [[ ! -s ~/.zen/tmp/DRAGONS.json ]]; then
|
||||
|
||||
echo " ## cat ***/GPS.json"
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/GPS.json 2>/dev/null | jq -c '.[] + {ipfsnodeid: "'$IPFSNODEID'"}' > ~/.zen/tmp/${MOATS}/gps.grid
|
||||
cat ~/.zen/tmp/swarm/12D*/GPS.json 2>/dev/null | jq -c '.[] + {ipfsnodeid: "'$IPFSNODEID'"}' | sort -u >> ~/.zen/tmp/${MOATS}/gps.grid
|
||||
|
||||
cat ~/.zen/tmp/${MOATS}/gps.grid | jq -s '.' | sed -e 's/\[/[/' -e 's/\]/]/' -e 's/},{/},\n{/g' > ~/.zen/tmp/DRAGONS.json
|
||||
fi
|
||||
|
||||
#~ jq 'unique_by(.umap)' ~/.zen/tmp/DRAGONS.json > ~/.zen/tmp/DRAGONS_no_duplicates.json
|
||||
#~ mv ~/.zen/tmp/DRAGONS_no_duplicates.json ~/.zen/tmp/DRAGONS.json
|
||||
echo " ***** WELCOME DRAGONS =========== "
|
||||
cat ~/.zen/tmp/DRAGONS.json
|
||||
|
||||
### SEND RESPONSE ON PORT
|
||||
cat ~/.zen/tmp/DRAGONS.json >> ~/.zen/tmp/${MOATS}/http
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
rm -Rf ~/.zen/tmp/${MOATS} && echo "BLURP DRAGONS.json"
|
||||
) &
|
||||
|
||||
## TIMING
|
||||
end=`date +%s`
|
||||
echo "(DRAGONS) Operation time was "`expr $end - $start` seconds.
|
||||
exit 0
|
|
@ -87,40 +87,31 @@ fi
|
|||
###############################################################################
|
||||
if [[ ${QRCODE} == "station" ]]; then
|
||||
|
||||
## CHECK FOR ANY ALREADY RUNNING make_image_ipfs_index_carousel
|
||||
carouselrunning=$(ps axf --sort=+utime | grep -w 'make_image_ipfs_index_carousel' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
#~ # Keep 2nd try of the day
|
||||
#~ [[ ! -s ~/.zen/tmp/_ISTATION ]] \
|
||||
#~ && mv ~/.zen/tmp/ISTATION ~/.zen/tmp/_ISTATION \
|
||||
#~ || cp ~/.zen/tmp/_ISTATION ~/.zen/tmp/ISTATION
|
||||
|
||||
if [[ ! -s ~/.zen/tmp/ISTATION ]]; then
|
||||
if [[ $carouselrunning ]]; then
|
||||
ISTATION="/ipfs/QmVTHH8sTXEqRBsvcKo5jDo16rvp7Q7ERyHZP5vmWUxeS6" ## G1WorldCrafting.jpg
|
||||
else
|
||||
## GENERATE PLAYER G1 TO ZEN ACCOUNTING
|
||||
ISTATION=$($MY_PATH/../tools/make_image_ipfs_index_carousel.sh | tail -n 1)
|
||||
echo $ISTATION > ~/.zen/tmp/ISTATION ## STATION G1WALLET CAROUSEL
|
||||
fi
|
||||
else
|
||||
ISTATION=$(cat ~/.zen/tmp/ISTATION)
|
||||
fi
|
||||
|
||||
## LOG IPFSNODEID : IPCity + Wheater + more...
|
||||
${MY_PATH}/../tools/IPFSNODEID.weather.sh > ~/.zen/tmp/${IPFSNODEID}/weather.txt
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${ISTATION}'\" />" > ~/.zen/tmp/${IPFSNODEID}/_index.html
|
||||
|
||||
## SHOW ZenStation FRONT
|
||||
sed "s~_STATION_~${myIPFS}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~2L8vaYixCf97DMT8SistvQFeBj7vb6RQL7tvwyiv1XVH~${WORLDG1PUB}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://127.0.0.1:8080~${myIPFS}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
## SHOW G1PALPAY FRONT (IFRAME)
|
||||
sed "s~_STATION_~${myIPFSW}${ISTATION}/~g" $MY_PATH/../templates/ZenStation/index.html > ~/.zen/tmp/${MOATS}/index.htm
|
||||
[[ ! $isLAN ]] && sed -i "s~MENU~HOSTING~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://127.0.0.1:8080~${myIPFSW}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://127.0.0.1:33101~${myG1BILLET}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
sed -i "s~http://astroport.localhost:1234~${myASTROPORT}~g" ~/.zen/tmp/${MOATS}/index.htm
|
||||
|
||||
WSTATION="/ipfs/$(ipfs add -q ~/.zen/tmp/${MOATS}/index.htm)"
|
||||
echo $WSTATION > ~/.zen/tmp/WSTATION
|
||||
|
||||
end=`date +%s`
|
||||
echo "NEW WSTATION ${myIPFS}${WSTATION} Execution time was "`expr $end - $start` seconds.
|
||||
|
||||
##302 REDIRECT TO WSTATION IPFS
|
||||
sed "s~_TWLINK_~${myIPFS}${WSTATION}/~g" ${MY_PATH}/../templates/index.302 > ~/.zen/tmp/${MOATS}/index.redirect
|
||||
echo "NEW WSTATION ${myIPFSW}${WSTATION} Execution time was "`expr $end - $start` seconds.
|
||||
## SEND TO WSTATION PAGE
|
||||
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='"${myIPFSW}${WSTATION}"'" >> ~/.zen/tmp/${MOATS}/index.redirect
|
||||
(
|
||||
|
@ -166,7 +157,7 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
|
|||
|
||||
echo "COINScheck.sh ${G1PUB}"
|
||||
${MY_PATH}/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${G1PUB}.curcoin
|
||||
CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | xargs | cut -d '.' -f 1)
|
||||
CURCOINS=$(cat ~/.zen/tmp/${G1PUB}.curcoin | tail -n 1 | cut -d '.' -f 1)
|
||||
CURZEN=$(echo "($CURCOINS - 1) * 10" | bc | cut -d '.' -f 1)
|
||||
echo "= $CURCOINS G1 / $CURZEN ZEN"
|
||||
|
||||
|
@ -184,12 +175,12 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
|
|||
|
||||
if [[ ${APPNAME} == "pay" ]]; then
|
||||
|
||||
if [[ ${WHAT} != "" && ${G1DEST} != "" && ${CURCOINS} != "null" && ${CURCOINS} != "" && $(echo "${CURCOINS} > ${WHAT}" | bc) -eq 1 ]]; then
|
||||
if [[ ${WHAT} != "" && ${G1DEST} != "" && ${CURCOINS} != "null" && ${CURCOINS} != "" && ${CURCOINS} > ${WHAT} ]]; then
|
||||
## COMMAND PAYMENT MAX : 999.99
|
||||
if [[ ${WHAT} =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then
|
||||
|
||||
${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/secret.key "${WHAT}" "${G1DEST}" "ZEN:${MOATS}"
|
||||
echo "<h1>OK</h1><h2>PAYMENT SENT</h2>ZEN:${MOATS}" >> ~/.zen/tmp/${MOATS}/disco
|
||||
echo "<h1>OK</h1><h2>PAYMENT PROCESSING</h2>ZEN:${MOATS}" >> ~/.zen/tmp/${MOATS}/disco
|
||||
|
||||
else
|
||||
|
||||
|
@ -203,6 +194,11 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
|
|||
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
echo "<h2>ERROR - INVALID PIN - ERROR</h2>" >> ~/.zen/tmp/${MOATS}/disco
|
||||
cat ~/.zen/tmp/${MOATS}/disco.aes >> ~/.zen/tmp/${MOATS}/disco
|
||||
|
||||
fi
|
||||
|
||||
if [[ ${APPNAME} == "flipper" ]]; then
|
||||
|
@ -438,8 +434,8 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
|
|||
## REVEAL THE KEYS
|
||||
# G1VOEU & IPNS KEY
|
||||
[[ ${player} != "" ]] \
|
||||
&& ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/playersecret.ipfs "${player}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}" \
|
||||
&& ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/player.secret.key "${player}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}" \
|
||||
&& ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/playersecret.ipfs "${player}" "G1${VoeuName} ${PLAYERORIG1}" \
|
||||
&& ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/player.secret.key "${player}" "G1${VoeuName} ${PLAYERORIG1}" \
|
||||
&& G1VOEUPUB=$(cat ~/.zen/tmp/${MOATS}/player.secret.key | grep 'pub:' | cut -d ' ' -f 2)
|
||||
# INSTALL orikeyname IPNS KEY ON NODE
|
||||
IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 )
|
||||
|
@ -447,9 +443,9 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
|
|||
|
||||
## IS IT A TRANSFER ? MILGRAM G1MISSIVE
|
||||
[[ ${DESTMAIL} != "" ]] \
|
||||
&& echo "MILGRAM :: ${player} :: ${DESTMAIL}"
|
||||
#~ && DESTG1=$(${MY_PATH}/../tools/keygen "${DESTMAIL}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}") \
|
||||
#~ && ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/destsecret.ipfs "${DESTMAIL}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}"
|
||||
&& echo "MILGRAM :: ${player} :: ${DESTMAIL}" \
|
||||
#~ && DESTG1=$(${MY_PATH}/../tools/keygen "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}") \
|
||||
#~ && ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/destsecret.ipfs "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}"
|
||||
|
||||
# INSTALL orikeyname IPNS KEY ON NODE
|
||||
IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 )
|
||||
|
@ -480,7 +476,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
|
|||
if [[ ! -s ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt ]]; then
|
||||
HELLO="@PASS :: G1BILLET+ :: ${G1VOEUPUB} :: $(date) :: ${player} :: ${PLAYERORIG1}"
|
||||
echo "${HELLO}"
|
||||
avanla=$(ps axf --sort=+utime | grep -w 'ipfs cat /ipns/$G1VOEUNS' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
avanla=$(ps axf --sort=+utime | grep -w 'ipfs cat /ipns/$G1VOEUNS' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
[[ ! $avanla ]] \
|
||||
&& ( ipfs cat /ipns/$G1VOEUNS > ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt \
|
||||
&& [[ ! -s ~/.zen/tmp/${MOATS}/${PLAYERORIG1}.${VoeuName}.missive.txt ]] \
|
||||
|
@ -490,7 +486,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
|
|||
&& ipfs name publish -k ${player}_${VoeuName} /ipfs/${MILGRAM} &
|
||||
) &
|
||||
|
||||
echo "<br>PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS<bipfsr>" >> ~/.zen/tmp/${MOATS}/disco
|
||||
echo "<br>PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS<br>" >> ~/.zen/tmp/${MOATS}/disco
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}/disco | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "BLURP $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
|
||||
|
@ -516,8 +512,8 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
|
|||
echo "export ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${DESTMAIL} ASTROFEED=${FEEDNS}"
|
||||
|
||||
# Create Next G1 & IPNS KEY
|
||||
DESTG1PUB=$(${MY_PATH}/../tools/keygen"${DESTMAIL}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}")
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/newsecret.ipfs "${DESTMAIL}${UPLANETNAME}" "G1${VoeuName} ${PLAYERORIG1}${UPLANETNAME}"
|
||||
DESTG1PUB=$(${MY_PATH}/../tools/keygen"${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}")
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/newsecret.ipfs "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}"
|
||||
|
||||
orikeyname="${DESTMAIL}_${VoeuName}"
|
||||
# INSTALL NEXT IPNS KEY ON NODE
|
||||
|
@ -578,7 +574,7 @@ if [[ ${QRCODE:0:2} == "G1" && ${AND} == "tw" ]]; then
|
|||
|
||||
VOEU=${QRCODE:2} ## "G1G1Voeu" => "G1Voeu"
|
||||
# THIS is TW IPNS
|
||||
ASTROPATH=$(grep -r ${THIS} ~/.zen/game/players/*/ipfs/moa | tail -n 1 | xargs | cut -d ':' -f 1 | rev | cut -d '/' -f 2- | rev 2>/dev/null)
|
||||
ASTROPATH=$(grep -r ${THIS} ~/.zen/game/players/*/ipfs/moa | tail -n 1 | cut -d ':' -f 1 | rev | cut -d '/' -f 2- | rev 2>/dev/null)
|
||||
echo "ASTROPATH=${ASTROPATH}"
|
||||
|
||||
INDEX=${ASTROPATH}/index.html
|
||||
|
@ -608,7 +604,7 @@ if [[ ${QRCODE:0:2} == "G1" && ${AND} == "tw" ]]; then
|
|||
##############################################
|
||||
echo "## IPNS G1Voeu APP REDIRECT"
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp --render '.' "${MOATS}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
|
||||
cat ~/.zen/tmp/${MOATS}.g1voeu.json | jq -r 'map(select(.wish != null)) | .[].wish' > ~/.zen/tmp/${MOATS}.g1wishes.txt
|
||||
cat ~/.zen/tmp/${MOATS}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${MOATS}.g1wishes.txt
|
||||
cat ~/.zen/tmp/${MOATS}.g1wishes.txt
|
||||
while read WISH
|
||||
do
|
||||
|
@ -645,7 +641,6 @@ fi
|
|||
################################################################################
|
||||
## QRCODE = IPNS or G1PUB ? Can be ASTRONAUTENS or G1PUB format
|
||||
ZCHK="$(echo $THAT | cut -d ':' -f 2-)" # ChK or ZEN
|
||||
[[ $ZCHK == $THAT ]] && ZCHK=""
|
||||
QRCODE="${QRCODE%%:*}" ## TRIM :ChK
|
||||
################################################################################
|
||||
################################################################################
|
||||
|
@ -655,7 +650,7 @@ 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 "GLUPS /ipns/${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
|
||||
&& echo "PRULS /ipns/${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
|
||||
&& exit 0
|
||||
|
||||
## TEST G1 TYPE ( try g1_to_ipfs )
|
||||
|
@ -663,7 +658,7 @@ 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 "GLUPS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
|
||||
&& echo "PRULS INVALID ${QRCODE} $PORT" && rm -Rf ~/.zen/tmp/${MOATS} \
|
||||
&& exit 1
|
||||
################################################################################
|
||||
echo "############################################################################"
|
||||
|
@ -678,23 +673,29 @@ echo ">>> ${QRCODE} g1_to_ipfs $ASTROTOIPNS"
|
|||
&& ZEN=$(echo "($VISITORCOINS - 1) * 10" | bc | cut -d '.' -f 1) \
|
||||
|| ZEN="-10"
|
||||
|
||||
DISPLAY="<h1>$VISITORCOINS G1</h1>"
|
||||
DISPLAY="$VISITORCOINS G1"
|
||||
|
||||
## WALLET VIERGE
|
||||
###########################################
|
||||
if [[ $VISITORCOINS == "null" || ${ZEN} -lt 10 ]]; then
|
||||
|
||||
DISPLAY="$DISPLAY
|
||||
<h2>!! LOW ZEN WALLET ZEN=${ZEN}<h2>"
|
||||
echo "!! LOW ZEN WALLET ZEN=${ZEN}"
|
||||
|
||||
DISPLAY="$DISPLAY<h3>LOW ZEN WARNING</h3>
|
||||
PLEASE CHARGE... ${ZEN} ZEN"
|
||||
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
|
||||
(
|
||||
echo "$HTTPCORS ${QRCODE}:${ZCHK}:${DISPLAY}<h2><a href='$myUPLANET/g1gate/?pubkey="$QRCODE"'>SCAN WALLET</a><h2>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "$HTTPCORS <h2>${ZCHK}:${QRCODE}</h2><h1>${DISPLAY}</h1><h2><a href='$myUPLANET/g1gate/?pubkey=$G1PUB'>SCAN WALLET</a><h2>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
echo "BLURP ${DISPLAY} $PORT" && rm -Rf ~/.zen/tmp/${MOATS}
|
||||
) &
|
||||
|
||||
|
|
26
API/SALT.sh
|
@ -26,11 +26,7 @@ Content-Type: text/html; charset=UTF-8
|
|||
"
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/
|
||||
|
||||
[[ ! $APPNAME || $SALT == "pepper" ]] \
|
||||
&& echo "NO APPNAME - BAD APP - CONTINUE" \
|
||||
&& (echo "$HTTPCORS ERROR - BAD CREDENTIALS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& exit 1
|
||||
|
||||
[[ ! $APPNAME || $SALT == "pepper" ]] && echo "NO APPNAME - BAD APP - CONTINUE" && (echo "$HTTPCORS ERROR - BAD CREDENTIALS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
############################################################################
|
||||
# WRITING API # SALT # PEPPER # MAKING THE KEY EXIST #########
|
||||
################### KEY GEN ###################################
|
||||
|
@ -172,16 +168,17 @@ if [[ "$APPNAME" == "g1pub" ]]; then
|
|||
#~ echo "VISA.new : \"$SALT\" \"$PEPPER\" \"${EMAIL}\" \"$PSEUDO\" \"${WHAT}\"" > ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
${MY_PATH}/../RUNTIME/VISA.new.sh "$SALT" "$PEPPER" "${EMAIL}" "$PSEUDO" "${WHAT}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
|
||||
#~ ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG ZenCard creation" ## Send VISA.new log to EMAIL
|
||||
${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG ZenCard creation" ## Send VISA.new log to EMAIL
|
||||
|
||||
echo "ASTROID PIN=${PASS}, operate on all La♥Box Web3 ẐenStation (WWW : https://astroport.copylaradio.com)"
|
||||
## :: TRICK :: EXECUTE LAST VISA.new.sh output LINE : export above VARs
|
||||
echo "Le code de votre ASTROID est ${PASS}, scannez-le sur La♥Box ẐenStation (demo : https://astroport.copylaradio.com)" > ~/.zen/tmp/${MOATS}/intro.txt
|
||||
|
||||
## EXECUTE LAST LINE
|
||||
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt | tail -n 1)
|
||||
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
|
||||
|
||||
BILLETNAME=$(echo "$SALT" | sed 's/ /_/g')
|
||||
#~ mpack -a -s "La♥Box : ASTROID :+: TW :+: " -d ~/.zen/tmp/${MOATS}/intro.txt \
|
||||
#~ ~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg ${PLAYER}
|
||||
mpack -a -s "La♥Box : ASTROID :+: TW :+: " -d ~/.zen/tmp/${MOATS}/intro.txt \
|
||||
~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg ${PLAYER}
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $startvisa`
|
||||
|
@ -242,8 +239,8 @@ if [[ "$APPNAME" == "testcraft" ]]; then
|
|||
|
||||
## TODO : modify timeout if isLAN or NOT
|
||||
[[ $isLAN ]] && WAIT=3 || WAIT=12
|
||||
echo "1ST TRY : ipfs --timeout ${WAIT}s cat --progress=false /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}"
|
||||
ipfs --timeout ${WAIT}s cat --progress=false /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
|
||||
echo "1ST TRY : ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}"
|
||||
ipfs --timeout ${WAIT}s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${APPNAME}/${PLAYER}/${MOATS}.data.${WHAT}
|
||||
|
||||
echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
|
||||
|
||||
|
@ -500,10 +497,7 @@ fi
|
|||
|
||||
|
||||
## END RESPONDING
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect ]] \
|
||||
&& echo "$HTTPCORS PORT=$1 THAT=$2 AND=$3 THIS=$4 APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9 url=/user/$G1PUB" \
|
||||
> ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect ]] && echo "$HTTPCORS PORT=$1 THAT=$2 AND=$3 THIS=$4 APPNAME=$5 WHAT=$6 OBJ=$7 VAL=$8 MOATS=$9 url=/user/$G1PUB" > ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect
|
||||
cat ~/.zen/tmp/${MOATS}/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > ~/.zen/tmp/${MOATS}/${MOATS}.official.swallow &
|
||||
echo "HTTP 1.1 PROTOCOL DOCUMENT READY"
|
||||
echo "${MOATS} -----> PAGE AVAILABLE -----> http://${myHOST}:${PORT}"
|
||||
|
|
147
API/UPLANET.sh
|
@ -39,7 +39,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 | xargs | cut -d " " -f 1)
|
||||
alreadypublishing=$(ps axf --sort=+utime | grep -w 'ipfs name publish --key=' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||
if [[ ${alreadypublishing} ]]; then
|
||||
echo "$HTTPCORS ERROR - (╥☁╥ ) - IPFS ALREADY PUBLISHING RETRY LATER" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
exit 1
|
||||
|
@ -54,26 +54,71 @@ PLAYER=${THAT}
|
|||
|
||||
[[ ${AND} != "zlat" ]] \
|
||||
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
SALT=${THIS}
|
||||
|
||||
[[ ${SALT} == "0" ]] && SALT="0.00"
|
||||
input_number=${SALT}
|
||||
if [[ ! $input_number =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then
|
||||
(echo "$HTTPCORS ERROR - BAD LAT $LAT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
else
|
||||
# If input_number has one decimal digit, add a trailing zero
|
||||
if [[ ${input_number} =~ ^-?[0-9]+\.[0-9]$ ]]; then
|
||||
input_number="${input_number}0"
|
||||
elif [[ ${input_number} =~ ^-?[0-9]+$ ]]; then
|
||||
# If input_number is an integer, add ".00"
|
||||
input_number="${input_number}.00"
|
||||
fi
|
||||
|
||||
# Convert input_number to LAT with two decimal digits
|
||||
LAT="${input_number}"
|
||||
fi
|
||||
|
||||
PEPPER=${WHAT}
|
||||
|
||||
[[ ${APPNAME} != "zlon" ]] \
|
||||
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
ZLAT=${THIS}
|
||||
ZLON=${WHAT}
|
||||
LAT=$(makecoord ${ZLAT})
|
||||
LON=$(makecoord ${ZLON})
|
||||
[[ ${PEPPER} == "0" ]] && PEPPER="0.00"
|
||||
input_number=${PEPPER}
|
||||
if [[ ! $input_number =~ ^-?[0-9]{1,3}(\.[0-9]{1,2})?$ ]]; then
|
||||
(echo "$HTTPCORS ERROR - BAD LON $LON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
else
|
||||
# If input_number has one decimal digit, add a trailing zero
|
||||
if [[ ${input_number} =~ ^-?[0-9]+\.[0-9]$ ]]; then
|
||||
input_number="${input_number}0"
|
||||
elif [[ ${input_number} =~ ^-?[0-9]+$ ]]; then
|
||||
# If input_number is an integer, add ".00"
|
||||
input_number="${input_number}.00"
|
||||
fi
|
||||
|
||||
#~ ## RECEIVED VAL ## CAN BE USED TO SELECT TW TEMPLATE
|
||||
VAL="$(echo ${VAL} | detox --inline)" ## DETOX VAL
|
||||
# Convert input_number to LAT with two decimal digits
|
||||
LON="${input_number}"
|
||||
fi
|
||||
|
||||
# NOT RECEIVING PASS. WAS USED TO SECURE PLAYER UMAP KEY... (24s sectors strategy apply now)
|
||||
#~ PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7)
|
||||
#~ ## RECEIVED PASS ## CAN BE USED TO SELECT TW TEMPLATE
|
||||
#~ VAL="$(echo ${VAL} | detox --inline)" ## DETOX VAL
|
||||
#~ [[ ${OBJ} == "g1pub" && ${VAL} != "" ]] && PASS=${VAL}
|
||||
#~ echo "PASS for Umap $LAT $LON is $PASS"
|
||||
############################################
|
||||
#### TODO USE THIS PARAMETER TO SELECT TW TEMPLATE
|
||||
|
||||
### CHECK PLAYER EMAIL
|
||||
EMAIL="${PLAYER,,}" # lowercase
|
||||
|
||||
[[ ! ${EMAIL} ]] \
|
||||
&& (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR UPLANET LANDING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. \
|
||||
&& exit 0
|
||||
[[ ! ${EMAIL} ]] && (echo "$HTTPCORS ERROR - MISSING ${EMAIL} FOR UPLANET LANDING" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 0
|
||||
|
||||
################################ START WORKING WITH KEYS
|
||||
### SESSION "$LAT" "$LON" KEY
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/_ipns.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
|
||||
UMAPNS=$(ipfs key import ${MOATS} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/_ipns.priv)
|
||||
ipfs key rm ${MOATS} && echo "$LAT" "$LON" "IPNS key identified"
|
||||
###
|
||||
|
||||
REDIR="${myIPFS}/ipns/${UMAPNS}"
|
||||
echo "Umap : $REDIR"
|
||||
|
||||
## CHECK WHAT IS EMAIL
|
||||
if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
||||
|
@ -84,59 +129,65 @@ if [[ "${EMAIL}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
|
|||
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more
|
||||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
|
||||
## YES = OPEN TW
|
||||
[[ ${ASTROTW} ]] \
|
||||
&& (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${myIPFS}${ASTROTW}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& (echo "$HTTPCORS <meta http-equiv=\"refresh\" content=\"0; url='${ASTROTW}'\" />" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
|
||||
&& exit 0
|
||||
|
||||
else
|
||||
|
||||
echo "BAD EMAIL $EMAIL $LAT $LON"
|
||||
|
||||
### GET ENV FOR "$LAT" "$LON"
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
|
||||
REDIR="${myIPFS}${UMAPIPNS}"
|
||||
echo "Umap : $REDIR"
|
||||
|
||||
if [[ ${UMAPIPNS} != "/ipns/" ]]; then
|
||||
echo "$HTTPCORS <html>BAD EMAIL $EMAIL $LAT $LON <a href=${REDIR}> - OPEN UMAP LINK - </a></html>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
else
|
||||
echo "$HTTPCORS <html>BAD EMAIL $EMAIL ($LAT $LON)</html>" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
fi
|
||||
|
||||
# UPLANET #############################################
|
||||
## OCCUPY COMMON CRYPTO KEY CYBERSPACE
|
||||
## LAT="$LAT" LON="$LON"
|
||||
## SALT="$LAT" PEPPER="$LON"
|
||||
######################################################
|
||||
echo "UMAP = $LAT:$LON"
|
||||
echo "# GET UMAP ENV"
|
||||
${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}"
|
||||
echo "# CALCULATING UMAP G1PUB WALLET"
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/_cesium.key "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/_cesium.key | grep 'pub:' | cut -d ' ' -f 2)
|
||||
[[ ! ${G1PUB} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - KEYGEN COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
echo "UMAP G1PUB : ${G1PUB}"
|
||||
|
||||
echo "# CALCULATING UMAP IPNS ADDRESS"
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${G1PUB}
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${LAT}_${LON}
|
||||
|
||||
ipfs key rm ${G1PUB} > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/_ipns.priv 2>/dev/null
|
||||
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/_ipns.priv "${YESTERDATE}${UPLANETNAME}${LAT}" "${YESTERDATE}${UPLANETNAME}${LON}"
|
||||
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/_ipns.priv )
|
||||
|
||||
[[ ! ${UMAPNS} ]] && (echo "$HTTPCORS ERROR - (╥☁╥ ) - UMAPNS COMPUTATION DISFUNCTON" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1
|
||||
echo "UMAPNS : ${myIPFS}/ipns/${UMAPNS}"
|
||||
|
||||
## ALL TEST PASSED -> CREATE ZENCARD + ASTROID
|
||||
#~ choose salt pepper with variable words count
|
||||
PPASS=$(${MY_PATH}/../tools/diceware.sh $(( $(${MY_PATH}/../tools/getcoins_from_gratitude_box.sh) + 3 )) | xargs)
|
||||
NPASS=$(${MY_PATH}/../tools/diceware.sh $(( $(${MY_PATH}/../tools/getcoins_from_gratitude_box.sh) + 3 )) | xargs)
|
||||
NPASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-9) ## NOUVEAU PASS 8 CHIFFRES
|
||||
PPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2) ## STRONGER TW SECURITY "AlpH4nUm"
|
||||
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 "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "${VAL}" "${LAT}" "${LON}"
|
||||
echo VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}"
|
||||
##### (☉_☉ ) #######
|
||||
${MY_PATH}/../RUNTIME/VISA.new.sh "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "${VAL}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
${MY_PATH}/../RUNTIME/VISA.new.sh "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
|
||||
|
||||
## TO REMOVE : MONITOR
|
||||
${MY_PATH}/../tools/mailjet.sh "support@qo-op.com" ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt "LOG VISA.new $EMAIL" ## Send VISA.new log to EMAIL
|
||||
|
||||
end=`date +%s`
|
||||
echo "(TW REGISTRATION) Operation time was "`expr $end - $start` seconds.
|
||||
) &
|
||||
|
||||
|
||||
########################################
|
||||
## Calculating TW IPNS ADDRESS
|
||||
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${PPASS}" "${NPASS}")
|
||||
|
||||
IMGTW=$(${MY_PATH}/../API/AMZQR.sh '0' "${myIPFS}/ipns/${TWADD}" 'et' 'TV' | tail -n 1)
|
||||
|
||||
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${EMAIL}_${PPASS}_${DPASS}" "${NPASS}")
|
||||
|
||||
## HTTP nc ON PORT RESPONSE
|
||||
echo "$HTTPCORS
|
||||
|
@ -166,10 +217,17 @@ echo "$HTTPCORS
|
|||
</style>
|
||||
</head><body>
|
||||
<h1>UPlanet Registration</h1>
|
||||
${EMAIL} (⌐■_■)<br>
|
||||
<br>Check your mailbox ! Relevez votre boite mail !
|
||||
<hr>
|
||||
<h2><a target=\"_new\" href=\"${myIPFS}/ipns/${TWADD}\">TW5</a></h2>
|
||||
Your AstroID seeds are:<br>
|
||||
<br>
|
||||
<h2>${EMAIL}_${PPASS}_${DPASS}</h2>
|
||||
<h1>${NPASS}</h1>
|
||||
|
||||
Generating account...
|
||||
<br>Please check your mail box to get your ZenCard and PIN code.
|
||||
<br>
|
||||
---
|
||||
<br><a target=\"_new\" href=\"${myIPFS}/ipns/${TWADD}\">TW PORTATION</a>
|
||||
<br>in
|
||||
<h1><center><div id='countdown'></div></center></h1>
|
||||
<script>
|
||||
var timeLeft = 90;
|
||||
|
@ -187,12 +245,11 @@ function countdown() {
|
|||
}
|
||||
</script>
|
||||
---
|
||||
<br>( ⚆_⚆) TW5 MOBILE APP<br>
|
||||
<img src='${myIPFSGW}${IMGTW}'\>
|
||||
<br>CONSOLE<br>
|
||||
<br>
|
||||
( ⚆_⚆) <br>CONSOLE<br>
|
||||
$(cat ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt 2>/dev/null)
|
||||
<br>(☉_☉ ) use above credentials... utilisez les identiants ci-dessus<br>
|
||||
<br><br>${EMAIL} REGISTERED on UPlanet UMAP($LAT/$LON) : ${MOATS} : $(date)
|
||||
<br>(☉_☉ )<br>
|
||||
<br><br>${EMAIL} REGISTERED on UPlanet UMAP : $LAT/$LON : ${MOATS} : $(date)
|
||||
</body>
|
||||
</html>" > ~/.zen/tmp/${MOATS}/http.rep
|
||||
|
||||
|
|
156
API/ZONE.sh
|
@ -7,7 +7,8 @@
|
|||
## API: ZONE
|
||||
## Used by OSM2IPFS map_render.html & other UPlanet Client App
|
||||
# ?zone=DEG&ulat=LAT&ulon=LON
|
||||
## Search for TW numbers in received zone # >> return json
|
||||
## Search for TW numbers in received zone
|
||||
# = json
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
|
@ -41,118 +42,80 @@ function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
|
|||
|
||||
## RUNNING UPLANET LAT/LON TW DETECTION
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/
|
||||
# GET RECEPTION : zone=0.001&ulat=0.02&ulon=0.01
|
||||
DEG=${THAT}
|
||||
[[ -z $DEG ]] && DEG=1
|
||||
# DEG=$(echo "$DEG * 10" | bc -l )
|
||||
LAT=${THIS}
|
||||
[[ -z $LAT ]] && LAT=0.00
|
||||
LON=${WHAT}
|
||||
[[ -z $LON ]] && LON=0.00
|
||||
|
||||
# PREPARE HTTP RESPONSE (application/json)
|
||||
echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.http
|
||||
sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}.http
|
||||
|
||||
# ------------------------------------------------------------------- #
|
||||
# GET/?zone=0.001&ulat=0.02&ulon=0.01
|
||||
# ------------------------------------------------------------------- #
|
||||
LAT=$(makecoord $LAT)
|
||||
LON=$(makecoord $LON)
|
||||
|
||||
DEG="${THAT}"
|
||||
[[ -z ${DEG} ]] && DEG=1
|
||||
# DEG=$(echo "${DEG} * 10" | bc -l )
|
||||
|
||||
LAT="${THIS}"
|
||||
[[ -z $LAT ]] && LAT=0.00
|
||||
|
||||
LON="${WHAT}"
|
||||
[[ -z $LON ]] && LON=0.00
|
||||
|
||||
LAT=$(makecoord ${LAT})
|
||||
LON=$(makecoord ${LON})
|
||||
JSON="ZONE_${LAT}_${LON}_${DEG}.json"
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
|
||||
echo "UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS
|
||||
SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS
|
||||
REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS
|
||||
LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON"
|
||||
|
||||
## SECTOR LEVEL
|
||||
if [[ ${DEG} == "0.01" ]]; then
|
||||
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
SECTOR="_${SLAT}_${SLON}"
|
||||
echo "SECTOR = ${SECTOR}"
|
||||
ZONEINDEX=$SECTORIPNS
|
||||
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORNS | tail -n 1)
|
||||
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORNS | tail -n 1)
|
||||
ZONEG1PUB=$SECTORG1PUB
|
||||
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORG1PUB | tail -n 1)
|
||||
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}*_${SLON}*/_*_*/SECTORG1PUB | tail -n 1)
|
||||
LAT=${SLAT}
|
||||
LON=${SLON}
|
||||
JSON="ZONE${SECTOR}_${DEG}.json"
|
||||
|
||||
fi
|
||||
echo "REQUEST $LAT / $LON / $DEG"
|
||||
|
||||
## REGION & ABOVE LEVEL
|
||||
if [[ ${DEG} == "0.1" || ${DEG} == "1" ]]; then
|
||||
|
||||
RLAT="$(echo ${LAT} | cut -d '.' -f 1)"
|
||||
RLON="$(echo ${LON} | cut -d '.' -f 1)"
|
||||
REGION="_${RLAT}_${RLON}"
|
||||
echo "REGION = ${REGION}"
|
||||
ZONEINDEX=$REGIONIPNS
|
||||
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONNS | tail -n 1)
|
||||
[[ ! $ZONEINDEX ]] && ZONEINDEX="/ipns/"$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONNS | tail -n 1)
|
||||
ZONEG1PUB=$REGIONG1PUB
|
||||
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONG1PUB | tail -n 1)
|
||||
[[ ! $ZONEG1PUB ]] && ZONEG1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/_${RLAT}*_${RLON}*/_*_*/_*_*/REGIONG1PUB | tail -n 1)
|
||||
LAT=${RLAT}
|
||||
LON=${RLON}
|
||||
JSON="ZONE${REGION}_${DEG}.json"
|
||||
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
|
||||
|
||||
echo " JSON = ${JSON}"
|
||||
## SECTOR LEVEL
|
||||
if [[ $DEG == "0.01" ]]; then
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
SECTOR="_${SECLAT}_${SECLON}"
|
||||
echo "SECTOR = ${SECTOR}"
|
||||
ZONEG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
|
||||
ZONETW="/ipns/"$(${MY_PATH}/../tools/keygen -t ipfs "${YESTERDATE}${UPLANETNAME}${SECTOR}" "${YESTERDATE}${UPLANETNAME}${SECTOR}")
|
||||
|
||||
if [[ ! -s ~/.zen/tmp/${JSON} ]]; then
|
||||
fi
|
||||
|
||||
## UMAP LEVEL
|
||||
if [[ ${DEG} == "0.001" ]]; then
|
||||
if [[ $DEG == "0.001" ]]; then
|
||||
|
||||
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* 2>/dev/null | wc -l )
|
||||
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* 2>/dev/null | wc -l )
|
||||
swarmnum=$(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
|
||||
nodenum=$(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}*_${LON}*/TW/* 2>/dev/null | wc -l )
|
||||
totnum=$(( swarmnum + nodenum ))
|
||||
echo " ## UMAP _${LAT}_${LON} = ${totnum} PLAYERs"
|
||||
echo " ## UMAP _${LAT}*_${LON}* = ${totnum} PLAYERs"
|
||||
|
||||
UMAPNS=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TODATENS | tail -n 1)
|
||||
[[ ! $UMAPNS ]] && UMAPNS=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TODATENS | tail -n 1)
|
||||
G1PUB=$(cat ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/G1PUB | tail -n 1)
|
||||
[[ ! $G1PUB ]] && G1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/G1PUB | tail -n 1)
|
||||
|
||||
echo '{ "gridNumbers": [ {"lat": '${LAT}', "lon": '${LON}', "number": "(_'${LAT}'_'${LON}') = '${totnum}'", "ipns": "'${myIPFS}/ipns/${UMAPNS}/_index.html'" } ] }' \
|
||||
> ~/.zen/tmp/${MOATS}/http.grid
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/http.grid ~/.zen/tmp/${JSON}
|
||||
cat ~/.zen/tmp/${JSON} >> ~/.zen/tmp/${MOATS}.http
|
||||
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)
|
||||
|
||||
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 "(UMAP)_${LAT}_${LON} $UMAPNS Operation time was "`expr $end - $start` seconds.
|
||||
echo "(UMAP)_${LAT}_${LON} ${YESTERDATE} $UMAPNS Operation time was "`expr $end - $start` seconds.
|
||||
exit 0
|
||||
|
||||
fi
|
||||
|
||||
##############################################
|
||||
## SEARCH FOR UPLANET TW NUMBERS IN THAT ZONE
|
||||
echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}/http.grid
|
||||
## ALL OTHER DEG : SEARCH FOR UPLANET TW NUMBERS
|
||||
echo '{ "gridNumbers": [' >> ~/.zen/tmp/${MOATS}.http
|
||||
|
||||
for i in $(seq 0 9);
|
||||
do
|
||||
|
||||
ZLAT=$(echo "$LAT + ${DEG} * $i" | bc -l)
|
||||
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)
|
||||
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 )
|
||||
|
@ -160,35 +123,22 @@ if [[ ! -s ~/.zen/tmp/${JSON} ]]; then
|
|||
|
||||
[[ $totnum -gt 9 ]] && displaynum="X" || displaynum=$totnum
|
||||
|
||||
[[ $displaynum != "0" ]] && echo '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${displaynum}'", "ipns": "'${ZONEINDEX}'" }
|
||||
,' >> ~/.zen/tmp/${MOATS}/http.grid \
|
||||
&& echo "${DEG} :" '{"lat": '${ZLAT}', "lon": '${ZLON}', "number": "'${totnum}'", "ipns": "'${ZONEINDEX}'" }'
|
||||
[[ $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
|
||||
|
||||
[[ ! $(cat ~/.zen/tmp/${MOATS}/http.grid | tail -n 1 | grep 'gridNumbers' ) ]] \
|
||||
&& sed -i '$ d' ~/.zen/tmp/${MOATS}/http.grid ## REMOVE LAST ','
|
||||
sed -i '$ d' ~/.zen/tmp/${MOATS}.http ## REMOVE LAST ','
|
||||
|
||||
echo ']}' >> ~/.zen/tmp/${MOATS}/http.grid
|
||||
|
||||
echo "## ADD TO CACHE ~/.zen/tmp/${JSON}"
|
||||
cp ~/.zen/tmp/${MOATS}/http.grid ~/.zen/tmp/${JSON}
|
||||
|
||||
fi
|
||||
|
||||
cat ~/.zen/tmp/${JSON} | jq -c
|
||||
echo ']}' >> ~/.zen/tmp/${MOATS}.http
|
||||
|
||||
### SEND RESPONSE ON PORT
|
||||
cat ~/.zen/tmp/${JSON} >> ~/.zen/tmp/${MOATS}.http
|
||||
(
|
||||
cat ~/.zen/tmp/${MOATS}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/http.grid 2>/dev/null
|
||||
rm ~/.zen/tmp/${MOATS}.http && echo "BLURP ${JSON}"
|
||||
) &
|
||||
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.
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Usage: bash addfile.sh <filename> <mime_type> <file_type>
|
||||
|
||||
filename="$1"
|
||||
mime_type="$2"
|
||||
file_type="$3"
|
||||
|
||||
echo "Processing file: $filename"
|
||||
echo "MIME type: $mime_type"
|
||||
echo "File type: $file_type"
|
||||
|
||||
# Check file type and perform corresponding treatment
|
||||
case $file_type in
|
||||
"video")
|
||||
if [[ $mime_type == *"video"* ]]; then
|
||||
# Video processing logic
|
||||
echo "Video processing..."
|
||||
# Add more processing steps as needed
|
||||
else
|
||||
echo "Invalid file type for video processing"
|
||||
fi
|
||||
;;
|
||||
"audio")
|
||||
if [[ $mime_type == *"audio"* ]]; then
|
||||
# Audio processing logic
|
||||
echo "Audio processing..."
|
||||
# Add more processing steps as needed
|
||||
else
|
||||
echo "Invalid file type for audio processing"
|
||||
fi
|
||||
;;
|
||||
"text")
|
||||
if [[ $mime_type == *"text"* ]]; then
|
||||
# Text processing logic
|
||||
echo "Text processing..."
|
||||
# Add more processing steps as needed
|
||||
else
|
||||
echo "Invalid file type for text processing"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Unknown file type: $file_type"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "File processing complete."
|
|
@ -1,170 +0,0 @@
|
|||
#!/usr/bin/python3
|
||||
from fastapi import FastAPI, File, UploadFile, Form, HTTPException
|
||||
from fastapi.responses import HTMLResponse, JSONResponse
|
||||
import subprocess
|
||||
import os
|
||||
import magic
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
# HTML form for file upload
|
||||
html_form = """
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>File Upload and Processing</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Arial', sans-serif;
|
||||
background-color: #f5f5f5;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
#upload-container {
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
form {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
input[type="button"] {
|
||||
background-color: #4caf50;
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 10px 20px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
#result-container {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#loading-indicator {
|
||||
display: none;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="upload-container">
|
||||
<h1>File Upload and Processing</h1>
|
||||
<form id="upload-form" enctype="multipart/form-data" method="post">
|
||||
<input type="file" id="file" accept="video/*,audio/*,text/*" required>
|
||||
<br>
|
||||
<label for="convert_to">Choose file type:</label>
|
||||
<input type="radio" id="video" name="convert_to" value="video" checked>
|
||||
<label for="video">Video</label>
|
||||
<input type="radio" id="audio" name="convert_to" value="audio">
|
||||
<label for="audio">Audio</label>
|
||||
<input type="radio" id="text" name="convert_to" value="text">
|
||||
<label for="text">Text</label>
|
||||
<br>
|
||||
<input type="button" value="Upload" onclick="uploadFile()">
|
||||
<div id="loading-indicator">Loading...</div>
|
||||
</form>
|
||||
|
||||
<div id="result-container"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
async function uploadFile() {
|
||||
const fileInput = document.getElementById('file');
|
||||
const file = fileInput.files[0];
|
||||
const fileType = document.querySelector('input[name="convert_to"]:checked').value;
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
formData.append('convert_to', fileType);
|
||||
|
||||
// Show loading indicator
|
||||
const loadingIndicator = document.getElementById('loading-indicator');
|
||||
loadingIndicator.style.display = 'block';
|
||||
|
||||
try {
|
||||
const response = await fetch('/upload', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
document.getElementById('result-container').innerHTML = JSON.stringify(result, null, 2);
|
||||
} catch (error) {
|
||||
console.error('Error uploading file:', error);
|
||||
} finally {
|
||||
// Hide loading indicator after response or error
|
||||
loadingIndicator.style.display = 'none';
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
"""
|
||||
|
||||
@app.get("/")
|
||||
async def read_root():
|
||||
return HTMLResponse(content=html_form, status_code=200)
|
||||
|
||||
def get_mime_type(file: UploadFile):
|
||||
mime = magic.Magic()
|
||||
mime_type = mime.from_buffer(file.file.read(1024))
|
||||
return mime_type
|
||||
|
||||
@app.post("/upload")
|
||||
async def create_upload_file(file: UploadFile = File(...), convert_to: str = Form(...)):
|
||||
# Validate file size
|
||||
max_file_size = 100 * 1024 * 1024 # 100MB
|
||||
if file.file.__sizeof__() > max_file_size:
|
||||
raise HTTPException(status_code=400, detail="File size exceeds the limit of 100MB")
|
||||
|
||||
# Check the file type
|
||||
mime_type = get_mime_type(file)
|
||||
print(f"Detected MIME type: {mime_type}")
|
||||
|
||||
# Save the uploaded file to a temporary location
|
||||
with open(file.filename, "wb") as f:
|
||||
f.write(file.file.read())
|
||||
|
||||
# Continue with the processing logic
|
||||
# Run the post-treatment Bash script
|
||||
logs = subprocess.run(["bash", "addfile.sh", file.filename, mime_type, convert_to], capture_output=True, text=True).stdout
|
||||
|
||||
# Optionally, you can remove the temporary file
|
||||
os.remove(file.filename)
|
||||
|
||||
return JSONResponse(content={"filename": file.filename, "mime_type": mime_type, "convert_to": convert_to, "message": "File processed successfully.", "logs": logs})
|
||||
|
||||
if __name__ == "__main__":
|
||||
import uvicorn
|
||||
|
||||
uvicorn.run(app, host="0.0.0.0", port=10101)
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 1.2
|
||||
# Version: 0.4
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
|
@ -11,12 +11,11 @@ ME="${0##*/}"
|
|||
|
||||
echo "-----"
|
||||
echo "$ME RUNNING"
|
||||
#######################################################################
|
||||
# ASTROBOT SUBKEY PROGRAM : [G1]CopierYoutube "tag"
|
||||
# Ce script se déclenche si le tiddler "voeu" "CopierYoutube" a été formulé dans le TW du PLAYER
|
||||
# Il active l'extraction des liens (compatibles yt-dlp) trouvés dans les tiddlers portant le tag "CopierYoutube"
|
||||
# Les vidéos (mp4) ou audio (mp3) (+tag "CopierYoutube MP3") sont inscrites dans un json puis importés dans le TW.
|
||||
#######################################################################
|
||||
|
||||
# ASTROBOT FIRST SPECIFIC PROCESS
|
||||
# "Copier youtube" + (voeu) => CopierYoutube (G1Voeu G1CopierYoutube) = ASTROBOT copy Ŋ1 "(G1CopierYoutube)"
|
||||
|
||||
|
||||
INDEX="$1"
|
||||
[[ ! ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
|
||||
|
@ -48,17 +47,10 @@ tiddlywiki --load ${INDEX} \
|
|||
--render '.' 'CopierYoutube.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[CopierYoutube]]'
|
||||
|
||||
echo "DEBUG : cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r"
|
||||
## CHEK FOR MP3 TAG
|
||||
TAGS=()
|
||||
TAGS=($(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r .[].tags))
|
||||
echo "TAGS :${#TAGS[@]}: ${TAGS[@]}"
|
||||
isMP3=$(echo ${TAGS[@]} | grep -w "MP3")
|
||||
|
||||
## GET USER BROWSER for YOUTUBE COOKIES
|
||||
BZER=$(xdg-settings get default-web-browser | cut -d '.' -f 1 | cut -d '-' -f 1) ## GET cookies-from-browser
|
||||
[[ $BZER ]] && BROWSER="--cookies-from-browser $BZER " || BROWSER=""
|
||||
[[ ! $isLAN ]] && BROWSER=""
|
||||
|
||||
###################################################################
|
||||
## URL EXTRACTION & yt-dlp.cache.${PLAYER} upgrade
|
||||
for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.json | jq -r '.[].text' | grep 'http'); do
|
||||
|
@ -79,7 +71,7 @@ for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.js
|
|||
fi
|
||||
# ONE WEEK NEW SCAN
|
||||
if [[ $duree -ge 604800000 || ! -s ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER} ]]; then
|
||||
/usr/local/bin/yt-dlp $BROWSER --print "%(id)s&%(webpage_url)s" "${YURL}" 2>/dev/null >> ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER}
|
||||
/usr/local/bin/yt-dlp $BROWSER --print "%(id)s&%(webpage_url)s" "${YURL}" >> ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.cache.${PLAYER}
|
||||
sed -i "s~$lastrun~$MOATS~g" ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.command # UPDATE LASTRUN
|
||||
fi
|
||||
|
||||
|
@ -102,9 +94,6 @@ while read LINE;
|
|||
echo "_____ $LINE _____ $boucle"
|
||||
YID="$(echo "$LINE" | rev | cut -d '=' -f 1 | rev )"
|
||||
|
||||
#~ [[ $boucle -gt 50 ]] && break ## TODO SCAN FOR ABROAD SAME COPY DONE
|
||||
### MAKE BETTER THAN RANDOM !! CONNECT TO THE WARM...
|
||||
|
||||
###################################################################
|
||||
## Search for $YID.TW.json TIDDLER in local & MySwarm cache
|
||||
#~ echo "--- CACHE SEARCH FOR $YID ---"
|
||||
|
@ -132,7 +121,7 @@ while read LINE;
|
|||
|
||||
start=`date +%s`
|
||||
|
||||
echo ".... Downloading $TITLE ${isMP3}"
|
||||
echo ".... Downloading $TITLE.mp4"
|
||||
# https://github.com/yt-dlp/yt-dlp#format-selection-examples
|
||||
# SUBS ? --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
|
||||
# (bv*[height<=720][vcodec~='^((he|a)vc|h26[45])']+ba)
|
||||
|
@ -144,13 +133,15 @@ while read LINE;
|
|||
## EXTRA PARAM TO TRY
|
||||
# --write-subs --write-auto-subs --sub-langs "fr, en, en-orig" --embed-subs
|
||||
|
||||
if [[ ${isMP3} == "" ]]; then
|
||||
# copying video
|
||||
/usr/local/bin/yt-dlp -q -f "(bv*[ext=mp4][height<=720]+ba/b[height<=720])" \
|
||||
$BROWSER \
|
||||
--download-archive ${HOME}/.zen/.yt-dlp.list \
|
||||
-S res,ext:mp4:m4a --recode mp4 --no-mtime --embed-thumbnail --add-metadata \
|
||||
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" "${ZYURL}"
|
||||
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" ${ZYURL}
|
||||
|
||||
################################################################################
|
||||
### ADAPT TO TW RYTHM (DELAY COPY?)
|
||||
echo
|
||||
ZFILE="$TITLE.mp4"
|
||||
|
||||
############################################################################
|
||||
|
@ -179,34 +170,21 @@ while read LINE;
|
|||
continue
|
||||
fi
|
||||
|
||||
else
|
||||
# copying mp3
|
||||
echo "COPYING MP3 (!-q)"
|
||||
/usr/local/bin/yt-dlp -x --no-mtime --audio-format mp3 --embed-thumbnail --add-metadata \
|
||||
$BROWSER \
|
||||
--download-archive ${HOME}/.zen/.yt-dlp.mp3.list \
|
||||
-o "${HOME}/.zen/tmp/yt-dlp/$TITLE.%(ext)s" "${ZYURL}"
|
||||
|
||||
ZFILE="$TITLE.mp3"
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
####################################################
|
||||
[[ -s ~/.zen/tmp/yt-dlp/${ZFILE} ]] \
|
||||
&& echo "FOUND : ~/.zen/tmp/yt-dlp/${ZFILE}"
|
||||
|
||||
echo "FOUND : ~/.zen/tmp/yt-dlp/${ZFILE}"
|
||||
FILE_BSIZE=$(du -b "${HOME}/.zen/tmp/yt-dlp/${ZFILE}" | awk '{print $1}')
|
||||
[[ ! $FILE_BSIZE ]] && echo "SIZE ERROR" && continue
|
||||
|
||||
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
|
||||
echo "$boucle - ${ZFILE} - FILE SIZE = $FILE_SIZE ($FILE_BSIZE octets)"
|
||||
echo
|
||||
|
||||
espeak "GOOD! Video Number $boucle = $FILE_SIZE" > /dev/null 2>&1
|
||||
|
||||
|
||||
### CREATE GIF ANIM : make_video_gifanim_ipfs.sh
|
||||
[[ ${isMP3} == "" ]] \
|
||||
&& $(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "${HOME}/.zen/tmp/yt-dlp" "${ZFILE}" | tail -n 1) \
|
||||
&& echo "HOP=$HOP
|
||||
$(${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "${HOME}/.zen/tmp/yt-dlp" "${ZFILE}" | tail -n 1) ## export ANIMH
|
||||
echo "HOP=$HOP
|
||||
ANIMH=$ANIMH
|
||||
PROBETIME=$PROBETIME
|
||||
DURATION=$DURATION
|
||||
|
@ -230,29 +208,14 @@ while read LINE;
|
|||
CHANNEL=$(/usr/local/bin/yt-dlp $BROWSER --print "%(channel)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords
|
||||
PLAYLIST=$(/usr/local/bin/yt-dlp $BROWSER --print "%(playlist)s" "${ZYURL}" | sed -r 's/\<./\U&/g' | sed 's/ //g')
|
||||
EXTRATAG="$CHANNEL $PLAYLIST"
|
||||
|
||||
if [[ ${isMP3} == "" ]]; then
|
||||
## PREPARE VIDEO HTML5 CODE
|
||||
TEXT="<video controls width=100% poster='/ipfs/"${ANIMH}"'>
|
||||
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
|
||||
Your browser does not support the video element.
|
||||
</video>
|
||||
<br>
|
||||
{{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}})
|
||||
<br>
|
||||
<h1><a target='_blank' href='"${ZYURL}"'>Web2.0 Origin</a></h1>"
|
||||
|
||||
else
|
||||
TEXT="<audio controls>
|
||||
<source src='/ipfs/"${ILINK}"' type='"${MIME}"'>
|
||||
Your browser does not support the audio element.
|
||||
</audio>
|
||||
<br>
|
||||
{{!!filesize}} - {{!!duration}} sec. - vtratio(dur) = {{!!vtratio}} ({{!!dur}})
|
||||
<br>
|
||||
<h1><a target='_blank' href='"${ZYURL}"'>Web2.0 Origin</a></h1>"
|
||||
|
||||
fi
|
||||
<h1><a href='"${ZYURL}"'>"${TITLE}"</a></h1>"
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
|
@ -265,7 +228,6 @@ while read LINE;
|
|||
[[ ! isLAN ]] && TEXT="$TEXT <<hide tiddler-controls>>"
|
||||
echo $TEXT
|
||||
|
||||
mkdir -p ${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/${PLAYER} ## MISSING FOR FIRST RUN
|
||||
TIDDLER="${HOME}/.zen/tmp/${IPFSNODEID}/G1CopierYoutube/${PLAYER}/${YID}.TW.json"
|
||||
|
||||
echo '[
|
||||
|
@ -337,7 +299,6 @@ while read LINE;
|
|||
else
|
||||
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${IPFSNODEID}/newindex.html"
|
||||
echo "XXXXXXXXXXXXXXXXXXXXXXX"
|
||||
break
|
||||
fi
|
||||
|
||||
done < ~/.zen/tmp/${IPFSNODEID}/yt-dlp.cache.${PLAYER} # FINISH YID loop 1
|
||||
|
|
|
@ -168,26 +168,8 @@ while read TITRE; do
|
|||
TEXT="<h1>{{!!titre}} ({{!!year}})</h1><h2>{{!!sub}}</h2>
|
||||
{{!!desc}}<br>
|
||||
<a target='youtube' href='https://youtu.be/"${YID}"'>Bande Annonce</a>
|
||||
<br>
|
||||
<h3>Voir ce Film:</h3>
|
||||
<h4>Installez Cesium+</h4>
|
||||
<table><tr>
|
||||
<td>
|
||||
<img width='240' src='/ipfs/QmXExw6Sh4o4rSjBQjU9PGU7BCGwb1jybrKEeaZGUNRCRE'>
|
||||
</td><td>
|
||||
<img width='240' src='/ipfs/QmP3qwEnVX9zSsyKAwuH6nhDPfrRoMbAfszrtdkLGgo7LQ'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h4>Flashez, envoyez un don...</h4>
|
||||
<br>ce soir,<br>recevez le lien dans votre messagerie.
|
||||
</td><td>
|
||||
<img width='300' src='/ipfs/"${PV}"'>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
"
|
||||
<h3>Envoyez un don. Recevez le lien vers ce film dans votre messagerie Cesium+</h3>
|
||||
<img width='300' src='/ipfs/"${PV}"'>"
|
||||
|
||||
## MAKING TIDDLER
|
||||
echo "## Creation json tiddler ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json"
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.1
|
||||
# Version: 0.5
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
[[ ! $(which ollama) ]] \
|
||||
&& echo "STATION NEED TO RUN OLLAMA" \
|
||||
&& exit 1
|
||||
##
|
||||
# PAD COCODING : https://pad.p2p.legal/s/G1Monit
|
||||
# KODI SERVICE : Publish and Merge Friends Monit Movies into RSS Stream
|
||||
########################################################################
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
|
@ -16,14 +15,11 @@ ME="${0##*/}"
|
|||
|
||||
echo "$ME RUNNING"
|
||||
########################################################################
|
||||
## G1PalPAY incoming TX detected call
|
||||
## ./ASTROBOT/${CMD}.sh ${INDEX} ${PLAYER} ${MOATS} ${TXIPUBKEY} ${TH} ${TRAIL} ${TXIAMOUNT}
|
||||
## SCAN FOR PAYMENT HISTORY
|
||||
## BUILD python NetworkX script
|
||||
## SEND MESSAGE TO SOURCEG1PUB
|
||||
########################################################################
|
||||
## TH=/ipfs/CID (mp4 source file to transcript "voice 2 text" or other depending MODE)
|
||||
## TRAIL=MODE:G1PUB (what to do and where to send response)
|
||||
# default: mp4TOtxt and alert back to emiter
|
||||
########################################################################
|
||||
## THIS SCRIPT IS RUN WHEN A WALLET RECEIVED A TRANSACTION WITH COMMENT STARTING WITH N1GPU:
|
||||
## THIS SCRIPT IS RUN WHEN A WALLET RECEIVED A TRANSACTION WITH COMMENT STARTING WITH N1Monit
|
||||
########################################################################
|
||||
INDEX="$1"
|
||||
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
|
||||
|
@ -38,41 +34,44 @@ ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
|
|||
[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
|
||||
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
|
||||
[[ ! $G1PUB ]] && echo "FATAL ERROR - G1PUB ${PLAYER} VIDE. LOCAL PLAYER ONLY." && exit 1
|
||||
[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
|
||||
|
||||
# Extract tag=tube from TW
|
||||
MOATS="$3"
|
||||
[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
IPUBKEY="$4"
|
||||
[[ ! ${IPUBKEY} ]] && echo "ERROR 4 - MISSING COMMAND ISSUER !" && exit 1
|
||||
[[ ! ${IPUBKEY} ]] && echo "ERROR - MISSING COMMAND ISSUER !" && exit 1
|
||||
|
||||
TH="$5"
|
||||
[[ ! ${TH} ]] && echo "ERROR 5 - MISSING COMMAND TITLE HASH ADDRESS !" && exit 1
|
||||
[[ ! ${TH} ]] && echo "ERROR - MISSING COMMAND TITLE HASH ADDRESS !" && exit 1
|
||||
|
||||
TRAIL="$6" ## ::G1PUB
|
||||
MODE=$(echo ${TRAIL} | cut -d ':' -f 1)
|
||||
GIPUBKEY=$(echo ${TRAIL} | cut -d ':' -f 2-)
|
||||
[[ ! -z ${GIPUBKEY} ]] \
|
||||
&& DPUBKEY=${GIPUBKEY} \
|
||||
|| DPUBKEY=${IPUBKEY}
|
||||
|
||||
AMOUNT="$7"
|
||||
[[ ! ${AMOUNT} ]] && echo "ERROR 7 - AMOUNT=$7 7 " && exit 1
|
||||
|
||||
echo "${PLAYER} : ${IPUBKEY} ASK FOR PROCESSING ${TH}
|
||||
${TRAIL}"
|
||||
echo "${PLAYER} : ${IPUBKEY} SEEKING FOR ${TH}
|
||||
${ASTRONAUTENS} ${G1PUB} "
|
||||
|
||||
#~ ###################################################################
|
||||
#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
|
||||
#~ ###################################################################
|
||||
mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS}
|
||||
|
||||
## EXERCICE ### TODO ###
|
||||
## USE https://networkx.org/documentation/stable/tutorial.html#
|
||||
## EXTRACT HISTORY WITH jaklis
|
||||
## CREATE A PYTHON SCRIPT CREATING the 1st level of TX
|
||||
echo "import networkx as nx
|
||||
import matplotlib.pyplot as plt
|
||||
G = nx.Graph()
|
||||
...
|
||||
G.add_node(SRCPUB)
|
||||
G.add_node(DSTPUB)
|
||||
G.edges[SRCPUB, DSTPUB]['g1'] = AMOUNT
|
||||
...
|
||||
nx.draw(G, with_labels=True, font_weight='bold')
|
||||
plt.show()
|
||||
"
|
||||
## EXTEND N1Script WITH MORE FUNCTIONS... exemples ...
|
||||
## N1Vote: permet de pratiquer le Vote Quadratique
|
||||
## N1Conf: permet de signifier la Confiance
|
||||
## ...
|
||||
|
||||
RESPIPFS="/ipfs/"$(ipfs add -q "$RESP")
|
||||
|
||||
|
||||
## SENDING GCHANGE & CESIUM+ MESSAGE
|
||||
$MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n ${myDATA} send -d "${DPUBKEY}" -t "N1GPU" -m "${MESSAGE}"
|
||||
$MY_PATH/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey -n ${myCESIUM} send -d "${DPUBKEY}" -t "N1GPU" -m "${MESSAGE}"
|
||||
|
||||
exit 0
|
|
@ -1,320 +0,0 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
|
||||
## IT SEARCH FOR CURRENT TW ForkUPlanetZERO tag
|
||||
## IT MAKES $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key
|
||||
## IT CHECKS FOR SAME UPNAME WISH IN FRIENDS TW
|
||||
#~ echo "(✜‿‿✜) CURRENT Fork UPlanet
|
||||
#~ This program makes Player generate or join a private IPFS swarm
|
||||
#~ All friends with the same wish will share the SECRET
|
||||
#~ then any can activate a new ipfs daemon connected to that private ZONE
|
||||
## TIDDLER can contain parameters for UPlanet activation
|
||||
|
||||
echo "$ME RUNNING"
|
||||
|
||||
CURRENT=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
|
||||
|
||||
########################################################################
|
||||
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
|
||||
ORIGININDEX=${INDEX}
|
||||
|
||||
[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
|
||||
[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
|
||||
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
|
||||
[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
|
||||
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
|
||||
[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
|
||||
|
||||
[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
echo "${PLAYER} ${INDEX} ${ASTRONAUTENS} ${G1PUB} "
|
||||
mkdir -p $HOME/.zen/tmp/${MOATS}
|
||||
|
||||
PLAYERPUB=$(cat $HOME/.zen/game/players/${PLAYER}/secret.dunikey | grep pub | cut -d ' ' -f 2)
|
||||
[[ "${PLAYERPUB}" == "" ]] && echo "FATAL ERROR PLAYER KEY MISSING" && exit 1
|
||||
|
||||
###################################################################
|
||||
## tag[ForkUPlanetZERO] TW EXTRACTION
|
||||
###################################################################
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'G1ForkUPlanetZERO.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[ForkUPlanetZERO]]'
|
||||
|
||||
## KEEP ONLY ONE tag[ForkUPlanetZERO] WISH !
|
||||
echo "PREPARE INLINE JSON : cat ~/.zen/tmp/${MOATS}/G1ForkUPlanetZERO.json | jq -rc .[]"
|
||||
cat ~/.zen/tmp/${MOATS}/G1ForkUPlanetZERO.json \
|
||||
| jq -rc .[] | head -n 1 > ~/.zen/tmp/${MOATS}/ONEuplanet.json
|
||||
|
||||
JSONUPLANET="${HOME}/.zen/tmp/${MOATS}/ONEuplanet.json"
|
||||
|
||||
[[ ! -s ${JSONUPLANET} ]] \
|
||||
&& echo "NO tag[ForkUPlanetZERO] for $PLAYER" && exit 0
|
||||
|
||||
UPNAME=$(cat ${JSONUPLANET} | jq -r ".title") # What name is given ?
|
||||
[[ "${UPNAME}" == "null" || "${UPNAME}" == "" ]] \
|
||||
&& echo "NO FORK UPLANET NAME .title MISSING" && exit 1
|
||||
|
||||
HASH=$(cat ${JSONUPLANET} | jq -r ".hash") ## What text hash it has ?
|
||||
SECRET=$(cat ${JSONUPLANET} | jq -r ".secret") ## What is secret ?
|
||||
|
||||
CONTRACT=$(cat ${JSONUPLANET} | jq -r ".text") ## What contract is applying ?
|
||||
[[ "${CONTRACT}" == "null" || "${CONTRACT}" == "" ]] && CONTRACT="☼☼☼☼☼ floating points ☼☼☼☼☼"
|
||||
|
||||
AHAH=$(echo $CONTRACT | sha512sum | cut -d ' ' -f 1)
|
||||
echo "%%% CONTRACT HASH %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "$AHAH"
|
||||
echo "$HASH"
|
||||
[[ $AHAH != $HASH ]] && echo " - WARNING - CONTRACT CHANGED - WARNING -"
|
||||
|
||||
## CHECK EXISTING ${UPNAME}.swarm.key
|
||||
[[ ! -s $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key ]] \
|
||||
&& MSG=$MSG" ${PLAYER}/.ipfs/${UPNAME}.swarm.key NOT FOUND" && ERR="NO LOCAL KEY"
|
||||
|
||||
## CREATE 32 octets swarm.key ( maximum individual Fork : octal 8^32 = decimal 7,922816251×10^28 )
|
||||
echo -e '/key/swarm/psk/1.0.0/\n/base16/' > $HOME/.zen/tmp/${MOATS}/swarm.key
|
||||
head -c 32 /dev/urandom | od -t x1 -A none - | tr -d '\n ' >> $HOME/.zen/tmp/${MOATS}/swarm.key
|
||||
echo '' >> $HOME/.zen/tmp/${MOATS}/swarm.key
|
||||
|
||||
## EXTRACT CURRENT SECRET FROM JSONUPLANET
|
||||
# which is PLAYER pub encrypted base16 of swarm.key
|
||||
###################################################
|
||||
## check if we have a player slot with cyphered key
|
||||
IN16=$(cat ${JSONUPLANET} | jq -r '."${PLAYER}"')
|
||||
## secret is only decrypted by wish source player
|
||||
[[ ${IN16} == "" || ${IN16} == "null" ]] \
|
||||
&& IN16=$(cat ${JSONUPLANET} | jq -r ".secret") && echo "get IN16 from secret field"
|
||||
|
||||
if [[ ${IN16} == "" || ${IN16} == "null" ]]; then
|
||||
|
||||
echo "NO SECRET FOUND" \
|
||||
&& echo ">> 🔑 ${UPNAME} SECRET SWARM.KEY GENERATION 🔑" \
|
||||
&& cat $HOME/.zen/tmp/${MOATS}/swarm.key \
|
||||
&& cp $HOME/.zen/tmp/${MOATS}/swarm.key $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
|
||||
&& echo "------- KEY LOADED -----> ${PLAYER}/.ipfs/${UPNAME}.swarm.key"
|
||||
|
||||
## THIS IS A PRIMAL TIDDLER
|
||||
|
||||
else
|
||||
echo "VERIFICATION ${IN16}"
|
||||
## DEBASE16
|
||||
echo "${IN16}" | base16 -d \
|
||||
> ~/.zen/tmp/${MOATS}/swarmkey.crypted
|
||||
|
||||
echo ">> natools.py decrypt "
|
||||
## DECODING with PLAYER secret.dunikey
|
||||
${MY_PATH}/../tools/natools.py decrypt \
|
||||
-f pubsec \
|
||||
-k $HOME/.zen/game/players/${PLAYER}/secret.dunikey \
|
||||
-i ~/.zen/tmp/${MOATS}/swarmkey.crypted \
|
||||
-o ~/.zen/tmp/${MOATS}/swarmkey.decrypted
|
||||
|
||||
echo ">> comparing decrypted key"
|
||||
## CHEK KEY WITH ACTUAL ONE
|
||||
[[ $(diff ~/.zen/tmp/${MOATS}/swarmkey.decrypted $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key) ]] \
|
||||
&& echo "- 📸 WARNING 📸 - UPDATING ${UPNAME}.swarm.key ..." && ERR="TW SWARM CHANGED"
|
||||
|
||||
## UPDATE PLAYER LOCAL SWARMKEY FROM VALUE FOUND IN HIS OWN WISH TIDDLER !
|
||||
[[ -s ~/.zen/tmp/${MOATS}/swarmkey.decrypted ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/swarmkey.decrypted \
|
||||
$HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
|
||||
&& echo "PLAYER ${UPNAME}.swarm.key IS VALID" \
|
||||
|| { echo "ERROR PLAYER ${UPNAME}.swarm.key IS NOT VALID"; exit 1; }
|
||||
|
||||
fi
|
||||
|
||||
#~ (RE)CREATE SECRET
|
||||
${MY_PATH}/../tools/natools.py encrypt \
|
||||
-p ${PLAYERPUB} \
|
||||
-i $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
|
||||
-o $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc
|
||||
ENCODING=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc | base16)
|
||||
rm $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key.enc
|
||||
echo "==> base16 ${PLAYER} encrypted swarm.key is secret"
|
||||
#~ echo "${SECRET}"
|
||||
#~ echo "${ENCODING}"
|
||||
|
||||
#################################################################
|
||||
## MAKE KEY ENCODING FOR FRIENDS
|
||||
friends=($(ls ~/.zen/game/players/${PLAYER}/FRIENDS | grep "@" 2>/dev/null))
|
||||
for f in ${friends[@]};
|
||||
do
|
||||
## Extract FRIENDG1PUB from TW (Astroport Tiddler)
|
||||
ftw=${HOME}/.zen/game/players/${PLAYER}/FRIENDS/${f}/index.html
|
||||
[[ ! -s ${ftw} ]] && echo "FRIENDS/${f} : $(cat "$HOME/.zen/game/players/${PLAYER}/FRIENDS/${f}")" && continue
|
||||
|
||||
## Check if "f=PRESIDENT" in my friend "email" TW
|
||||
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} --render '.' "${f}_.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${f}"
|
||||
PRESIDENT=$(cat ~/.zen/tmp/${MOATS}/${f}_.json | jq -r .[].president)
|
||||
[[ ${PRESIDENT} != ${f} ]] && echo "${f} Astroport is run by ${PRESIDENT}... No fork..." && continue
|
||||
|
||||
## Check if Astroport is different from my node
|
||||
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} --render '.' "${f}_Astroport.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
FRIENDG1PUB=$(cat ~/.zen/tmp/${MOATS}/${f}_Astroport.json | jq -r .[].g1pub)
|
||||
echo "___________________"
|
||||
echo "$f : $FRIENDG1PUB"
|
||||
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/${f}_Astroport.json | jq -r .[].astroport)
|
||||
[[ ${ASTROPORT} != "/ipns/${IPFSNODEID}" ]] \
|
||||
&& echo "FOREIGN ASTROPORT=${ASTROPORT}" \
|
||||
&& foreign="YES" \
|
||||
&& ASTROPORTS=("${ASTROPORTS[@]}" "${ASTROPORT}")
|
||||
|
||||
if [[ ${FRIENDG1PUB} && ${FRIENDG1PUB} != "null" ]]; then
|
||||
|
||||
#~ CHECK IF player ALREADY IN JSON
|
||||
echo "cat ${JSONUPLANET} | jq -r '.\"${f}\"'"
|
||||
FRIENDIN=$(cat ${JSONUPLANET} | jq -r '."${f}"')
|
||||
[[ "${FRIENDIN}" != "null" && "${FRIENDIN}" != "" ]] \
|
||||
&& echo "${FRIENDIN} ALREADY IN FORK ${UPNAME} TIDDLER." \
|
||||
&& continue
|
||||
|
||||
echo "#~ Create FRIENDG1PUB encrypted version of swarm.key"
|
||||
${MY_PATH}/../tools/natools.py encrypt \
|
||||
-p ${FRIENDG1PUB} \
|
||||
-i $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key \
|
||||
-o $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc
|
||||
FENCODING=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc | base16)
|
||||
rm $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.${f}.swarm.key.enc
|
||||
|
||||
echo "## Addd email=crypt(swarmkey) field to ${JSONUPLANET} tiddler."
|
||||
cat ${JSONUPLANET} | jq '. | ."_f_" = "_FENCODING_"' > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& sed -i 's/_f_/'"$f"'/g; s/_FENCODING_/'"$FENCODING"'/g' ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
|
||||
else
|
||||
echo "- FATAL ERROR - Friend TW ${ftw} is broken !!"
|
||||
continue
|
||||
|
||||
fi
|
||||
|
||||
if [[ ${foreign} == "YES" ]]; then
|
||||
echo "## Check if friend have an ${UPNAME} tiddler and that secret is the same"
|
||||
## SEARCH FOR ${UPNAME} tiddler IN FRIEND TW
|
||||
tiddlywiki --load ${ftw} --output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' "${f}_${UPNAME}.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${UPNAME}"
|
||||
|
||||
## CONTROL SWARMKEY DECODING (must be equal)
|
||||
OUT16=$(cat ~/.zen/tmp/${MOATS}/${f}_${UPNAME}.json | jq -r '[]."'${PLAYER}'"')
|
||||
echo "${IN16}"
|
||||
echo "${OUT16}"
|
||||
|
||||
[[ ${IN16} == ${OUT16} ]] \
|
||||
&& echo "OK STATIONS +1 : TW sharing the same wish. " \
|
||||
&& OKSTATIONS=("${OKSTATIONS[@]}" "${ASTROPORT}") \
|
||||
|| echo "NO GOOD! TW not synchronized."
|
||||
|
||||
foreign=""
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
ZENSTATIONS=($(echo "${OKSTATIONS[@]}" | tr ' ' '\n' | sort -u)) ## REMOVE DUPLICATE
|
||||
echo "<<< My Friends are located in ${#ASTROPORTS[@]} ASTROPORT(s) : ${#ZENSTATIONS[@]} are OK >>>"
|
||||
|
||||
## IPFSNODEID IS FORKING TO NEW UPLANET
|
||||
if [[ ${#ZENSTATIONS[@]} -ge 3 ]]; then
|
||||
echo "UPlanet.ZERO /// ENTERING WARPING ZONE /// ${UPNAME} ACTIVATION"
|
||||
## HERE each PLAYER share the same wish
|
||||
# only secret field is "!=" in each, as it is self encoding key
|
||||
# we must find our email="The same" in each friends TW
|
||||
## CONTROL
|
||||
# round looking in friends TW... Can be done before...
|
||||
|
||||
## APPLY ?!
|
||||
##################################################
|
||||
# Let's engage Astroport.ONE code mutation...
|
||||
# tools/my.sh
|
||||
SECRETNAME=$(cat $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key | tail -n 1)
|
||||
echo "SECRETNAME=$SECRETNAME"
|
||||
|
||||
#######################################################################
|
||||
echo "# UPlanet Swarm Bootstrap Stations #
|
||||
# https://ipfs.${UPNAME} ipfs.${UPNAME}
|
||||
#################################################################
|
||||
" > ~/.zen/tmp/${MOATS}/new_straps.list
|
||||
|
||||
# Prepare "new_straps.list" from WAN only
|
||||
for station in ${ZENSTATIONS[@]}; do
|
||||
[[ ! -s ~/.zen/tmp/swarm/${station}/myIPFS.txt ]] \
|
||||
&& echo "Missing swarm/${station}/myIPFS.txt" \
|
||||
&& continue
|
||||
|
||||
bootnode=$(cat ~/.zen/tmp/swarm/${station}/myIPFS.txt)
|
||||
echo "${bootnode}"
|
||||
iptype=$(echo ${bootnode} | cut -d '/' -f 2)
|
||||
nodeip=$(echo ${bootnode} | cut -d '/' -f 3)
|
||||
isnodeipLAN=$(echo $nodeip | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")
|
||||
echo " ${iptype} address :: ${nodeip} (= ${isnodeipLAN})"
|
||||
[[ ${nodeip} == ${isnodeipLAN} ]] && echo "LAN NODE... no good for bootstrap" && continue
|
||||
|
||||
echo "### OK adding to new_straps.list"
|
||||
echo "${bootnode}" >> ~/.zen/tmp/${MOATS}/new_straps.list
|
||||
|
||||
done
|
||||
|
||||
## INTRODUCE NEW BOOSTRAP LIST
|
||||
cp ~/.zen/tmp/${MOATS}/new_straps.list ~/.zen/game/MY_boostrap_nodes.txt
|
||||
#######################################################################
|
||||
|
||||
# make G1PalPay refuse not from "UPlanet Master Key" primal TX
|
||||
# STABLE COIN : activate OpenCollective sync
|
||||
# and adapt 20H12.process.sh
|
||||
|
||||
## UPNAME = domain.tld
|
||||
# PACTHING Astroport.ONE code
|
||||
grep -rl --exclude-dir='.git*' 'copylaradio.com' ~/.zen | xargs sed -i "s~copylaradio.com~${UPNAME,,}~g"
|
||||
rm ~/.zen/game/myswarm_secret.dunikey
|
||||
# now we add key into ~/.ipfs/swarm.key
|
||||
#~ cp $HOME/.zen/game/players/${PLAYER}/.ipfs/${UPNAME}.swarm.key ~/.ipfs/swarm.key
|
||||
# it will make IPFSNODEID restarting in private mode
|
||||
|
||||
fi
|
||||
|
||||
## UPDATE JSONUPLANET
|
||||
cat ${JSONUPLANET} | jq '. | ."UPname" = "_UPNAME_"' > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& sed -i 's/_UPNAME_/'"$UPNAME"'/g' ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
cat ${JSONUPLANET} | jq '. | ."hash" = "_HASH_"' > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& sed -i 's/_HASH_/'"$AHAH"'/g' ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
cat ${JSONUPLANET} | jq '. | ."secret" = "_SECRET_"' > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& sed -i 's/_SECRET_/'"$ENCODING"'/g' ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
|
||||
jq '.[] + {created: $MOATS, modified: $MOATS}' --arg MOATS "$MOATS" "${JSONUPLANET}" > ~/.zen/tmp/${MOATS}/json.up \
|
||||
&& mv ~/.zen/tmp/${MOATS}/json.up ${JSONUPLANET}
|
||||
|
||||
|
||||
### PUT BACK IN TW
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import ${JSONUPLANET} "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/newindex.html ]]; then
|
||||
|
||||
[[ $(diff ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} ) ]] \
|
||||
&& mv ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} \
|
||||
&& echo "===> Mise à jour ${INDEX}"
|
||||
|
||||
cat ${JSONUPLANET} | jq
|
||||
|
||||
else
|
||||
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${MOATS}/newindex.html"
|
||||
echo "XXXXXXXXXXXXXXXXXXXXXXX"
|
||||
fi
|
||||
|
||||
rm -Rf ~/.zen/tmp/${MOATS}
|
||||
|
||||
exit 0
|
|
@ -54,9 +54,9 @@ for VUID in $(cat ~/.zen/bunkerbox/crowd.json | jq -r '.posts | .[] | .video.id'
|
|||
|
||||
echo ">>>>>>>>>>>>>>>> Downloading VIDEO"
|
||||
# Choose 360p or 480p or 240p
|
||||
VSIZE=360 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.')
|
||||
[[ "$VIDEOSRC" == "" ]] && VSIZE=480 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.')
|
||||
[[ "$VIDEOSRC" == "" ]] && VSIZE=240 &&VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | xargs | cut -f 1 -d '.')
|
||||
VSIZE=360 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
|
||||
[[ "$VIDEOSRC" == "" ]] && VSIZE=480 && VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
|
||||
[[ "$VIDEOSRC" == "" ]] && VSIZE=240 &&VIDEOHEAD=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep -B1 ${VSIZE}p | head -n 1) && VIDEOSRC=$(cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 | grep ${VSIZE}p | tail -n 1 | cut -f 1 -d '.')
|
||||
VTHUMB="$(cat ~/.zen/bunkerbox/$VUID/$VUID.json | jq -r --arg VSIZE "$VSIZE" '.video.thumbnails[] | select(.height == $VSIZE) | .url')"
|
||||
|
||||
echo ">>>>>>>>>>>>>>>> Downloading Video $VSIZE Thumbnail"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# UPlanet Swarm Bootstrap Stations # Adapt for your domain #
|
||||
# CONTAINS Address of 1st Bootstrap Stations (24/24 Public IP) - DO NOT EDIT MANUALY -
|
||||
# https://ipfs.copylaradio.com ipfs.copylaradio.com
|
||||
#################################################################
|
||||
# astroport.libra.copylaradio.com
|
||||
|
@ -7,6 +7,9 @@
|
|||
# scorpio.copylaradio.com
|
||||
/dnsaddr/scorpio.copylaradio.com/p2p/12D3KooWS8EiLNay8qVnFaULpxW1X9sGZZz4wV8E6E3QEwCRktry
|
||||
|
||||
# astroport.sonic.copylaradio.com
|
||||
# /ip4/161.97.174.60/tcp/4001/p2p/12D3KooWJnzYzJBtruXZwUQJriF1ePtDQCUQp4aNBV5FjpYVdfhc
|
||||
|
||||
#################################################################
|
||||
###### WISHING TO ADD YOUR NODE TO OFFICIAL ASTROPORT BOOSTRAP LIST ?
|
||||
###### ===> CONTACT support@qo-op.com
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
## SSH PUBLIC KEYS
|
||||
## SEEDS OF THE DRAGONS WOT
|
||||
## https://pad.p2p.legal/keygen
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEtg3SlRxtzsQnsBSeU83W0tvUyBTUvOU5lhjlbZVPCZ support@qo-op.com
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILTzTegcBD3WwIyTwT3kIh6jGqyLZzEzXhcuF6IhAjlc
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHJBG6lim4ZmSmpU+GbOKJXO9arfRCP5TdKlhGa4CLJp
|
|
@ -1,48 +0,0 @@
|
|||
To use `natools` for message encryption (to destination) and signature (from sender), you would typically follow these steps:
|
||||
|
||||
### 1. Generate Key Pairs:
|
||||
- Both the sender and the recipient need to generate their key pairs (public and private keys). You can use the `natools` script to generate keys.
|
||||
|
||||
```bash
|
||||
# Sender generate keys
|
||||
python3 natools.py privkey -k ~/.zen/game/sender_secret.dunikey -f cred
|
||||
python3 natools.py pubkey -k ~/.zen/game/sender_secret.dunikey -o sender_public_key
|
||||
|
||||
# Recipient generates keys
|
||||
python3 natools.py privkey -k ~/.zen/game/myswarm_secret.dunikey -f cred
|
||||
python3 natools.py pubkey -k ~/.zen/game/myswarm_secret.dunikey -o recipient_public_key
|
||||
```
|
||||
|
||||
### 2. Encrypt the Message:
|
||||
- The sender uses the recipient's public key to encrypt the message.
|
||||
|
||||
```bash
|
||||
python3 natools.py encrypt -i plaintext.txt -k recipient_public_key -o encrypted_message.bin
|
||||
```
|
||||
|
||||
### 3. Sign the Message:
|
||||
- The sender signs the original message using their private key.
|
||||
|
||||
```bash
|
||||
python3 natools.py sign -i plaintext.txt -k sender_private_key -o signature.bin
|
||||
```
|
||||
|
||||
### 4. Verify the Signature:
|
||||
- The recipient uses the sender's public key to verify the signature.
|
||||
|
||||
```bash
|
||||
python3 natools.py verify -i plaintext.txt -p sender_public_key
|
||||
```
|
||||
|
||||
- The script will output "Signature OK!" if the verification is successful.
|
||||
|
||||
### 5. Decrypt the Message:
|
||||
- The recipient uses their private key to decrypt the message.
|
||||
|
||||
```bash
|
||||
python3 natools.py decrypt -i encrypted_message.bin -k recipient_private_key -o decrypted_message.txt
|
||||
```
|
||||
|
||||
Now you have successfully performed message encryption to the destination and signature from the sender using the `natools` script. Adjust the file paths and content as needed for your specific use case.
|
||||
|
||||
Note: Ensure that both sender and recipient securely store their private keys. Public keys can be shared openly. The encrypted message, signature, and decrypted message are intermediate files used for illustration; adjust as needed in your application.
|
|
@ -123,7 +123,7 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEtg3SlRxtzsQnsBSeU83W0tvUyBTUvOU5lhjlbZVPCZ
|
|||
* “keygen” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/tools/keygen
|
||||
* “natools” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/tools/natools.py
|
||||
* “jaklis” https://git.p2p.legal/axiom-team/jaklis
|
||||
* “ipfs” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/install.kubo_v0.20.0_linux.sh
|
||||
* “ipfs” https://git.p2p.legal/STI/Astroport.ONE/src/branch/master/kubo_v0.20.0_linux.install.sh
|
||||
|
||||
## ASTROPORT CREW GILET https://astroport.myspreadshop.fr/create?product=a68ad31e-d554-4c75-821d-97b00d6ad13f&view=2
|
||||
|
96
README.md
|
@ -2,10 +2,10 @@
|
|||
|
||||
[Astroport DEV Journal](https://pad.p2p.legal/s/AstroportDEVJournal#)
|
||||
|
||||
**Embark on a Cosmic Journey with AstroID & ZenCard System and Astroport.ONE**
|
||||
**Embark on a Cosmic Journey with ZenCard Payment System and Astroport.ONE**
|
||||
|
||||
Are you weary of the constraints of traditional payment systems and concerned about the reliability
|
||||
of your distributed storage solutions? Look no further! Our revolutionary ZenCard QRCode based Payment System
|
||||
of your distributed storage solutions? Look no further! Our revolutionary ZenCard Payment System
|
||||
and Astroport.ONE v1.0 seamlessly blend cutting-edge blockchain technology with interplanetary storage,
|
||||
offering you a commission-free and secure solution.
|
||||
|
||||
|
@ -19,6 +19,19 @@ the planet is sliced into 0.01° segments, ensuring locally registered Tiddlers
|
|||
As a network engineer and system administrator committed to the Common Good, join us in constructing
|
||||
Astroport.ONE and shaping the future of secure and reliable distributed storage.
|
||||
|
||||
**ZenCard Payment System: Empowering Transactions, Empowering Dreams**
|
||||
|
||||
As blockchain makers, our ZenCard Payment System is not merely a crypto wallet; it's a game-changing payment card and terminal solution.
|
||||
Our controlled coin-emitting blockchain transfers 1 coin to your ZenCard per fiat money unit saved in the fiscal host.
|
||||
This unique approach makes blockchain accessible to everyone.
|
||||
|
||||
Become a donor and a shareholder, receiving Coins equivalent to the Euros paid. Achieve a stable coin state of "1=1" through seamless transactions
|
||||
with a Host capable of sending and receiving Euros to users with zero fees, facilitated by PayPal integration.
|
||||
|
||||
Activate your account on UPlanet, make donations to https://opencollective.com/made-in-zen, and receive encrypted wallets via email—printed
|
||||
in QRCode format for added security. Step into a future where financial transactions are commission-free,
|
||||
and data is securely stored across the cosmos.
|
||||
|
||||
**Station Extra-Terrestre Astroport.ONE: Where Innovation Meets Tranquility**
|
||||
|
||||
In the midst of this technological revolution, discover the Station Extra-Terrestre Astroport.ONE.
|
||||
|
@ -60,21 +73,43 @@ At this point, if it exists "ASTROBOT/G1Tag.sh" program will publish the data re
|
|||
|
||||
# INSTALLATION (Linux Mint / Ubuntu / DEBIAN)
|
||||
|
||||
Tested on "Linux Mint" (Debian like distro compatible), the **hacker way for using & buidling new blockchain services** ...
|
||||
There is 2 methods one for server and one for Linux Mint desktop
|
||||
|
||||
INSTALL COMMAND
|
||||
## SERVER : Using DOCKER (and MyOS)
|
||||
|
||||
the easiest way to automaticaly deploy and host Astroport.ONE services
|
||||
|
||||
```
|
||||
# install minimal requirements
|
||||
sudo apt install git docker make
|
||||
|
||||
# clone Astroport.ONE repo
|
||||
git clone https://github.com/papiche/Astroport.ONE.git
|
||||
|
||||
cd Astroport.ONE
|
||||
make
|
||||
make install
|
||||
|
||||
```
|
||||
If your computer is running 24/24, you can join our "Boostrap list" & officially become a [TW UPlanet hoster](https://talk.tiddlywiki.org/t/uplanet-a-planet-full-of-tws/8193?u=papiche)
|
||||
|
||||
> DOCKER MODE NOT READY TO USE !! FOLLOW AND ADAPT NEXT STEP
|
||||
|
||||
## DESKTOP : Using install.sh script
|
||||
|
||||
Tested on "Linux Mint" (Debian like distro compatible), the **hacker way for using & buidling new blockchain services** ...
|
||||
|
||||
```
|
||||
# install on system wide
|
||||
# SOURCE GIT.P2P.LEGAL
|
||||
bash <(wget -qO- https://git.p2p.legal/qo-op/Astroport.ONE/raw/branch/master/install.sh)
|
||||
|
||||
# SOURCE GITHUB
|
||||
bash <(wget -qO- https://raw.githubusercontent.com/papiche/Astroport.ONE/master/install.sh)
|
||||
|
||||
```
|
||||
|
||||
> TODO: MORE MODULAR INSTALL.
|
||||
> CREATE adventure explaining it
|
||||
|
||||
## DRAGONS WOT
|
||||
|
||||
Once you install Astroport.ONE...
|
||||
> PLEASE REPORT ANY ISSUES
|
||||
|
||||
If all has gone well, you should find these processes running...
|
||||
|
||||
|
@ -91,12 +126,7 @@ If all has gone well, you should find these processes running...
|
|||
|
||||
```
|
||||
|
||||
> Become Official REGIONAL Station
|
||||
> - follow "PGP/SSH/IPFSNODEID" linking procedure -
|
||||
> https://pad.p2p.legal/keygen
|
||||
|
||||
|
||||
# DESKTOP
|
||||
# LAUNCH
|
||||
|
||||
After installation, you should have 3 new shortcuts on your desktop
|
||||
|
||||
|
@ -104,10 +134,6 @@ After installation, you should have 3 new shortcuts on your desktop
|
|||
* REC" allows you to save your files on IPFS and publish their Capusle in your TW.
|
||||
* G1BILLET" lets you create ZenCards and other useful QRCodes
|
||||
|
||||
NB : If you use "Nemo" as file manager. You can "ipfs add" any file (with no space in file name) by right click it.
|
||||
|
||||
> TODO : detect OS and FILE MANAGER to adapt desktop linking and right clic action
|
||||
|
||||
## How to manage your "Astroport"!
|
||||
|
||||
You need to create a "PLAYER".
|
||||
|
@ -118,9 +144,8 @@ It is defined by email, salt, pepper, lat, lon and PASS
|
|||
```
|
||||
Browse available functions
|
||||
|
||||
A Station can host multiple "PLAYERs and TiddlyWikis".
|
||||
A Station can host multiple "PLAYER and its TiddlyWiki".
|
||||
|
||||
---
|
||||
|
||||
# "BASH API" : "♥BOX"
|
||||
## http://astroport.localhost:1234
|
||||
|
@ -331,9 +356,7 @@ GET /?player=${PLAYER}&moa=json&tag=G1CopierYoutube
|
|||
> CAN BE EXTENDED
|
||||
|
||||
## ➤ AMZQR : Create a QRCode with "amzqr"
|
||||
```http
|
||||
GET /?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}
|
||||
```
|
||||
### ```/?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}```
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| :-------- | :------- | :-------------------------------- |
|
||||
|
@ -343,21 +366,19 @@ GET /?amzqr=${URLENCODEDSTRING}&logo=${IMAGE}
|
|||
check available "logo.png" in [./images](./images)
|
||||
|
||||
## ➤ UPLANET : Create Umap, AstroID & ZenCard for PLAYER (email)
|
||||
```http
|
||||
GET /?uplanet=${PLAYER}&zlat=${LAT}&zlon=${LON}&g1pub=${PASS}
|
||||
```
|
||||
### ```/?uplanet=${PLAYER}&salt=${LAT}&pepper=${LON}&g1pub=${PASS}```
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| :-------- | :------- | :-------------------------------- |
|
||||
| `uplanet` | `email` | **Required** Your EMAIL token |
|
||||
| `zlat` | `decimal` | **Required** LATITUDE with 2 decimals digits |
|
||||
| `zlon` | `decimal` | **Required** LONGITUDE with 2 decimals digits |
|
||||
| `salt` | `decimal` | **Required** LATITUDE with 2 decimals digits |
|
||||
| `pepper` | `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.
|
||||
|
||||
* [UPlanet Entrance](https://qo-op.com)
|
||||
UPlanet Entrance : https://qo-op.com
|
||||
|
||||
### ➤ QRCODE (API SandBox)
|
||||
```http
|
||||
|
@ -477,13 +498,12 @@ http://localhost:12345 renvoi un json
|
|||
| created | date de creation du document |
|
||||
| hostname | nom de la station |
|
||||
| myIP | adresse IP de la station |
|
||||
| ipfsnodeid | Clef publique, balise de la station |
|
||||
| ipfsnodeid | date de creation du document |
|
||||
| astroport | Lien vers l'API de la station |
|
||||
| g1station | Lien vers la carte PLAYER de la Station |
|
||||
| g1swarm | Lien vers la carte des cartes des Stations de l'essaim |
|
||||
|
||||
Afin de propager la carte chaque station lors de son raffraichissement de cache
|
||||
envoi aux Boostrap une requête pour upload (```/ipns/${IPFSNODEID}```)
|
||||
Afin de propager la carte chaque Stations lors de son raffraichissement de cache demande aux Boostrap de la récupérer
|
||||
```
|
||||
STATION MAP UPSYNC : http://$nodeip:12345/?${GNODEID}=${IPFSNODEID}
|
||||
```
|
||||
|
@ -491,7 +511,7 @@ STATION MAP UPSYNC : http://$nodeip:12345/?${GNODEID}=${IPFSNODEID}
|
|||
|
||||
# 20H12
|
||||
|
||||
Chaque jour, les ASTROBOTs captent les :star: (tiddler 'email') de leurs PLAYERs puis exécutent le protocole de synchronisation Ŋ1
|
||||
Chaque jour, les ASTROBOTs captent les :star: de leurs PLAYERs puis exécutent le protocole de synchronisation Ŋ1
|
||||
|
||||
[20H12.sh](/qo-op/Astroport.ONE/src/branch/master/20h12.sh)
|
||||
|
||||
|
@ -542,10 +562,10 @@ https://ipfs.copylaradio.com/ipfs/QmUtGpGeMZvwp47ftqebVmoFWCmvroy5wEtWsKvWvDWJpR
|
|||
This "digital art" structure is a selection of some of the most valuable Free & OpenSource Software I ever had in my hand.
|
||||
Credits is going to all the kindness and care provided to make valuable and secure software available for all
|
||||
|
||||
Do you know [G1](https://monnaie-libre.fr) ? The best crypto coin you could ever dream about...
|
||||
|
||||
Thanks for contributions on [Swarm BUDGET](https://opencollective.com/monnaie-libre#category-BUDGET)
|
||||
Did you ever dring a beer bought in G1 ?
|
||||
|
||||
You can pay me a beer or more by contributing to our OpenCollective
|
||||
https://opencollective.com/monnaie-libre#category-ABOUT
|
||||
|
||||
## IPFS Ecosystem Directory Submission Form
|
||||
https://airtable.com/appLWiIrg9SQaEtEq/shrjwvk9pAeAk0Ci7
|
||||
|
|
|
@ -1,141 +0,0 @@
|
|||
#!/bin/bash
|
||||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.2
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
# Activate SUPPORT MODE: open ssh over IPFS
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "$MY_PATH/../tools/my.sh"
|
||||
########################################################################
|
||||
YOU=$(myIpfsApi) || er+=" ipfs daemon not running"
|
||||
[[ "$YOU" == "" || "${IPFSNODEID}" == "" ]] && echo "ERROR : $er " && exit 1
|
||||
########################################################################
|
||||
## THIS SCRIPT COPY BOOSTRAP PUBKEY
|
||||
### AND OPEN IPFS P2P SSH FORWARD ON CHANNEL
|
||||
# Make Station publish SSH port on "/x/ssh-$(IPFSNODEID)"
|
||||
########################################################################
|
||||
## use STOP or OFF to finish forwarding
|
||||
|
||||
PARAM="$1"
|
||||
if [[ "${PARAM,,}" == "off" || "${PARAM,,}" == "stop" ]]; then
|
||||
ipfs p2p close --all
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh 2>/dev/null
|
||||
rm ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub 2>/dev/null
|
||||
echo "STOP" && exit 0
|
||||
fi
|
||||
|
||||
############################################
|
||||
## DISTRIBUTE DRAGON SSH WOT SEED
|
||||
# A_boostrap_ssh.txt
|
||||
############################################
|
||||
while IFS= read -r line
|
||||
do
|
||||
LINE=$(echo "$line" | grep "ssh-ed25519" | grep -Ev "#") # Remove # & not ssh-ed25519
|
||||
[[ ! ${LINE} ]] && continue
|
||||
if [[ ! $(cat ~/.ssh/authorized_keys | grep "${LINE}") ]]
|
||||
then
|
||||
echo "# ADDING ${LINE} to ~/.ssh/authorized_keys"
|
||||
mkdir -p ~/.ssh && echo "${LINE}" >> ~/.ssh/authorized_keys
|
||||
else
|
||||
echo "TRUSTING ${LINE}"
|
||||
fi
|
||||
done < ${MY_PATH}/../A_boostrap_ssh.txt
|
||||
|
||||
############################################
|
||||
## PUBLISH SSH PUBKEY OVER IPFS
|
||||
## KITTY ssh-keygen style
|
||||
[[ -s ~/.ssh/id_ed25519.pub ]] && cp ~/.ssh/id_ed25519.pub ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub
|
||||
## DRAGONz PGP/SSH style (https://pad.p2p.legal/keygen)
|
||||
gpg --export-ssh-key $(cat ~/.zen/game/players/.current/.player) 2>/dev/null > ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub ]] && rm ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub # remove empty file
|
||||
|
||||
############################################
|
||||
### FORWARD SSH PORT over /x/ssh-${IPFSNODEID}
|
||||
############################################
|
||||
echo "Lanching /x/ssh-${IPFSNODEID}"
|
||||
|
||||
[[ ! $(ipfs p2p ls | grep "/x/ssh-${IPFSNODEID}") ]] \
|
||||
&& ipfs p2p listen /x/ssh-${IPFSNODEID} /ip4/127.0.0.1/tcp/22
|
||||
|
||||
ipfs p2p ls
|
||||
|
||||
echo
|
||||
############################################
|
||||
## PREPARE x_ssh.sh
|
||||
## REMOTE ACCESS COMMAND FROM DRAGONS
|
||||
############################################
|
||||
PORT=22000
|
||||
PORT=$((PORT+${RANDOM:0:3}))
|
||||
|
||||
#######################################################################
|
||||
## Adapt $USER for the UPlanet /home/$USER Private Swarm specific one
|
||||
#######################################################################
|
||||
|
||||
echo '#!/bin/bash
|
||||
if [[ ! $(ipfs p2p ls | grep x/ssh-'${IPFSNODEID}') ]]; then
|
||||
ipfs --timeout=10s ping -n 4 /p2p/'${IPFSNODEID}'
|
||||
[[ $? == 0 ]] \
|
||||
&& ipfs p2p forward /x/ssh-'${IPFSNODEID}' /ip4/127.0.0.1/tcp/'${PORT}' /p2p/'${IPFSNODEID}' \
|
||||
&& ssh \$USER@127.0.0.1 -p '${PORT}' \
|
||||
|| echo "CONTACT IPFSNODEID FAILED - ERROR -"
|
||||
fi
|
||||
' > ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
|
||||
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
|
||||
|
||||
echo "
|
||||
|
||||
/| /\\
|
||||
/^^^/ |^\Z / |
|
||||
| \Z / |
|
||||
/ @ \Z / / \_______
|
||||
( \ _ / \Z / / /
|
||||
( ---- /G |\ |Z / / /
|
||||
( / ---- \ /---'/\ |Z / / /
|
||||
\/--' /--/ /Z / /
|
||||
| /--/ |Z / / \_______
|
||||
/ /--/ |Z \ / /
|
||||
--/ /--/ \Z | / /
|
||||
/ /--/ \Z / /
|
||||
|--| \Z/ /
|
||||
|---| / /----'
|
||||
\---| /^^^^^^^^^^^^\Z
|
||||
\-/ \Z
|
||||
/ / | \Z
|
||||
\---' |\________| |_______ |Z
|
||||
\--' /\/ \|_|_|_|| |_|_|_|_|\_ |Z
|
||||
'------' / / / |_ /Z
|
||||
\---' | / `````` /Z
|
||||
\--' /\/ \ _____________/Z
|
||||
'------' \
|
||||
|
||||
"
|
||||
############################################
|
||||
echo "CONNECT WITH THIS COMMAND"
|
||||
echo "ipfs cat /ipns/${IPFSNODEID}/x_ssh.sh | bash"
|
||||
############################################
|
||||
|
||||
## PROMETHEUS NODE
|
||||
if [[ -s ~/.zen/prometheus/prometheus ]]; then
|
||||
|
||||
echo "UPDATING ~/.zen/prometheus/prometheus.yml"
|
||||
## ADD ALL SWARM NODES TO MONITORING LIST for prometheus (GRAFANA) node
|
||||
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'prometheus' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ $ncrunning ]] \
|
||||
&& echo "RESTARTING" && kill -HUP $ncrunning \
|
||||
|| { cd ~/.zen/prometheus/; ./prometheus & }
|
||||
|
||||
fi
|
||||
|
||||
## LAUNCHING node_exporter
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'node_exporter' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
[[ $ncrunning ]] \
|
||||
&& echo "RESTARTING" && kill -HUP $ncrunning \
|
||||
|| { /usr/local/bin/node_exporter & }
|
||||
|
||||
|
||||
|
||||
exit 0
|
|
@ -1,15 +1,11 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 1.0
|
||||
# Version: 0.5
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
# PAD COCODING : https://pad.p2p.legal/s/G1PalPay
|
||||
# This script monitors G1 Blockchain
|
||||
########################################################################
|
||||
# TODO : CHECK RX coming from UPlanet Wallet
|
||||
## meaning an initial 3.1G1 from a ZenStation admin wallet
|
||||
## if not relay payment to ZenStation admin
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
@ -19,25 +15,26 @@ ME="${0##*/}"
|
|||
CESIUM=${myCESIUM}
|
||||
GCHANGE=${myGCHANGE}
|
||||
|
||||
echo "$ME RUNNING (•‿‿•)"
|
||||
echo "(✜‿‿✜) G1PalPay : Receiving & Relaying payments to emails found in comment"
|
||||
echo "$ME RUNNING"
|
||||
|
||||
########################################################################
|
||||
# PALPAY SERVICE : MONITOR INCOMING TX & NEW TIDDLERS
|
||||
# PALPAY SERVICE
|
||||
########################################################################
|
||||
########################################################################
|
||||
INDEX="$1" ## TW file
|
||||
INDEX="$1"
|
||||
[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
|
||||
|
||||
PLAYER="$2" ## PLAYER
|
||||
PLAYER="$2"
|
||||
[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
|
||||
[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
|
||||
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1) ## TW /ipns/
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
|
||||
[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
|
||||
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub) ## PLAYER WALLET
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
|
||||
[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
|
||||
|
||||
# Extract tag=tube from TW
|
||||
|
@ -47,81 +44,35 @@ MOATS="$3"
|
|||
###################################################################
|
||||
## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
|
||||
###################################################################
|
||||
mkdir -p $HOME/.zen/tmp/${IPFSNODEID}/G1PalPay/${PLAYER}/
|
||||
mkdir -p $HOME/.zen/game/players/${PLAYER}/G1PalPay/
|
||||
mkdir -p $HOME/.zen/tmp/${MOATS}
|
||||
echo "=====(•‿‿•)====== ( ◕‿◕) (◕‿◕ ) =======(•‿‿•)======= ${PLAYER}
|
||||
${INDEX}"
|
||||
echo "(✜‿‿✜) G1PalPay : CHECK LAST 30 TX comment"
|
||||
echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
|
||||
|
||||
# CHECK LAST 30 INCOMING PAYMENTS
|
||||
# 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 30 -j \
|
||||
> $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey history -n 10 -j > $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json
|
||||
|
||||
[[ ! -s $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json ]] \
|
||||
&& echo "NO PAYMENT HISTORY.........................."
|
||||
&& echo "NO PAYMENT HISTORY" \
|
||||
&& exit 1
|
||||
##############################
|
||||
|
||||
## CONTROL WALLET
|
||||
########################################################################################
|
||||
if [[ ${UPLANETNAME} != "" ]]; then
|
||||
echo "UPLANET ORIGIN CONTROL"
|
||||
while read LINE; do
|
||||
|
||||
echo "${LINE}"
|
||||
JSON=${LINE}
|
||||
TXIDATE=$(echo $JSON | jq -r .date)
|
||||
TXIPUBKEY=$(echo $JSON | jq -r .pubkey)
|
||||
TXIAMOUNT=$(echo $JSON | jq -r .amount)
|
||||
COMMENT=$(echo $JSON | jq -r .comment)
|
||||
|
||||
lastTXdate=$(cat ~/.zen/game/players/${PLAYER}/.uplanet.check)
|
||||
[[ -z lastTXdate ]] && lastTXdate=0
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/.uplanet.check) -ge $TXIDATE ]] \
|
||||
&& continue
|
||||
|
||||
[[ $(echo "$TXIAMOUNT < 0" | bc) -eq 1 ]] \
|
||||
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.uplanet.check \
|
||||
&& continue
|
||||
|
||||
echo "# CHECK FOR PRIMAL REGULAR TX in INCOMING PAYMENTS"
|
||||
# silkaj money history DsEx1pS33vzYZg4MroyBV9hCw98j1gtHEhwiZ5tK7ech | tail -n 3 | head -n 1
|
||||
# │ 2017-11-25 │ 5nk2qdh1…:GWD │ 200 │ 18.332 │ │
|
||||
line=$(silkaj money history $TXIPUBKEY | tail -n 3 | head -n 1)
|
||||
pub8=$(echo $line | awk -F'│' '{gsub(/[[:space:]]*/, "", $3); split($3, a, ":"); print substr(a[1], 1, 8)}')
|
||||
# pub8=$(echo $line | cut -d '│' -f 3 | cut -c 1-8)
|
||||
# PUB8= UPLANET WALLET
|
||||
|
||||
done < $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json
|
||||
fi
|
||||
|
||||
|
||||
|
||||
##########################################################
|
||||
############# CHECK FOR N1COMMANDs IN PAYMENT COMMENT
|
||||
#################################################################
|
||||
# LOG / cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[]
|
||||
## TREAT ANY COMMENT STARTING WITH N1: exemple : N1Kodi.sh
|
||||
## EXTRACT /ASTROBOT/N1ProgramNames
|
||||
ls ${MY_PATH}/../ASTROBOT/ | grep "N1" | cut -d "." -f 1 > ~/.zen/tmp/${MOATS}/N1PROG
|
||||
while read prog; do
|
||||
echo "# SCAN FOR N1 COMMAND : $prog"
|
||||
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep "$prog" >> ~/.zen/tmp/${MOATS}/myN1.json
|
||||
done < ~/.zen/tmp/${MOATS}/N1PROG
|
||||
|
||||
# got N1 incoming TX
|
||||
## TREAT ANY COMMENT STARTING WITH N1
|
||||
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep 'N1' > ~/.zen/tmp/${MOATS}/myN1.json
|
||||
|
||||
while read NLINE; do
|
||||
## COMMENT FORMAT = N1$CMD:$TH:$TRAIL
|
||||
TXIDATE=$(echo ${NLINE} | jq -r .date)
|
||||
TXIPUBKEY=$(echo ${NLINE} | jq -r .pubkey)
|
||||
TXIAMOUNT=$(echo $NLINE | jq -r .amount)
|
||||
|
||||
COMMENT=$(echo ${NLINE} | jq -r .comment)
|
||||
CMD=$(echo ${COMMENT} | cut -d ':' -f 1 | cut -c -12 ) # Maximum 12 characters CMD
|
||||
|
||||
# Verify last recorded acting date (avoid running twice)
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/.ndate) -ge $TXIDATE ]] \
|
||||
&& echo "$CMD $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" \
|
||||
&& continue
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/.ndate) -ge $TXIDATE ]] && echo "$CMD $TXIDATE from $TXIPUBKEY ALREADY TREATED - continue" && continue
|
||||
|
||||
TH=$(echo ${COMMENT} | cut -d ':' -f 2)
|
||||
TRAIL=$(echo ${COMMENT} | cut -d ':' -f 3-)
|
||||
|
@ -129,11 +80,9 @@ while read NLINE; do
|
|||
if [[ -s ${MY_PATH}/../ASTROBOT/${CMD}.sh ]]; then
|
||||
|
||||
echo "RECEIVED CMD=${CMD} from ${TXIPUBKEY}"
|
||||
${MY_PATH}/../ASTROBOT/${CMD}.sh ${INDEX} ${PLAYER} ${MOATS} ${TXIPUBKEY} ${TH} ${TRAIL} ${TXIAMOUNT}
|
||||
${MY_PATH}/../ASTROBOT/${CMD}.sh ${INDEX} ${PLAYER} ${MOATS} ${TXIPUBKEY} ${TH} ${TRAIL}
|
||||
## WELL DONE .
|
||||
[[ $? == 0 ]] \
|
||||
&& echo "${CMD} DONE" \
|
||||
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.ndate ## MEMORIZE LAST TXIDATE
|
||||
[[ $? == 0 ]] && echo "${CMD} DONE" && echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.ndate ## MEMORIZE LAST TXIDATE
|
||||
|
||||
else
|
||||
|
||||
|
@ -144,19 +93,18 @@ while read NLINE; do
|
|||
done < ~/.zen/tmp/${MOATS}/myN1.json
|
||||
|
||||
########################################################################################
|
||||
echo "# CHECK FOR EMAILs IN PAYMENT COMMENT"
|
||||
############# CHECK FOR EMAILs IN PAYMENT COMMENT
|
||||
## DEBUG ## cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -r
|
||||
#################################################################
|
||||
cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json | jq -rc .[] | grep '@' \
|
||||
> ~/.zen/tmp/${MOATS}/myPalPay.json
|
||||
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...
|
||||
# SPREAD & TRANSFER AMOUNT TO NEXT (REMOVING IT FROM LIST)... Other G1PalPay will continue the transmission...
|
||||
########################################################################
|
||||
## GET @ in JSON INLINE
|
||||
while read LINE; do
|
||||
|
||||
echo "MATCHING IN COMMENT"
|
||||
echo "${LINE}"
|
||||
JSON=${LINE}
|
||||
TXIDATE=$(echo $JSON | jq -r .date)
|
||||
|
@ -165,120 +113,92 @@ while read LINE; do
|
|||
TXIAMOUNTUD=$(echo $JSON | jq -r .amountUD)
|
||||
COMMENT=$(echo $JSON | jq -r .comment)
|
||||
|
||||
lastTXdate=$(cat ~/.zen/game/players/${PLAYER}/.atdate)
|
||||
[[ -z lastTXdate ]] && lastTXdate=0
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/.atdate) -ge $TXIDATE ]] \
|
||||
&& echo "PalPay $TXIDATE from $TXIPUBKEY 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
|
||||
TXIMAILS=($(echo "$COMMENT" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
|
||||
[[ $(echo "$TXIAMOUNT < 0" | bc) -eq 1 ]] \
|
||||
&& echo "TX-OUT :: ${LINE}" \
|
||||
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate \
|
||||
&& continue
|
||||
|
||||
## DIVIDE INCOMING AMOUNT TO SHARE
|
||||
echo "N=${#TXIMAILS[@]}"
|
||||
N=${#TXIMAILS[@]}
|
||||
SHARE=$(echo "scale=2; $TXIAMOUNT / $N" | bc)
|
||||
|
||||
SHAREE=$(echo "scale=2; $TXIAMOUNT / $N" | bc)
|
||||
SHARE=$(makecoord ${SHAREE})
|
||||
## SHARE is received AMOUT divided by numbers of EMAILS in comment
|
||||
echo "% ${#TXIMAILS[@]} % $SHARE % $TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS"
|
||||
echo "$TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS % $SHARE %"
|
||||
|
||||
# let's loop over TXIMAILS
|
||||
for EMAIL in "${TXIMAILS[@]}"; do
|
||||
|
||||
[[ ${EMAIL} == $PLAYER ]] \
|
||||
&& echo "ME MYSELF" \
|
||||
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate \
|
||||
&& continue
|
||||
[[ ${EMAIL} == $PLAYER ]] && echo "ME MYSELF" && continue
|
||||
|
||||
echo "EMAIL : ${EMAIL}"
|
||||
|
||||
ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED="" # RESET VAR
|
||||
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${EMAIL}) ## export ASTROTW and more
|
||||
[[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS}
|
||||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
[[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS}
|
||||
|
||||
if [[ ! ${ASTROTW} ]]; then
|
||||
|
||||
echo "# PLAYER ${EMAIL} INCONNU $(date)"
|
||||
continue
|
||||
echo "# PLAYER INCONNU $(date)"
|
||||
|
||||
fi
|
||||
|
||||
if [[ ! ${ASTROG1} ]]; then
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body>" > ~/.zen/tmp/palpay.bro
|
||||
[[ ! ${ASTROG1} ]] \
|
||||
&& 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
|
||||
|
||||
echo "<h1>BRO.<h1>
|
||||
$PLAYER wants to send you ${SHARE} G1...<br>
|
||||
<br>(♥‿‿♥)... on <a href='https://qo-op.com'>UPlanet</a>
|
||||
</body></html>" >> ~/.zen/tmp/palpay.bro
|
||||
|
||||
${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro "BRO. $PLAYER INVITATION"
|
||||
continue
|
||||
fi
|
||||
|
||||
sleep 3
|
||||
|
||||
## SEND G1
|
||||
echo "PalPay____________
|
||||
SEND ${SHARE} G1 to $ASTROMAIL
|
||||
## MAKE FRIENDS & SEND G1
|
||||
echo "NEW PalPay Friend $ASTROMAIL
|
||||
TW : $ASTROTW
|
||||
G1 : ${ASTROG1}"
|
||||
G1 : ${ASTROG1}
|
||||
ASTROIPFS : $ASTROIPFS
|
||||
RSS : $ASTROFEED"
|
||||
|
||||
echo PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "UPLANET:PALPAY"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "UPLANET:PALPAY"
|
||||
if [[ ${ASTROG1} != ${G1PUB} ]]; then
|
||||
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${SHARE}" "${ASTROG1}" "G1PalPay:$N:$TXIPUBKEY"
|
||||
STAMP=$?
|
||||
|
||||
else
|
||||
|
||||
STAMP=0
|
||||
|
||||
fi
|
||||
|
||||
## DONE STAMP IT
|
||||
[[ $STAMP == 0 ]] \
|
||||
&& echo "REDISTRIBUTION DONE" \
|
||||
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate
|
||||
[[ $STAMP == 0 ]] && echo "STAMP DONE" && echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate ## MEMORIZE LAST TXIDATE
|
||||
|
||||
done
|
||||
|
||||
|
||||
done < ~/.zen/tmp/${MOATS}/myPalPay.json
|
||||
|
||||
echo "====(•‿‿•)======= %%%%% (°▃▃°) %%%%%%% ======(•‿‿•)========"
|
||||
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 [days[-1]] DAYS TIDDLERS"
|
||||
echo "# EXTRACT TODAY TIDDLERS"
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' "today.${PLAYER}.tiddlers.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days[-1]]'
|
||||
|
||||
# cat ~/.zen/tmp/${MOATS}/today.${PLAYER}.tiddlers.json | jq -rc # LOG
|
||||
--output ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/ \
|
||||
--render '.' "today.${PLAYER}.tiddlers.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-1]]'
|
||||
|
||||
## FILTER MY OWN EMAIL
|
||||
cat ~/.zen/tmp/${MOATS}/today.${PLAYER}.tiddlers.json \
|
||||
| sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' \
|
||||
> ~/.zen/tmp/${MOATS}/@tags.json 2>/dev/null ## Get tiddlers with not my email in it
|
||||
# cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json | jq -rc # LOG
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/@tags.json ]] \
|
||||
&& echo "NO EXTRA @tags.json TIDDLERS TODAY"
|
||||
cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/today.${PLAYER}.tiddlers.json \
|
||||
| sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' > ~/.zen/tmp/${MOATS}/@tags.json 2>/dev/null ## REMOVE PLAYER EMAIL IN INLINE JSON
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/@tags.json ]] && echo "NO EXTRA @tags.json TIDDLERS TODAY" && exit 0
|
||||
|
||||
# LOG
|
||||
cat ~/.zen/tmp/${MOATS}/@tags.json
|
||||
echo "******************TIDDLERS with new EMAIL in TAGS treatment"
|
||||
echo "******************TIDDLERS with EMAIL in TAGS treatment"
|
||||
#~ cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/${G1PUB}/${PLAYER}.tiddlers.json | sed "s~${PLAYER}~ ~g" | jq -rc '.[] | select(.tags | contains("@"))' > ~/.zen/tmp/${MOATS}/@tags.json
|
||||
|
||||
################################
|
||||
## detect NOT MY EMAIL in TODAY TIDDLERS
|
||||
################################
|
||||
## EXTRACT NOT MY EMAIL
|
||||
while read LINE; do
|
||||
|
||||
echo "---------------------------------- Sava PalPé mec"
|
||||
|
@ -286,26 +206,26 @@ while read LINE; do
|
|||
echo "---------------------------------- PalPAY for Tiddler"
|
||||
TCREATED=$(echo ${LINE} | jq -r .created)
|
||||
TTITLE=$(echo ${LINE} | jq -r .title)
|
||||
TTEXT=$(echo ${LINE} | jq -r '.text | match("/ipfs/[^\"\\s]+") | .string | first')
|
||||
TTAGS=$(echo ${LINE} | jq -r .tags)
|
||||
|
||||
## Extract "/ipfs/CID" from Tiddler - to pin TOPIN -
|
||||
## PREPARE PINNING -
|
||||
TOPIN=$(echo ${LINE} | jq -r .ipfs) ## Tiddler produced by "Astroport Desktop"
|
||||
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && TOPIN=$(echo ${LINE} | jq -r ._canonical_uri) ## Tiddler is exported to IPFS
|
||||
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && TOPIN=$(echo ${LINE} | jq -r '.text | match("/ipfs/[^\"\\s]+") | .string | first') ## Ket first /ipfs/ link from text field
|
||||
[[ ! $(echo ${TOPIN} | grep '/ipfs') ]] && echo "NOT COMPATIBLE ${TOPIN}" && TOPIN=""
|
||||
[[ -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 extra emails found
|
||||
emails=($(echo "$TTAGS" | sed "s~${PLAYER}~ ~g" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
## 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 = 1 ZEN each
|
||||
zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10, 1 zen each
|
||||
|
||||
## Get first zmail
|
||||
ZMAIL="${emails}"
|
||||
|
||||
MSG="SEND + $nb JUNE TO BROs : ${emails[@]}"
|
||||
MSG="SEND + $zen ZEN TO BROs : ${emails[@]}"
|
||||
echo $MSG
|
||||
|
||||
ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED=""
|
||||
|
@ -314,62 +234,45 @@ while read LINE; do
|
|||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
[[ ${ASTROTW} == "" ]] && ASTROTW=${ASTRONAUTENS}
|
||||
|
||||
echo "TOPIN=${TOPIN}"
|
||||
if [[ ${TOPIN} && ${ASTROG1} && ${ASTROG1} != ${G1PUB} ]]; then
|
||||
if [[ ${ASTROG1} && ${ASTROG1} != ${G1PUB} ]]; then
|
||||
|
||||
##############################
|
||||
### GET PAID & GET PINNED !!
|
||||
##############################
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${nb}" "${ASTROG1}" "${emails[@]} /ipfs/${TOPIN}"
|
||||
## 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/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 ${LINE} > ~/.zen/tmp/${MOATS}/line
|
||||
LINEH=$(ipfs add -q ~/.zen/tmp/${MOATS}/line)
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${zen}" "${ASTROG1}" "${emails[@]} /ipfs/$LINEH"
|
||||
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body><h1>BRO ${PLAYER}</h1> : $MSG" > ~/.zen/tmp/${MOATS}/g1message
|
||||
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 "<br> <a href='${myIPFSGW}'/ipns/${ASTROTW}#${TTITLE}>${TTITLE}</a>
|
||||
<br>( ${emails[@]} )<br>
|
||||
<h2>PIN: <a href='${myIPFSGW}'$TOPIN>$TOPIN</a></h2>(☼‿‿☼)" >> ~/.zen/tmp/${MOATS}/g1message
|
||||
&& 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 "BRO. ${ZMAIL} TW5 PIN"
|
||||
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message "PIN TIDDLER"
|
||||
|
||||
else
|
||||
## ${ZMAIL} NOT A PLAYER YET
|
||||
|
||||
## SEND MESSAGE TO INFORM ${ZMAIL} OF THIS EXISTING TIDDLER
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body>
|
||||
echo "<html><body>
|
||||
<h1>BRO. </h1>
|
||||
<br> <a href='${myIPFSGW}'/ipns/${ASTROTW}#${TTITLE}>${TTITLE}</a>
|
||||
<br>( ${emails[@]} )<br>
|
||||
<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>
|
||||
... 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 "BRO. ${PLAYER} TW5 link"
|
||||
${MY_PATH}/../tools/mailjet.sh "${ZMAIL}" ~/.zen/tmp/palpay.bro "TIDDLER TW SHARING"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
done < ~/.zen/tmp/${MOATS}/@tags.json
|
||||
|
||||
echo "=====(•‿‿•)====== ( ◕‿◕) (◕‿◕ ) =======(•‿‿•)======="
|
||||
echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
|
||||
|
||||
# rm -Rf $HOME/.zen/tmp/${MOATS}
|
||||
ls $HOME/.zen/tmp/${MOATS}
|
||||
rm -Rf $HOME/.zen/tmp/${MOATS}
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -42,22 +42,22 @@ mkdir -p ~/.zen/tmp/${MOATS}
|
|||
#####################################################
|
||||
# CREATION DE LA CLEF DERIVEE "G1VOEU"
|
||||
#####################################################
|
||||
source ~/.zen/game/players/${PLAYER}/secret.june ## LE PEPPER DU PLAYER DEVIENT LE SECRET1 DU G1VOEU
|
||||
[[ ${PEPPER} ]] && echo "Using PLAYER PEPPER AS WISH SALT" && SECRET1="${PEPPER}" ##
|
||||
[[ ! ${SECRET1} ]] && SECRET1=$(${MY_PATH}/../tools/diceware.sh 12 | xargs)
|
||||
source ~/.zen/game/players/${PLAYER}/secret.june ## LE PEPPER DU PLAYER DEVIENT LE SALT DU G1VOEU
|
||||
[[ ${PEPPER} ]] && echo "Using PLAYER PEPPER AS WISH SALT" && SECRET1=${PEPPER} ##
|
||||
[[ ! ${SECRET1} ]] && SECRET1=$(${MY_PATH}/../tools/diceware.sh 3 | xargs)
|
||||
|
||||
#~ echo "${SECRET1}"
|
||||
echo "${SECRET1}"
|
||||
|
||||
echo "## TITRE DU G1VOEU ? CapitalGluedWords please"
|
||||
[[ ! ${TITRE} ]] && read TITRE
|
||||
VoeuName=$(echo "${TITRE}" | sed -r 's/\<./\U&/g' | sed 's/ //g') # VoeuName EST LE TITRE DU VOEU : CapitalGluedWords + EMAIL
|
||||
|
||||
SECRET2="${VoeuName} ${PLAYER} ${SALT}" ## SECRET2 est "TitreDuVoeu PLAYER SALT"
|
||||
SECRET2="${VoeuName} ${PLAYER}" ## SECRET2 est "TitreDuVoeu PLAYER"
|
||||
|
||||
echo "${SECRET2}" && [[ ! ${SECRET2} ]] && echo "EMPTY SECRET2 - ERROR" && exit 1
|
||||
|
||||
echo "## keygen PLAYER DERIVATE WISH KEY"
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/wish.dunikey "${SECRET1}${UPLANETNAME}" "${SECRET2}${UPLANETNAME}"
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/wish.dunikey "${SECRET1}" "${SECRET2}"
|
||||
WISHG1PUB=$(cat ~/.zen/tmp/${MOATS}/wish.dunikey | grep "pub:" | cut -d ' ' -f 2)
|
||||
echo "WISHG1PUB (G1PUB) = ${WISHG1PUB}"
|
||||
[[ ${WISHG1PUB} == "" ]] && echo "EMPTY WISHG1PUB G1PUB - ERROR" && exit 1
|
||||
|
@ -66,7 +66,7 @@ mv ~/.zen/tmp/${MOATS}/wish.dunikey ~/.zen/game/players/${PLAYER}/voeux/${VoeuNa
|
|||
|
||||
echo "# NOUVEAU VOEU"
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey "${SECRET1}${UPLANETNAME}" "${SECRET2}${UPLANETNAME}"
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey "${SECRET1}" "${SECRET2}"
|
||||
ipfs key import ${WISHG1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey
|
||||
VOEUNS=$(ipfs key list -l | grep -w "${WISHG1PUB}" | cut -d ' ' -f 1 )
|
||||
echo "/ipns/${VOEUNS}"
|
||||
|
@ -78,7 +78,7 @@ ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc | base16)
|
|||
#~ echo $ENCODING
|
||||
|
||||
## TEST IPFS
|
||||
#~ ipfs --timeout=30s cat --progress=false /ipns/${VOEUNS} > ~/.zen/tmp/${VOEUNS}.json
|
||||
#~ ipfs --timeout=30s cat /ipns/${VOEUNS} > ~/.zen/tmp/${VOEUNS}.json
|
||||
#~ [[ -s ~/.zen/tmp/${VOEUNS}.json ]] \
|
||||
#~ && echo "HEY !!! UN CHANNEL EXISTE DEJA POUR CE VOEU ! ~/.zen/tmp/${VOEUNS}.json - EXIT -" \
|
||||
#~ && exit 1
|
||||
|
@ -92,7 +92,7 @@ echo ${WISHG1PUB} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.wish
|
|||
|
||||
echo "# CREATION QR CODE"
|
||||
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | xargs | cut -d ' ' -f 2)
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
|
||||
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png" "$LIBRA/ipns/${VOEUNS}"
|
||||
|
||||
|
@ -141,17 +141,19 @@ echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key-'${Voe
|
|||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-key-'${VoeuName}'","text":"'${WISHG1PUB}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-g1.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-'${VoeuName}'","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
|
||||
|
||||
|
||||
|
||||
# TEXT="<a target='_blank' href='"/ipns/${VOEUNS}"'><img src='"/ipfs/${IVOEUPLAY}"'></a><br><br><a target='_blank' href='"/ipns/${VOEUNS}"'>"${VoeuName}"</a>"
|
||||
#:[tag[G1CopierYoutube]] [tag[pdf]]
|
||||
# Contains QRCode linked to G1VoeuTW and BUTTON listing G1Voeux
|
||||
# <img width='600' src='"/ipfs/${IMAGIC}"'><br>
|
||||
TEXT="<a target='_blank' href='#:[tag[G1"${VoeuName}"]]' ><img src='"/ipfs/${IVOEUPLAY}"'></a><br>\n
|
||||
<a target='_blank' href='"/ipns/${VOEUNS}"'>TW G1Voeu "${PLAYER}"</a><br><br>\n\n
|
||||
<\$button class='tc-tiddlylink'>\n
|
||||
<\$list filter='[tag[G1"${VoeuName}"]]'>\n
|
||||
<\$action-navigate \$to=<<currentTiddler>> \$scroll=no/>\n
|
||||
</\$list>\n
|
||||
ALL G1"${VoeuName}"\n
|
||||
TEXT="<a target='_blank' href='#:[tag[G1"${VoeuName}"]]' ><img src='"/ipfs/${IVOEUPLAY}"'></a><br>
|
||||
<a target='_blank' href='"/ipns/${VOEUNS}"'>TW G1Voeu "${PLAYER}"</a><br><br>
|
||||
<\$button class='tc-tiddlylink'>
|
||||
<\$list filter='[tag[G1"${VoeuName}"]]'>
|
||||
<\$action-navigate \$to=<<currentTiddler>> \$scroll=no/>
|
||||
</\$list>
|
||||
Afficher tous vos G1"${VoeuName}"
|
||||
</\$button>"
|
||||
|
||||
# NEW IVEU TIDDLER
|
||||
|
|
|
@ -1,103 +0,0 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
## EXPLORE SWARM MAPNS
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
. "$MY_PATH/../tools/my.sh"
|
||||
## LOG into ~/.zen/tmp/_12345.log
|
||||
exec 2>&1 >> ~/.zen/tmp/_12345.log
|
||||
|
||||
echo "=========================="
|
||||
echo "(◕‿◕ ) ${ME} (◕‿◕ ) "
|
||||
#~ ## CHECK IF ALREADY MErunning
|
||||
countMErunning=$(ps auxf --sort=+utime | grep -w $ME | grep -v -E 'color=auto|grep' | wc -l)
|
||||
[[ $countMErunning -gt 2 ]] && echo "$ME already running $countMErunning time" && exit 0
|
||||
|
||||
echo "(◕‿◕ ) ${ME} starting UPlanet Key Scan _______________________________"
|
||||
|
||||
## LOCAL
|
||||
LWKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#LWKEYS[@]} " local UMAPS"
|
||||
LSKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_*_*/_*.?_*.?/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#LSKEYS[@]} " local SECTORS"
|
||||
LRKEYS=($(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_*_*/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#LRKEYS[@]} " local REGIONS"
|
||||
|
||||
## SWARM
|
||||
WKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#WKEYS[@]} " swarm UMAPS"
|
||||
SKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/SECTORS/_*_*/_*.?_*.?/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#SKEYS[@]} " swarm SECTORS"
|
||||
RKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/REGIONS/_*_*/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
|
||||
echo ${#RKEYS[@]} " swarm REGIONS"
|
||||
|
||||
## COMBINE & SHUFFLE KEYS
|
||||
combined=("${LWKEYS[@]}" "${LSKEYS[@]}" "${LRKEYS[@]}" "${WKEYS[@]}" "${SKEYS[@]}" "${RKEYS[@]}")
|
||||
UKEYS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u | shuf ))
|
||||
echo "SYNC ${#UKEYS[@]} GEOKEYS..."
|
||||
|
||||
## STORAGE FOR IPFS GET UplanetKeyS
|
||||
mkdir -p ~/.zen/tmp/flashmem
|
||||
|
||||
## Refresh flashmem/UplanetKey every 3 hours => DATA SHAKER
|
||||
find ~/.zen/tmp/flashmem -mmin +180 -exec rm -rf {} +
|
||||
|
||||
floop=0
|
||||
medo=0
|
||||
for key in ${UKEYS[@]}; do
|
||||
|
||||
[[ -d ~/.zen/tmp/flashmem/$key ]] \
|
||||
&& echo "$key already copied" && medo=$((medo +1)) && continue
|
||||
|
||||
echo "SYNC $key"
|
||||
|
||||
floop=$((floop +1))
|
||||
mkdir -p ~/.zen/tmp/flashmem/$key
|
||||
|
||||
echo "ipfs --timeout 180s get -o ~/.zen/tmp/flashmem/$key /ipns/$key"
|
||||
ipfs --timeout 180s get --progress=false -o ~/.zen/tmp/flashmem/$key /ipns/$key
|
||||
[[ $? == 0 ]] \
|
||||
&& medo=$((medo +1)) && floop=$((floop -1)) \
|
||||
|| rm -Rf ~/.zen/tmp/flashmem/$key # GOT IT or NOT ?
|
||||
|
||||
[ $floop -gt 33 ] && break
|
||||
|
||||
done
|
||||
echo "=========================="
|
||||
echo "(◕‿◕ ) ${ME} :: $medo SUCCESS missing $floop KEYS from ${#UKEYS[@]} GEOKEYS"
|
||||
echo "=========================="
|
||||
|
||||
## Search for TW /ipfs/ and refresh
|
||||
TWS=($(cat ~/.zen/tmp/flashmem/*/TWz/*/_index.html | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf))
|
||||
echo "SYNC ${#TWS[@]} TWs..."
|
||||
floop=0
|
||||
medo=0
|
||||
for tw in ${TWS[@]}; do
|
||||
|
||||
[[ -d ~/.zen/tmp/flashmem/tw/$tw ]] \
|
||||
&& echo "$key already copied" && medo=$((medo +1)) && continue
|
||||
|
||||
echo "SYNC $key"
|
||||
|
||||
floop=$((floop +1))
|
||||
mkdir -p ~/.zen/tmp/flashmem/tw/$tw
|
||||
|
||||
ipfs --timeout 180s get --progress=false -o ~/.zen/tmp/flashmem/tw/$tw/index.html /ipns/$tw
|
||||
[[ $? == 0 ]] \
|
||||
&& medo=$((medo +1)) && floop=$((floop -1)) \
|
||||
|| rm -Rf ~/.zen/tmp/flashmem/tw/$tw
|
||||
|
||||
[ $floop -gt 33 ] && break
|
||||
|
||||
done
|
||||
|
||||
echo "=========================="
|
||||
echo "(✜‿‿✜) ${ME} :: $medo SUCCESS missing $floop KEYS from ${#TWS[@]} TWS"
|
||||
echo "=========================="
|
||||
|
||||
exit 0
|
|
@ -25,13 +25,12 @@ echo "## RUNNING NODE.refresh"
|
|||
if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
|
||||
|
||||
# ONLY FRESH DATA HERE
|
||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1)
|
||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
## Getting actual online version
|
||||
#~ ipfs get -o ~/.zen/tmp/${IPFSNODEID} /ipns/${IPFSNODEID}/
|
||||
|
||||
## COPY STATION yt-dlp.list
|
||||
cp $HOME/.zen/.yt-dlp.list ~/.zen/tmp/${IPFSNODEID}/yt-dlp.list
|
||||
cp $HOME/.zen/.yt-dlp.mp3.list ~/.zen/tmp/${IPFSNODEID}/yt-dlp.mp3.list
|
||||
|
||||
## COPY COINS VALUE OF THE DAY
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/COINS/
|
||||
|
@ -39,8 +38,7 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
|
|||
cp -f ~/.zen/tmp/coucou/*.COINS ~/.zen/tmp/${IPFSNODEID}/COINS/
|
||||
|
||||
## COPY 20h12.log
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/20h12.log ## TODO REMOVE
|
||||
cp -f /tmp/20h12.log ~/.zen/tmp/${IPFSNODEID}/20h12.txt
|
||||
cp -f /tmp/20h12.log ~/.zen/tmp/${IPFSNODEID}/
|
||||
|
||||
## COPY FRIENDS
|
||||
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
|
||||
|
@ -48,18 +46,12 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
|
|||
## RUNING FOR ALL LOCAL PLAYERS
|
||||
for PLAYER in ${PLAYERONE[@]}; do
|
||||
echo "${PLAYER} GCHANGE FRIENDS"
|
||||
[[ -d ~/.zen/tmp/${IPFSNODEID}/${PLAYER} && ${PLAYER} != "" ]] \
|
||||
&& rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/
|
||||
[[ -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/ 2>/dev/null
|
||||
done
|
||||
## STOP GCHANGE SWARM SHARING --- too big data --- deprecated
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/GCHANGE ## UGGLY PATCH
|
||||
|
||||
## INFORM GPS LOCATION
|
||||
[[ -s ~/.zen/game/players/.current/GPS.json ]] \
|
||||
&& cp ~/.zen/game/players/.current/GPS.json ~/.zen/tmp/${IPFSNODEID}/ \
|
||||
&& LAT=$(cat ~/.zen/tmp/${IPFSNODEID}/GPS.json | jq -r .[].lat) \
|
||||
&& LON=$(cat ~/.zen/tmp/${IPFSNODEID}/GPS.json | jq -r .[].lon) \
|
||||
&& echo "LAT=${LAT}; LON=${LON}" > ~/.zen/GPS
|
||||
cp ~/.zen/GPS ~/.zen/tmp/${IPFSNODEID}/
|
||||
|
||||
## REFRESH TIMESTAMPING
|
||||
echo "${MOATS}" > ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats
|
||||
|
@ -68,14 +60,14 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
|
|||
echo "############################################ MY MAP "
|
||||
ls ~/.zen/tmp/${IPFSNODEID}/
|
||||
echo "############################################"
|
||||
NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1)
|
||||
NSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
ROUTING=$(ipfs add -rwHq ~/.zen/tmp/${IPFSNODEID}/* | tail -n 1 )
|
||||
ipfs name publish /ipfs/${ROUTING}
|
||||
echo ">> $NSIZE Bytes STATION BALISE > ${myIPFS}/ipns/${IPFSNODEID}"
|
||||
|
||||
fi
|
||||
|
||||
echo "## CLEANING SWARM 3 DAYS OLD"
|
||||
find ~/.zen/tmp/swarm/ -mtime +3 -type d -exec rm -Rf '{}' \;
|
||||
## CLEANING SWARM 30 DAYS OLD
|
||||
find ~/.zen/tmp/swarm/ -mtime +30 -type d -exec rm -Rf '{}' \;
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -11,45 +11,32 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
## Publish All PLAYER TW,
|
||||
# Run TAG subprocess: tube, voeu
|
||||
############################################
|
||||
echo "## RUNNING PLAYER.refresh
|
||||
|
||||
_..._
|
||||
.' '. _
|
||||
/ .-°°-\ _/ \\
|
||||
.-| /:. | | |
|
||||
| \ |:. /.-'-./
|
||||
| .-'-;:__.' =/
|
||||
.'= A=|STRO _.='
|
||||
/ _. | ;
|
||||
;-.-'| \ |
|
||||
/ | \ _\ _\\
|
||||
"
|
||||
echo "## RUNNING PLAYER.refresh"
|
||||
|
||||
PLAYERONE="$1"
|
||||
# [[ $isLAN ]] && PLAYERONE=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
|
||||
[[ ! ${PLAYERONE} ]] && PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
|
||||
|
||||
echo "FOUND ${#PLAYERONE[@]} ASTRONAUTS : ${PLAYERONE[@]}"
|
||||
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
|
||||
echo "FOUND : ${PLAYERONE[@]}"
|
||||
|
||||
echo "RENEWING LOCAL UPLANET REPOSITORY (ADMIN=${CURRENT})
|
||||
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
|
||||
for PLAYER in ${PLAYERONE[@]}; do
|
||||
[[ ! -d ~/.zen/game/players/${PLAYER:-undefined} ]] && echo "BAD ${PLAYERONE}" && continue
|
||||
[[ ! $(echo "${PLAYER}" | grep '@') ]] && continue
|
||||
|
||||
start=`date +%s`
|
||||
# CLEAN LOST ACCOUNT
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/secret.dunikey ]] \
|
||||
&& rm -Rf ~/.zen/game/players/${PLAYER} \
|
||||
&& echo "WARNING - ERASE ${PLAYER} - BADLY PLUGGED" \
|
||||
&& echo "${PLAYER} WAS BADLY PLUGGED" \
|
||||
&& continue
|
||||
|
||||
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}")
|
||||
|
||||
### UPGRADE PLAYER for myos IPFS API ### DOUBLON WITH VISA.new (TO REMOVE)
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
|
||||
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
|
||||
|
@ -57,30 +44,32 @@ for PLAYER in ${PLAYERONE[@]}; do
|
|||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
mkdir -p ~/.zen/tmp/${MOATS}
|
||||
echo "##### ${YOUSER} ################################ ~/.zen/tmp/${MOATS}"
|
||||
|
||||
echo "##################################################################"
|
||||
echo ">>>>> PLAYER : ${PLAYER} >>>>>>>>>>>>> REFRESHING TW STATION"
|
||||
echo "##################################################################"
|
||||
echo ">>>>> PLAYER : ${PLAYER} >>>>>>>>>>>>> REFRESHING TW "
|
||||
echo "################################################ $(date)"
|
||||
PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null)
|
||||
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null)
|
||||
ASTRONS=$(cat ~/.zen/game/players/${PLAYER}/.playerns 2>/dev/null)
|
||||
# Get PLAYER wallet amount
|
||||
$MY_PATH/../tools/COINScheck.sh ${G1PUB} > ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck
|
||||
cat ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck ###DEBUG MODE
|
||||
COINS=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.COINScheck | tail -n 1)
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh $G1PUB | tail -n 1)
|
||||
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
|
||||
echo "+++ WALLET BALANCE _ $COINS (G1) _ / $ZEN ZEN /"
|
||||
|
||||
#~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 10 €/OC) ?
|
||||
echo "## >>>>>>>>>>>>>>>> REFRESH ASTRONAUTE TW"
|
||||
#~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 1 €OC) ?
|
||||
echo "##################################################################"
|
||||
|
||||
echo "##################################################################"
|
||||
echo "################### REFRESH ASTRONAUTE TW ###########################"
|
||||
echo "##################################################################"
|
||||
|
||||
## REFRESH ASTRONAUTE TW
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w ${G1PUB} | cut -d ' ' -f1)
|
||||
|
||||
############### CANNOT FIND PLAYER KEY ###########
|
||||
if [[ ! ${ASTRONAUTENS} ]]; then
|
||||
|
||||
echo "${PLAYER} TW IS DISCONNECTED... RECREATING IPNS KEYS"
|
||||
## TODO : EXTRACT & DECRYPT secret.june FROM TW
|
||||
|
||||
ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player
|
||||
ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player
|
||||
|
||||
|
@ -101,407 +90,194 @@ for PLAYER in ${PLAYERONE[@]}; do
|
|||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/
|
||||
|
||||
################### GET LATEST TW
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
|
||||
echo "GETTING TW..."
|
||||
####################################################################################################
|
||||
ipfs --timeout 480s get --progress=false -o ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html /ipns/${ASTRONAUTENS}
|
||||
####################################################################################################
|
||||
|
||||
ipfs --timeout 480s get -o ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html /ipns/${ASTRONAUTENS}
|
||||
|
||||
## PLAYER TW IS ONLINE ?
|
||||
if [ ! -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ]; then
|
||||
|
||||
NOWCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain)
|
||||
LASTCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.* | tail -n 1)
|
||||
try=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.try 2>/dev/null) || try=3
|
||||
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
echo "$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED"
|
||||
echo ">> %%% WARNING TRY LEFT : $try %%%"
|
||||
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>"
|
||||
echo "<a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>"
|
||||
echo ">> %%% WARNING %%%"
|
||||
echo "------------------------------------------------"
|
||||
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 "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW LOADING TIMEOUT</a>" > ~/.zen/tmp/result
|
||||
echo "<html><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>" > ~/.zen/tmp/result
|
||||
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
|
||||
echo "<br>" >> ~/.zen/tmp/result
|
||||
echo "<br><a href='${myIPFS}/ipfs/${LASTCHAIN}'>[yesterday]</a>: /ipfs/${LASTCHAIN}" >> ~/.zen/tmp/result
|
||||
echo "<br><a href='${myIPFS}/ipfs/${NOWCHAIN}'>[today]</a>: /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result
|
||||
echo "<br>" >> ~/.zen/tmp/result
|
||||
echo "<br> %%% WARNING %%% $try TRY LEFT %%%" >> ~/.zen/tmp/result
|
||||
echo "" >> ~/.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 "<br> %%% WARNING %%%" >> ~/.zen/tmp/result
|
||||
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
|
||||
echo "<br>ipfs name publish --key=${PLAYER} /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result
|
||||
echo "</body></html>" >> ~/.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
|
||||
|
||||
[[ $try == 0 && "${CURRENT}" != "${PLAYER}" ]] \
|
||||
[[ $try == 0 ]] \
|
||||
&& echo "PLAYER ${PLAYER} UNPLUG" \
|
||||
&& ${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} "ALL" \
|
||||
&& ${MY_PATH}/../tools/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \
|
||||
&& continue
|
||||
|
||||
try=$((try-1))
|
||||
echo "$try" > ~/.zen/game/players/${PLAYER}/ipfs/moa/.try
|
||||
|
||||
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "TW LOADING TIMEOUT"
|
||||
echo " %%% WARNING %%% ${PLAYER} STATION UNPLUG IN $try DAY(S)." >> ~/.zen/tmp/result
|
||||
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "UNPLUG WARNING"
|
||||
|
||||
continue
|
||||
|
||||
fi
|
||||
|
||||
#############################################################
|
||||
else
|
||||
## FOUND TW
|
||||
err=""
|
||||
#############################################################
|
||||
## CHECK "GPS" Tiddler
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/GPS.json || $(cat ~/.zen/tmp/${MOATS}/GPS.json) == "[]" ]] \
|
||||
&& msg="${PLAYER} GPS : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)"
|
||||
|
||||
#############################################################
|
||||
## CHECK MadeInZion
|
||||
## CHECK WHO IS ACTUAL OFFICIAL GATEWAY
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' ## MadeInZion Tiddler
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/MadeInZion.json || $(cat ~/.zen/tmp/${MOATS}/MadeInZion.json) == "[]" ]] \
|
||||
&& msg="${PLAYER} MadeInZion : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)" && player="" \
|
||||
|| player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/MadeInZion.json ]] && echo "${PLAYER} MadeInZion : BAD TW (☓‿‿☓) " && continue
|
||||
|
||||
lang=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json 2>/dev/null | jq -r .[].dao)
|
||||
[[ ${lang} == "null" ]] && lang="fr"
|
||||
#############################################################
|
||||
## CHECK "AstroID" Tiddler
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'AstroID.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'AstroID' ## AstroID Tiddler
|
||||
[[ $(cat ~/.zen/tmp/${MOATS}/AstroID.json 2>/dev/null) == "[]" ]] && rm ~/.zen/tmp/${MOATS}/AstroID.json
|
||||
########################################## used by Astroport :: Lasertag :: TW plugin ##
|
||||
## CHECK "$:/config/NewTiddler/Tags"
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'TWsign.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '$:/config/NewTiddler/Tags' ## $:/config/NewTiddler/Tags Tiddler
|
||||
signature=$(cat ~/.zen/tmp/${MOATS}/TWsign.json | jq -r .[].text)
|
||||
echo "${player} SIGNATURE = $signature"
|
||||
player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
|
||||
|
||||
#############################################################
|
||||
## CHECK "Astroport" TIDDLER
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' ## Astroport Tiddler
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/Astroport.json || $(cat ~/.zen/tmp/${MOATS}/Astroport.json) == "[]" ]] \
|
||||
&& msg="${PLAYER} Astroport : BAD TW (☓‿‿☓) " && err="(☓‿‿☓)"
|
||||
|
||||
############################################################ BAD TW SIGNATURE
|
||||
[[ ( ${player} != ${PLAYER} || ${PLAYER} != ${signature} || "${err}" == "(☓‿‿☓)" ) && ${PLAYER} != ${CURRENT} ]] \
|
||||
&& echo "> (☓‿‿☓) BAD PLAYER=$player in TW (☓‿‿☓) $msg" \
|
||||
&& ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ALL" \
|
||||
[[ ${player} != ${PLAYER} ]] \
|
||||
&& echo "> BAD PLAYER=$player in TW" \
|
||||
&& continue \
|
||||
|| echo "${PLAYER} OFFICIAL TW - (⌐■_■) -"
|
||||
|
||||
## GET "Astroport" TIDDLER
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport' ## Astroport Tiddler
|
||||
BIRTHDATE=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].birthdate)
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport) ## ZenStation IPNS address
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport) ## Raccorded G1Station IPNS address
|
||||
CURCHAIN=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].chain | rev | cut -f 1 -d '/' | rev) # Remove "/ipfs/" part
|
||||
[[ ${CURCHAIN} == "" || ${CURCHAIN} == "null" ]] \
|
||||
&& CURCHAIN="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # AVOID EMPTY
|
||||
|
||||
SBIRTH=$(${MY_PATH}/../tools/MOATS2seconds.sh ${BIRTHDATE})
|
||||
SNOW=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
DIFF_SECONDS=$(( SNOW - SBIRTH ))
|
||||
days=$((DIFF_SECONDS / 60 / 60 / 24))
|
||||
|
||||
################################################## ANOTHER ASTROPORT !!
|
||||
IPNSTAIL=$(echo ${ASTROPORT} | rev | cut -f 1 -d '/' | rev) # Remove "/ipns/" part
|
||||
########### ASTROPORT is not IPFSNODEID => EJECT TW
|
||||
if [[ ${IPNSTAIL} != ${IPFSNODEID} || ${IPNSTAIL} == "_ASTROPORT_" ]]; then
|
||||
echo "> PLAYER MOVED TO ${IPNSTAIL} : UNPLUG "
|
||||
${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE" "Now TW is plugged to ${ASTROPORT}"
|
||||
echo ">>>> CIAO ${PLAYER}"
|
||||
continue
|
||||
fi
|
||||
|
||||
################ VERIFICATIONS DONE ######################
|
||||
echo "ASTROPORT ZenStation : ${ASTROPORT}"
|
||||
echo "CURCHAIN=${CURCHAIN}"
|
||||
echo "================================== TW $days days old"
|
||||
|
||||
############################################## +2 DAYS & AstroID = UNPLUG !!
|
||||
## REMOVE TW OLDER THAN 2 DAYS WITH AstroID
|
||||
[[ -s ~/.zen/tmp/${MOATS}/AstroID.json && $days -gt 2 && "${CURRENT}" != "${PLAYER}" ]] \
|
||||
&& ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ALL" "TW EJECTION. AstroID found in TW." \
|
||||
&& echo "(#__#) AstroID +2 DAYS = SECURITY ERROR (#__#)" && continue
|
||||
####################################################################### RTFM DUMB FIREWALL
|
||||
############################################################################################
|
||||
IPNSTAIL=$(echo ${ASTROPORT} | rev | cut -f 1 -d '/' | rev) # Remove "/ipns/" part
|
||||
echo "TW ASTROPORT GATEWAY : ${ASTROPORT}"
|
||||
|
||||
######################################
|
||||
#### UPLANET GEO COORD EXTRACTION
|
||||
## GET "GPS" TIDDLER - 0.00 0.00 (if empty: null)
|
||||
ZLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
[[ $ZLAT == "null" || $ZLAT == "" ]] && ZLAT="0.00"
|
||||
ZLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
[[ $ZLON == "null" || $ZLON == "" ]] && ZLON="0.00"
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
|
||||
UMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
|
||||
[[ $UMAPNS == "null" ]] && UMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu"
|
||||
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
[[ $LAT == "null" ]] && LAT="0.00"
|
||||
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
[[ $LON == "null" ]] && LON="0.00"
|
||||
|
||||
LAT=$(makecoord ${ZLAT})
|
||||
LON=$(makecoord ${ZLON})
|
||||
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${UMAPNS}"
|
||||
|
||||
### GET UMAP ENV
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
|
||||
echo "UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON"
|
||||
|
||||
UMAPNS=$(echo $UMAPIPNS | cut -d '/' -f 3)
|
||||
#############################################
|
||||
# MAKE "GPS" TIDDLER
|
||||
cat ${MY_PATH}/../templates/data/GPS.json \
|
||||
| sed -e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_LAT_~${LAT}~g" \
|
||||
-e "s~_LON_~${LON}~g" \
|
||||
-e "s~_UMAPNS_~${UMAPNS}~g" \
|
||||
-e "s~_SECTORTW_~${SECTORIPNS}/TW~g" \
|
||||
> ~/.zen/tmp/${MOATS}/GPS.json
|
||||
|
||||
## UPDATE PLAYER CACHE
|
||||
## STORE IN PLAYER CACHE
|
||||
echo "_${LAT}_${LON}" > ~/.zen/game/players/${PLAYER}/.umap
|
||||
cp ~/.zen/tmp/${MOATS}/GPS.json ~/.zen/game/players/${PLAYER}/
|
||||
|
||||
################# PERSONAL VDO.NINJA PHONEBOOTH
|
||||
if [[ "${days}" == "3" ]]; then
|
||||
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}")
|
||||
_USER=$(echo $YOUSER | sed "s~\.~_~g")
|
||||
# MAKE "VISIO" TIDDLER
|
||||
cat ${MY_PATH}/../templates/data/VISIO.json \
|
||||
| sed -e "s~_IPFSNINJA_~${VDONINJA}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_PHONEBOOTH_~${_USER}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/VISIO.json
|
||||
|
||||
else
|
||||
echo "[]" > ~/.zen/tmp/${MOATS}/VISIO.json
|
||||
########### ASTROPORT is not IPFSNODEID => EJECT TW
|
||||
## MOVED PLAYER (KEY IS KEPT ON LAST CONNECTED ASTROPORT)
|
||||
## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
## TODO UNPLUG PLAYER
|
||||
## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
if [[ ${IPNSTAIL} != ${IPFSNODEID} || ${IPNSTAIL} == "_ASTROPORT_" ]]; then
|
||||
echo "> I AM ${IPFSNODEID} : PLAYER MOVED TO ${IPNSTAIL} : EJECTION "
|
||||
echo "UNPLUG PLAYER"
|
||||
${MY_PATH}/../tools/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE"
|
||||
echo ">>>> ASTRONAUT ${PLAYER} TW CAPSULE EJECTION TERMINATED"
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
#####################################################################
|
||||
# MAKE "CESIUM" TIDDLER
|
||||
if [[ "${days}" == "4" ]]; then
|
||||
echo "Create CESIUM Tiddler"
|
||||
cat ${MY_PATH}/../templates/data/CESIUM.json \
|
||||
| sed -e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/CESIUM.json
|
||||
|
||||
else
|
||||
echo "[]" > ~/.zen/tmp/${MOATS}/CESIUM.json
|
||||
fi
|
||||
#####################################################################
|
||||
########## $:/moa picture ## CREATE EMAIL from email tiddler ########
|
||||
## GET $:/moa Tiddlers ####################################### START
|
||||
echo "GET $:/moa Tiddlers"
|
||||
###################################################### [tag[$:/moa]] used for "DID" declaration
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'FRIENDS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[$:/moa]]' ## $:/moa EMAIL Tiddlers
|
||||
#####################################################################
|
||||
fplayers=($(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq -rc .[].title))
|
||||
echo "${fplayers[@]}"
|
||||
UPLAYERSTIDS=()
|
||||
for fp in ${fplayers[@]}; do
|
||||
|
||||
[[ ! "${fp}" =~ ^[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]] && echo "BAD ${fp} FORMAT" && continue
|
||||
[[ "${fp}" == "${PLAYER}" ]] && echo "IT'S ME - CONTINUE" && continue
|
||||
|
||||
FPLAYER=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .player')
|
||||
[[ $FPLAYER == 'null' || $FPLAYER == '' ]] \
|
||||
&& echo "FPLAYER null - NOGOOD${fp} -" \
|
||||
&& continue
|
||||
# AUTO CORRECT : sed -i "s~${fp}~NOGOOD${fp}~g" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
|
||||
FTW=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .tw')
|
||||
[[ ${FTW} == "/ipns/" || ${FTW} == "null" || ${FTW} == "" ]] && echo "WEIRD FTW ${FTW} - CONTINUE" && continue
|
||||
|
||||
FG1PUB=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .g1pub')
|
||||
[[ $FG1PUB == 'null' || $FG1PUB == '' ]] && echo "FG1PUB null - CONTINUE" && continue
|
||||
|
||||
IHASH=$(cat ~/.zen/tmp/${MOATS}/FRIENDS.json | jq .[] | jq -r 'select(.title=="'${fp}'") | .text' | sha256sum | cut -d ' ' -f 1)
|
||||
|
||||
echo ":: coucou :: $FPLAYER :: (ᵔ◡◡ᵔ) ::"
|
||||
echo "TW: $FTW"
|
||||
echo "G1: $FG1PUB"
|
||||
echo "IHASH: $IHASH"
|
||||
UPLAYERSTIDS=("${UPLAYERSTIDS[@]}" "[[${FPLAYER^^}|${FPLAYER^^}]]")
|
||||
|
||||
## GET ORIGINH FROM LAST KNOWN TW STATE
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}
|
||||
|
||||
## CHECK ALREADY IN ${FPLAYER^^} IHASH
|
||||
rm -f ~/.zen/tmp/${MOATS}/finside.json
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'finside.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${FPLAYER^^}" ## ${FPLAYER^^} autoload Tiddlers
|
||||
|
||||
INSIDEH=$(cat ~/.zen/tmp/${MOATS}/finside.json | jq -rc '.[].ihash')
|
||||
echo "INSIDEH: $INSIDEH"
|
||||
|
||||
if [[ -s ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html ]]; then
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' "${FPLAYER}.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${FPLAYER}" ## GET ORIGIN
|
||||
|
||||
ORIGINH=$(cat ~/.zen/tmp/${MOATS}/${FPLAYER}.json | jq -r '.[].text' | sha256sum | cut -d ' ' -f 1)
|
||||
## CAN USE IPFSH=$(cat ~/.zen/tmp/${MOATS}/${FPLAYER}.json | jq -r '.[].text' | ipfs add -q)
|
||||
## TODO MICROLEDGER TIDDLER...
|
||||
# we are monitoring email tiddler image change (the G1BILLET background can be made of).
|
||||
echo "ORIGINH: $ORIGINH"
|
||||
else
|
||||
ORIGINH="$INSIDEH"
|
||||
fi
|
||||
|
||||
( ## REFRESH LOCAL PLAYER CACHE with FRIEND ACTUAL TW (&) will be used TOMORROW
|
||||
ipfs --timeout 480s cat --progress="false" ${FTW} > ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html
|
||||
) &
|
||||
|
||||
## UPDATE IF IHASH CHANGED -> New drawing => Friend get informed
|
||||
if [[ -z $INSIDEH || $INSIDEH != $IHASH || $ORIGINH != $INSIDEH ]]; then
|
||||
cat ${MY_PATH}/../templates/data/_UPPERFPLAYER_.json \
|
||||
| sed -e "s~_UPPERFPLAYER_~${FPLAYER^^}~g" \
|
||||
-e "s~_FPLAYER_~${FPLAYER}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_IHASH_~${IHASH}~g" \
|
||||
-e "s~_FRIENDTW_~${FTW}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${FPLAYER^^}.json
|
||||
|
||||
echo "Insert New ${FPLAYER^^}.json"
|
||||
#~ cat ~/.zen/tmp/${MOATS}/${FPLAYER^^}.json | jq
|
||||
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--import ${HOME}/.zen/tmp/${MOATS}/${FPLAYER^^}.json 'application/json' \
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
|
||||
--render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|
||||
|| echo "ERROR - CANNOT IMPORT ${FPLAYER^^}.json - ERROR"
|
||||
|
||||
if [[ $ORIGINH != $INSIDEH && $ORIGINH != "" ]]; then
|
||||
echo "ORIGINH Update"
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--import ${HOME}/.zen/tmp/${MOATS}/${FPLAYER}.json 'application/json' \
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
|
||||
--render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|
||||
|| echo "ERROR - CANNOT IMPORT ${FPLAYER}.json - ERROR"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
## GET $:/moa Tiddlers ####################################### END
|
||||
|
||||
################## PREPARE LIST TO INSERT IN SECTORTW_NEWS TID
|
||||
echo "${UPLAYERSTIDS[@]}"
|
||||
UPLAYERSTIDS_STR=""
|
||||
for item in "${UPLAYERSTIDS[@]}"; do
|
||||
UPLAYERSTIDS_STR+="\n* $item"
|
||||
done
|
||||
# Trim leading space
|
||||
UPLAYERSTIDS_STR="${UPLAYERSTIDS_STR# }"
|
||||
######################################
|
||||
# (RE)MAKE "SECTORTW_NEWS" TIDDLER
|
||||
cat ${MY_PATH}/../templates/data/SECTORTW_NEWS.json \
|
||||
| sed -e "s~_SECTOR_~${SECTOR}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_UPLANET_~https://qo-op.com~g" \
|
||||
-e "s~_UPLAYERSTIDS_~${UPLAYERSTIDS_STR}~g" \
|
||||
-e "s~_SECTORTW_~${SECTORIPNS}/TW~g" \
|
||||
> ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json
|
||||
|
||||
echo "SECTORTW_NEWS $SECTOR SECTORTW=${SECTORIPNS}/TW :: ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json"
|
||||
${MY_PATH}/TW/import_tiddler.sh \
|
||||
~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json
|
||||
|
||||
#############################################################
|
||||
# Connect_PLAYER_To_Gchange.sh : Sync FRIENDS TW - TODO : REWRITE
|
||||
######################################### BETTER USE json FILE IN /ipns/$IPFSNODEID/COINS
|
||||
#~ echo "##################################################################"
|
||||
## GWIP == myIP or TUBE !!
|
||||
#############################################################
|
||||
# Connect_PLAYER_To_Gchange.sh : Sync FRIENDS TW
|
||||
##############################################################
|
||||
echo "##################################################################"
|
||||
|
||||
[[ -s ~/.zen/tmp/coucou/${G1PUB}.gchange.json ]] \
|
||||
&& echo "## Connect_PLAYER_To_Gchange.sh (★★★★★)" \
|
||||
[[ $(echo "$COINS > 2" | bc -l) -eq 1 ]] \
|
||||
&& echo "## Connect_PLAYER_To_Gchange.sh" \
|
||||
&& ${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" \
|
||||
|| echo "NO Gchange account found"
|
||||
|| echo "1 G1 + 10 ẑen needed to activate ★★★★★ system"
|
||||
|
||||
##############################################################
|
||||
# G1PalPay - 2 G1 mini -> Check for G1 TX incoming comments #
|
||||
##############################################################
|
||||
if [[ $(echo "$COINS >= 2" | bc -l) -eq 1 ]]; then
|
||||
##############################################################
|
||||
# G1PalPay.sh #
|
||||
##############################################################
|
||||
echo "## RUNNING G1PalPay Wallet Monitoring "
|
||||
${MY_PATH}/G1PalPay.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}"
|
||||
# G1PalPay - 1 G1 + 10 ZEN mini -> Check for G1 TX incoming comments #
|
||||
[[ $(echo "$COINS > 1" | bc -l) -eq 1 ]] \
|
||||
&& echo "## RUNNING G1PalPay Wallet Monitoring " \
|
||||
&& ${MY_PATH}/G1PalPay.sh ${HOME}/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" \
|
||||
|| echo "> ZenCard is not activated ($ZEN)"
|
||||
|
||||
##############################################################
|
||||
### CHECK FOR pending (TODO! In case PAY4SURE have abandonned pendings)
|
||||
|
||||
|
||||
###############
|
||||
# VOEUX.create.sh #
|
||||
##############################################################
|
||||
## SPECIAL TAG "voeu" => Creation G1Voeu (G1Titre) makes AstroBot TW G1Processing
|
||||
##############################################################
|
||||
${MY_PATH}/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" "${G1PUB}"
|
||||
|
||||
##############################################################
|
||||
###############
|
||||
# VOEUX.refresh.sh #
|
||||
##############################################################
|
||||
## RUN ASTROBOT G1Voeux SUBPROCESS (SPECIFIC Ŋ1 COPY)
|
||||
##############################################################
|
||||
${MY_PATH}/VOEUX.refresh.sh "${PLAYER}" "${MOATS}" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
|
||||
|
||||
else
|
||||
echo "> ZenCard not activated ($ZEN ZEN)"
|
||||
fi
|
||||
|
||||
###################
|
||||
# REFRESH PLAYER_feed #
|
||||
##################################
|
||||
## PATCH : RESTORE PLAYER GPS.json (protect cache erased by WISH treatment)
|
||||
cp -f ~/.zen/game/players/${PLAYER}/GPS.json ~/.zen/tmp/${MOATS}/
|
||||
## WRITE TIDDLERS IN TW SECTORTW_NEWS.json
|
||||
echo "# TW : GW API + LightBeam Feed + Friends"
|
||||
TUBE=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 3)
|
||||
|
||||
FEEDNS=$(ipfs key list -l | grep -w "${PLAYER}_feed" | cut -d ' ' -f 1)
|
||||
[[ ! ${FEEDNS} ]] && echo ">>>>> ERROR ${PLAYER}_feed IPNS KEY NOT FOUND - ERROR" && continue
|
||||
|
||||
# WRITE lightbeam params
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
|
||||
|
||||
###########################
|
||||
# Tiddlers controling GW & API
|
||||
#~ echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"'$(myPlayerApiGw)'"}]' > ~/.zen/tmp/${MOATS}/5001.json
|
||||
#~ echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"'$myIPFS'"}]' > ~/.zen/tmp/${MOATS}/8080.json
|
||||
|
||||
## COPY DATA PRODUCED BY GCHANGE STAR EXTRACTION
|
||||
FRIENDSFEEDS=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/FRIENDSFEEDS 2>/dev/null)
|
||||
echo "★★★★★ FRIENDS FEEDS : "${FRIENDSFEEDS}
|
||||
ASTRONAUTES=$(cat ~/.zen/tmp/${IPFSNODEID}/RSS/${PLAYER}/ASTRONAUTES 2>/dev/null)
|
||||
echo "★★★★★ FRIENDS TW : "${ASTRONAUTES}
|
||||
|
||||
## Change TW FRIENDFEED ie PLAYER RSS IPNS (must fix TW plugin to work)
|
||||
#~ echo '[{"title":"$:/plugins/astroport/lightbeams/state/subscriptions","text":"'${FRIENDSFEEDS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/friends.json
|
||||
#~ ## ADD --import "$HOME/.zen/tmp/${MOATS}/friends.json" "application/json" \ ## MANUAL TW RSS REGISTRATION
|
||||
|
||||
## WRITE TIDDLERS IN TW
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--import ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/VISIO.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/CESIUM.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
|
||||
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
|
||||
## CHECK IT IS OK
|
||||
[[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|
||||
&& echo "TW UPlanet tiddlers updated" \
|
||||
|| echo "ERROR - CANNOT CREATE TW NEWINDEX - ERROR"
|
||||
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html
|
||||
###########################
|
||||
|
||||
########################
|
||||
## SEND TODAY ZINE
|
||||
#### UPlanetZINE/day${days}/index.${lang}.html
|
||||
TODAYZINE="${MY_PATH}/../templates/UPlanetZINE/day${days}/index.${lang}.html"
|
||||
[[ ! -s ${TODAYZINE} ]] && TODAYZINE="${MY_PATH}/../templates/UPlanetZINE/day${days}/index.html"
|
||||
[[ -s ${TODAYZINE} && ${days} -gt 0 ]] \
|
||||
&& echo "SENDING TODAYZINE DAY ${days} + mailjet TW import " \
|
||||
&& ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ${TODAYZINE} "ZINE #${days}" "${HOME}/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html" \
|
||||
|| echo "NO ZINE FOR DAY ${days}"
|
||||
|
||||
|
||||
####################
|
||||
## TW NEWINDEX .... #####
|
||||
|
||||
## ANY CHANGES ?
|
||||
##############################################################
|
||||
echo "LOCAL BACKUP + MICROLEDGER TW"
|
||||
DIFF=$(diff ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html)
|
||||
if [[ $DIFF ]]; then
|
||||
echo "DIFFERENCE DETECTED !! "
|
||||
echo "Backup & Upgrade TW local copy..."
|
||||
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
[[ -s ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain ]] \
|
||||
|
@ -509,161 +285,105 @@ for PLAYER in ${PLAYERONE[@]}; do
|
|||
&& echo "# CHAIN : ${CURCHAIN} -> ${ZCHAIN}" \
|
||||
&& [[ ${CURCHAIN} != "" && ${ZCHAIN} != "" ]] \
|
||||
&& sed -i "s~${CURCHAIN}~${ZCHAIN}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
else
|
||||
## COUNT NO CHANGE
|
||||
try=$(cat ~/.zen/game/players/${PLAYER}/ipfs/_nochange 2>/dev/null) || try=0
|
||||
((try++)) && echo $try > ~/.zen/game/players/${PLAYER}/ipfs/_nochange
|
||||
echo "NO CHANGE $try TIMES"
|
||||
fi
|
||||
##############################################################
|
||||
|
||||
##################################################
|
||||
######## UPDATING ${PLAYER}/ipfs/moa/.chain
|
||||
cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \
|
||||
##################################################
|
||||
################## UPDATING PLAYER MOA
|
||||
[[ $DIFF ]] && cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \
|
||||
~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats)
|
||||
|
||||
## CLEAN .chain CACHE
|
||||
find ~/.zen/game/players/${PLAYER}/ipfs/moa/ -mtime +30 -type f -exec rm -f '{}' \;
|
||||
|
||||
##########################################
|
||||
## TW IPFS ADD & PUBLISH
|
||||
##########################################
|
||||
TW=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
|
||||
ipfs --timeout 720s name publish --key=${PLAYER} /ipfs/${TW}
|
||||
ipfs name publish --key=${PLAYER} /ipfs/${TW}
|
||||
|
||||
[[ $DIFF ]] && echo ${TW} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
|
||||
|
||||
## LOCAL PLAYER CACHING
|
||||
echo ${TW} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
|
||||
echo ${MOATS} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
|
||||
|
||||
echo "================================================"
|
||||
echo " NEW TW ${PLAYER} : = ${myIPFS}/ipfs/${TW}"
|
||||
echo " $myIPFSGW/ipns/${ASTRONAUTENS}"
|
||||
echo "================================================"
|
||||
ipfs pin rm ${CURCHAIN}
|
||||
|
||||
######################### REPLACE TW with REDIRECT to latest IPFS or IPNS (reduce 12345 cache size)
|
||||
[[ ! -z ${TW} ]] && TWLNK="/ipfs/${TW}" || TWLNK="/ipns/${ASTRONAUTENS}"
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${TWLNK}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
|
||||
|
||||
#########################################################
|
||||
##### TW JSON RSS EXPORT
|
||||
###################
|
||||
# REFRESH PLAYER_feed KEY
|
||||
echo "(☉_☉ ) (☉_☉ ) (☉_☉ ) RSS"
|
||||
|
||||
#########################################################################################
|
||||
## CREATING 30 DAYS JSON RSS STREAM
|
||||
# [days:created[-30]!is[system]!tag[G1Voeu]!externalTiddler[yes]!tag[load-external]]
|
||||
#########################################################################################
|
||||
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
|
||||
--output ~/.zen/game/players/${PLAYER}/ipfs \
|
||||
--render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]!externalTiddler[yes]!tag[load-external]]'
|
||||
--output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ]] && echo "NO ${PLAYER} RSS - BAD ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json -"
|
||||
|
||||
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ]] \
|
||||
&& echo "NO ${PLAYER} RSS - BAD "
|
||||
|
||||
echo "~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json"
|
||||
|
||||
########################################################
|
||||
#### PLAYER ACCOUNT HAVE NEW TIDDLER or NOT #########
|
||||
if [[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" && "${CURRENT}" != "${PLAYER}" ]]; then
|
||||
echo "ALERT -- RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN -- $days DAYS"
|
||||
## DEAD PLAYER ??
|
||||
if [[ ${days} -eq 27 ]]; then
|
||||
echo "<html><head><meta charset='UTF-8'>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head><body><h1>🔋WARNING</h1>" > ~/.zen/tmp/alert
|
||||
echo "<br><h3><a href=$(myIpfsGw)/ipfs/${CURCHAIN}> ${PLAYER} TW 🔌📺 </a></h3> 🌥 $ZEN ZEN 🌥 </body></html>" >> ~/.zen/tmp/alert
|
||||
|
||||
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/alert "TW ZEN ALERT"
|
||||
echo "<<<< PLAYER TW WARNING <<<< ${DIFF_SECONDS} > ${days} days"
|
||||
fi
|
||||
if [[ ${days} -gt 29 && $(echo "$COINS <= 2" | bc -l) -eq 1 ]]; then
|
||||
#################################### UNPLUG ACCOUNT
|
||||
echo ">>>> PLAYER TW UNPLUG >>>>> ${days} days => BYE BYE ${PLAYER} ZEN=$ZEN"
|
||||
${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} "ALL"
|
||||
continue
|
||||
fi
|
||||
|
||||
## PAY 1 ZEN TO UMAPG1PUB
|
||||
[[ "${UMAPG1PUB}" != "" ]] \
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "0.1" "${UMAPG1PUB}" "UPLANET:TW:${YOUSER}:/ipfs/${TW}"
|
||||
|
||||
else
|
||||
|
||||
### PLAYER ALIVE PUBLISH RSS &
|
||||
FEEDNS=$(ipfs key list -l | grep -w "${PLAYER}_feed" | cut -d ' ' -f 1)
|
||||
[[ ${FEEDNS} ]] \
|
||||
&& IRSS=$(ipfs add --pin=false -q ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json | tail -n 1) \
|
||||
&& echo "Publishing ${PLAYER}_feed: /ipns/${FEEDNS} => /ipfs/${IRSS}" \
|
||||
&& ipfs --timeout 300s name publish --key="${PLAYER}_feed" /ipfs/${IRSS} \
|
||||
|| echo ">>>>> WARNING ${PLAYER}_feed IPNS KEY PUBLISHING CUT - WARNING"
|
||||
|
||||
fi
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html
|
||||
|
||||
#########################################################
|
||||
## TODO CREATING 30 DAYS XML RSS STREAM ???
|
||||
## 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"
|
||||
|
||||
#################################################
|
||||
################### COPY DATA TO UP LEVEL GRIDS
|
||||
#################################################
|
||||
##################################
|
||||
#### PLAYER ACCOUNT CLEANING #########
|
||||
## IF ZEN < 11
|
||||
## && EMPTY RSS + 30 DAYS BIRTHDATE
|
||||
## ==> UNPLUG
|
||||
[[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" ]] \
|
||||
&& echo "RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN --" \
|
||||
&& [[ $(echo "$COINS < 2.1" | bc -l) -eq 1 ]] \
|
||||
&& [[ ${DIFF_SECONDS} -gt $(( 27 * 24 * 60 * 60 )) ]] \
|
||||
&& echo "<html><body><h1>WARNING.</h1> Your TW will be UNPLUGGED and stop being published..." > ~/.zen/tmp/alert \
|
||||
&& echo "<br><h3>TW : <a href=$(myIpfsGw)/ipfs/${CURCHAIN}> ${PLAYER}</a></h3>ZEN=$ZEN </body></html>" >> ~/.zen/tmp/alert \
|
||||
&& ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/alert "TW ALERT" \
|
||||
&& echo "<<<< PLAYER TW WARNING <<<< ${DIFF_SECONDS} > ${days} days" \
|
||||
&& [[ ${DIFF_SECONDS} -gt $(( 30 * 24 * 60 * 60 )) ]] \
|
||||
&& echo ">>>> PLAYER TW UNPLUG >>>>> ${days} days => BYE BYE ${PLAYER} ZEN=$ZEN" \
|
||||
&& ${MY_PATH}/../tools/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \
|
||||
&& continue
|
||||
#################################### UNPLUG ACCOUNT
|
||||
|
||||
IRSS=$(ipfs add -q ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json | tail -n 1) \
|
||||
&& ipfs name publish --key="${PLAYER}_feed" /ipfs/${IRSS}
|
||||
|
||||
######################### REPLACE TW with REDIRECT to latest IPFS or IPNS (reduce 12345 cache size)
|
||||
[[ ! -z ${TW} ]] && TWLNK="/ipfs/${TW}" || TWLNK="/ipns/${ASTRONAUTENS}"
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${TWLNK}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${IRSS}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}.feed.html
|
||||
|
||||
|
||||
if [[ ${LAT} && ${LON} ]]; then
|
||||
## SECTOR BANK COORD
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
## REGION
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
REGLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
|
||||
echo "(⌐■_■) /UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}"
|
||||
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/RSS/
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
|
||||
|
||||
cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/RSS/
|
||||
#### CREATE ALL JSON COMPILATION
|
||||
${MY_PATH}/../tools/json_dir.all.sh \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/RSS/
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
|
||||
|
||||
## IPFS PLAYER TW #
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER}
|
||||
# /ipfs/${TW} = /TW/${PLAYER}/index.html
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${TW}'\" />${TODATE}:${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER}/index.html
|
||||
# /ipns/${ASTRONAUTENS} = /TW/${PLAYER}/_index.html
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${ASTRONAUTENS}'\" />${PLAYER}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TW/${PLAYER}/_index.html
|
||||
## IPNS UMAP _index.html ##
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${UMAPNS}'\" />${TODATE}:_${LAT}_${LON}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_index.html
|
||||
${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
|
||||
|
||||
ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON} 2>/dev/null
|
||||
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
|
||||
|
||||
#####################################################################
|
||||
## DAY=7 : SEND ${G1LEVEL1} G1 to PLAYER
|
||||
[[ ${days} -eq 7 && "${CURRENT}" != "${PLAYER}" && "${CURRENT}" != "" ]] \
|
||||
&& echo "7 DAY. PLAYER STEP ONE SUCCEED." \
|
||||
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "${G1LEVEL1}" "${G1PUB}" "UPLANET:WELCOME:${MIUSER}:${YOUSER}" \
|
||||
&& echo "UPLANET:WELCOME:${MIUSER}:${YOUSER}" && echo "(⌐■_■) ~~~ OFFICIAL ~~ _${LAT}_${LON} ~~~ $ASTRONAUTENS"
|
||||
|
||||
#####################################################################
|
||||
############ CURRENT #################### _ForkUPlanetZERO ?
|
||||
if [[ $(echo "$COINS > 10" | bc -l) -eq 1 ]]; then
|
||||
[[ ${CURRENT} == ${PLAYER} ]] && ${MY_PATH}/../ASTROBOT/_ForkUPlanetZERO.sh
|
||||
fi
|
||||
#################################### NEED > 100 G1 ##################
|
||||
#####################################################################
|
||||
#####################################################################
|
||||
|
||||
ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON} 2>/dev/null
|
||||
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
|
||||
|
||||
## MAINTAIN R/RW TW STATE
|
||||
[[ ${ASTRONS} == "" ]] \
|
||||
|
@ -674,14 +394,8 @@ for PLAYER in ${PLAYERONE[@]}; do
|
|||
|
||||
## CLEANING CACHE
|
||||
rm -Rf ~/.zen/tmp/${MOATS}
|
||||
echo
|
||||
|
||||
end=`date +%s`
|
||||
dur=`expr $end - $start`
|
||||
echo "${PLAYER} refreshing took $dur seconds (${MOATS})"
|
||||
|
||||
done
|
||||
echo "============================================ PLAYER.refresh DONE."
|
||||
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -12,15 +12,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
# UMAP > SECTOR > REGION
|
||||
## Get from 100 sectors tiddlers with more than 2 signatures
|
||||
############################################
|
||||
echo
|
||||
echo
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "# # # # RUNNING REGION.refresh"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
@ -31,15 +23,9 @@ for i in $*; do
|
|||
UMAPS=("$i" ${UMAPS[@]})
|
||||
done
|
||||
|
||||
## NO $i PARAMETERS - GET ALL UMAPS
|
||||
if [[ ${#UMAPS[@]} == 0 ]]; then
|
||||
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
UMAPS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
fi
|
||||
[[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
|
||||
|
||||
######## DETERMINE REGIONS FOR ALL UMAPS ################
|
||||
######## INIT REGIONS ########################
|
||||
for UMAP in ${UMAPS[@]}; do
|
||||
|
||||
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
|
||||
|
@ -48,10 +34,10 @@ for UMAP in ${UMAPS[@]}; do
|
|||
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
REGLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
|
||||
MYREGIONS=("_${RLAT}_${RLON}" ${MYREGIONS[@]})
|
||||
MYREGIONS=("_${REGLAT}_${REGLON}" ${MYREGIONS[@]})
|
||||
|
||||
done
|
||||
|
||||
|
@ -63,25 +49,24 @@ REGIONS=($(echo "${MYREGIONS[@]}" | tr ' ' '\n' | sort -u))
|
|||
echo "ACTIVATED REGIONS : ${REGIONS[@]}"
|
||||
|
||||
for REGION in ${REGIONS[@]}; do
|
||||
echo "-------------------------------------------------------------------"
|
||||
echo "_____REGION ${REGION} $(date)"
|
||||
|
||||
echo "_____REGION ${REGION}"
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}
|
||||
RLAT=$(echo ${REGION} | cut -d '_' -f 2)
|
||||
RLON=$(echo ${REGION} | cut -d '_' -f 3)
|
||||
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
|
||||
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
|
||||
echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -"
|
||||
continue
|
||||
fi
|
||||
[[ "${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}"
|
||||
|
||||
|
@ -98,17 +83,15 @@ for REGION in ${REGIONS[@]}; do
|
|||
TODATEREGIONNS=$(ipfs key import ${TODATE}${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
|
||||
##############################################################
|
||||
## GET from IPNS
|
||||
ipfs --timeout 240s get --progress=false -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
## SHOULD NEED 12 SIGNATURES
|
||||
## FULL REFRESH DEMO... ZEN CHAINING COMING LATER
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}/RSS
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${RLAT}_${RLON}.week.rss.json
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
|
||||
## START WITH LOCAL SECTORS RSS WEEK
|
||||
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*.week.rss.json 2>/dev/null))
|
||||
RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
|
||||
for RSS in ${RSSNODE[@]}; do
|
||||
[[ $(cat ${RSS}) != "[]" ]] \
|
||||
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
|
||||
|
@ -116,12 +99,8 @@ for REGION in ${REGIONS[@]}; do
|
|||
done
|
||||
NL=${#RSSNODE[@]}
|
||||
|
||||
echo "
|
||||
---
|
||||
" >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
|
||||
|
||||
## ADD SWARM SECTORS RSS WEEK
|
||||
RSSWARM=($(ls ~/.zen/tmp/swarm/*/UPLANET/SECTORS/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*.week.rss.json 2>/dev/null))
|
||||
RSSWARM=($(ls ~/.zen/tmp/swarm/*/SECTORS/_${REGLAT}*_${REGLON}*.week.rss.json 2>/dev/null))
|
||||
for RSS in ${RSSWARM[@]}; do
|
||||
[[ $(cat ${RSS}) != "[]" ]] \
|
||||
&& cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ \
|
||||
|
@ -135,44 +114,42 @@ for REGION in ${REGIONS[@]}; do
|
|||
## REMOVE SECTORS PARTS
|
||||
rm -f ~/.zen/tmp/${MOATS}/${REGION}/RSS/*.week.rss.json
|
||||
|
||||
## MAKE FINAL _${RLAT}_${RLON}.week.rss.json
|
||||
## MAKE FINAL _${REGLAT}_${REGLON}.week.rss.json
|
||||
mv ~/.zen/tmp/${MOATS}/${REGION}/RSS/.all.json \
|
||||
~/.zen/tmp/${MOATS}/${REGION}/RSS/_${RLAT}_${RLON}.week.rss.json
|
||||
~/.zen/tmp/${MOATS}/${REGION}/RSS/_${REGLAT}_${REGLON}.week.rss.json
|
||||
|
||||
## PREPARING JOURNAL
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON}
|
||||
## PREPARING AiApi link
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/REGIONS
|
||||
RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL)
|
||||
|
||||
###################################
|
||||
## NODE PUBLISH REGION TODATENS LINK
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />/_${RLAT}_${RLON}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON}/_index.html
|
||||
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
|
||||
|
||||
#~ ## DEMO : PREPARE Ask.IA link - PROD will be launched during RUNTIME.
|
||||
#~ echo "<meta http-equiv=\"refresh\" content=\"0; url='https://api.copylaradio.com/tellme/?cid=/ipfs/${RWEEKCID}'\" />" \
|
||||
#~ > ~/.zen/tmp/${MOATS}/${REGION}/Ask.IA._${RLAT}_${RLON}.redir.html
|
||||
|
||||
TOTL=$((${NL}+${NS}))
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
echo "Numbers of REGION WEEK RSS : ${NL} + ${NS} : "${TOTL}
|
||||
|
||||
rm ~/.zen/tmp/${MOATS}/${REGION}/N_* 2>/dev/null
|
||||
echo "SHOW TROPHY" > ~/.zen/tmp/${MOATS}/${REGION}/TODO
|
||||
|
||||
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N_${TOTL}
|
||||
rm ~/.zen/tmp/${MOATS}/${REGION}/RWEEKCID 2>/dev/null ## TODO REMOVE
|
||||
|
||||
RWEEKCID=$(ipfs add -q ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL 2>/dev/null)
|
||||
if [[ ${RWEEKCID} ]]; then
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/QmYNH85cJCwSVw4c7SyHtc2jtgh7dL5RegozX7e8Re28a9/md.htm?src=/ipfs/${RWEEKCID}'\" />" \
|
||||
> ~/.zen/tmp/${MOATS}/${REGION}/Journal._${RLAT}_${RLON}.view.html
|
||||
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${RLAT}_${RLON}/JOURNAL.md
|
||||
fi
|
||||
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 --timeout 180s name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
|
||||
ipfs name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
|
||||
|
||||
|
||||
ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} > /dev/null 2>&1
|
||||
ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} ${TODATE}${REGIONG1PUB} > /dev/null 2>&1
|
||||
|
||||
done
|
||||
|
||||
|
|
|
@ -1,282 +0,0 @@
|
|||
#!/bin/bash
|
||||
########################################################################
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
########################################################################
|
||||
# INSERT NEW TIDDLERS FROM RSS JSON INTO UPLANET TW
|
||||
# DETECTING CONFLICT WITH SAME TITLE
|
||||
# ASKING TO EXISTING SIGNATURES TO UPDATE THEIR TW OR FORK TITLE
|
||||
# CALLED BY "SECTOR.refresh.sh"
|
||||
# SEND 10 ZEN TO EACH SIGNATURE
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
. "$MY_PATH/../tools/my.sh"
|
||||
|
||||
RSS=$1 ## filepath to RSS
|
||||
SECTOR=$2 ## Sector identifier _0.0_0.0
|
||||
MOATS=$3 ## temp cache access
|
||||
INDEX=$4 ## SECTOR TW index file
|
||||
|
||||
echo
|
||||
|
||||
[[ ! -s ${RSS} ]] && echo "BAD RSS INPUT" && exit 1
|
||||
[[ "$(cat ${RSS})" == "[]" ]] && echo "EMPTY RSS " && exit 0
|
||||
|
||||
[[ ! -d ~/.zen/tmp/${MOATS}/${SECTOR}/ ]] && echo "- ERROR - BAD UPLANET CONTEXT - look inside code - " && exit 1
|
||||
[[ ! -s ${INDEX} ]] \
|
||||
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
|
||||
&& echo "- WARNING - REFRESHING SECTOR FROM empty TEMPLATE *****"
|
||||
|
||||
## EXTRACT PLAYER FROM RSS FILE NAME
|
||||
PLAYER=$(echo ${RSS} | rev | cut -d '/' -f 1 | rev | sed "s~.rss.json~~g")
|
||||
## GET PLAYER INFORMATION
|
||||
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${PLAYER})
|
||||
echo "export ASTROPORT=${ASTROPORT} ASTROTW=${ASTROTW} ASTROG1=${ASTROG1} ASTROMAIL=${EMAIL} ASTROFEED=${FEEDNS}"
|
||||
|
||||
echo "======= ${INDEX} =======
|
||||
SECTOR ${SECTOR} TW INSERTING ${PLAYER}
|
||||
${RSS}
|
||||
=================================================================="
|
||||
cat "${RSS}" | jq 'sort_by(.created) | reverse | .[]' | jq -r '.title' > ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list
|
||||
##
|
||||
gloops=0
|
||||
signatures=0
|
||||
|
||||
while read title; do
|
||||
|
||||
[[ ${floop} -gt 1 ]] && echo "Other Tiddlers are similaR... BREAK LOOP" && break
|
||||
|
||||
# FILTER "UPPERCASE" + Astroport Tid, less than 4 characters title Tiddlers (ex: GPS, ...).
|
||||
[[ ${title} == "GettingStarted" || "${title^^}" == "${title}" || "${title::3}" == '$:/' || ${title::4} == ${title} || ${title} == "AstroID" || ${title} == "Voeu1.png" || ${title} == "Astroport" || ${title} == "MadeInZion" || ${title} == "G1Visa" || ${title} == "ZenCard" || ${title::5} == "Draft" ]] \
|
||||
&& echo "FILTERED TITLE ${title}" && continue
|
||||
|
||||
## CHECK FOR TIDDLER WITH SAME TITTLE IN SECTOR TW
|
||||
rm -f ~/.zen/tmp/${MOATS}/TMP.json
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${MOATS} --render '.' 'TMP.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${title}"
|
||||
ISHERE=$(cat ~/.zen/tmp/${MOATS}/TMP.json | jq -r ".[].title")
|
||||
|
||||
[[ ! "${ISHERE}" ]] && echo "No Tiddler found in ${INDEX}"
|
||||
|
||||
TMPTAGS=$(cat ~/.zen/tmp/${MOATS}/TMP.json | jq -r .[].tags)
|
||||
TMPEMAILS=($(echo "$TMPTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
TMPSIGN=${#TMPEMAILS[@]}
|
||||
#~ echo "INSIDE TIDDLER HAVE ${TMPSIGN} SIGNATURE(S)"
|
||||
|
||||
if [[ "${ISHERE}" != "${title}" || ${TMPSIGN} == 0 ]]; then
|
||||
|
||||
## NEW TIDDLER
|
||||
echo "Importing Title: $title"
|
||||
cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json
|
||||
|
||||
#~ echo "DEBUG"
|
||||
#~ cat ~/.zen/tmp/${MOATS}/NEW.json | jq
|
||||
#~ echo "tiddlywiki --load ${INDEX} --import ~/.zen/tmp/${MOATS}/NEW.json 'application/json' --output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' '"${SECTOR}.html"' 'text/plain'"
|
||||
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import ~/.zen/tmp/${MOATS}/NEW.json 'application/json' \
|
||||
--output ~/.zen/tmp/${MOATS}/${SECTOR} --render '$:/core/save/all' "${SECTOR}.html" 'text/plain'
|
||||
|
||||
[[ -s ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ]] \
|
||||
&& rm ${INDEX} \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ${INDEX} \
|
||||
&& ((gloops++)) \
|
||||
&& echo "GLOOPS (${gloops}) : ${title}" \
|
||||
&& signatures=$((signatures + TMPSIGN))
|
||||
|
||||
[[ ! -s ${INDEX} ]] && echo "ERROR. TW could not ingest ~/.zen/tmp/${MOATS}/NEW.json" && exit 1
|
||||
|
||||
else
|
||||
|
||||
## SAME TIDDLER
|
||||
echo "TIDDLER : $title (${TMPSIGN} signature(s)) ... ALREADY EXISTS..."
|
||||
|
||||
## Remove [] and put inline to compare
|
||||
cat ~/.zen/tmp/${MOATS}/TMP.json | jq -rc .[] > ~/.zen/tmp/${MOATS}/INSIDE.json
|
||||
cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json
|
||||
|
||||
if [[ $(diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json) == "" ]]; then
|
||||
echo "... Tiddlers are similar ..."
|
||||
((floop++))
|
||||
continue
|
||||
fi
|
||||
floop=1
|
||||
## LOG TIDDLERS
|
||||
#~ echo
|
||||
#~ echo "=========== INSIDE.json"
|
||||
#~ cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -c
|
||||
#~ echo
|
||||
#~ echo "=========== NEW.json"
|
||||
#~ cat ~/.zen/tmp/${MOATS}/NEW.json | jq -c
|
||||
#~ echo
|
||||
## TODO EXTEND CONTROL TO text & ipfs & _canonical_url
|
||||
## NEED SIGNATURES & TIDDLER SIMILARITY TO COME UP
|
||||
|
||||
## CHECK FOR EMAIL SIGNATURES DIFFERENCE
|
||||
NTAGS=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags)
|
||||
NEMAILS=($(echo "$NTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
NSIGN=${#NEMAILS[@]}
|
||||
echo "New Tiddler $NSIGN signatures : ${NEMAILS[*]}"
|
||||
|
||||
ITAGS=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .tags)
|
||||
IEMAILS=($(echo "$ITAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
|
||||
ISIGN=${#IEMAILS[@]}
|
||||
echo "Inside Tiddler $ISIGN signatures : ${IEMAILS[*]}"
|
||||
|
||||
## New should have more signatures than Inside
|
||||
[[ ${NSIGN} -le ${ISIGN} ]] && echo "Most signed already in..." && continue
|
||||
## UPLANET GRID COLLISION PARAM ###
|
||||
# [[ ${NSIGN} -le 3 ]] && update TW OR continue
|
||||
# https://www.copylaradio.com/blog/blog-1/post/decentralized-information-ecosystem-51
|
||||
|
||||
if [[ "${NEMAILS[*]}" != "${IEMAILS[*]}" ]]; then
|
||||
|
||||
## SEARCH FOR DIFFERENCE IN EMAIL SIGNATURES TAGS
|
||||
COMMON=(); NUNIQUE=(); IUNIQUE=()
|
||||
|
||||
# Detect common and unique elements
|
||||
for email in "${NEMAILS[@]}"; do
|
||||
if [[ " ${IEMAILS[*]} " == *" $email "* ]]; then
|
||||
COMMON+=("$email")
|
||||
else
|
||||
NUNIQUE+=("$email")
|
||||
fi
|
||||
done
|
||||
|
||||
for email in "${IEMAILS[@]}"; do
|
||||
if [[ " ${NEMAILS[*]} " != *" $email "* ]]; then
|
||||
IUNIQUE+=("$email")
|
||||
fi
|
||||
done
|
||||
|
||||
# Print the results
|
||||
echo "Common email addresses : ${COMMON[*]}"
|
||||
echo "Email addresses unique in NEW Tiddler : ${NUNIQUE[*]}"
|
||||
echo "Email addresses unique in INSIDE Tiddler : ${IUNIQUE[*]}"
|
||||
|
||||
combined=("${IEMAILS[@]}" "${NEMAILS[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
|
||||
NEWTID=$(ipfs add -q ~/.zen/tmp/${MOATS}/NEW.json | tail -n 1)
|
||||
INSIDETID=$(ipfs add -q ~/.zen/tmp/${MOATS}/INSIDE.json | tail -n 1)
|
||||
|
||||
###############################
|
||||
## TODO : check STAR level and activate auto merge
|
||||
|
||||
for email in "${unique_combined[@]}"; do
|
||||
|
||||
echo "<html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style></head>
|
||||
<body>
|
||||
<h1>$(date)</h1>
|
||||
|
||||
<h2>$title</h2>
|
||||
Tiddler appears in <b>${unique_combined[*]}</b> TW(s)
|
||||
<br>
|
||||
<ul>
|
||||
<li><a href='$(myIpfsGw)/ipfs/${INSIDETID}'>Actual Tiddler</a></li>
|
||||
<li><a href='$(myIpfsGw)/ipfs/${NEWTID}'>NEW Tiddler</a> being overwrite by ${NUNIQUE[*]}</li>
|
||||
</ul>
|
||||
<h2><a href='$(myIpfsGw)${VDONINJA}/?room=${MOATS}'>Record VISIO for this event...</a></h2>
|
||||
</body></html>" > ~/.zen/tmp/${MOATS}/g1message
|
||||
|
||||
${MY_PATH}/../tools/mailjet.sh "$email" ~/.zen/tmp/${MOATS}/g1message "Upgrade Tiddler : ${title}"
|
||||
|
||||
done
|
||||
|
||||
## SEND ZEN G1PalPay Signal
|
||||
|
||||
#~ ##############################################################
|
||||
#~ G1AMOUNT=$(echo "$NSIGN / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
|
||||
#~ G1AMOUNT=$NSIGN ## SEND FLUID COIN
|
||||
#~ echo "***** SECTOR $SECTOR REWARD *****************"
|
||||
#~ echo "SPREAD $NSIGN G1 TO ${unique_combined[@]} SIGNATURES
|
||||
#~ to ${PLAYER} WALLET ${ASTROG1}"
|
||||
#~ echo "************************************************************"
|
||||
#~ ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "${$G1AMOUNT}" "${ASTROG1}" "${unique_combined[@]}"
|
||||
#~ ################################################ GRATITUDE SENT
|
||||
|
||||
## AND OVER WRITE TIDDLER...
|
||||
|
||||
|
||||
else
|
||||
|
||||
echo "SIGNATURES ARE THE SAME : ${NEMAILS[*]}"
|
||||
|
||||
fi
|
||||
|
||||
echo "______________________"
|
||||
#~ echo "CHECKING DIFFERENCES"
|
||||
#~ diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json
|
||||
|
||||
## TODO CHECK MORE DIFFERENCE
|
||||
DATENEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .modified)
|
||||
TEXTNEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .text)
|
||||
TAGSNEW=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags)
|
||||
DATEINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .modified)
|
||||
TEXTINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .text)
|
||||
TAGSINSIDE=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .tags)
|
||||
|
||||
TIDLEREMAILSNEW=($(echo "$TAGSNEW" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) ## MUST BE SAME IN BOTH
|
||||
TIDLEREMAILSINSIDE=($(echo "$TAGSINSIDE" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) ## MUST BE SAME IN BOTH
|
||||
# [[ "${TIDLEREMAILSNEW[*]}" == "${TIDLEREMAILSINSIDE[*]}" ]]
|
||||
|
||||
if [ ${DATENEW} -gt ${DATEINSIDE} ]; then
|
||||
|
||||
echo "Newer Tiddler version... Updating SECTOR TW"
|
||||
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import ~/.zen/tmp/${MOATS}/NEW.json "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "${SECTOR}.html" "text/plain"
|
||||
|
||||
[[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.html ]] \
|
||||
&& rm ${INDEX} \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}.html ${INDEX} \
|
||||
|| ((gloops--))
|
||||
|
||||
signatures=$((signatures + ISIGN))
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
## CLEANING
|
||||
rm ~/.zen/tmp/${MOATS}/INSIDE.json 2>/dev/null
|
||||
rm ~/.zen/tmp/${MOATS}/TMP.json 2>/dev/null
|
||||
rm ~/.zen/tmp/${MOATS}/NEW.json 2>/dev/null
|
||||
|
||||
done < ~/.zen/tmp/${MOATS}/${SECTOR}/tiddlers.list
|
||||
|
||||
####################################################
|
||||
################################################ ${signatures} -gt ${gloops}
|
||||
## SECTOR SENDS GRATITUDE TO PUBLISHING PLAYER
|
||||
###################################################
|
||||
|
||||
#~ if [[ ${gloops} -gt 0 && ${signatures} -gt ${gloops} && ${ASTROG1} ]]; then
|
||||
#~ # GENERATE SECTOR PRIVATE KEY ################################
|
||||
#~ ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/sector.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
#~ G1SECTOR=$(cat ~/.zen/tmp/${MOATS}/sector.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
|
||||
#~ cp -f ~/.zen/tmp/coucou/${G1SECTOR}.COINS ~/.zen/tmp/${IPFSNODEID}/${SECTOR}.COINS
|
||||
|
||||
#~ ##############################################################
|
||||
#~ GRATITUDE=$($MY_PATH/../tools/getcoins_from_gratitude_box.sh)
|
||||
#~ G1AMOUNT=$(echo "$GRATITUDE / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
|
||||
#~ echo "***** SECTOR $SECTOR REWARD *****************"
|
||||
#~ echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
|
||||
#~ to ${PLAYER} WALLET ${ASTROG1} (${gloops} Tiddlers)"
|
||||
#~ echo "************************************************************"
|
||||
#~ ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "${G1AMOUNT}" "${ASTROG1}" "THANKS ${gloops} GLOOPS"
|
||||
#~ ################################################ GRATITUDE SENT
|
||||
#~ fi
|
||||
|
||||
exit 0
|
|
@ -12,13 +12,7 @@ start=`date +%s`
|
|||
## SECTOR REFRESH
|
||||
# SHARE & UPDATE IPNS TOGETHER
|
||||
############################################
|
||||
echo
|
||||
echo
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "> RUNNING SECTOR.refresh"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
@ -29,13 +23,8 @@ for i in $*; do
|
|||
UMAPS=("$i" ${UMAPS[@]})
|
||||
done
|
||||
|
||||
## NO $i PARAMETERS - GET ALL UMAPS
|
||||
if [[ ${#UMAPS[@]} == 0 ]]; then
|
||||
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
UMAPS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
fi
|
||||
[[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
|
||||
|
||||
######## INIT SECTORS ########################
|
||||
for UMAP in ${UMAPS[@]}; do
|
||||
|
||||
|
@ -45,10 +34,10 @@ for UMAP in ${UMAPS[@]}; do
|
|||
[[ ${LAT} == "" || ${LON} == "" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
|
||||
MYSECTORS=("_${SLAT}_${SLON}" ${MYSECTORS[@]})
|
||||
MYSECTORS=("_${SECLAT}_${SECLON}" ${MYSECTORS[@]})
|
||||
|
||||
done
|
||||
|
||||
|
@ -60,36 +49,36 @@ SECTORS=($(echo "${MYSECTORS[@]}" | tr ' ' '\n' | sort -u))
|
|||
echo "ACTIVATED SECTORS : ${SECTORS[@]}"
|
||||
|
||||
for SECTOR in ${SECTORS[@]}; do
|
||||
echo "############################################"
|
||||
|
||||
echo "_____SECTOR ${SECTOR}"
|
||||
echo "################################ $(date)"
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/
|
||||
SLAT=$(echo ${SECTOR} | cut -d '_' -f 2)
|
||||
SLON=$(echo ${SECTOR} | cut -d '_' -f 3)
|
||||
|
||||
##############################################################
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
G1PUB=$(${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 ${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 "___ ORIGIN ___ ${myIPFS}/ipns/${SECTORNS}/"
|
||||
echo "SECTOR : ${SECTOR} (${COINS} G1 <=> ${ZEN} ZEN) : ${G1PUB}"
|
||||
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)
|
||||
|
@ -99,27 +88,17 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
start=`date +%s`
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
#~ ## IPFS GET ONLINE YESTERDATE SECTORNS
|
||||
ipfs --timeout 180s get --progress=false -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "(╥☁╥ ) swarm memory empty (╥☁╥ )"
|
||||
# Try retieve memory from UPlanet ZEN Memory
|
||||
[[ ${ZEN} -gt 0 ]] \
|
||||
&& echo "INTERCOM Refreshing from ZEN MEMORY" \
|
||||
&& ${MY_PATH}/../RUNTIME/ZEN.SECTOR.memory.sh "${SECTOR}" "${MOATS}" "${G1PUB}"
|
||||
fi
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
end=`date +%s`
|
||||
echo "_____SECTOR${SECTOR} GET time was "`expr $end - $start` seconds.
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
|
||||
### SHOW ${SECTOR}
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}
|
||||
## CONTROL CHAIN TIME
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats 2>/dev/null)
|
||||
[[ ${ZCHAIN} && ${ZMOATS} ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain.${ZMOATS} \
|
||||
&& echo "UPDATING MOATS ${MOATS}"
|
||||
&& echo "UPDATING MOATS"
|
||||
|
||||
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
|
||||
|
@ -128,9 +107,16 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
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)
|
||||
## GET UMAP.refresher from PREVIOUS _chain ...
|
||||
echo "TODAY : $(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/SECTOR.refresher | head -n 1)"
|
||||
echo "YESTERDAY : ${YESTERDAY}"
|
||||
continue
|
||||
fi
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
## CONTROL ACTINGNODE : BOOSTRAP DISTRIBUTED (jeu du mouchoir, token ring aléatoire)
|
||||
## CONTROL ACTINGNODE SWAPPING
|
||||
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/SECTOR.refresher"
|
||||
ALLNODES=($(cat ${UREFRESH} | grep -v '^[[:space:]]*$' 2>/dev/null)) # ${ALLNODES[@]} without empty line
|
||||
STRAPS=($(cat ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | grep -Ev "#" | rev | cut -d '/' -f 1 | rev | grep -v '^[[:space:]]*$')) ## ${STRAPS[@]}
|
||||
|
@ -147,19 +133,15 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP -
|
||||
[[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
## IF NOT UPDATED FOR TOO LONG : STRAPS[0] get key control
|
||||
[ ${DIFF_SECONDS} -gt $(( 26 * 60 * 60 )) ] \
|
||||
&& echo ">>>>>>>>>>>>>> More than 26H update - BOOSTRAP 0 ACTION -" \
|
||||
## IF NOT UPDATED FOR TOO LONG
|
||||
[ ${DIFF_SECONDS} -gt $(( 24 * 60 * 60 )) ] \
|
||||
&& echo "More than 24H update" \
|
||||
&& ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
echo "* ACTINGNODE=${ACTINGNODE}"
|
||||
[[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
|
||||
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
|
||||
&& continue
|
||||
|
||||
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
|
||||
echo ">> ACTINGNODE NOT ME - CONTINUE -"
|
||||
ipfs key rm "${TODATE}${G1PUB}" "${YESYERDATE}${G1PUB}" "${G1PUB}"
|
||||
echo "------8<-------------8<------------------8<-----------------8<-----------------8<"
|
||||
continue
|
||||
fi
|
||||
### NEXT REFRESHER SHUFFLE
|
||||
rm ${UREFRESH}
|
||||
for STRAP in ${STRAPS[@]}; do
|
||||
|
@ -170,14 +152,6 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
mv ${UREFRESH}.shuf ${UREFRESH}
|
||||
echo "SETTING NEXT REFRESHER : $(cat ${UREFRESH} | head -n 1)"
|
||||
|
||||
############ 101 ZEN (11.1 G1) REFILL ?!
|
||||
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
|
||||
[[ ${COINS} == "" || ${COINS} == "null" ]] \
|
||||
&& [[ ${ZEN} -lt 100 && ${CURRENT} != "" ]] \
|
||||
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "11.1" "${G1PUB}" "UPLANET:101ZEN:${SECTOR}:${MIUSER}" \
|
||||
&& echo "UPLANET:101:${SECTOR}:${MIUSER}" && echo " ~~~ (♥‿‿♥) ~~ ${SECTOR} ~~ (♥‿‿♥) ~~~ "
|
||||
|
||||
##############################################################
|
||||
## FEED SECTOR TW WITH UMAPS RSS
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/TW
|
||||
|
@ -186,26 +160,16 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
## NEW TW TEMPLATE
|
||||
[[ ! -s ${INDEX} ]] \
|
||||
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
|
||||
&& echo "REFRESHING SECTOR FROM empty TEMPLATE *****" \
|
||||
&& [[ ${IPFSNODEID} != ${STRAPS[0]} ]] && echo "1ST BOOSTRAP JOB" && continue
|
||||
&& echo "REFRESHING SECTOR FROM empty TEMPLATE *****"
|
||||
|
||||
## SET SECTOR
|
||||
sed -i "s~_SECTOR_~${SECTOR}~g" ${INDEX}
|
||||
|
||||
## REFRESH ALL TWs in that SECTOR
|
||||
rm -Rf ~/.zen/tmp/${MOATS}/${SECTOR}/TWz
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/TWz
|
||||
|
||||
cp -rf ~/.zen/tmp/swarm/12D*/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/TW/* \
|
||||
~/.zen/tmp/${MOATS}/${SECTOR}/TWz
|
||||
cp -rf ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_${SLAT}_${SLON}/_*_*/TW/* \
|
||||
~/.zen/tmp/${MOATS}/${SECTOR}/TWz 2>/dev/null
|
||||
|
||||
## GET ALL RSS json's AND Feed SECTOR TW with it
|
||||
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[@]}")
|
||||
|
@ -213,27 +177,21 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${SECTOR}/RSS
|
||||
rm -f ~/.zen/tmp/${MOATS}/${SECTOR}/RSS/_all.json
|
||||
|
||||
#################### RSS2UPlanetSECTORTW #########################
|
||||
############################ TRANSFER SIGNED TIDDLER IN SECTOR TW
|
||||
################################## TRANSFER SIGNED TIDDLER IN SECTOR TW
|
||||
for RSS in ${RSSALL[@]}; do
|
||||
############################################################
|
||||
## Extract New Tiddlers and maintain fusion in Sector TW.
|
||||
############################################################
|
||||
${MY_PATH}/RSS2UPlanetSECTORTW.sh "${RSS}" "${SECTOR}" "${MOATS}" "${INDEX}"
|
||||
############################################################
|
||||
${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* ## TODO REMOVE
|
||||
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${SECTOR}/N
|
||||
|
||||
###########################################################################################
|
||||
|
@ -247,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
|
||||
|
@ -284,12 +242,41 @@ 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 TODATE REGIONNS LINKING
|
||||
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
REGLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
REGION="_${REGLAT}_${REGLON}"
|
||||
TODATEREGIONNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
|
||||
|
||||
PHONEBOOTH="${G1PUB::30}"
|
||||
cat ${MY_PATH}/../templates/UPlanetSector/index.html \
|
||||
| sed -e "s~_ZONE_~SECTOR ${SECTOR}~g" \
|
||||
-e "s~_UPZONE_~REGION ${REGION}~g" \
|
||||
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
|
||||
-e "s~_ZONENS_~${TODATENS}~g" \
|
||||
-e "s~_UPZONENS_~${TODATEREGIONNS}~g" \
|
||||
-e "s~_SECTORG1PUB_~${G1PUB}~g" \
|
||||
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
|
||||
-e "s~_LAT_~${REGLAT}~g" \
|
||||
-e "s~_LON_~${REGLON}~g" \
|
||||
-e "s~_EARTHCID_~${EARTHCID}~g" \
|
||||
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
|
||||
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${REGLAT}\&southWestLon=${REGLON}\°=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}:${YESTERDATE}"'"' \
|
||||
-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}/
|
||||
|
@ -299,103 +286,40 @@ for SECTOR in ${SECTORS[@]}; do
|
|||
|
||||
## zday marking
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}/z* 2>/dev/null
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />${TODATE} ${SECTOR}" > ~/.zen/tmp/${MOATS}/${SECTOR}/z$(date +%A-%d_%m_%Y).html
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}' />${TODATE} ${SECTOR}" > ~/.zen/tmp/${MOATS}/${SECTOR}/z$(date +%A-%d_%m_%Y).html
|
||||
|
||||
###########################################################################################
|
||||
### APPLY ON APP MODEL TODATE REGIONNS LINKING
|
||||
RLAT=$(echo ${SLAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${SLON} | cut -d '.' -f 1)
|
||||
REGION="_${RLAT}_${RLON}"
|
||||
TODATEREGIONNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
|
||||
REGIONG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${TODATE}${UPLANETNAME}${REGION}" "${TODATE}${UPLANETNAME}${REGION}")
|
||||
|
||||
PHONEBOOTH="${G1PUB::30}"
|
||||
cat ${MY_PATH}/../templates/UPlanetSector/index.html \
|
||||
| sed -e "s~_ZONE_~SECTOR ${SECTOR}~g" \
|
||||
-e "s~_UPZONE_~REGION ${REGION}~g" \
|
||||
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
|
||||
-e "s~_ZONENS_~${TODATENS}~g" \
|
||||
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
|
||||
-e "s~_UPZONENS_~${TODATEREGIONNS}~g" \
|
||||
-e "s~_SECTORG1PUB_~${G1PUB}~g" \
|
||||
-e "s~_IPFSNINJA_~${VDONINJA}~g" \
|
||||
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
|
||||
-e "s~_HACKGIPFS_~${HACKGIPFS}~g" \
|
||||
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
|
||||
-e "s~_LAT_~${SLAT}~g" \
|
||||
-e "s~_LON_~${SLON}~g" \
|
||||
-e "s~_EARTHCID_~${EARTHCID}~g" \
|
||||
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
|
||||
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
|
||||
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${RLAT}\&southWestLon=${RLON}\°=1~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
> ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html
|
||||
|
||||
##################################
|
||||
cp -f ~/.zen/tmp/${MOATS}/${SECTOR}/_index.html ~/.zen/tmp/${MOATS}/${SECTOR}/index.html
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}/index.html ## MAKE SECTOR VISIBLE ##
|
||||
###################################################### CHAINING BACKUP
|
||||
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1)
|
||||
|
||||
################
|
||||
## DOES CHAIN CHANGED or INIT ?
|
||||
[[ ${ZCHAIN} != ${IPFSPOP} || ${ZCHAIN} == "" ]] \
|
||||
&& echo "${MOATS}:${IPFSNODEID}:${IPFSPOP}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain \
|
||||
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats \
|
||||
&& IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
|
||||
######################################################
|
||||
## ZEN CHAINING
|
||||
# Send 1 ZEN to UPlanet REGIONG1PUB Wallet containing REGION TW HASH
|
||||
INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}"
|
||||
echo "> INTERCOM ${INTERCOM} (${ZEN} ZEN)"
|
||||
if [[ ${ZEN} -gt 11 ]]; then
|
||||
echo "---ZZZ-- SECTOR 2 REGION ZEN CHAINING ---ZZZ------ZZZ----"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey "0.1" "${REGIONG1PUB}" "${INTERCOM}"
|
||||
fi
|
||||
##############################################################
|
||||
## PUBLISHING ${SECTOR}
|
||||
###############################
|
||||
echo "% PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}"
|
||||
start=`date +%s`
|
||||
ipfs --timeout 240s name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
|
||||
ipfs key rm ${YESTERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1
|
||||
|
||||
################# REGISTER UPlanet SECTOR to G1PODs
|
||||
${MY_PATH}/../tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey -n ${myDATA} \
|
||||
set -n "UPlanet SECTOR ${SECTOR}" -v " " -a " " -d "UPlanet ${myUPLANET}" \
|
||||
-pos ${SLAT} ${SLON} -s ${myLIBRA}/ipfs/${IPFSPOP} \
|
||||
-A ${MY_PATH}/../images/zenticket.png
|
||||
${MY_PATH}/../tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey -n ${myCESIUM} \
|
||||
set -n "UPlanet SECTOR ${SECTOR}" -v " " -a " " -d "UPlanet ${myUPLANET}" \
|
||||
-pos ${SLAT} ${SLON} -s ${myLIBRA}/ipfs/${IPFSPOP} \
|
||||
-A ${MY_PATH}/../images/zenticket.png
|
||||
echo "% START PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}"
|
||||
start=`date +%s`
|
||||
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.
|
||||
|
||||
######################################################
|
||||
rm ~/.zen/tmp/${MOATS}/${SECTOR}.dunikey
|
||||
[[ ${ZCHAIN} != "" ]] && ipfs pin rm ${ZCHAIN}
|
||||
|
||||
###################################################
|
||||
## EXTRACT SECTOR LAST WEEK TIDDLERS TO IPFSNODEID CACHE
|
||||
echo "(☉_☉ ) ${REGION}.week.rss.json (☉_☉ )"
|
||||
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/SECTORS/ ## TODO REMOVE
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${SLAT}_${SLON}
|
||||
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}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${SLAT}_${SLON} \
|
||||
--render '.' "${SECTOR}.week.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-7]!is[system]!tag[G1Voeu]]'
|
||||
|
||||
###################################
|
||||
## NODE CACHE SECTOR TODATENS
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATENS}'\" />_${SLAT}_${SLON}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_index.html
|
||||
--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
|
||||
end=`date +%s`
|
||||
echo "_____SECTOR${SECTOR} TREATMENT time was "`expr $end - $start` seconds.
|
||||
|
||||
done
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
[
|
||||
{
|
||||
"title": "/TEST/ForemostPoets-Moonraker.mp3",
|
||||
"text": "<audio controls><source src='/ipfs/Qmc799UU3zqFojnR13qSiJYKx8mKPXJ3CXMgKyLGvVndUD' type='audio/mpeg'>Your browser does not support the audio element.</audio>",
|
||||
"tags": "mp3"
|
||||
}
|
||||
]
|
|
@ -1,33 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Generate a unique timestamp
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
# Check if TiddlyWiki file exists
|
||||
TW="$1"
|
||||
[[ ! -s $TW ]] && echo "No TiddlyWiki found at: $TW" && exit 1
|
||||
|
||||
# Check if Tiddler title is provided
|
||||
TITLE="$2"
|
||||
[[ -z $TITLE ]] && echo "Need a Tiddler title" && exit 1
|
||||
|
||||
# Delete the specified Tiddler from the TiddlyWiki
|
||||
echo "Deleting Tiddler: $TITLE"
|
||||
tiddlywiki --load $TW \
|
||||
--deletetiddlers "$TITLE" \
|
||||
--output ~/.zen/tmp --render "$:/core/save/all" "${MOATS}.html" "text/plain"
|
||||
|
||||
# Check if deletion was successful
|
||||
if [[ -s ~/.zen/tmp/${MOATS}.html ]]; then
|
||||
echo "Tiddler deleted successfully."
|
||||
cp ~/.zen/tmp/${MOATS}.html ${TW}
|
||||
rm ~/.zen/tmp/${MOATS}.html
|
||||
echo "Updated TiddlyWiki:
|
||||
${TW}"
|
||||
else
|
||||
echo "ERROR: Cannot delete $TITLE from
|
||||
$TW"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
|
@ -1,41 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Generate a unique timestamp
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
||||
# Check if TiddlyWiki file exists
|
||||
TW="$1"
|
||||
[[ ! -s $TW ]] \
|
||||
&& echo "Missing TiddlyWiki index.html \$1: $TW" \
|
||||
&& exit 1
|
||||
|
||||
# Check if Tiddler JSON file exists
|
||||
TIDDLER="$2"
|
||||
[[ ! -s $TIDDLER || $TIDDLER == "" ]] \
|
||||
&& echo "Missing Tiddler JSON file \$2: $TIDDLER" \
|
||||
&& exit 1
|
||||
|
||||
# Add created and modified fields to the Tiddler JSON file
|
||||
echo "Putting ${TIDDLER} in ${TW}"
|
||||
jq '.[] + {created: $MOATS, modified: $MOATS}' --arg MOATS "$MOATS" "$TIDDLER" > "${TIDDLER}.tmp"
|
||||
|
||||
# Run TiddlyWiki import command
|
||||
echo "Running TiddlyWiki import..."
|
||||
tiddlywiki --load "${TW}" \
|
||||
--import "${TIDDLER}.tmp" 'application/json' \
|
||||
--output /tmp \
|
||||
--render '$:/core/save/all' "${MOATS}.html" 'text/plain'
|
||||
|
||||
# Check if import was successful
|
||||
if [[ -s /tmp/${MOATS}.html ]]; then
|
||||
echo "Import successful."
|
||||
cp /tmp/${MOATS}.html ${TW}
|
||||
rm /tmp/${MOATS}.html
|
||||
rm "${TIDDLER}.tmp"
|
||||
echo "Updated TiddlyWiki:
|
||||
${TW}"
|
||||
exit 0
|
||||
else
|
||||
echo "ERROR"
|
||||
exit 1
|
||||
fi
|
|
@ -1,19 +0,0 @@
|
|||
TiddlyWiki acts as a distributed object database
|
||||
|
||||
this scripts provides elemental TW interactions
|
||||
|
||||
* Import a Tiddler (json) in a TiddliWiki
|
||||
|
||||
```./import_tiddler.sh tiddlywiki.html ForemostPoets-Moonraker.json```
|
||||
|
||||
https://talk.tiddlywiki.org/t/how-to-add-extract-modify-tiddlers-from-command-line-to-do-ipfs-media-transfer/4345?u=papiche
|
||||
|
||||
* Delete a Tiddler (title) from a TiddliWiki
|
||||
|
||||
```./delete_tiddler.sh tiddlywiki.html "/TEST/ForemostPoets-Moonraker.mp3"```
|
||||
|
||||
https://talk.tiddlywiki.org/t/how-to-filter-and-delete-multiple-tiddlers/4950
|
||||
|
||||
|
||||
you can add more complex queries ....
|
||||
|
|
@ -11,20 +11,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
## SEEK FOR UPLANET KEYS
|
||||
# GET & UPDATE IPNS
|
||||
############################################
|
||||
echo "############################################"
|
||||
echo "
|
||||
_________________________
|
||||
< RUNNING UPLANET.refresh >
|
||||
-------------------------
|
||||
\ ^__^
|
||||
\ (oo)\_______
|
||||
(__)\ )\\/\\
|
||||
||----w |
|
||||
|| ||
|
||||
|
||||
"
|
||||
echo "############################################"
|
||||
echo "############################################"
|
||||
echo "## RUNNING UPLANET.refresh"
|
||||
[[ ${IPFSNODEID} == "" ]] && echo "IPFSNODEID is empty - EXIT -" && exit 1
|
||||
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
|
@ -36,21 +23,16 @@ mkdir ~/.zen/tmp/${MOATS}
|
|||
## RUNING FOR ALL UMAP FOUND IN STATION MAP CACHE : "_LAT_LON"
|
||||
|
||||
## SEARCH UMAP (created by PLAYER.refresh.sh) /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
MEMAPS=($(ls -t ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/ 2>/dev/null))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* | rev | cut -d '/' -f 1 | rev | sort | uniq 2>/dev/null) )
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
echo "ACTIVATED ${#unique_combined[@]} UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories
|
||||
echo "ACTIVATED UMAPS : ${unique_combined[@]}" # "_LAT_LON" directories
|
||||
|
||||
######################################################
|
||||
### LEVEL 1 ###########################################
|
||||
######################################################
|
||||
for UMAP in ${unique_combined[@]}; do
|
||||
|
||||
start=`date +%s`
|
||||
echo
|
||||
echo "-------------------------------------------------------------------"
|
||||
echo "____________REFRESHING ${UMAP}__________ $(date)"
|
||||
echo "____________REFRESHING ${UMAP}__________"
|
||||
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
|
||||
LON=$(echo ${UMAP} | cut -d '_' -f 3)
|
||||
|
||||
|
@ -58,23 +40,19 @@ for UMAP in ${unique_combined[@]}; do
|
|||
[[ ${LAT} == "null" || ${LON} == "null" ]] && echo ">> ERROR BAD ${LAT} ${LON}" && continue
|
||||
|
||||
## SECTOR BANK COORD
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
## REGION
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
REGLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
|
||||
##############################################################
|
||||
## UMAP WALLET CHECK
|
||||
##############################################################
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${UMAP}.dunikey "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/${UMAP}.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
[[ ! ${G1PUB} ]] && echo "ERROR generating UMAP WALLET" && exit 1
|
||||
|
||||
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)
|
||||
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
|
||||
|
||||
echo "UMAP (${COINS} G1) ${ZEN} ZEN : ${G1PUB}"
|
||||
echo "UMAP (${COINS} G1) WALLET : ${G1PUB}"
|
||||
|
||||
## ORIGIN ##########################################################
|
||||
## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY
|
||||
|
@ -84,42 +62,31 @@ for UMAP in ${unique_combined[@]}; do
|
|||
echo "ORIGIN : ${myIPFS}/ipns/${UMAPNS}"
|
||||
|
||||
###################### SPATIO TEMPORAL KEYS
|
||||
## TODATE #########################################
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${TODATE}.priv "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
|
||||
ipfs key rm ${TODATE}${G1PUB} > /dev/null 2>&1
|
||||
TODATENS=$(ipfs key import ${TODATE}${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${TODATE}.priv)
|
||||
echo "TODAY : ${myIPFS}/ipns/${TODATENS}"
|
||||
|
||||
## YESTERDATE ###############
|
||||
${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}"
|
||||
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
start=`date +%s`
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
## IPFS GET YESTERDATENS
|
||||
mkdir ~/.zen/tmp/${MOATS}/${UMAP}
|
||||
echo "## IPFS GET YESTERDATENS /ipns/${YESTERDATENS}/"
|
||||
ipfs --timeout 300s get --progress=false -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "(╥☁╥ ) swarm online memory empty (╥☁╥ )"
|
||||
# Try retieve memory from UPlanet ZEN Memory
|
||||
[[ ${ZEN} -gt 0 ]] \
|
||||
&& echo "INTERCOM Refreshing from ZEN MEMORY" \
|
||||
&& ${MY_PATH}/../RUNTIME/ZEN.UMAP.memory.sh "${UMAP}" "${MOATS}" "${G1PUB}"
|
||||
fi
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
end=`date +%s`
|
||||
echo "_____UMAP${UMAP} GET time was "`expr $end - $start` seconds.
|
||||
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
|
||||
## FORMAT CONTROL WARNING
|
||||
[[ ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN || ! -d ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} ]] \
|
||||
&& echo ">>> INFO - INTIALIZE UMAP FORMAT - NEW UMAP KEY -" \
|
||||
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON} \
|
||||
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN \
|
||||
&& echo ${MOATS} > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats
|
||||
&& mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN
|
||||
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/RSS
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/TW
|
||||
|
@ -127,11 +94,35 @@ for UMAP in ${unique_combined[@]}; do
|
|||
echo "~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/"
|
||||
|
||||
## zday of the week for IPFSNODEID
|
||||
rm -f ~/.zen/tmp/${MOATS}/${UMAP}/z*.html 2>/dev/null
|
||||
ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain 2>/dev/null | rev | cut -d ':' -f 1 | rev 2>/dev/null)
|
||||
[[ "${ZCHAIN}" != "" ]] \
|
||||
&& echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipfs/${ZCHAIN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/z$(date +%A-%d_%m_%Y).html
|
||||
rm ~/.zen/tmp/${MOATS}/${UMAP}/z* ## TODO RESTRICT T O z*.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}:ZEN/_moats 2>/dev/null)
|
||||
# ZMOATS SHOULD BE MORE THAT 5 HOURS.
|
||||
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
|
||||
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
|
||||
hours=$((DIFF_SECONDS / 3600))
|
||||
minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
|
||||
seconds=$((DIFF_SECONDS % 60))
|
||||
echo "UMAP DATA is ${hours} hours ${minutes} minutes ${seconds} seconds "
|
||||
|
||||
# IF LESS THAN 5 HOURS
|
||||
if [ ${DIFF_SECONDS} -lt $(( 5 * 60 * 60 )) ]; then
|
||||
echo "GETTING YESTERDAY UMAP.refresher"
|
||||
YESTERDAY=$(ipfs cat /ipfs/${ZCHAIN}/${LAT}_${LON}/UMAP.refresher | head -n 1)
|
||||
## GET UMAP.refresher from PREVIOUS _chain ...
|
||||
TODAY=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher | head -n 1)
|
||||
echo "TODAY : ${TODAY}"
|
||||
echo "YESTERDAY : ${YESTERDAY}"
|
||||
echo "------------------------------------------------->>>>>>>>>>>>>>>>"
|
||||
continue
|
||||
fi
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
########################################################
|
||||
## NODE SELECTION in UMAP.refresher
|
||||
UREFRESH="${HOME}/.zen/tmp/${MOATS}/${UMAP}/${LAT}_${LON}/UMAP.refresher"
|
||||
|
@ -150,34 +141,19 @@ for UMAP in ${unique_combined[@]}; do
|
|||
## IN CASE OLD BOOSTRAP IS STILL IN CHARGE - CHOOSE 1ST STRAP -
|
||||
[[ ! $(echo ${STRAPS[@]} | grep ${ACTINGNODE}) ]] && ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
# ++++++++++++++++++++ - - - - FIND LAST TREATMENT TIME
|
||||
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null) || ZMOATS=${MOATS}
|
||||
# ZMOATS SHOULD BE MORE THAT 5 HOURS.
|
||||
MOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/../tools/MOATS2seconds.sh ${ZMOATS})
|
||||
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
|
||||
hours=$((DIFF_SECONDS / 3600))
|
||||
minutes=$(( (DIFF_SECONDS % 3600) / 60 ))
|
||||
seconds=$((DIFF_SECONDS % 60))
|
||||
echo "UMAP DATA is ${hours} hours ${minutes} minutes ${seconds} seconds "
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
## IF NOT UPDATED FOR TOO LONG
|
||||
[[ ${DIFF_SECONDS} -gt $(( 26 * 60 * 60 )) || ${DIFF_SECONDS} -eq 0 ]] \
|
||||
&& echo ">>>>>>>>>>>>>> More than 26H update - BOOSTRAP 0 ACTION -" \
|
||||
[ ${DIFF_SECONDS} -gt 100800 ] \
|
||||
&& echo "More than 28H update" \
|
||||
&& ACTINGNODE=${STRAPS[0]}
|
||||
|
||||
echo "* ACTINGNODE=${ACTINGNODE}"
|
||||
|
||||
if [[ "${ACTINGNODE}" != "${IPFSNODEID}" ]]; then
|
||||
echo ">> ACTINGNODE NOT ME - CONTINUE -"
|
||||
ipfs key rm "${TODATE}${G1PUB}" "${YESTERDATE}${G1PUB}" "${G1PUB}"
|
||||
echo "------8<-------------8<------------------8<-----------------8<-----------------8<"
|
||||
continue
|
||||
fi
|
||||
################################################################################
|
||||
# ~~~~~~~~~~~~~ GOING FURTHER ~~~ MEANS IPFSNODEID IS UMAP REFRESHER ~~~~~~~~~~~
|
||||
################################################################################
|
||||
[[ "${ACTINGNODE}" != "${IPFSNODEID}" ]] \
|
||||
&& echo ">> ACTINGNODE=${ACTINGNODE} is not ME - CONTINUE -" \
|
||||
&& continue
|
||||
########################################
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PASSING THERE MAKE IPFSNODEID UMAP REFRESHER
|
||||
|
||||
## NEXT REFRESHER
|
||||
# TODO: INTRODUCE NODE BALANCE AND CHOOSE THE MOST CONFIDENT ONE
|
||||
rm ${UREFRESH}
|
||||
|
@ -191,14 +167,6 @@ for UMAP in ${unique_combined[@]}; do
|
|||
echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)"
|
||||
######################################################## # NODE SELECTION in UMAP.refresher
|
||||
|
||||
############ 101 ZEN (11.1 G1) REFILL ?!
|
||||
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
|
||||
[[ ${COINS} == "" || ${COINS} == "null" ]] \
|
||||
&& [[ ${ZEN} -lt 100 && ${CURRENT} != "" ]] \
|
||||
&& MIUSER=$(${MY_PATH}/../tools/clyuseryomail.sh "${CURRENT}") \
|
||||
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/.current/secret.dunikey" "11.1" "${G1PUB}" "UPLANET:101ZEN:${UMAP}:${MIUSER}" \
|
||||
&& echo "UPLANET:101:${UMAP}:${MIUSER}" && echo " ~~~ (ZEN‿‿ZEN) ~~ _${LAT}_${LON} ~~ (ZEN‿‿ZEN) ~~~ "
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON}
|
||||
# %%%%%%%%%% ##################################################
|
||||
|
@ -212,7 +180,7 @@ for UMAP in ${unique_combined[@]}; do
|
|||
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 "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}"
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm ${SECTORG1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
|
||||
SECTORNS=$(ipfs key import ${SECTORG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv)
|
||||
ipfs key rm ${SECTORG1PUB}
|
||||
|
@ -241,81 +209,10 @@ for UMAP in ${unique_combined[@]}; do
|
|||
mkdir -p ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/${RLAT}_${RLON}/index.html
|
||||
|
||||
####################################################################################
|
||||
#######################################################################################
|
||||
echo "# NEXTNS : UMAP, SECTOR, REGION ## BOOSTRAP TO SWARM ##"
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
####################################################################################
|
||||
#################################################################################
|
||||
## DEMAIN DATA
|
||||
####################################################################################
|
||||
## UMAP NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.umap
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${LAT}" "${DEMAINDATE}${UPLANETNAME}${LON}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
|
||||
echo "UMAP NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/next.priv
|
||||
## BOOSTRAP SWARM PUBLICATION _next.umapns
|
||||
echo "${G1PUB}:${DEMAINDATE}:${NEXTNS}" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.umapns
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.umapns \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
|
||||
## SECTOR NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.sector
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${SECTOR}" "${DEMAINDATE}${UPLANETNAME}${SECTOR}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
|
||||
echo "SECTOR NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/next.priv
|
||||
## BOOSTRAP SWARM PUBLICATION _next.sectorns
|
||||
echo "${SECTORG1PUB}:${DEMAINDATE}:${NEXTNS}" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.sectorns
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.sectorns \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
|
||||
## REGION NEXTNS ############### INFORM "PLAYER.refresh.sh" WITH _next.region
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/next.priv "${DEMAINDATE}${UPLANETNAME}${REGION}" "${DEMAINDATE}${UPLANETNAME}${REGION}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
NEXTNS=$(ipfs key import "next" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/next.priv)
|
||||
echo "REGION NEXTNS : ${myIPFS}/ipns/${NEXTNS}"
|
||||
ipfs key rm "next" > /dev/null 2>&1
|
||||
rm ~/.zen/tmp/${MOATS}/next.priv
|
||||
## BOOSTRAP SWARM PUBLICATION _next.regionns
|
||||
echo "${REGIONG1PUB}:${DEMAINDATE}:${NEXTNS}" \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/_next.regionns
|
||||
|
||||
cp ~/.zen/tmp/${MOATS}/${UMAP}/_next.regionns \
|
||||
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
|
||||
####################################################################################
|
||||
## TODATE DATA
|
||||
echo "WRITE $TODATE DATA ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}"
|
||||
####################################################################################
|
||||
echo "${TODATENS}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TODATENS
|
||||
echo "${SECTORNS}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/SECTORNS
|
||||
echo "${TODATEREGIONNS}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/REGIONNS
|
||||
echo "${G1PUB}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/G1PUB
|
||||
echo "${SECTORG1PUB}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/SECTORG1PUB
|
||||
echo "${REGIONG1PUB}" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/REGIONG1PUB
|
||||
|
||||
####################################################################################
|
||||
ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/
|
||||
|
||||
# %%%%%%%%%% ##################################################
|
||||
## COLLECT RSS FROM ALL PLAYERS WITH SAME UMAP IN SWARM MEMORY /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
|
||||
# %%%%%%%%%% ##################################################
|
||||
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json \
|
||||
~/.zen/tmp/${MOATS}/${UMAP}/RSS/ 2>/dev/null
|
||||
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/RSS/*.rss.json ~/.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/
|
||||
|
@ -324,8 +221,7 @@ for UMAP in ${unique_combined[@]}; do
|
|||
# %%%%%%%%%% ##################################################
|
||||
## COLLECT TW LINKS FROM NODE & SWARM
|
||||
# %%%%%%%%%% ##################################################
|
||||
cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* \
|
||||
~/.zen/tmp/${MOATS}/${UMAP}/TW/ 2>/dev/null
|
||||
cp -r ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_${LAT}_${LON}/TW/* ~/.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)
|
||||
|
@ -336,8 +232,8 @@ for UMAP in ${unique_combined[@]}; do
|
|||
##################################
|
||||
## OSM2IPFS
|
||||
### UMAP = 0.01° Planet Slice
|
||||
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"
|
||||
UMAPGEN="${EARTHCID}/Umap.html?southWestLat=${LAT}&southWestLon=${LON}°=0.01&ipns=${UMAPNS}/_index.html"
|
||||
USATGEN="${EARTHCID}/Usat.html?southWestLat=${LAT}&southWestLon=${LON}°=0.01&ipns=${UMAPNS}/_index.html"
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${UMAPGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Umap.html
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url='${USATGEN}'\" />" > ~/.zen/tmp/${MOATS}/${UMAP}/Usat.html
|
||||
|
||||
|
@ -374,7 +270,7 @@ for UMAP in ${unique_combined[@]}; do
|
|||
echo "* park4night : https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr"
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
|
||||
&& curl -s -L "https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
|
||||
&& curl -s "https://www.park4night.com/api/places/around?lat=${LAT}&lng=${LON}&radius=200&filter=%7B%7D&lang=fr" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
|
||||
&& [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json) ]] \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/p4n.json \
|
||||
&& echo "UPDATED PARK4NIGHT" \
|
||||
|
@ -385,31 +281,11 @@ for UMAP in ${unique_combined[@]}; do
|
|||
## 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
|
||||
|
||||
## GET ALL WALLETS
|
||||
echo "* GET WALLETS https://g1-stats.axiom-team.fr/data/geoloc-members.json"
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json ]] && touch ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ]] \
|
||||
&& curl -s "https://g1-stats.axiom-team.fr/data/geoloc-members.json" -o ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json \
|
||||
&& [[ $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json) -gt $(stat -c %s ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json) ]] \
|
||||
&& mv ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json \
|
||||
&& echo "UPDATED WALLALL" \
|
||||
|| rm ~/.zen/tmp/${MOATS}/${UMAP}/fetch.json
|
||||
|
||||
## FILTER LOCAL WALLETS
|
||||
target_lat=${LAT}
|
||||
target_lon=${LON}
|
||||
precision=0.1
|
||||
jq --argjson target_lat "$target_lat" \
|
||||
--argjson target_lon "$target_lon" \
|
||||
--argjson precision "$precision" \
|
||||
'.wallets | map(select((.geoPoint.lat | tonumber) >= ($target_lat - $precision) and (.geoPoint.lat | tonumber) <= ($target_lat + $precision) and (.geoPoint.lon | tonumber) >= ($target_lon - $precision) and (.geoPoint.lon | tonumber) <= ($target_lon + $precision)))' ~/.zen/tmp/${MOATS}/${UMAP}/wallall.json \
|
||||
> ~/.zen/tmp/${MOATS}/${UMAP}/wallets.json
|
||||
|
||||
echo "MAKING _index.p4n.html with ./templates/P4N/index.html"
|
||||
## CREATE INDEX LOADING JSONs ON OPENSTREETMAP
|
||||
cat ${MY_PATH}/../templates/P4N/index.html \
|
||||
| sed -e "s~43.61000~${LAT}~g" \
|
||||
-e "s~1.43000~${LON}~g" \
|
||||
| sed -e "s~43.2218~${LAT}~g" \
|
||||
-e "s~1.3977~${LON}~g" \
|
||||
-e "s~_SERVICE_~Commons~g" \
|
||||
-e "s~_UMAP_~${UMAP}~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
|
@ -465,26 +341,19 @@ for UMAP in ${unique_combined[@]}; do
|
|||
echo "JSON UMAP WORLD READY /ipfs/${IAMAP}/world.js"
|
||||
###########################################################################################
|
||||
### APPLY ON APP MODEL
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
SECTOR="_${SLAT}_${SLON}"
|
||||
SECLAT="${LAT::-1}"
|
||||
SECLON="${LON::-1}"
|
||||
SECTOR="_${SECLAT}_${SECLON}"
|
||||
TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}")
|
||||
|
||||
PHONEBOOTH="${G1PUB::30}"
|
||||
cat ${MY_PATH}/../templates/UPlanetUmap/index.html \
|
||||
| sed -e "s~_ZONE_~${UMAP}~g" \
|
||||
| sed -e "s~_ZONE_~UMAP ${UMAP}~g" \
|
||||
-e "s~_UPZONE_~SECTOR ${SECTOR}~g" \
|
||||
-e "s~QmYdWBx32dP14XcbXF7hhtDq7Uu6jFmDaRnuL5t7ARPYkW/index_fichiers/world.js~${IAMAP}/world.js~g" \
|
||||
-e "s~_ZONENS_~${TODATENS}~g" \
|
||||
-e "s~_ZCHAIN_~${ZCHAIN}~g" \
|
||||
-e "s~_IPFSNINJA_~${VDONINJA}~g" \
|
||||
-e "s~_HACKGIPFS_~${HACKGIPFS}~g" \
|
||||
-e "s~_UPZONE_~SECTOR ${SECTOR}~g" \
|
||||
-e "s~_UPZONENS_~${TODATESECTORNS}~g" \
|
||||
-e "s~_UPUPZONE_~REGION ${REGION}~g" \
|
||||
-e "s~_UPUPZONENS_~${TODATEREGIONNS}~g" \
|
||||
-e "s~_PHONEBOOTH_~${PHONEBOOTH}~g" \
|
||||
-e "s~_CESIUMIPFS_~${CESIUMIPFS}~g" \
|
||||
-e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_DATE_~$(date +%A-%d_%m_%Y)~g" \
|
||||
-e "s~_UPLANETLINK_~${EARTHCID}/map_render.html\?southWestLat=${LAT}\&southWestLon=${LON}\°=0.01~g" \
|
||||
-e "s~http://127.0.0.1:8080~~g" \
|
||||
|
@ -509,66 +378,29 @@ for UMAP in ${unique_combined[@]}; do
|
|||
ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats 2>/dev/null)
|
||||
[[ ${ZCHAIN} && ${ZMOATS} ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain.${ZMOATS} \
|
||||
&& echo "UPDATING MOATS=${MOATS}"
|
||||
|
||||
######################################################
|
||||
## ZEN CHAINING
|
||||
# Send 1 ZEN to UPlanet SECTORG1PUB Wallet containing REGION TW HASH
|
||||
INTERCOM="UPLANET:${UMAP}:${TODATE}:/ipfs/${UMAPROOT}"
|
||||
echo "> INTERCOM ${INTERCOM} (${ZEN} ZEN > 11 ?)"
|
||||
if [[ ${ZEN} -gt 11 ]]; then
|
||||
echo "---ZZZ-- UMAP 2 SECTOR ZEN CHAINING ---ZZZ------ZZZ----"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/${UMAP}.dunikey "0.1" "${SECTORG1PUB}" "${INTERCOM}"
|
||||
fi
|
||||
&& echo "UPDATING MOATS"
|
||||
|
||||
## MICRO LEDGER CHAIN CHANGED or INIT ?
|
||||
[[ ${ZCHAIN} != ${UMAPROOT} || ${ZCHAIN} == "" ]] \
|
||||
&& echo "${MOATS}:${IPFSNODEID}:${UMAPROOT}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_chain \
|
||||
&& echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${UMAP}/${G1PUB}:ZEN/_moats \
|
||||
&& UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) \
|
||||
&& echo "ROOT was ${ZCHAIN}"
|
||||
&& UMAPROOT=$(ipfs add -rwHq ~/.zen/tmp/${MOATS}/${UMAP}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}"
|
||||
|
||||
echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
|
||||
|
||||
ipfs --timeout 300s name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
|
||||
ipfs name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
|
||||
end=`date +%s`
|
||||
ipfs key rm ${TODATE}${G1PUB} ${YESYERDATE}${G1PUB} ${G1PUB} ## REMOVE IPNS KEY
|
||||
|
||||
echo "(UMAP) ${UMAP} ${TODATE} PUBLISH time was "`expr $end - $start` seconds.
|
||||
|
||||
ipfs key rm "${TODATE}${G1PUB}" "${YESTERDATE}${G1PUB}" "${G1PUB}" ## REMOVE IPNS KEY
|
||||
[[ ${ZCHAIN} != "" ]] && ipfs pin rm ${ZCHAIN}
|
||||
|
||||
################# PUBLISH UPlanet UMAP to G1PODs
|
||||
${MY_PATH}/../tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${UMAP}.dunikey -n ${myDATA} \
|
||||
set -n "UPlanet ${UMAP}" -v " " -a " " -d "UPlanet ${myUPLANET}" \
|
||||
-pos ${LAT} ${LON} -s ${myLIBRA}/ipfs/${UMAPROOT} \
|
||||
-A ${MY_PATH}/../images/extension_territoire.jpg
|
||||
${MY_PATH}/../tools/timeout.sh -t 20 \
|
||||
${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/tmp/${MOATS}/${UMAP}.dunikey -n ${myCESIUM} \
|
||||
set -n "UPlanet ${UMAP}" -v " " -a " " -d "UPlanet ${myUPLANET}" \
|
||||
-pos ${LAT} ${LON} -s ${myLIBRA}/ipfs/${UMAPROOT} \
|
||||
-A ${MY_PATH}/../images/extension_territoire.jpg
|
||||
|
||||
rm ~/.zen/tmp/${MOATS}/*.priv
|
||||
rm ~/.zen/tmp/${MOATS}/${UMAP}.dunikey
|
||||
|
||||
done
|
||||
|
||||
|
||||
######################################################
|
||||
### LEVEL 2 ###########################################
|
||||
######################################################
|
||||
### SECTOR = 0.1° Planet Slice
|
||||
${MY_PATH}/SECTOR.refresh.sh "${unique_combined[@]}"
|
||||
|
||||
######################################################
|
||||
### LEVEL 3 ###########################################
|
||||
######################################################
|
||||
### REGION = 1° Planet Slice
|
||||
${MY_PATH}/REGION.refresh.sh "${unique_combined[@]}"
|
||||
######################################################
|
||||
|
||||
|
||||
######################################################
|
||||
exit 0
|
||||
######################################################
|
||||
|
|
|
@ -19,32 +19,29 @@ SALT="$1"
|
|||
PEPPER="$2"
|
||||
PLAYER="$3"
|
||||
PSEUDO="$4"
|
||||
[[ $PSEUDO == "" ]] && PSEUDO="Anonymous"
|
||||
|
||||
LANG="$5"
|
||||
[[ $LANG == "" ]] && LANG="_LANG_"
|
||||
## Fill UP TW with VIDEO URL or UMAP NS
|
||||
URL="$5"
|
||||
|
||||
## UPLANET UMAP
|
||||
## UPLANET SECTOR
|
||||
LAT="$6"
|
||||
[[ $LAT == "" ]] && LAT="0.00"
|
||||
LON="$7"
|
||||
[[ $LON == "" ]] && LON="0.00"
|
||||
|
||||
################################################################################
|
||||
YOU=$(myIpfsApi);
|
||||
LIBRA=$(head -n 2 ${MY_PATH}/../A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
|
||||
################################################################################
|
||||
## LIST TW MODELS
|
||||
################################################################################
|
||||
#~ TWMODEL="/ipfs/bafybeid7xwuqkgyiffehs77x3wky3dghjncxepr5ln6dewapgvbwrqi7n4"
|
||||
#~ # ipfs cat $TWMODEL > templates/twdefault.html
|
||||
TWUPLANET="/ipfs/bafybeigpwapdih24vnakummoyj6vodxiem4i6ezp5hxa35yt3paxpqz53y" ## WITH LIGHTBEAMS SAVER
|
||||
TWUPLANET="/ipfs/bafybeidxa45qgbf34p7uvmphj5zt6jp2zgpw7ouwb3e3urnbu4jrt2dgiq" ## WITH IPFS SAVER
|
||||
# ipfs cat $TWUPLANET > templates/twuplanet.html
|
||||
TWMODEL="/ipfs/bafybeie6sx76balvpeehvbh5du7oc5fhjuwydryympeh3qnm5s3b2jrvwe"
|
||||
# ipfs cat $TWMODEL > templates/twdefault.html
|
||||
MINIMAL="/ipfs/bafybeicpfrsx44lkib4352eulvohmgdpaww3sau3qtbj7fzj6qw7xsokhy"
|
||||
# ipfs cat $MINIMAL > templates/twuplanet.html
|
||||
################################################################################
|
||||
|
||||
mkdir -p ~/.zen/tmp/${MOATS}/TW
|
||||
|
||||
## TEST chargement ONLINE TW !!!
|
||||
## Chargement TW !!!
|
||||
if [[ $SALT != "" && PEPPER != "" ]]; then
|
||||
|
||||
## Creating SALT/PEPPER IPNS KEY
|
||||
|
@ -54,47 +51,39 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
|
|||
|
||||
echo "SCANNING /ipns/${ASTRONAUTENS} for 180s"
|
||||
## GETTING LAST TW via IPFS or HTTP GW
|
||||
ipfs --timeout 180s cat --progress=false /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
[[ $YOU ]] \
|
||||
&& ipfs --timeout 180s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/TW/index.html ]]; then
|
||||
echo "TW FOUND... BACKUP TIDDLERS"
|
||||
# BACKUP tiddlers
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'backup.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[!is[system]]'
|
||||
[[ $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 \
|
||||
&& [[ $ENTER != "" ]] && rm ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
[[ -s ~/.zen/tmp/${MOATS}/backup.json ]] \
|
||||
&& echo ">> Tiddlers Backup : ~/.zen/tmp/${MOATS}/backup.json" \
|
||||
|| echo "ERROR EXTRACTING TIDDLERS"
|
||||
|
||||
rm ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
fi
|
||||
# EXTEND SEARCH IN WEB2.0
|
||||
#~ [[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
|
||||
#~ && echo "Trying curl on $LIBRA" \
|
||||
#~ && curl -m 30 -so ~/.zen/tmp/${MOATS}/TW/index.html "$LIBRA/ipns/${ASTRONAUTENS}"
|
||||
|
||||
#############################################
|
||||
## CREATE NEW TW FROM TEMPLATE
|
||||
cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
## AUCUN RESULTAT
|
||||
if [ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]; then
|
||||
|
||||
#### REFILL WITH BACKUP
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/backup.json ]]; then
|
||||
# COPY TW TEMPLATE
|
||||
[[ ${LON} && ${LAT} ]] \
|
||||
&& cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html \
|
||||
|| cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html \
|
||||
--import ~/.zen/tmp/${MOATS}/backup.json "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "tw.html" "text/plain"
|
||||
|
||||
[[ -s ~/.zen/tmp/${MOATS}/tw.html ]] \
|
||||
&& cp -f ~/.zen/tmp/${MOATS}/tw.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
echo "BACKUP RESTORED"
|
||||
fi
|
||||
else
|
||||
#############################################
|
||||
# EXISTING TW : DATA TESTING & CACHE
|
||||
rm -f ~/.zen/tmp/${MOATS}/Astroport.json
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
|
||||
HPass=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].HPASS)
|
||||
echo "ASTROPORT=${ASTROPORT}"
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'AstroID.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'AstroID'
|
||||
AstroID=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[]._canonical_uri) ## Can be deleted
|
||||
[[ -z $HPass ]] && HPass=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[].HPASS) ## Double HPASS
|
||||
AstroID=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[]._canonical_uri)
|
||||
HPass=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[].HPASS)
|
||||
echo "AstroID=$AstroID ($HPass)"
|
||||
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'ZenCard.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'ZenCard'
|
||||
ZenCard=$(cat ~/.zen/tmp/${MOATS}/ZenCard.json | jq -r .[]._canonical_uri)
|
||||
|
@ -109,11 +98,11 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
|
|||
else
|
||||
|
||||
echo ">> NO ACTIVE TW - CREATING FRESH NEW ONE"
|
||||
cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
ipfs key rm ${MOATS} 2>/dev/null ## CLEANING MOATS KEY
|
||||
|
||||
|
@ -135,7 +124,7 @@ fi
|
|||
[[ $SALT == "" ]] && SALT=$(${MY_PATH}/../tools/diceware.sh 4 | xargs)
|
||||
#~ echo "-> ID : $SALT"
|
||||
|
||||
[[ $PEPPER == "" ]] && PEPPER=$(${MY_PATH}/../tools/diceware.sh 4 | xargs)
|
||||
[[ $PEPPER == "" ]] && PEPPER=$(${MY_PATH}/../tools/diceware.sh 2 | xargs)
|
||||
#~ echo "-> PASS : $PEPPER"
|
||||
|
||||
[[ ! $PSEUDO ]] && PSEUDO=${PLAYER%%[0-9]*}
|
||||
|
@ -143,9 +132,8 @@ fi
|
|||
[[ $(ls ~/.zen/game/players/$PSEUDO 2>/dev/null) ]] && echo "$PSEUDO EST DEJA UN PLAYER. EXIT" && exit 1
|
||||
|
||||
# PSEUDO=${PSEUDO,,} #lowercase
|
||||
[[ ! ${PLAYER} ]] \
|
||||
&& PLAYER=${PSEUDO}${RANDOM:0:3}@$(${MY_PATH}/../tools/diceware.sh 1 | xargs).${RANDOM:0:3} \
|
||||
&& echo "ADRESSE EMAIL ?" && read OPLAYER && [[ $OPLAYER ]] && PLAYER=$OPLAYER ## CLI MODE
|
||||
[[ ! ${PLAYER} ]] && PLAYER=${PSEUDO}${RANDOM:0:3}@$(${MY_PATH}/../tools/diceware.sh 1 | xargs).${RANDOM:0:3} \
|
||||
&& echo "ADRESSE EMAIL ?" && read OPLAYER && [[ $OPLAYER ]] && PLAYER=$OPLAYER
|
||||
|
||||
PLAYER=${PLAYER,,}
|
||||
|
||||
|
@ -153,6 +141,13 @@ PLAYER=${PLAYER,,}
|
|||
PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-5)
|
||||
|
||||
############################################################
|
||||
######### TODO Ajouter d'autres clefs IPNS, GPG ?
|
||||
# MOANS=$(ipfs key gen moa_${PLAYER})
|
||||
# MOAKEYFILE=$(${MY_PATH}/give_me_keystore_filename.py "moa_${PLAYER}")
|
||||
# echo "Coffre personnel multimedia journalisé dans votre 'Astroport' (amis de niveau 3)"
|
||||
# echo "Votre clef moa_${PLAYER} <=> $MOANS ($MOAKEYFILE)"; sleep 2
|
||||
############################################################
|
||||
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/secret.dunikey "$SALT" "$PEPPER"
|
||||
|
||||
G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
|
@ -163,31 +158,44 @@ G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
|||
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
|
||||
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
|
||||
|
||||
## secret.june = SALT PEPPER CREDENTIALS
|
||||
echo "SALT=\"$SALT\"" > ~/.zen/game/players/${PLAYER}/secret.june
|
||||
echo "PEPPER=\"$PEPPER\"" >> ~/.zen/game/players/${PLAYER}/secret.june
|
||||
####
|
||||
## MOVE ${MOATS} secret.dunikey IN PLAYER DIRECTORY
|
||||
mv ~/.zen/tmp/${MOATS}/secret.dunikey ~/.zen/game/players/${PLAYER}/
|
||||
# PLAYER=geg-la_debrouille@super.chez-moi.com
|
||||
YUSER=$(echo ${PLAYER} | cut -d '@' -f1) # YUSER=geg-la_debrouille
|
||||
LYUSER=($(echo "$YUSER" | sed 's/[^a-zA-Z0-9]/\ /g')) # LYUSER=(geg la debrouille)
|
||||
CLYUSER=$(printf '%s\n' "${LYUSER[@]}" | tac | tr '\n' '.' ) # CLYUSER=debrouille.la.geg.
|
||||
YOMAIN=$(echo ${PLAYER} | cut -d '@' -f 2) # YOMAIN=super.chez-moi.com
|
||||
# echo "NEXT STYLE GW : https://ipfs.$CLYUSER$YOMAIN.$(myHostName)"
|
||||
# echo "MY PLAYER API GW : $(myPlayerApiGw)"
|
||||
|
||||
NID="${myIPFS}"
|
||||
WID="https://ipfs.$CLYUSER$YOMAIN.$(myHostName)/api" ## Next Generation API # TODO PLAYER IPFS Docker entrance
|
||||
WID="https://ipfs.$(myHostName)/api"
|
||||
WID="https://ipfs.$(myHostName)/api"
|
||||
WID="${myAPI}" ## https://ipfs.libra.copylaradio.com
|
||||
|
||||
# WID="http://ipfs.$(myHostName):5001"
|
||||
USALT=$(echo "$SALT" | jq -Rr @uri)
|
||||
UPEPPER=$(echo "$PEPPER" | jq -Rr @uri)
|
||||
DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
|
||||
|
||||
[[ $isLAN ]] && NID="http://ipfs.localhost:8080" \
|
||||
&& WID="http://ipfs.localhost:5001"
|
||||
|
||||
# Create ${PLAYER} "IPNS Key"
|
||||
ipfs key rm ${PLAYER} >/dev/null 2>&1
|
||||
ipfs key rm ${G1PUB} >/dev/null 2>&1
|
||||
####
|
||||
|
||||
mv ~/.zen/tmp/${MOATS}/secret.dunikey ~/.zen/game/players/${PLAYER}/
|
||||
|
||||
# Create Player "IPNS Key" (key import)
|
||||
ipfs key rm ${PLAYER}
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/game/players/${PLAYER}/secret.player "$SALT" "$PEPPER"
|
||||
TWNS=$(ipfs key import ${PLAYER} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
|
||||
ASTRONAUTENS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
|
||||
ASTRONAUTENS=$(ipfs key import $G1PUB -f pem-pkcs8-cleartext ~/.zen/game/players/${PLAYER}/secret.player)
|
||||
|
||||
## TODO MAKE CLEANER
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/G1SSB # Prepare astrXbian sub-datastructure "old scarf code"
|
||||
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.png "$G1PUB" ## Check by VISA.print.sh
|
||||
|
||||
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.png "$G1PUB"
|
||||
cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/ipfs/QR.png
|
||||
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/ipfs/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible)
|
||||
|
||||
qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png "$myLIBRA/ipns/${ASTRONAUTENS}"
|
||||
|
||||
############################################################################
|
||||
|
@ -195,10 +203,6 @@ qrencode -s 12 -o ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png "$myLIBRA/ip
|
|||
#~ secFromDunikey=$(cat ~/.zen/game/players/${PLAYER}/secret.dunikey | grep "sec" | cut -d ' ' -f2)
|
||||
#~ echo "$secFromDunikey" > ~/.zen/tmp/${MOATS}/${PSEUDO}.sec
|
||||
|
||||
USALT=$(echo "$SALT" | jq -Rr @uri)
|
||||
UPEPPER=$(echo "$PEPPER" | jq -Rr @uri)
|
||||
DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
|
||||
|
||||
## PGP ENCODING SALT/PEPPER API ACCESS
|
||||
echo "${DISCO}" > ~/.zen/tmp/${MOATS}/topgp
|
||||
cat ~/.zen/tmp/${MOATS}/topgp | gpg --symmetric --armor --batch --passphrase "$PASS" -o ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc
|
||||
|
@ -211,8 +215,9 @@ rm ~/.zen/tmp/${MOATS}/topgp
|
|||
## Add logo to QRCode
|
||||
cp ${MY_PATH}/../images/astrologo_nb.png ~/.zen/tmp/${MOATS}/fond.png
|
||||
|
||||
## ASTROID ~~~~~
|
||||
## ASTROID ~~~~~ || &&&&&
|
||||
ASTROIDQR="$(cat ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc | tr '-' '~' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )"
|
||||
[[ ${PSEUDO} == "UPlanet" ]] && ASTROIDQR="$(cat ~/.zen/tmp/${MOATS}/gpg.${PSEUDO}.asc | tr '-' '&' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )"
|
||||
## MAKE amzqr ASTROID PGP QRCODE
|
||||
amzqr "${ASTROIDQR}" \
|
||||
-d ~/.zen/tmp/${MOATS} \
|
||||
|
@ -225,18 +230,12 @@ convert ~/.zen/game/players/${PLAYER}/result_qrcode.png -resize 480 ~/.zen/game/
|
|||
|
||||
ASTROQR="/ipfs/$(ipfs add -q $HOME/.zen/game/players/${PLAYER}/AstroID.png | tail -n 1)"
|
||||
|
||||
## DO NOT PIN ASTROID QRCODE
|
||||
ipfs pin rm ${ASTROQR}
|
||||
|
||||
############################################################################ TW
|
||||
### INITALISATION WIKI dans leurs répertoires de publication IPFS
|
||||
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/moa/
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
|
||||
&& cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
|
||||
sed "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/tmp/${MOATS}/TW/index.html \
|
||||
> ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
[[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] && cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
|
||||
sed "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/tmp/${MOATS}/TW/index.html > ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
# INSERT ASTROPORT ADDRESS
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
|
||||
|
@ -245,122 +244,99 @@ sed -i "s~${ASTROPORT}~/ipns/${IPFSNODEID}~g" ~/.zen/game/players/${PLAYER}/ipfs
|
|||
|
||||
# TW CHAIN INIT WITH TWMODEL
|
||||
sed -i "s~_MOATS_~${MOATS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_CHAIN_~${TWUPLANET}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_TWMODEL_~${TWUPLANET}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_ASTRONAUTENS_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_CHAIN_~${TWMODEL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_TWMODEL_~${TWMODEL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_TW_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
## AND HACK QRCODE.sh FOR _PGP KEY_ TO VERIFY LAST HASH OF PROVIDED PASS
|
||||
HPASS=$(echo $PASS | sha512sum | cut -d ' ' -f 1)
|
||||
[[ ${HPass} != "" && ${HPass} != "null" ]] && SRCPASS=${HPass} || SRCPASS="_HPASS_"
|
||||
[[ ${HPass} != "" ]] && SRCPASS=${HPass} || SRCPASS="_HPASS_"
|
||||
sed -i "s~${SRCPASS}~${HPASS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
## RESET WISHES TO DEPLOY DERIVATED KEYS ON HOST AGAIN ( DONE IN PLAYER_REFRESH )
|
||||
#~ sed -i "s~G1Voeu~voeu~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
## Fill ♥BOX - CopierYoutube Tiddler
|
||||
sed -i "s~_URL_~${URL}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
# INSERT PLAYER DATA
|
||||
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
|
||||
[[ -z ${CURRENT} ]] && CURRENT=${PLAYER}
|
||||
sed -i "s~_PLAYER_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_CURRENT_~${CURRENT}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~_WISHKEY_~${G1PUB}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
sed -i "s~_G1PUB_~${G1PUB}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
#~ sed -i "s~_QRSEC_~${PASsec}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1)
|
||||
# La Clef IPNS porte comme nom G1PUB et ${PLAYER}
|
||||
sed -i "s~_MEDIAKEY_~${PLAYER}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~k2k4r8kxfnknsdf7tpyc46ks2jb3s9uvd3lqtcv9xlq9rsoem7jajd75~${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
sed -i "s~_ASTRONAUTENS_~/ipns/${ASTRONAUTENS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
## AstroID Tiddler UPGRADE
|
||||
cat ${MY_PATH}/../templates/data/AstroID.json \
|
||||
| sed -e "s~/ipfs/bafybeifbebc3ewnzrzbm44arddedbralegnxklhua5d5ymzaqtf2kaub7i~${ASTROQR}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \
|
||||
-e "s~_HPASS_~${HPASS}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/AstroID.json
|
||||
|
||||
sed -i "s~${AstroID}~${ASTROQR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## NOT CYPHERED AstroID
|
||||
|
||||
sed -i "s~tube.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
sed -i "s~ipfs.copylaradio.com~$myTUBE~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
|
||||
## PREPARE UMAP LAT LON replacement
|
||||
[[ ! ${LAT} ]] && LAT="0.00"
|
||||
[[ ! ${LON} ]] && LON="0.00"
|
||||
UMAP=${URL}
|
||||
[[ ! $(echo ${UMAP} | grep "/ipns/") ]] && UMAP="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu" ## DEFAULT = 0.00
|
||||
|
||||
SECTOR="_${LAT::-1}_${LON::-1}" ### SECTOR = 0.1° Planet Slice in MadeInZion Tiddler
|
||||
echo "UPlanet 0.1° SECTOR : ${SECTOR}"
|
||||
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
|
||||
sed -i "s~_SECTOR_~${SECTOR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
|
||||
sed -i "s~_DAO_~${LANG}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
|
||||
sed -i "s~_NUMBER_~${#PLAYERONE[@]}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ## MadeInZion
|
||||
|
||||
if [[ ${LAT} && ${LON} ]]; then
|
||||
# GET ACTUAL GPS VALUES
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS'
|
||||
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS'
|
||||
OLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
OLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
|
||||
OUMAP=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
|
||||
# REPLACE WITH NEW LAT LON UMAP
|
||||
sed -i "s~${OLAT}~${LAT}~g" ~/.zen/tmp/${MOATS}/GPS.json
|
||||
sed -i "s~${OLON}~${LON}~g" ~/.zen/tmp/${MOATS}/GPS.json
|
||||
## Add _SECTORTW_
|
||||
cat ~/.zen/tmp/${MOATS}/GPS.json | jq '.[0] + {"sectortw": "_SECTORTW_"}' \
|
||||
> ~/.zen/tmp/${MOATS}/GPStw.json \
|
||||
&& mv ~/.zen/tmp/${MOATS}/GPStw.json ~/.zen/tmp/${MOATS}/GPS.json
|
||||
sed -i "s~${OUMAP}~${UMAP}~g" ~/.zen/tmp/${MOATS}/GPS.json
|
||||
fi
|
||||
|
||||
SECTOR="_${LAT::-1}_${LON::-1}" ### SECTOR = 0.1° Planet Slice in MadeInZion Tiddler
|
||||
echo "UPlanet 0.1° SECTOR : ${SECTOR}"
|
||||
sed -i "s~_SECTOR_~${SECTOR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
## Change myIP
|
||||
#~ sed -i "s~127.0.0.1~$myIP~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html # 8080 & 5001 BEING THE RECORDING GATEWAY (WAN or ipfs.localhost)
|
||||
|
||||
###########
|
||||
## GET OLD16 FROM MadeInZion
|
||||
tiddlywiki \
|
||||
--load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'MIZ.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
## GET OLD16
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MIZ.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
OLD16=$(cat ~/.zen/tmp/${MOATS}/MIZ.json | jq -r ".[].secret")
|
||||
[[ ${OLD16} == "" || ${OLD16} == "null" ]] && OLD16="_SECRET_"
|
||||
echo "${OLD16}"
|
||||
|
||||
# TODO : MAKE NODE FORGET PASS THEN DECODE ${PLAYER}/secret.june FROM TW # PROD #
|
||||
## USING SWARMKEY (derivated from IPFSNODE "/proc/cpuinfo" key made by _12345.sh) ## HARDWARE SPECIFIC KEY ##
|
||||
# TODO : NODE COULD FORGET PASS THEN DECODE ${PLAYER}/secret.dunikey FROM TW # PROD #
|
||||
MACHINEPUB=$(cat $HOME/.zen/game/myswarm_secret.dunikey | grep pub | cut -d ' ' -f 2)
|
||||
|
||||
if [[ "${MACHINEPUB}" != "" ]]; then
|
||||
#~ echo "# CRYPTO ENCODING PLAYER KEY WITH MACHINEPUB
|
||||
${MY_PATH}/../tools/natools.py encrypt \
|
||||
-p ${MACHINEPUB} \
|
||||
-i $HOME/.zen/game/players/${PLAYER}/secret.june \
|
||||
-o $HOME/.zen/tmp/${MOATS}/secret.june.${G1PUB}.enc
|
||||
ENCODING=$(cat ~/.zen/tmp/${MOATS}/secret.june.$G1PUB.enc | base16)
|
||||
#~ echo "# CRYPTO ENCODING _SECRET_ "
|
||||
${MY_PATH}/../tools/natools.py encrypt -p ${MACHINEPUB} -i $HOME/.zen/game/players/${PLAYER}/secret.dunikey -o $HOME/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc
|
||||
ENCODING=$(cat ~/.zen/tmp/${MOATS}/secret.dunikey.$G1PUB.enc | base16)
|
||||
sed -i "s~${OLD16}~${ENCODING}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
|
||||
echo "ENCODING: ${ENCODING}"
|
||||
|
||||
# GIVE ZEN STATION TW ACCESS #
|
||||
# IN CASE ORIGINAL STATION NEEDS ACCESS # COULD BE REMOVED ?
|
||||
###########
|
||||
#~ echo "# CRYPTO DECODING TESTING..."
|
||||
tiddlywiki \
|
||||
--load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--output ~/.zen/tmp/${MOATS} \
|
||||
--render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
|
||||
cat ~/.zen/tmp/${MOATS}/MadeInZion.json \
|
||||
| jq -r ".[].secret" | base16 -d \
|
||||
> ~/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2
|
||||
|
||||
${MY_PATH}/../tools/natools.py decrypt \
|
||||
-f pubsec \
|
||||
-k $HOME/.zen/game/myswarm_secret.dunikey \
|
||||
-i $HOME/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2 \
|
||||
-o $HOME/.zen/tmp/${MOATS}/crypto.2
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
|
||||
cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r ".[].secret" | base16 -d > ~/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2
|
||||
${MY_PATH}/../tools/natools.py decrypt -f pubsec -k $HOME/.zen/game/myswarm_secret.dunikey -i $HOME/.zen/tmp/${MOATS}/crypto.$G1PUB.enc.2 -o $HOME/.zen/tmp/${MOATS}/crypto.2
|
||||
#~ echo "DEBUG : $(cat $HOME/.zen/tmp/${MOATS}/crypto.2)"
|
||||
###########
|
||||
## CRYPTO PROCESS VALIDATED
|
||||
[[ -s ~/.zen/tmp/${MOATS}/crypto.2 ]] \
|
||||
&& echo "NATOOLS LOADED STATION TW KEY " \
|
||||
[[ -s ~/.zen/tmp/${MOATS}/crypto.2 ]] && echo "NATOOLS LOADED STATION TW KEY " \
|
||||
|| echo "NATOOLS ERRORS - CHECK STATION" # MACHINEPUB CRYPTO ERROR
|
||||
|
||||
else
|
||||
echo " - WARNING - MISSING ~/.zen/game/myswarm_secret.dunikey - WARNING -"
|
||||
fi
|
||||
########### SECTOR = 0.1° UPLANET SLICE
|
||||
OSECTOR=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].sector)
|
||||
[[ ${OSECTOR} != "null" ]] && sed -i "s~${OSECTOR}~${SECTOR}~g" ~/.zen/tmp/${MOATS}/MadeInZion.json
|
||||
|
@ -370,7 +346,6 @@ cat ${MY_PATH}/../templates/data/local.api.json | sed "s~_NID_~${WID}~g" > ~/.ze
|
|||
cat ${MY_PATH}/../templates/data/local.gw.json | sed "s~_NID_~${NID}~g" > ~/.zen/tmp/${MOATS}/local.gw.json
|
||||
|
||||
# Create"${PLAYER}_feed" Key ! DERIVATED ! "$SALT" "$PEPPER $G1PUB"
|
||||
ipfs key rm "${PLAYER}_feed" 2>/dev/null
|
||||
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/feed.ipfskey "$SALT" "$PEPPER $G1PUB"
|
||||
FEEDNS=$(ipfs key import "${PLAYER}_feed" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/feed.ipfskey)
|
||||
|
||||
|
@ -379,10 +354,26 @@ FEEDNS=$(ipfs key import "${PLAYER}_feed" -f pem-pkcs8-cleartext ~/.zen/tmp/${MO
|
|||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_feed'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key","text":"'${FEEDNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
|
||||
|
||||
## NATOOLS ENCRYPT
|
||||
#~ echo "# NATOOLS ENCODING MYSELF feed.ipfskey (TODO: could be decoded to compare with G1lib.js) "
|
||||
${MY_PATH}/../tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/tmp/${MOATS}/feed.ipfskey -o $HOME/.zen/tmp/${MOATS}/feed.ipfskey.$G1PUB.enc
|
||||
ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/feed.ipfskey.$G1PUB.enc | base16)
|
||||
#~ echo ${ENCODING}
|
||||
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-feed","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
|
||||
|
||||
#~ echo
|
||||
#~ echo "IPFS GATEWAY : ${NID}"
|
||||
# cat ~/.zen/tmp/${MOATS}/local.gw.json | jq -r
|
||||
#~ echo "IPFS API : ${WID}"
|
||||
# cat ~/.zen/tmp/${MOATS}/local.api.json | jq -r
|
||||
#~ echo ">>> RSS FEED : ${myIPFS}/ipns/${FEEDNS}"
|
||||
#~ ## CHANGE SELECTED GW & API
|
||||
|
||||
## ADD SYSTEM TW
|
||||
tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/lightbeam-natools.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/local.api.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/local.gw.json "application/json" \
|
||||
--import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \
|
||||
|
@ -478,6 +469,9 @@ echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/.g1pub
|
|||
|
||||
echo "${ASTRONAUTENS}" > ~/.zen/game/players/${PLAYER}/.playerns
|
||||
|
||||
echo "SALT=\"$SALT\"" > ~/.zen/game/players/${PLAYER}/secret.june
|
||||
echo "PEPPER=\"$PEPPER\"" >> ~/.zen/game/players/${PLAYER}/secret.june
|
||||
|
||||
#~ echo; echo "Création Clefs et QR codes pour accès au niveau Astroport Ŋ1"; sleep 1
|
||||
|
||||
echo "--- PLAYER : ${PLAYER} - DATA PROTOCOL LAYER LOADED";
|
||||
|
@ -485,10 +479,9 @@ echo "--- PLAYER : ${PLAYER} - DATA PROTOCOL LAYER LOADED";
|
|||
|
||||
[[ $XDG_SESSION_TYPE == 'x11' || $XDG_SESSION_TYPE == 'wayland' ]] && xdg-open "${myIPFS}/ipns/${ASTRONAUTENS}" && espeak "YOUR PASS IS $PASS"
|
||||
|
||||
####### CORRECT NO CURRENT ? PLAYER = .current
|
||||
[[ ! -e ~/.zen/game/players/.current ]] \
|
||||
&& rm ~/.zen/game/players/.current 2>/dev/null \
|
||||
&& ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
|
||||
################# PREPARE DOCKERIZATION
|
||||
#~ [[ -l ~/.zen/game/players/.current ]] \
|
||||
#~ && ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
|
||||
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
|
||||
|
@ -506,8 +499,12 @@ echo "$PASS" > ~/.zen/game/players/${PLAYER}/.pass
|
|||
# TODO : Allow Astronaut PASS change ;)
|
||||
#####################################################
|
||||
|
||||
## DISCONNECT AND CONNECT CURRENT PLAYER
|
||||
#~ rm -f ~/.zen/game/players/.current
|
||||
#~ ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
|
||||
|
||||
## MANAGE GCHANGE+ & Ŋ1 EXPLORATION
|
||||
${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}"
|
||||
${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" 1>/dev/null
|
||||
|
||||
### IF PRINTER -> PRINT VISA
|
||||
LP=$(ls /dev/usb/lp* 2>/dev/null)
|
||||
|
@ -518,121 +515,72 @@ LP=$(ls /dev/usb/lp* 2>/dev/null)
|
|||
## NO. GCHANGE+ IS THE MAIN INTERFACE, astrXbian manage
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "$(${MY_PATH}/../tools/face.sh cool)"
|
||||
echo " 'Astronaut' $PSEUDO"
|
||||
echo " 'Astronaute' $PSEUDO"
|
||||
echo
|
||||
echo "* ZenCard : Public Key and Wallet
|
||||
${NID}/ipns/${ASTRONAUTENS}#ZenCard"
|
||||
echo " "
|
||||
echo "* AstroID : with PASS : $PASS"
|
||||
echo "* AstroID : AstroID with PASS : $PASS"
|
||||
echo "${NID}/ipns/${ASTRONAUTENS}#AstroID"
|
||||
echo
|
||||
echo "* UMap : registration at ${LAT}, ${LON}"
|
||||
echo "* UMap : registration at ${LAT}, ${LON}
|
||||
${myIPFS}${URL}"
|
||||
echo
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
#~ echo "BIENVENUE"
|
||||
#~ echo "https://monnaie-libre.fr (ğ1) : $G1PUB"; # sleep 1
|
||||
#~ echo "
|
||||
#~ Vos Secrets :
|
||||
#~ $SALT
|
||||
#~ $PEPPER
|
||||
|
||||
#~ * WALLET : https://cesium.app
|
||||
#~ * MARKET : https://gchange.fr
|
||||
|
||||
#~ U Planet : ${myUPLANET}
|
||||
#~ Astroport.ONE ★ PKI ★ Ğ1/Ŋ1 ★ DAO ★ Libre ★"; # sleep 1
|
||||
#~ echo "$(${MY_PATH}/../tools/face.sh friendly) ★ GCHANGE LIBRE MARKET ★"
|
||||
#~ echo "Use $SALT and $PEPPER to register on https://cesium.app and https://gchange.fr to ★ friends"
|
||||
echo ""
|
||||
|
||||
####tools##########################################getUMAP_ENV.sh
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh "${LAT}" "${LON}" | tail -n 1)
|
||||
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to command.sh # KEEP IT
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
|
||||
|
||||
### SEND AstroID and ZenCard to EMAIL
|
||||
(
|
||||
echo "<html><body><h1>UPlanet : ZenCard</h1>
|
||||
This is your ZenCard : your public key (your flag)" > ~/.zen/tmp/${MOATS}/ZenCard.txt
|
||||
echo "<br><a href='${myIPFSGW}${IASTRO}'>ZenCard</a><br><img src='${myIPFSGW}${IASTRO}'\>
|
||||
<br>it contains you Ẑen and TW address
|
||||
<br></body></html>" >> ~/.zen/tmp/${MOATS}/ZenCard.txt
|
||||
|
||||
ipns2did=""
|
||||
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/ZenCard.txt "ZenCard"
|
||||
|
||||
# Loop through the ASTRONAUTENS two characters at a time
|
||||
for ((i = 0; i < ${#ASTRONAUTENS}; i += 2)); do
|
||||
ipns2did+=" ${ASTRONAUTENS:i:2}"
|
||||
# Check if 10 doublets have been added
|
||||
if (( (i / 2 + 1) % 14 == 0 )); then
|
||||
ipns2did+="<br>" # Add a newline character
|
||||
fi
|
||||
done
|
||||
#~ mpack -a -s "✅ UPlanet : ZenCard" -d ~/.zen/tmp/${MOATS}/intro.txt \
|
||||
#~ ~/.zen/tmp/${MOATS}/pseudo.png ${PLAYER}
|
||||
|
||||
# Print the result with leading space removed
|
||||
echo -e "${ipns2did:1}"
|
||||
####################################################### EMAIL
|
||||
[[ -s ${MY_PATH}/../templates/UPlanetZINE/day0/index.${LANG}.html ]] \
|
||||
&& ZINE="${MY_PATH}/../templates/UPlanetZINE/day0/index.${LANG}.html" \
|
||||
|| ZINE="${MY_PATH}/../templates/UPlanetZINE/day0/index.html"
|
||||
##UPlanetZine::/ipfs/QmUjgQYK74UgRoyLFfmR2LMX7rd6vNxmtWeUtRxjemELuZ - chained release -
|
||||
cat ${ZINE} \
|
||||
| sed -e "s~/ipfs/QmdmeZhD8ncBFptmD5VSJoszmu41edtT265Xq3HVh8PhZP~${ASTROQR}~g" \
|
||||
-e "s~/ipfs/QmTL7VDgkYjpYC2qiiFCfah2pSqDMkTANMeMtjMndwXq9y~${IASTRO}~g" \
|
||||
-e "s~_MOATS_~${MOATS}~g" \
|
||||
-e "s~_PLAYER_~${PLAYER}~g" \
|
||||
-e "s~_G1PUB_~${G1PUB}~g" \
|
||||
-e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \
|
||||
-e "s~_ASTRODID_~${ipns2did:1}~g" \
|
||||
-e "s~0448~${PASS}~g" \
|
||||
-e "s~_SALT_~${SALT}~g" \
|
||||
-e "s~_PEPPER_~${PEPPER}~g" \
|
||||
-e "s~_IPFSNODEID_~${IPFSNODEID}~g" \
|
||||
-e "s~_EARTHCID_~${EARTHCID}~g" \
|
||||
-e "s~_SECTOR_~${SECTOR}~g" \
|
||||
-e "s~_SLAT_~${SLAT}~g" \
|
||||
-e "s~_SLON_~${SLON}~g" \
|
||||
> ~/.zen/tmp/${MOATS}/UPlanetZine.html
|
||||
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}/UPlanetZine.html "${PLAYER} MULTIPASS"
|
||||
|
||||
#####################################################################"_EARTHCID_
|
||||
|
||||
#~ echo "<html><head>
|
||||
#~ <style>
|
||||
#~ body {
|
||||
#~ font-family: 'Courier New', monospace;
|
||||
#~ }
|
||||
#~ pre {
|
||||
#~ white-space: pre-wrap;
|
||||
#~ }
|
||||
#~ </style></head>
|
||||
#~ <body>
|
||||
#~ <center>
|
||||
#~ <h3><a href='${myUPLANET}'>UPlanet</a></h3>
|
||||
#~ <h1>\"<a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}'>TW5</a>\"</h1>
|
||||
#~ did:/ipns/${ASTRONAUTENS}
|
||||
#~ <hr>
|
||||
#~ <hr><a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}#AstroID'>AstroID<br>
|
||||
#~ <img width=300px src='$(myIpfsGw)${ASTROQR}'\></a><br>
|
||||
#~ <h2>SECRET1=\"$SALT\"<br>SECRET2=\"$PEPPER\"</h2>
|
||||
#~ <h2> CODE : $PASS </h2>
|
||||
#~ <hr>
|
||||
#~ <a target='TW' href='$(myIpfsGw)/ipns/${ASTRONAUTENS}#ZenCard' title='${G1PUB}'>ZenCard</a><br>
|
||||
#~ <img src='$(myIpfsGw)${IASTRO}'\><br><hr>
|
||||
#~ ${G1PUB}" > ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
|
||||
#~ echo "
|
||||
#~ <h3> /-> ASTROPORT : <a href='$(myIpfsGw)/ipns/${IPFSNODEID}'>/ipns/${IPFSNODEID}</a></h3>
|
||||
#~ <h3> /--> SECTOR : <a href='${EARTHCID}/map_render.html?southWestLat=${LAT::-1}&southWestLon=${LON::-1}°=0.1'>${SECTOR}</a></h3>
|
||||
#~ " >> ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
|
||||
#~ asciiart="${MY_PATH}/../images/logoastro.art"
|
||||
#~ while IFS= read -r line
|
||||
#~ do
|
||||
#~ echo "$line" | sed "s~ ~\ ~g" >> ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
#~ echo "<br>" >> ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
#~ done <"$asciiart"
|
||||
|
||||
#~ echo "<br>${MOATS}<br>- print a copy -</center></body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.html
|
||||
|
||||
#~ $MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.html "TW5 & AstroID"
|
||||
$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}
|
||||
|
||||
## CLEANING CACHE
|
||||
rm -Rf ~/.zen/tmp/${MOATS}
|
||||
) &
|
||||
|
||||
|
||||
#####################################################################"
|
||||
|
||||
## CHECK .current
|
||||
[[ ! -d $(readlink ~/.zen/game/players/.current) ]] \
|
||||
&& rm ~/.zen/game/players/.current 2>/dev/null \
|
||||
&& ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
|
||||
|
||||
|
||||
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to command.sh # KEEP IT
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
################################################ LAST LINE REPORT VALUES TO CALLING SCRIPT | tail -n 1
|
||||
echo "export ASTROTW=/ipns/$ASTRONAUTENS ASTROG1=$G1PUB ASTROMAIL=$PLAYER ASTROFEED=$FEEDNS PASS=$PASS"
|
||||
exit 0
|
||||
|
|
|
@ -15,8 +15,6 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
# ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/*
|
||||
# _PLAYER.json
|
||||
|
||||
# change SWARM memory
|
||||
### # ~/.zen/tmp/${IPFSNODEID}/WISH/${WISHNAME}/${PLAYER}/*
|
||||
|
||||
PLAYER="$1" ## IPNS KEY NAME - G1PUB - PLAYER ...
|
||||
[[ ! ${PLAYER} ]] && echo "Please provide PLAYER publish key" && exit 1
|
||||
|
@ -39,6 +37,9 @@ INDEX="$3"
|
|||
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu
|
||||
|
||||
## PROTOCOL EVOLUTION RUN & REMOVE
|
||||
rm -Rf ~/.zen/tmp/${IPFSNODEID}/${PLAYER}
|
||||
|
||||
###############################
|
||||
####### NEED G1 / ZEN TO RUN
|
||||
[[ ${COINS} == "null" || ${COINS} == "" ]] \
|
||||
|
@ -50,14 +51,13 @@ echo "%% ${COINS} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
|||
|
||||
###############################
|
||||
## EXTRACT G1Voeu from PLAYER TW
|
||||
echo "Exporting ${PLAYER} TW [days:created[-360]tag[G1Voeu]]"
|
||||
echo "Exporting ${PLAYER} TW [tag[G1Voeu]]"
|
||||
rm -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-360]tag[G1Voeu]]'
|
||||
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
|
||||
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] \
|
||||
&& echo "AUCUN G1VOEU - EXIT -" && exit 0
|
||||
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json ]] && echo "AUCUN G1VOEU - EXIT -" && exit 0
|
||||
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json | jq -r 'map(select(.wish != null)) | .[].wish' > ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
|
||||
wishnumbers=$(cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt | wc -l)
|
||||
echo "${wishnumbers} VOEUX : ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt "
|
||||
|
||||
|
@ -92,16 +92,14 @@ do
|
|||
|
||||
## RUNNING WISH REFRESH : PLAYER CACHE
|
||||
mkdir -p ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/${WISH}
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1voeu.json \
|
||||
| jq .[] | jq -r 'select(.wish=="'${WISH}'")' \
|
||||
> ~/.zen/tmp/${MOATS}/${WISH}.json
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
## RUN SPECIFIC G1Voeu ASTROBOT PROGRAM (like G1CopierYoutube.sh)
|
||||
if [[ -s $MY_PATH/../ASTROBOT/G1${WISHNAME}.sh ]]; then
|
||||
echo "........................ Astrobot G1${WISHNAME}.sh PROGRAM FOUND !"
|
||||
echo "________________________________ Running it *****"
|
||||
${MY_PATH}/../ASTROBOT/G1${WISHNAME}.sh "$INDEX" "${PLAYER}" "$MOATS" "~/.zen/tmp/${MOATS}/${WISH}.json"
|
||||
${MY_PATH}/../ASTROBOT/G1${WISHNAME}.sh "$INDEX" "${PLAYER}" "$MOATS"
|
||||
echo "________________________________ Finished ******"
|
||||
else
|
||||
echo "......................... NO G1${WISHNAME} PROGRAM... "
|
||||
|
@ -167,27 +165,7 @@ do
|
|||
&& rm ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json \
|
||||
&& continue
|
||||
|
||||
#####################################################
|
||||
echo "## TIDDLERS FOUND ;) MIAM >>> (◕‿‿◕) <<<"
|
||||
##############################
|
||||
## WRITE FRIEND SAME WISH TIDDLERS IN PLAYER TW ########
|
||||
##############################
|
||||
## SIGN Tiddlers
|
||||
cat ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.rss.json \
|
||||
| sed "s~${PLAYER}~~g" \
|
||||
| sed "s~${APLAYER}~${APLAYER} ${PLAYER}~g" \
|
||||
> ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.signed.json
|
||||
|
||||
## ADD TO TW
|
||||
tiddlywiki --load ${INDEX} \
|
||||
--import ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.signed.json "application/json" \
|
||||
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "newindex.html" "text/plain"
|
||||
## CHECK IT IS OK
|
||||
[[ -s ~/.zen/tmp/${MOATS}/newindex.html ]] \
|
||||
&& cp ~/.zen/tmp/${MOATS}/newindex.html ${INDEX} \
|
||||
&& rm ~/.zen/tmp/${MOATS}/newindex.html
|
||||
|
||||
##############################
|
||||
echo ">>> G1FRIEND § $myIPFS${IPNS_VOEUNS}/_${APLAYER}.tiddlers.rss.json ${WISHNAME}"
|
||||
|
||||
# Extract Origin G1Voeu Tiddler
|
||||
|
@ -277,22 +255,16 @@ do
|
|||
${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 --timeout 180s name publish -k $VOEUKEY /ipfs/$WISHFLUX # PUBLISH $VOEUKEY
|
||||
ipfs name publish -k $VOEUKEY /ipfs/$WISHFLUX # PUBLISH $VOEUKEY
|
||||
|
||||
echo "## ASK ${myIPFSGW}${IPNS_VOEUNS} TO REFRESH" ## TODO LOOP BOOSTRAP & ONLINE FRIENDS
|
||||
curl -m 120 -so ~/.zen/tmp/${WISHNAME}.astroindex.html "${myIPFSGW}${IPNS_VOEUNS}" &
|
||||
|
||||
## MOVE INTO PLAYER AREA
|
||||
echo ">>> ${PLAYER} G1${WISHNAME} Ŋ1 FLUX $(myIpfsGw)${IPNS_VOEUNS}"
|
||||
echo ">>> ${PLAYER} G1${WISHNAME} Ŋ1 FLUX $(myIpfsGw)/${IPNS_VOEUNS}"
|
||||
echo "WALLET ${VOEUKEY} FOUNDED by ${G1PUB}"
|
||||
cp -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/* ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/ 2>/dev/null
|
||||
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "SEARCH WORLD SAME WISH CACHE"
|
||||
[[ "$WISHNAME" != "" ]] && cat ~/.zen/game/world/$WISHNAME/*/.link 2>/dev/null
|
||||
## ANYTIME A PLAYER CHOOSE AN ASTROPORT - LOCAL WISH CACHE IS EXTENDED -
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
|
||||
done < ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${PLAYER}.g1wishes.txt
|
||||
|
||||
################################################
|
||||
|
@ -303,32 +275,38 @@ if [[ ${wishnumbers} -gt 0 ]]; then
|
|||
--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)
|
||||
[[ $TWMAPNS == "null" || $TWMAPNS == "" ]] && TWMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu"
|
||||
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
|
||||
[[ ${LAT} == "null" || ${LAT} == "" ]] && LAT="0.00"
|
||||
[[ ${LAT} == "null" ]] && LAT="0.00"
|
||||
LAT=$(makecoord $LAT)
|
||||
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
|
||||
[[ ${LON} == "null" || ${LON} == "" ]] && LON="0.00"
|
||||
[[ ${LON} == "null" ]] && LON="0.00"
|
||||
LON=$(makecoord $LON)
|
||||
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${TWMAPNS}"
|
||||
rm ~/.zen/tmp/${MOATS}/GPS.json
|
||||
|
||||
## GET UMAP ENV
|
||||
$(${MY_PATH}/../tools/getUMAP_ENV.sh ${LAT} ${LON} | tail -n 1)
|
||||
echo "export UMAPG1PUB=$UMAPG1PUB UMAPIPNS=$UMAPIPNS SECTOR=$SECTOR SECTORG1PUB=$SECTORG1PUB SECTORIPNS=$SECTORIPNS REGION=$REGION REGIONG1PUB=$REGIONG1PUB REGIONIPNS=$REGIONIPNS LAT=$LAT LON=$LON SLAT=$SLAT SLON=$SLON RLAT=$RLAT RLON=$RLON"
|
||||
|
||||
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 UMAP_${LAT}_${LON} WALLET ${UMAPG1PUB}"
|
||||
echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
|
||||
to ${SECTOR} WALLET ${SECTORG1PUB}"
|
||||
echo "************************************************************"
|
||||
YOUSER=$($MY_PATH/../tools/clyuseryomail.sh "${PLAYER}")
|
||||
MYWISHFLUX=$(ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/* | tail -n 1) # ADDING JSONS TO IPFS
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${UMAPG1PUB}" "UPLANET:UWISH:$YOUSER:/ipfs/${MYWISHFLUX}"
|
||||
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${SECTORG1PUB}" "ipfs://${MYWISHFLUX}"
|
||||
fi
|
||||
################################################
|
||||
################################################ GRATITUDE SENT TO SECTOR
|
||||
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
echo "TODO : REFRESH WORLD SAME WISH CACHE"
|
||||
cat ~/.zen/game/world/$WISHNAME/*/.link 2>/dev/null
|
||||
## ANYTIME A PLAYER CHOOSE AN ASTROPORT - LOCAL WISH CACHE IS EXTENDED -
|
||||
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
|
||||
|
||||
############################################
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -1,76 +0,0 @@
|
|||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
#~ ZEN.SECTOR.memory.sh
|
||||
#~ Search for last "UPLANET:$1:..." in UPLANETG1PUB wallet history
|
||||
#~ INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}" TX COMMENT are made during SECTOR.refresh.sh
|
||||
#~ ~/.zen/tmp/${MOATS}/${SECTOR} <=> "/ipfs/$ipfs_pop"
|
||||
################################################################################
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
################################################################################
|
||||
|
||||
SECTOR="$1"
|
||||
[[ $SECTOR == "" ]] && echo "MISSING SECTOR ADRESS" && exit 1
|
||||
MOATS="$2"
|
||||
G1PUB="$3"
|
||||
|
||||
## CHECK FOR BAD PARAM
|
||||
[[ ! -d ~/.zen/tmp/${MOATS-empty}/${SECTOR-empty}/ ]] \
|
||||
&& echo "BAD ~/.zen/tmp/${MOATS}/${SECTOR}" \
|
||||
&& exit 1
|
||||
|
||||
## STARTING
|
||||
start=`date +%s`
|
||||
|
||||
## CORRESPONDING REGION UKEY
|
||||
LAT=$(echo ${SECTOR} | cut -d '_' -f 2)
|
||||
LON=$(echo ${SECTOR} | cut -d '_' -f 3)
|
||||
RLAT=$(echo ${LAT} | cut -d '.' -f 1)
|
||||
RLON=$(echo ${LON} | cut -d '.' -f 1)
|
||||
|
||||
REGION="_${RLAT}_${RLON}"
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${REGION}.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
|
||||
REGIONG1PUB=$(cat ~/.zen/tmp/${MOATS}/${REGION}.priv | grep "pub:" | cut -d ' ' -f 2)
|
||||
[[ ! ${REGIONG1PUB} ]] && echo "ERROR generating REGION WALLET" && exit 1
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
|
||||
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
|
||||
|
||||
## RETRIEVE FROM REGION UKEY
|
||||
${MY_PATH}/../tools/timeout.sh -t 20 ${MY_PATH}/../tools/jaklis/jaklis.py history -n 40 -p ${REGIONG1PUB} -j \
|
||||
> ~/.zen/tmp/${MOATS}/${REGION}.g1history.json
|
||||
|
||||
## SCAN FOR UPLANET:${SECTOR} in TX
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/${REGION}.g1history.json ]]; then
|
||||
|
||||
intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .comment' ~/.zen/tmp/${MOATS}/${REGION}.g1history.json | tail -n 1)
|
||||
ipfs_pop=$(echo "$intercom" | rev | cut -d ':' -f 1 | rev)
|
||||
todate=$(echo "$intercom" | rev | cut -d ':' -f 2 | rev)
|
||||
echo "SYNC ${SECTOR} <= $todate (=${YESTERDATE})=> $ipfs_pop"
|
||||
|
||||
[[ ${todate} != ${YESTERDATE} ]] && echo "NO GOOD MEMORY - EXIT" && exit 1
|
||||
|
||||
## TODO: SECURITY PATCH : check payment emitter is from BOOSTRAP
|
||||
if [[ $ipfs_pop ]]; then
|
||||
g1pub=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .pubkey' ~/.zen/tmp/${MOATS}/${REGION}.g1history.json | tail -n 1)
|
||||
echo "INFO :: $g1pub Memory updater"
|
||||
ipfs --timeout 180s get --progress="false" -o ~/.zen/tmp/${MOATS}/${SECTOR} $ipfs_pop \
|
||||
&& ipfs pin rm $ipfs_pop \
|
||||
|| echo "$ipfs_pop ERROR ... "
|
||||
else
|
||||
echo "WARNING cannot revover any memory !!"
|
||||
fi
|
||||
|
||||
else
|
||||
echo "FATAL ERROR cannot access to REGIONG1PUB history"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
end=`date +%s`
|
||||
echo "(${SECTOR}.memory) ${todate} get time : "`expr $end - $start` seconds.
|
||||
|
||||
exit 0
|
|
@ -1,89 +0,0 @@
|
|||
################################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 0.1
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
################################################################################
|
||||
#~ ZEN.UMAP.memory.sh
|
||||
#~ Search for last "UPLANET:$1:..." in UPLANETG1PUB wallet history
|
||||
#~ INTERCOM="UPLANET:${UMAP}:${TODATE}:/ipfs/${IPFSPOP}" TX COMMENT are made during UPLANET.refresh.sh
|
||||
#~ ~/.zen/tmp/${MOATS}/${UMAP} <=> "/ipfs/$ipfs_pop"
|
||||
################################################################################
|
||||
################################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
. "${MY_PATH}/../tools/my.sh"
|
||||
################################################################################
|
||||
|
||||
UMAP="$1"
|
||||
[[ $UMAP == "" ]] && echo "MISSING UMAP ADRESS" && exit 1
|
||||
MOATS="$2"
|
||||
G1PUB="$3"
|
||||
|
||||
## CHECK FOR BAD PARAM
|
||||
[[ ! -d ~/.zen/tmp/${MOATS-empty}/${UMAP-empty}/ ]] \
|
||||
&& echo "BAD ~/.zen/tmp/${MOATS}/${UMAP}" \
|
||||
&& exit 1
|
||||
|
||||
## STARTING
|
||||
start=`date +%s`
|
||||
|
||||
## CORRESPONDING SECTOR UKEY
|
||||
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
|
||||
LON=$(echo ${UMAP} | cut -d '_' -f 3)
|
||||
|
||||
## SECTOR COORD
|
||||
SLAT="${LAT::-1}"
|
||||
SLON="${LON::-1}"
|
||||
|
||||
SECTOR="_${SLAT}_${SLON}"
|
||||
|
||||
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
|
||||
SECTORG1PUB=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}.priv | grep "pub:" | cut -d ' ' -f 2)
|
||||
[[ ! ${SECTORG1PUB} ]] && echo "ERROR generating SECTOR WALLET" && exit 1
|
||||
COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
|
||||
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${SECTORG1PUB}"
|
||||
|
||||
## RETRIEVE FROM SECTOR UKEY
|
||||
${MY_PATH}/../tools/timeout.sh -t 20 ${MY_PATH}/../tools/jaklis/jaklis.py history -n 40 -p ${SECTORG1PUB} -j \
|
||||
> ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json
|
||||
|
||||
## SCAN FOR UPLANET:${UMAP} in TX
|
||||
if [[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json ]]; then
|
||||
|
||||
intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .comment' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 1)
|
||||
ipfs_pop=$(echo "$intercom" | rev | cut -d ':' -f 1 | rev)
|
||||
todate=$(echo "$intercom" | rev | cut -d ':' -f 2 | rev)
|
||||
echo "SYNC ${UMAP} <= $todate (=${YESTERDATE})=> $ipfs_pop"
|
||||
|
||||
[[ ${todate} != ${YESTERDATE} ]] && echo "NO GOOD MEMORY - EXIT" && exit 1
|
||||
|
||||
if [[ $ipfs_pop ]]; then
|
||||
echo "FOUND $todate MEMORY SLOT"
|
||||
g1pub=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .pubkey' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 1)
|
||||
echo "INFO :: $g1pub Memory updater"
|
||||
|
||||
## ADD SECURITY : check payment emitter is a "BOOSTRAP" (TODO)
|
||||
nodeid=$(${MY_PATH}/../tools/g1_to_ipfs.py $g1pub)
|
||||
|
||||
ipfs --timeout 360s get --progress="false" -o ~/.zen/tmp/${MOATS}/${UMAP} $ipfs_pop \
|
||||
&& ipfs pin rm $ipfs_pop \
|
||||
|| echo "$ipfs_pop ERROR ... "
|
||||
else
|
||||
echo "WARNING cannot revover any memory !!"
|
||||
fi
|
||||
|
||||
## REMOVE PREVIOUS PIN (in case last one was not mine)
|
||||
antecom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .comment' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 2 | head -n 1)
|
||||
ipfs_b=$(echo "$antecom" | rev | cut -d ':' -f 1 | rev)
|
||||
[[ ! -z ${ipfs_b} ]] && ipfs pin rm ${ipfs_b}
|
||||
|
||||
|
||||
else
|
||||
echo "FATAL ERROR cannot access to SECTORG1PUB history"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
end=`date +%s`
|
||||
echo "(${UMAP}.memory) ${todate} get time : "`expr $end - $start` seconds.
|
||||
|
||||
exit 0
|
42
Ustats.sh
|
@ -1,42 +0,0 @@
|
|||
#!/bin/bash
|
||||
####################################
|
||||
# stats.sh
|
||||
# analyse LOCAL & SWARM data structure
|
||||
####################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
. "${MY_PATH}/tools/my.sh"
|
||||
echo "==========================================================="
|
||||
|
||||
####################################
|
||||
# search for active TWS
|
||||
####################################
|
||||
echo " ## SEARCH TW in UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/*"
|
||||
METW=($(ls -d ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMTW=($(ls -d ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??/TW/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${METW[@]}" "${SWARMTW[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
|
||||
echo "${#unique_combined[@]} TW(S) : ${unique_combined[@]}"
|
||||
echo "==========================================================="
|
||||
|
||||
####################################
|
||||
# search for active UMAPS
|
||||
####################################
|
||||
echo " ## SEARCH UMAPS in UPLANET/__/_*_*/_*.?_*.?/*"
|
||||
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
|
||||
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
|
||||
unique_combined=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
|
||||
|
||||
echo "${#unique_combined[@]} UMAP(S) : ${unique_combined[@]}"
|
||||
echo "==========================================================="
|
||||
for umap in ${unique_combined[@]}; do
|
||||
lat=$(echo $umap | cut -d '_' -f 2)
|
||||
lon=$(echo $umap | cut -d '_' -f 3)
|
||||
echo $lat $lon
|
||||
${MY_PATH}/tools/getUMAP_ENV.sh $lat $lon | tail -n 1
|
||||
echo
|
||||
done
|
|
@ -170,7 +170,7 @@
|
|||
let durees = [];
|
||||
|
||||
// Récupérer les données
|
||||
fetch('http://127.0.0.1:8080_VOEUNS_/__PLAYER_.tiddlers.rss.json')
|
||||
fetch('http://127.0.0.1:8080_VOEUNS_/__PLAYER_.tiddlers.json')
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
// Extraire les gifanime
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
# Images & icons
|
||||
|
||||
Add favicon from the web2.0 you wish to copy to WEB3
|
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 14 KiB |
|
@ -1,13 +0,0 @@
|
|||
# WWW
|
||||
|
||||
|
||||
This directory contains "ASTROBOT" programs templates
|
||||
+ some icons and favicons for web scraping services included in UMAP during ```/RUNTIME/UPLANET.refresh.sh```
|
||||
|
||||
* example:
|
||||
```/ASTROBOT/G1CopierYoutube.sh```
|
||||
```/WWW/CopierYoutube/```
|
||||
|
||||
_sandbox
|
||||
|
||||
just piece of code... you can use and make official
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 628 B After Width: | Height: | Size: 628 B |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 870 B After Width: | Height: | Size: 870 B |
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 822 B After Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 198 B After Width: | Height: | Size: 198 B |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
61
YNOV.md
|
@ -1,61 +0,0 @@
|
|||
# SCRIPT01/BLOCKCHAIN01
|
||||
|
||||
## ssh
|
||||
|
||||
https://pad.p2p.legal/keygen
|
||||
|
||||
## git
|
||||
|
||||
```
|
||||
git add .
|
||||
git commit -m "mon commentaire"
|
||||
git push
|
||||
```
|
||||
|
||||
## $() function
|
||||
|
||||
```
|
||||
. ${MY_PATH}/my.sh
|
||||
|
||||
```
|
||||
|
||||
## Absolute ${MY_PATH}
|
||||
|
||||
```
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
```
|
||||
|
||||
## ${} variable
|
||||
|
||||
```
|
||||
VAR="value or list of terms"
|
||||
TAB=("value or list of terms")
|
||||
|
||||
echo ${VAR}
|
||||
echo ${TAB}
|
||||
echo ${TAB[@]}
|
||||
|
||||
# for, while, select, ... done (< read source)
|
||||
|
||||
```
|
||||
|
||||
## bug des leviers
|
||||
|
||||
```
|
||||
sed -i='' 's/off/on/' ../logic/stationlogic.ben
|
||||
```
|
||||
|
||||
## WSL problème décodage
|
||||
|
||||
```
|
||||
dos2unix
|
||||
```
|
||||
|
||||
|
||||
# FORMATION WEB3 : https://chaton.g1sms.fr
|
||||
|
||||
Ajoutez une "Zen Station" à votre Région.
|
||||
|
||||
* Installez Astroport.ONE et suivez la procédure : https://pad.p2p.legal/keygen pour relier votre clef SSH à IPFS et rejoindre la toile de confiance des Dragons, hébergeurs collectifs "LeClaude"
|
118
_12345.sh
|
@ -12,16 +12,15 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
. "${MY_PATH}/tools/my.sh"
|
||||
|
||||
## SEND LOG TO ~/.zen/tmp/_12345.log
|
||||
rm ~/.zen/tmp/_12345.log
|
||||
exec 2>&1 >> ~/.zen/tmp/_12345.log
|
||||
|
||||
PORT=12345
|
||||
|
||||
YOU=$(myIpfsApi); ## API of $USER running ipfs
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | xargs | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
|
||||
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2) ## SWARM#0 ENTRANCE URL
|
||||
|
||||
## KILLING OLD DAEMON OF MYSELF
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | xargs | cut -d " " -f 1)
|
||||
ncrunning=$(ps axf --sort=+utime | grep -w 'nc -l -p 12345' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 2)
|
||||
[[ $ncrunning != "" ]] && echo "(≖‿‿≖) - KILLING Already Running MAP Server - (≖‿‿≖) " && kill -9 $ncrunning
|
||||
|
||||
## WHAT IS NODEG1PUB
|
||||
|
@ -48,14 +47,13 @@ CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1)
|
|||
|
||||
#######################################################
|
||||
## CREATE MySwarm KEYS ?
|
||||
if [[ ${CHAN} == "" || ${CHAN} == "null" || ! -s ~/.zen/game/myswarm_secret.june ]]; then
|
||||
if [[ ${CHAN} == "" || ${CHAN} == "null" ]]; then
|
||||
echo "## MAKE /proc/cpuinfo IPFSNODEID DERIVATED KEY ##"
|
||||
SECRET1=$(cat /proc/cpuinfo | grep -Ev MHz | sha512sum | cut -d ' ' -f 1)
|
||||
SECRET2=${IPFSNODEID}
|
||||
ipfs key rm "MySwarm_${IPFSNODEID}"
|
||||
echo "SALT=$SECRET1 && PEPPER=$SECRET2" > ~/.zen/game/myswarm_secret.june
|
||||
${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/game/myswarm_secret.ipfskey "$SECRET1${UPLANETNAME}" "$SECRET2${UPLANETNAME}"
|
||||
${MY_PATH}/tools/keygen -t duniter -o ~/.zen/game/myswarm_secret.dunikey "$SECRET1${UPLANETNAME}" "$SECRET2${UPLANETNAME}"
|
||||
${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/game/myswarm_secret.ipfskey "$SECRET1" "$SECRET2"
|
||||
${MY_PATH}/tools/keygen -t duniter -o ~/.zen/game/myswarm_secret.dunikey "$SECRET1" "$SECRET2"
|
||||
ipfs key import "MySwarm_${IPFSNODEID}" -f pem-pkcs8-cleartext ~/.zen/game/myswarm_secret.ipfskey
|
||||
CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1 )
|
||||
fi
|
||||
|
@ -67,65 +65,32 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${CHAN}'\" />" > ~/.z
|
|||
############################################################
|
||||
############################################################
|
||||
echo 0 > ~/.zen/tmp/random.sleep
|
||||
###################################################################
|
||||
###############################################
|
||||
##############################
|
||||
#### UPLANET GEOKEYS_refresh
|
||||
${MY_PATH}/RUNTIME/GEOKEYS_refresh.sh &
|
||||
|
||||
###################
|
||||
# NEVER ENDING LOOP
|
||||
###################################################################
|
||||
## WILL SCAN ALL BOOSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS
|
||||
###################################################################
|
||||
###################
|
||||
# NEVER ENDING LOOP
|
||||
while true; do
|
||||
|
||||
start=`date +%s`
|
||||
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
|
||||
[[ ${myIP} == "" ]] && source "${MY_PATH}/tools/my.sh" ## correct 1st run DHCP latency
|
||||
echo "/ip4/${myIP}/tcp/4001/p2p/${IPFSNODEID}" > ~/.zen/tmp/${IPFSNODEID}/myIPFS.txt
|
||||
[[ ! -z ${zipit} ]] \
|
||||
&& myIP=${zipit} \
|
||||
&& echo "/ip4/${zipit}/tcp/4001/p2p/${IPFSNODEID}" > ~/.zen/tmp/${IPFSNODEID}/myIPFS.txt
|
||||
|
||||
lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats)
|
||||
duree=$(expr ${MOATS} - $lastrun)
|
||||
|
||||
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H in ms )
|
||||
if [[ ${duree} -gt 3600000 || ${duree} == "" ]]; then
|
||||
|
||||
### STOP SWARM SYNC 1H BEFORE 20H12
|
||||
if [[ -s /tmp/20h12.log ]]; then
|
||||
current_time=$(date +%s)
|
||||
file_modification_time=$(stat -c %Y "/tmp/20h12.log")
|
||||
time_difference=$((current_time - file_modification_time))
|
||||
[ "$time_difference" -ge $(( 23 * 60 * 60 )) ] \
|
||||
&& echo "$(date +"%H%M") : 20H12 is coming... " && continue
|
||||
fi
|
||||
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
|
||||
[[ ${PLAYERONE[@]} == "" ]] && echo "EMPTY ASTROPORT - NO PLAYER - NO PUBLISHING" && continue
|
||||
|
||||
## CHECK IF IPFS NODE IS RESPONDING
|
||||
ipfs --timeout=30s swarm peers 2>/dev/null > ~/.zen/tmp/ipfs.swarm.peers
|
||||
[[ ! -s ~/.zen/tmp/ipfs.swarm.peers || $? != 0 ]] \
|
||||
&& echo "---- SWARM COMMUNICATION BROKEN / RESTARTING IPFS DAEMON ----" \
|
||||
&& sudo systemctl restart ipfs \
|
||||
&& sleep 60
|
||||
|
||||
${MY_PATH}/ping_bootstrap.sh
|
||||
|
||||
#### UPLANET FLASHMEM UPDATES
|
||||
${MY_PATH}/RUNTIME/GEOKEYS_refresh.sh &
|
||||
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H )
|
||||
if [[ ${duree} -gt 3600000 ]]; then
|
||||
|
||||
#####################################
|
||||
( ##### SUB-PROCESS £
|
||||
( ##### SUB-PROCESS RUN
|
||||
exec 2>&1 >> ~/.zen/tmp/_12345.log
|
||||
start=`date +%s`
|
||||
|
||||
# MONITOR pending
|
||||
for player in ${PLAYERONE[@]}; do
|
||||
g1pub=$(cat ~/.zen/game/players/${player}/.g1pub 2>/dev/null)
|
||||
# Check Station PLAYER payments
|
||||
PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX" 2>/dev/null))
|
||||
PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX"))
|
||||
for pending in "${PENDINGS[@]}"; do
|
||||
echo ${pending}
|
||||
# TODO TREAT PENDINGS
|
||||
|
@ -158,7 +123,7 @@ while true; do
|
|||
|
||||
## IPFS GET TO /swarm/${ipfsnodeid}
|
||||
echo "GETTING ${nodeip} : /ipns/${ipfsnodeid}"
|
||||
ipfs --timeout 720s get --progress="false" -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/
|
||||
ipfs --timeout 720s get -o ~/.zen/tmp/-${ipfsnodeid}/ /ipns/${ipfsnodeid}/
|
||||
|
||||
## SHOW WHAT WE GET
|
||||
echo "__________________________________________________"
|
||||
|
@ -187,12 +152,11 @@ while true; do
|
|||
|
||||
############ UPSYNC CALL
|
||||
echo "STATION MAP UPSYNC : curl -s http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID}"
|
||||
curl -s -m 10 http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID} \
|
||||
-o ~/.zen/tmp/swarm/${ipfsnodeid}/12345.${nodeip}.json
|
||||
curl -s -m 10 http://${nodeip}:12345/?${NODEG1PUB}=${IPFSNODEID} -o ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json
|
||||
|
||||
## LOOKING IF ITS SWARM MAP COULD COMPLETE MINE
|
||||
echo "ANALYSING BOOSTRAP SWARM MAP"
|
||||
itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/12345.${nodeip}.json | jq -r '.g1swarm' | rev | cut -d '/' -f 1 | rev )
|
||||
itipnswarmap=$(cat ~/.zen/tmp/swarm/${ipfsnodeid}/map.${nodeip}.json | jq -r '.g1swarm' | rev | cut -d '/' -f 1 | rev )
|
||||
ipfs ls /ipns/${itipnswarmap} | rev | cut -d ' ' -f 1 | rev | cut -d '/' -f 1 > ~/.zen/tmp/_swarm.${ipfsnodeid}
|
||||
|
||||
echo "================ ${nodeip}:12345 ZNODS LIST"
|
||||
|
@ -201,23 +165,23 @@ while true; do
|
|||
for znod in $(cat ~/.zen/tmp/_swarm.${ipfsnodeid}); do
|
||||
# CHECK znod validity
|
||||
cznod=$(${MY_PATH}/tools/ipfs_to_g1.py ${znod} 2>/dev/null)
|
||||
[[ ${cznod} == "" || ${cznod} == "null" ]] \
|
||||
&& echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" \
|
||||
&& continue
|
||||
[[ ${cznod} == ${IPFSNODEID} ]] \
|
||||
&& echo "IPFSNODEID MIRROR ME" \
|
||||
&& continue
|
||||
[[ ${cznod} == "" || ${cznod} == "null" ]] && echo "xxxxxxxxxxxx BAD ${znod} xxxx ON xxxxxx ${ipfsnodeid} - ERROR - CONTINUE" && continue
|
||||
|
||||
echo "REFRESHING MY SWARM DATA WITH ZNOD=${znod}"
|
||||
if [[ ! -d ~/.zen/tmp/swarm/${znod} ]]; then
|
||||
echo "COMPLETING MY SWARM DATA WITH ZNOD=${znod}"
|
||||
mkdir -p ~/.zen/tmp/swarm/${znod}
|
||||
ipfs --timeout 180s get --progress="false" -o ~/.zen/tmp/swarm/${znod} /ipns/${znod}
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${znod} /ipns/${znod}
|
||||
else
|
||||
echo "____________ KNOW ${znod}"
|
||||
# TODO : SPEEDUP REFRESH COMPARE _MySwarm.moats AND KEEP LASTEST
|
||||
fi
|
||||
|
||||
ZMOATS=$(cat ~/.zen/tmp/swarm/${znod}/_MySwarm.moats 2>/dev/null)
|
||||
MOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${MOATS})
|
||||
ZMOATS_SECONDS=$(${MY_PATH}/tools/MOATS2seconds.sh ${ZMOATS})
|
||||
DIFF_SECONDS=$((MOATS_SECONDS - ZMOATS_SECONDS))
|
||||
if [ ${DIFF_SECONDS} -gt $(( 3 * 24 * 60 * 60 )) ]; then
|
||||
echo "STATION IS STUCK... FOR TOO LONG... REMOVING ${znod} FROM SWARM"
|
||||
echo "STATION IS STUCK... FOR TOO LONG... REMOVING FROM SWARM"
|
||||
rm -Rf ~/.zen/tmp/swarm/${znod}/
|
||||
else
|
||||
echo "${DIFF_SECONDS} seconds old"
|
||||
|
@ -236,7 +200,7 @@ while true; do
|
|||
while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
||||
############### UPDATE MySwarm CHAN
|
||||
ls ~/.zen/tmp/swarm
|
||||
SWARMSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | xargs | cut -f 1)
|
||||
SWARMSIZE=$(du -b ~/.zen/tmp/swarm | tail -n 1 | cut -f 1)
|
||||
|
||||
## SIZE MODIFIED => PUBLISH MySwarm_${IPFSNODEID}
|
||||
[[ ${SWARMSIZE} != $(cat ~/.zen/tmp/swarm/.bsize 2>/dev/null) ]] \
|
||||
|
@ -249,19 +213,19 @@ while true; do
|
|||
######################################
|
||||
############# RE PUBLISH SELF BALISE
|
||||
|
||||
# Clean Empty Directory
|
||||
# Clean Empty Directory (inode dependancy BUG ??)
|
||||
du -b ~/.zen/tmp/${IPFSNODEID} > /tmp/du
|
||||
while read branch; do [[ $branch =~ "4096" ]] && echo "empty $branch" && rm -Rf $(echo $branch | cut -f 2 -d ' '); done < /tmp/du
|
||||
|
||||
# Scan IPFSNODEID cache
|
||||
# Scan local cache
|
||||
ls ~/.zen/tmp/${IPFSNODEID}/
|
||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | xargs | cut -f 1)
|
||||
BSIZE=$(du -b ~/.zen/tmp/${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
|
||||
## IPFS GET LAST ONLINE IPFSNODEID MAP
|
||||
## IPFS GET LAST PUBLISHED MAP VERSION
|
||||
rm -Rf ~/.zen/tmp/_${IPFSNODEID} 2>/dev/null
|
||||
mkdir -p ~/.zen/tmp/_${IPFSNODEID}
|
||||
ipfs get --progress="false" -o ~/.zen/tmp/_${IPFSNODEID}/ /ipns/${IPFSNODEID}/
|
||||
NSIZE=$(du -b ~/.zen/tmp/_${IPFSNODEID} | tail -n 1 | xargs | cut -f 1)
|
||||
ipfs get -o ~/.zen/tmp/_${IPFSNODEID}/ /ipns/${IPFSNODEID}/
|
||||
NSIZE=$(du -b ~/.zen/tmp/_${IPFSNODEID} | tail -n 1 | cut -f 1)
|
||||
|
||||
### CHECK IF SIZE DIFFERENCE ?
|
||||
## Local / IPNS size differ => FUSION LOCAL OVER ONLINE & PUBLISH
|
||||
|
@ -315,7 +279,6 @@ Content-Type: application/json; charset=UTF-8
|
|||
|
||||
if [[ $T2WAIT == 0 || $T2WAIT != $(cat ~/.zen/tmp/random.sleep 2>/dev/null) ]]; then
|
||||
(
|
||||
echo "# AUTO RELAUNCH IN $T2WAIT SECONDS"
|
||||
echo $T2WAIT > ~/.zen/tmp/random.sleep
|
||||
sleep $T2WAIT && rm ~/.zen/tmp/random.sleep
|
||||
curl -s "http://127.0.0.1:12345"
|
||||
|
@ -336,35 +299,26 @@ Content-Type: application/json; charset=UTF-8
|
|||
arr=(${URL//[=&]/ })
|
||||
|
||||
#####################################################################
|
||||
### UPSYNC STATION REQUEST :12345/?G1PUB=g1_to_ipfs(G1PUB)&...
|
||||
## & JOIN 1234
|
||||
### UPSYNC STATION REQUEST /?G1PUB=g1_to_ipfs(G1PUB)&...
|
||||
### TODO : include CODE HASH & TOKEN ....
|
||||
#####################################################################
|
||||
if [[ ${arr[0]} != "" ]]; then
|
||||
|
||||
## CHECK URL CONSISTENCY ( do we get G1PUB=IPNSPUB right ? )
|
||||
## CHECK URL CONSISTENCY ( G1PUB=IPNSPUB is right ? )
|
||||
GPUB=${arr[0]}
|
||||
ASTROTOIPFS=$(${MY_PATH}/tools/g1_to_ipfs.py ${arr[0]} 2>/dev/null)
|
||||
|
||||
if [[ "${ASTROTOIPFS}" == "${arr[1]}" && ${ASTROTOIPFS} != "" && ${arr[1]} != "" ]]; then
|
||||
## WE SPEAK THE SAME PROTOCOL
|
||||
echo "MAJOR TOM TO GROUD CONTROL"
|
||||
echo "WE HAVE A STATION ${GPUB} CONTACT"
|
||||
(
|
||||
timeon=`date +%s`
|
||||
mkdir -p ~/.zen/tmp/swarm/${ASTROTOIPFS}
|
||||
echo "<<< MAJOR TOM TO GROUND CONTROL >>> UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}"
|
||||
ipfs --timeout 240s get --progress="false" -o ~/.zen/tmp/swarm/${ASTROTOIPFS} /ipns/${ASTROTOIPFS}
|
||||
timeoff=`date +%s`
|
||||
echo ">>> GROUND CONTROL FINISH in $(( timeoff - timeon )) sec <<<"
|
||||
echo "UPSYNC TO ~/.zen/tmp/swarm/${ASTROTOIPFS}"
|
||||
ipfs --timeout 180s get -o ~/.zen/tmp/swarm/${ASTROTOIPFS} /ipns/${ASTROTOIPFS}
|
||||
) &
|
||||
fi
|
||||
|
||||
### PATCH 1234 : send & forget mode
|
||||
if [[ ${arr[0]} == "salt" ]]; then
|
||||
echo "'(ᵔ◡◡ᵔ)' SALT MODE RECEIVED... "
|
||||
## JUST ADD SOME LINE OF CODE ...
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
#### 12345 NETWORK MAP TOKEN
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
services:
|
||||
wotwizard:
|
||||
image: poka/wotwizard:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- duniterv1_data:/app/data
|
||||
- data:/app/rsrc/duniter/System/
|
||||
networks:
|
||||
- frontend
|
||||
|
||||
duniter:
|
||||
image: pinidh/duniter:1.8-dev
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 127.0.0.1:9220:9220
|
||||
environment:
|
||||
DEBUG_ENTRYPOINT: "true"
|
||||
DUNITER_AUTO_SYNC: "true"
|
||||
DUNITER_SYNC_HOST: "duniter.pini.fr:443"
|
||||
DUNITER_UPNP: "false"
|
||||
DUNITER_BMA_ENABLED: 'true'
|
||||
DUNITER_BMA_IPV4: "0.0.0.0"
|
||||
DUNITER_BMA_REMOTE_PORT: "443"
|
||||
DUNITER_BMA_REMOTE_HOST: "duniterww.localhost"
|
||||
DUNITER_WS2P_HOST: "0.0.0.0"
|
||||
DUNITER_WS2P_PORT: '20901'
|
||||
DUNITER_WS2P_PUBLIC: 'true'
|
||||
DUNITER_WS2P_REMOTE_HOST: "duniterww.localhost"
|
||||
DUNITER_WS2P_REMOTE_PORT: "443"
|
||||
DUNITER_WS2P_REMOTE_PATH: "ws2p"
|
||||
DUNITER_POW_CPU: "0.5""
|
||||
DUNITER_POW_NBCORES: "1"
|
||||
volumes:
|
||||
- duniterv1_data:/app/data
|
||||
- etc/etc/duniter
|
||||
networks:
|
||||
frontend:
|
||||
ipv4_address: 172.18.0.42
|
||||
mem_limit: 5g
|
||||
|
||||
volumes:
|
||||
data:
|
||||
duniterv1_data:
|
||||
|
||||
networks:
|
||||
frontend:
|
||||
|
||||
logging:
|
||||
options:
|
|
@ -1,110 +0,0 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
duniter:
|
||||
container_name: duniter
|
||||
environment:
|
||||
- DEBUG_ENTRYPOINT=${DUNITER_DEBUG_ENTRYPOINT:-${DEBUG_ENTRYPOINT:-${DEBUG:-}}}
|
||||
- DUNITER_AUTO_SYNC=${DUNITER_AUTO_SYNC:-true}
|
||||
- DUNITER_BMA_ENABLED=${DUNITER_BMA_ENABLED:-true}
|
||||
- DUNITER_BMA_IP4=${DUNITER_BMA_IP4:-0.0.0.0}
|
||||
- DUNITER_BMA_REMOTE_HOST=${DUNITER_BMA_REMOTE_HOST:-duniter.localhost}
|
||||
- DUNITER_BMA_REMOTE_PORT=${DUNITER_BMA_REMOTE:-443}
|
||||
- DUNITER_GVA_ENABLED=${DUNITER_GVA_ENABLED:-true}
|
||||
- DUNITER_GVA_PATH=${DUNITER_GVA_PATH:-gva}
|
||||
- DUNITER_GVA_PORT=${DUNITER_GVA_PORT:-30901}
|
||||
- DUNITER_GVA_REMOTE_HOST=${DUNITER_GVA_REMOTE_HOST:-duniter.localhost}
|
||||
- DUNITER_GVA_REMOTE_PATH=${DUNITER_GVA_REMOTE_PATH:-gva}
|
||||
- DUNITER_GVA_REMOTE_PORT=${DUNITER_GVA_REMOTE_PORT:-443}
|
||||
- DUNITER_GVA_REMOTE_TLS=${DUNITER_GVA_REMOTE_TLS:-false}
|
||||
- DUNITER_GVA_WHITELIST=${DUNITER_GVA_WHITELIST:-127.0.0.1,::1}
|
||||
- DUNITER_MANUAL_CONFIG=${DUNITER_MANUAL_CONFIG:-false}
|
||||
- DUNITER_POW_PREFIX=${DUNITER_POW_PREFIX:-}
|
||||
- DUNITER_POW_CPU=${DUNITER_POW_CPU:-0.8}
|
||||
- DUNITER_POW_NBCORES=${DUNITER_POW_NBCORES:-1}
|
||||
- DUNITER_START_OPTS=${DUNITER_START_OPTS:-direct_webstart}
|
||||
- DUNITER_SYNC_HOST=${DUNITER_SYNC_HOST:-g1.duniter.org:443}
|
||||
- DUNITER_SYNC_OPTS=${DUNITER_SYNC_OPTS:-}
|
||||
- DUNITER_WS2P_HOST=${DUNITER_WS2P_HOST:-0.0.0.0}
|
||||
- DUNITER_WS2P_PORT=${DUNITER_W2SP_PORT:-20901}
|
||||
- DUNITER_WS2P_PUBLIC=${DUNITER_W2SP_PUBLIC:-true}
|
||||
- DUNITER_WS2P_REMOTE_HOST=${DUNITER_WS2P_REMOTE_HOST:-duniter.localhost}
|
||||
- DUNITER_WS2P_REMOTE_PATH=${DUNITER_WS2P_REMOTE_PATH:-ws2p}
|
||||
- DUNITER_WS2P_REMOTE_PORT=${DUNITER_WS2P_REMOTE_PORT:-443}
|
||||
image: duniter/duniter:dev
|
||||
networks:
|
||||
- private
|
||||
ports:
|
||||
- 0.0.0.0:10901:10901
|
||||
- 0.0.0.0:20901:20901
|
||||
- 0.0.0.0:30901:30901
|
||||
- 0.0.0.0:9220:9220
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- data:/var/lib/duniter
|
||||
- etc:/etc/duniter
|
||||
# Don't auto-updated duniter
|
||||
labels:
|
||||
- "com.centurylinklabs.watchtower.enable=false"
|
||||
# We start duniter but adding g1nkgo local IP to the allow list, so we can use GVA without rate limits (in theory)
|
||||
entrypoint: /bin/sh -c "while ! getent hosts g1nkgo_host > /dev/null 2>&1; do echo 'Waiting for g1nkgo_host...'; sleep 1; done && G1NKGO_IP=`getent hosts g1nkgo_host | awk '{ print $$1 }'` && export DUNITER_GVA_WHITELIST=$$G1NKGO_IP,$${DUNITER_GVA_WHITELIST:-127.0.0.1,::1} && echo $$DUNITER_GVA_WHITELIST && exec /docker-entrypoint.sh"
|
||||
|
||||
g1nkgo:
|
||||
# image: g1nkgo:latest
|
||||
image: comunes/g1nkgo:latest
|
||||
build:
|
||||
context: .
|
||||
container_name: g1nkgo
|
||||
restart: always
|
||||
hostname: g1nkgo
|
||||
ports:
|
||||
- "1801:80"
|
||||
- "14431:443"
|
||||
volumes:
|
||||
- ~/.ginkgo/nginx-conf:/etc/nginx/:rw
|
||||
# - ./assets:/usr/share/nginx/html/assets:rw
|
||||
labels:
|
||||
- "com.centurylinklabs.watchtower.enable=true"
|
||||
networks:
|
||||
private:
|
||||
aliases:
|
||||
- g1nkgo_host
|
||||
|
||||
environment:
|
||||
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||
# Useful for having logs with local time
|
||||
- TZ=${TZ:-Europe/Copenhagen}
|
||||
# Sentry conf
|
||||
# SENTRY_DSN=https://306345cb87ee4e1cbbe9023fb4afc5fc@sentry.comunes.org/6
|
||||
# Card customization
|
||||
# Empty for default
|
||||
- CARD_TEXT=${CARD_TEXT:-Ğ1 Wallet}
|
||||
# Nodes space-separated
|
||||
# The duniter nodes are only used at boot time, later it tries to calculate periodically the nodes
|
||||
# that are available with the less latency
|
||||
# SENTRY_DSN no tiene valor predeterminado, por lo que no se incluye aquí.
|
||||
- DUNITER_NODES=${DUNITER_NODES:-https://g1.duniter.fr https://g1.le-sou.org https://g1.cgeek.fr https://g1.monnaielibreoccitanie.org https://g1.duniter.fr https://g1.le-sou.org https://g1.cgeek.fr}
|
||||
- CESIUM_PLUS_NODES=${CESIUM_PLUS_NODES:-https://g1.data.le-sou.org https://g1.data.e-is.pro https://g1.data.presles.fr https://g1.data.mithril.re}
|
||||
- GVA_NODES=${GVA_NODES:-https://g1v1.p2p.legal:443/gva https://g1.asycn.io:443/gva https://duniter.pini.fr:443/gva https://duniter.cuates.net:443/gva}
|
||||
|
||||
watchtower:
|
||||
image: containrrr/watchtower
|
||||
container_name: g1nkgo-watchtower
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# Additional watchtower args
|
||||
# commmand:
|
||||
networks:
|
||||
- private
|
||||
|
||||
networks:
|
||||
private:
|
||||
name: ${DOCKER_NETWORK_PRIVATE:-duniter}
|
||||
# Not in use
|
||||
# public:
|
||||
# name: ${DOCKER_NETWORK_PUBLIC:-host}
|
||||
|
||||
volumes:
|
||||
data:
|
||||
etc:
|
|
@ -1,12 +0,0 @@
|
|||
version: '3'
|
||||
services:
|
||||
homeassistant:
|
||||
container_name: homeassistant
|
||||
image: "ghcr.io/home-assistant/home-assistant:stable"
|
||||
volumes:
|
||||
- /PATH_TO_YOUR_CONFIG:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /run/dbus:/run/dbus:ro
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
network_mode: host
|
|
@ -1,15 +0,0 @@
|
|||
version: '3'
|
||||
services:
|
||||
ipfs_node_1:
|
||||
image: ipfs/go-ipfs:latest
|
||||
container_name: ipfs_node_1
|
||||
environment:
|
||||
IPFS_SWARM_KEY_FILE: _SWARM_KEY_FILE_
|
||||
volumes:
|
||||
- _IPFSDATA_:/export
|
||||
- _IPFSDATA_:/data/ipfs
|
||||
ports:
|
||||
- "64001:4001"
|
||||
- "64001:4001/udp"
|
||||
- "127.0.0.1:68080:8080"
|
||||
- "127.0.0.1:65001:5001"
|
|
@ -1,16 +0,0 @@
|
|||
version: '3.6'
|
||||
|
||||
services:
|
||||
minetest:
|
||||
image: lscr.io/linuxserver/minetest:latest
|
||||
container_name: minetest
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Etc/UTC
|
||||
- "CLI_ARGS=--gameid minetest --port 30000" #optional
|
||||
volumes:
|
||||
- /path/to/data:/config/.minetest
|
||||
ports:
|
||||
- 30000:30000/udp
|
||||
restart: unless-stopped
|
|
@ -16,79 +16,34 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
ME="${0##*/}"
|
||||
###################################################################
|
||||
### CREER VOTRE PROPRE VERSION DU JEU
|
||||
### CHOISIR SCENARIO
|
||||
|
||||
### List games/E@MAIL/ directories
|
||||
## ADD PROPOSAL ON THE METHOD
|
||||
GAMES_DIR="games"
|
||||
GAMES=$(find "$GAMES_DIR" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)
|
||||
GAMES=$(ls $MY_PATH/games/)
|
||||
GAMES=($(ls -d $MY_PATH/games/))
|
||||
# Above methods are breaking with games names containing SPACE !
|
||||
|
||||
# BASH is CREOLE
|
||||
# this cd *@* METHOD resist to " " space
|
||||
cd ${MY_PATH}/games \
|
||||
&& GAMES=(".." *@*) && cd .. \
|
||||
|| GAMES=".."
|
||||
## but can still be fooled by file...
|
||||
|
||||
## personalisez le prompt
|
||||
PS3="CHOIX DU GAME : __ "
|
||||
|
||||
select game in "${GAMES[@]}"; do
|
||||
|
||||
# MY_GAME is the absolute path to selected game files
|
||||
MY_GAME="$MY_PATH/games/$game"
|
||||
echo "SELECTION: "${MY_GAME}
|
||||
|
||||
diff --recursive --brief ${MY_GAME}/ ${MY_GAME}/../_votre\ jeu/
|
||||
|
||||
echo "confirm ?"
|
||||
read ENTER
|
||||
|
||||
if [[ ! $ENTER ]]; then
|
||||
# test game start protocol compatibility
|
||||
if [[ -x ${MY_GAME}/rooms/start.sh ]]; then
|
||||
sleep 1
|
||||
echo "Charging game..."
|
||||
sleep 1
|
||||
break
|
||||
else
|
||||
# not compatible
|
||||
echo "ERROR - not compatible game - SELECT ANOTHER - "
|
||||
fi
|
||||
else
|
||||
echo "CHOOSE NEXT"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
########################################
|
||||
# copy game files to user specific executable space
|
||||
# $HOME/.zen/adventure/$newplayer
|
||||
########################################
|
||||
###################################################################
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
homefolder=$(pwd)
|
||||
newplayer=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10)
|
||||
newplayer=$(uuidgen)
|
||||
## Copy Player Game Files
|
||||
mkdir -p $HOME/.zen/adventure/$newplayer
|
||||
cp -r ${MY_GAME}/rooms $HOME/.zen/adventure/$newplayer/rooms
|
||||
cp -r ${MY_GAME}/art $HOME/.zen/adventure/$newplayer/art
|
||||
cp -r ${MY_GAME}/script $HOME/.zen/adventure/$newplayer/script
|
||||
cp -r ${MY_GAME}/logic $HOME/.zen/adventure/$newplayer/logic
|
||||
|
||||
|
||||
cp -r $MY_PATH/rooms $HOME/.zen/adventure/$newplayer/rooms
|
||||
cp -r $MY_PATH/art $HOME/.zen/adventure/$newplayer/art
|
||||
cp -r $MY_PATH/script $HOME/.zen/adventure/$newplayer/script
|
||||
cp -r $MY_PATH/logic $HOME/.zen/adventure/$newplayer/logic
|
||||
fi
|
||||
###################################################################
|
||||
echo "Loading... $newplayer/rooms/start.sh"
|
||||
echo "Loading..."
|
||||
echo
|
||||
sleep 2
|
||||
sleep 4
|
||||
###################################################################
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
cd $HOME/.zen/adventure/$newplayer/rooms
|
||||
else
|
||||
cd rooms
|
||||
fi
|
||||
./start.sh
|
||||
|
||||
###################################################################
|
||||
# cleaning game files
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
cd "$homefolder"
|
||||
rm -r $HOME/.zen/adventure/$newplayer
|
||||
|
||||
fi
|
||||
echo "To continue..."
|
||||
exit
|
|
@ -1,49 +0,0 @@
|
|||
#!/bin/bash
|
||||
###################################################################
|
||||
# This Launch script is based on BashVenture.
|
||||
#
|
||||
# Remember, kids - sharing is caring! Keep it open. Spread the love.
|
||||
# - @BenNunney
|
||||
# Thanks and gratitude to all living creatures and the whole creation.
|
||||
# - @Fred
|
||||
# $AGE×365,25×24×60×60×9,807÷299792458 = RELATIVE LIGHT GRAVITY SPEED
|
||||
###################################################################
|
||||
# Guide avancé d'écriture des scripts Bash : https://abs.traduc.org/abs-fr/
|
||||
# GAMESHELL : https://github.com/phyver/GameShell/
|
||||
###################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
###################################################################
|
||||
### CREER VOTRE PROPRE VERSION DU JEU
|
||||
### CHOISIR SCENARIO
|
||||
|
||||
###################################################################
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
homefolder=$(pwd)
|
||||
newplayer=$(uuidgen)
|
||||
## Copy Player Game Files
|
||||
mkdir -p $HOME/.zen/adventure_multi/$newplayer
|
||||
cp -r $MY_PATH/games/moussa.thiam@ynov.com/rooms $HOME/.zen/adventure_multi/$newplayer/rooms
|
||||
cp -r $MY_PATH/games/moussa.thiam@ynov.com/art $HOME/.zen/adventure_multi/$newplayer/art
|
||||
cp -r $MY_PATH/games/moussa.thiam@ynov.com/script $HOME/.zen/adventure_multi/$newplayer/script
|
||||
cp -r $MY_PATH/games/moussa.thiam@ynov.com/logic $HOME/.zen/adventure_multi/$newplayer/logic
|
||||
fi
|
||||
###################################################################
|
||||
echo "Loading..."
|
||||
echo
|
||||
sleep 4
|
||||
###################################################################
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
cd $HOME/.zen/adventure_multi/$newplayer/rooms
|
||||
else
|
||||
cd rooms
|
||||
fi
|
||||
./start.sh
|
||||
###################################################################
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
cd "$homefolder"
|
||||
rm -r $HOME/.zen/adventure_multi/$newplayer
|
||||
fi
|
||||
echo "To continue..."
|
||||
exit
|
|
@ -1,24 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Chemin vers le répertoire des jeux
|
||||
games_dir="./games"
|
||||
|
||||
# Afficher les jeux disponibles
|
||||
echo "Jeux disponibles :"
|
||||
games=$(ls "$games_dir")
|
||||
|
||||
# Afficher les jeux dans un menu numéroté
|
||||
select game in $games; do
|
||||
if [ ! -z "$game" ]; then
|
||||
echo "Vous avez choisi $game."
|
||||
cd "$games_dir" || exit 1
|
||||
# Assurez-vous que start.sh est exécutable
|
||||
chmod +x "$game/start.sh"
|
||||
# Exécuter start.sh du jeu sélectionné
|
||||
cd ./$game/rooms
|
||||
./start.sh
|
||||
break
|
||||
else
|
||||
echo "Choix invalide. Veuillez choisir un numéro de jeu valide."
|
||||
fi
|
||||
done
|
|
@ -1,34 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
GAMES_DIR="./games"
|
||||
|
||||
if [ ! -d "$GAMES_DIR" ]; then
|
||||
echo "Le dossier des jeux $GAMES_DIR n'existe pas."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
GAMES=$(find "$GAMES_DIR" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)
|
||||
|
||||
if [ -z "$GAMES" ]; then
|
||||
echo "Aucun jeu trouvé dans le dossier $GAMES_DIR."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Sélectionnez un jeu :"
|
||||
select GAME in $GAMES; do
|
||||
if [ -n "$GAME" ]; then
|
||||
cd "$GAMES_DIR/$GAME/rooms"
|
||||
START_SCRIPT="./start.sh"
|
||||
|
||||
if [ ! -x "$START_SCRIPT" ]; then
|
||||
echo "Le fichier start.sh pour $GAME n'existe pas ou n'est pas exécutable."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Lancement de $GAME..."
|
||||
"$START_SCRIPT"
|
||||
break
|
||||
else
|
||||
echo "Choix invalide. Veuillez réessayer."
|
||||
fi
|
||||
done
|
|
@ -1,49 +0,0 @@
|
|||
#!/bin/bash
|
||||
###################################################################
|
||||
# This Launch script is based on BashVenture.
|
||||
#
|
||||
# Remember, kids - sharing is caring! Keep it open. Spread the love.
|
||||
# - @BenNunney
|
||||
# Thanks and gratitude to all living creatures and the whole creation.
|
||||
# - @Fred
|
||||
# $AGE×365,25×24×60×60×9,807÷299792458 = RELATIVE LIGHT GRAVITY SPEED
|
||||
###################################################################
|
||||
# Guide avancé d'écriture des scripts Bash : https://abs.traduc.org/abs-fr/
|
||||
# GAMESHELL : https://github.com/phyver/GameShell/
|
||||
###################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
###################################################################
|
||||
### CREER VOTRE PROPRE VERSION DU JEU
|
||||
### CHOISIR SCENARIO
|
||||
|
||||
###################################################################
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
homefolder=$(pwd)
|
||||
newplayer=$(uuidgen)
|
||||
## Copy Player Game Files
|
||||
mkdir -p $HOME/.zen/adventure/$newplayer
|
||||
cp -r $MY_PATH/rooms $HOME/.zen/adventure/$newplayer/rooms
|
||||
cp -r $MY_PATH/art $HOME/.zen/adventure/$newplayer/art
|
||||
cp -r $MY_PATH/script $HOME/.zen/adventure/$newplayer/script
|
||||
cp -r $MY_PATH/logic $HOME/.zen/adventure/$newplayer/logic
|
||||
fi
|
||||
###################################################################
|
||||
echo "Loading..."
|
||||
echo
|
||||
sleep 4
|
||||
###################################################################
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
cd $HOME/.zen/adventure/$newplayer/rooms
|
||||
else
|
||||
cd rooms
|
||||
fi
|
||||
./start.sh
|
||||
###################################################################
|
||||
if hash uuidgen 2>/dev/null; then
|
||||
cd "$homefolder"
|
||||
rm -r $HOME/.zen/adventure/$newplayer
|
||||
fi
|
||||
echo "To continue..."
|
||||
exit
|
|
@ -1,62 +0,0 @@
|
|||
#!/bin/bash
|
||||
clear
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
sleep 1
|
||||
|
||||
# Here's this room's script.
|
||||
|
||||
echo "Sur la direction du sud, vous traversez une zone plus sombre et humide."
|
||||
echo "Le sol est glissant à cause de l'argile qui colle sous vos bottes"
|
||||
echo "Vous finissez par croiser un chemin qui traverse la forêt d'Est en Ouest"
|
||||
echo
|
||||
echo "Un terminal informatique est installé là."
|
||||
echo
|
||||
echo "Il ressemble à une grosse calculatrice"
|
||||
|
||||
|
||||
# Here we tell the player whether the lever is on or off.
|
||||
leverstate=`cat ../logic/leverlogic.ben`
|
||||
if [ "$leverstate" = "on" ]; then
|
||||
echo "'VISA SVP' clignote sur l'écran..."
|
||||
else
|
||||
echo "La machine affiche l'heure : 20:12"
|
||||
fi
|
||||
echo
|
||||
echo "Il est tard pour explorer le chemin à pied, vous devriez retourner d'où vous venez."
|
||||
echo
|
||||
echo "Que faites vous?"
|
||||
|
||||
# In this set of actons lies the logic switch used later in the game.
|
||||
# You have to set this switch to reach the endgame.
|
||||
while true; do
|
||||
read -p "> " nsewuh
|
||||
case $nsewuh in
|
||||
n ) ./mainroom.sh
|
||||
exit ;;
|
||||
s ) echo "Si vous continuez à marcher dans la forêt. Vous allez vous perdre. Demi tour." ;;
|
||||
e ) echo "Le chemin qui part à l'Est est plein de boue... Impossble d'aller par là." ;;
|
||||
w ) echo "Une rivière vous empêche de passer." ;;
|
||||
u ) leverstate=`cat ../logic/leverlogic.ben`
|
||||
if [ "$leverstate" = "on" ]; then
|
||||
echo "A chaque frappe d'une touche. l'écran fait défiler le texte 'SCANNEZ VISA SVP'."
|
||||
else
|
||||
sed -i 's/off/on/' ../logic/leverlogic.ben
|
||||
echo "Vous pianotez sur l'appareil..."
|
||||
sleep 3
|
||||
echo "A moment où vous touchez la touche '#' L'écran se met à clignoter..."
|
||||
echo "Puis le message 'ACTIVATION STATION' défile sur les caractères lumineux."
|
||||
fi
|
||||
;;
|
||||
h ) echo "Le terminal comporte un clavier numérique. Un petit écran.. Il est réalisé avec un mini ordinateur Raspberry Pi. Il porte l'adresse G1TAG [https://g1sms.fr]" ;;
|
||||
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
|
||||
esac
|
||||
done
|
||||
|
||||
esac
|
||||
exit
|
|
@ -1,71 +0,0 @@
|
|||
#!/bin/bash
|
||||
clear
|
||||
|
||||
# This is the endgame. This file does nothing but give you the final bit of storyline.
|
||||
# Use (over-use) of 'sleep' is for dramatic effect - play around with it, see how it reads.
|
||||
|
||||
# Let's reset the lever, now that we're done with it.
|
||||
sed -i 's/on/off/' ../logic/leverlogic.ben
|
||||
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
sleep 1
|
||||
echo "Voici la fin de cette petite aventure."
|
||||
echo
|
||||
sleep 4
|
||||
echo "Vous venez de visiter la forêt où s'est posé Astroport ONE."
|
||||
sleep 3
|
||||
echo
|
||||
echo "Une oeuvre habitable. Un jardin sur sol vivant. Un progamme pair à pair interplanétaire"
|
||||
sleep 4
|
||||
echo
|
||||
echo "Les terraformeurs"
|
||||
echo "En quête de la meilleure façon de vivre sur le vaisseau spatial Terre..."
|
||||
echo
|
||||
sleep 5
|
||||
echo "Vous aussi ouvrez votre Ambassade."
|
||||
echo "Activez le JEu. Invitez vos visiteurs à rêver d'un monde meilleur"
|
||||
echo "Reproduisez, améliorez, partagez les plans pour y parvenir."
|
||||
echo
|
||||
sleep 7
|
||||
echo "Il est l'heure de laisser derrière vous la civilisation thermo industrielle."
|
||||
echo "Gagnez en autonomie, en convivialité, en optimisme, en conscience."
|
||||
echo
|
||||
sleep 5
|
||||
echo
|
||||
echo "EMBARQUEZ VERS LE FUTUR"
|
||||
echo
|
||||
sleep 9
|
||||
echo
|
||||
file1="../art/bigfinish.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
echo
|
||||
read -p "Appuyez sur [ENTER] pour terminer..."
|
||||
echo
|
||||
clear
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
echo "Merci d'avoir joué le jeu"
|
||||
echo "Je suis heureux de vous avoir fait partager le rêve des astronautes terraformeurs."
|
||||
echo
|
||||
echo "Le futur ne se prédit pas, il se construit. Il se vit."
|
||||
echo
|
||||
echo " - @Fred"
|
||||
echo
|
||||
|
||||
# That's all, folks!
|
||||
|
||||
exit
|
|
@ -1,88 +0,0 @@
|
|||
#!/bin/bash
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
clear
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
|
||||
# This room gives the player a typical poisoned apple style scenaro.
|
||||
# Just because something looks shiny and fun, doesn't make it any
|
||||
# less deadly.
|
||||
sleep 1
|
||||
echo "Dans une cabine, un écran est disposé en coin. Un tout petit ordinateur"
|
||||
echo "y est raccordé... D'autres fils sortent de l'appareil. Une webcam. Une imprimante."
|
||||
echo
|
||||
echo "Que voulez vous faire?"
|
||||
myIP=$(hostname -I | awk '{print $1}' | head -n 1)
|
||||
isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")
|
||||
[[ ! $myIP || $isLAN ]] && myIP="127.0.1.1"
|
||||
|
||||
while true; do
|
||||
read -p "> " nsewuh
|
||||
case $nsewuh in
|
||||
n ) echo "Vous êtes dans une cabine. Des QRCode sont collés à la parois nord" ;;
|
||||
s ) echo "Cette paroie comporte un miroir. Pour se faire une beauté avant d'enregistrer une capsule vidéo." ;;
|
||||
w ) ./kroo.sh
|
||||
exit ;;
|
||||
e ) echo "Vous êtes face à l'écran. Au dessus des hauts parleurs, une webcam" ;;
|
||||
u ) leverstate=`cat ../logic/stationlogic.ben`
|
||||
if [ "$leverstate" = "on" ]; then
|
||||
echo "A chaque frappe d'une touche. l'écran fait défiler le texte 'SCANNEZ VISA SVP'."
|
||||
else
|
||||
sed -i 's/off/on/' ../logic/stationlogic.ben
|
||||
echo "Vous appuyez sur l'interupteur de l'écran. Y apparaît alors :"
|
||||
sleep 3
|
||||
echo "AMBASSADE MadeInZion - TerraPi4 - 2 To -"
|
||||
echo ""
|
||||
echo
|
||||
sleep 2
|
||||
echo "INTERNET est dangereux. il vend vos information personnelles pour que vous deveniez un produit. "
|
||||
sleep 2
|
||||
echo
|
||||
echo "Rebootez INTERNET. Activez votre TW sur le Système de Fichiers Interplanétaire (IPFS)."
|
||||
sleep 2
|
||||
echo
|
||||
echo "On y échange en pair à pair. La monnaie y est Libre."
|
||||
sleep 4
|
||||
file1="../art/astrored.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
echo
|
||||
echo "____ Astroport déclenche à 20:12 la synchronisation de ses ambassades..."
|
||||
echo "Rapport 2022 : https://ipfs.asycn.io/ipfs/QmUtGpGeMZvwp47ftqebVmoFWCmvroy5wEtWsKvWvDWJpR"
|
||||
sleep 3
|
||||
echo
|
||||
echo "ASTROPORT ONE"
|
||||
echo "VISA pour le vaisseau spatial TERRE."
|
||||
if [[ -d ~/.zen/Astroport.ONE ]]; then
|
||||
read -p "Appuyez sur [ENTER] pour activer votre Station Astroport.ONE"
|
||||
espeak "Astroport Command" > /dev/null 2>&1
|
||||
|
||||
~/.zen/Astroport.ONE/command.sh
|
||||
else
|
||||
espeak "Please Install Astroport" > /dev/null 2>&1
|
||||
echo "Install Astroport.ONE ..."
|
||||
echo "bash <(wget -qO- https://raw.githubusercontent.com/papiche/Astroport.ONE/master/install.sh)"
|
||||
./end.sh
|
||||
fi
|
||||
fi
|
||||
exit
|
||||
;;
|
||||
|
||||
h ) echo "'DEMARRER API http://$myIP:1234 ... Une Station Astroport.ONE.?." ;;
|
||||
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
|
||||
esac
|
||||
done
|
||||
|
||||
esac
|
||||
exit
|