Merge branch 'papiche:master' into master

This commit is contained in:
Jean-bouger 2024-03-22 16:13:49 +01:00 committed by GitHub
commit 0daca449ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
139 changed files with 5016 additions and 1074 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -16,7 +16,13 @@ LOWMODE=$(sudo systemctl status ipfs | grep disabled) ## IPFS DISABLED - START O
[[ ! $isLAN ]] && LOWMODE="" ## LOWMODE ONLY FOR LAN STATION
# echo "$USER ALL=(ALL) NOPASSWD:/bin/systemctl" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/systemctl')
sudo systemctl restart ipfs && sleep 10
#~ sudo systemctl stop astroport
## CHECK IF IPFS NODE IS RESPONDING (ipfs name resolve ?)
ipfs --timeout=30s swarm peers 2>/dev/null > ~/.zen/tmp/ipfs.swarm.peers
[[ ! -s ~/.zen/tmp/ipfs.swarm.peers || $? != 0 ]] \
&& echo "---- SWARM COMMUNICATION BROKEN / RESTARTING IPFS DAEMON ----" \
&& sudo systemctl restart ipfs \
&& sleep 60
floop=0
while [[ ! $(netstat -tan | grep 5001 | grep LISTEN) ]]; do
@ -31,12 +37,21 @@ done
echo "TODAY UPlanet landings"
ls ~/.zen/tmp/ZONE_* 2>/dev/null
## REMOVE TMP BUT KEEP SWARM and coucou
## REMOVE TMP BUT KEEP swarm, flashmem and coucou
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 ###
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
## UPDATE G1BILLETS code
[[ -s ~/.zen/G1BILLET/G1BILLETS.sh ]] \

39
AI/Readme.md Normal file
View File

@ -0,0 +1,39 @@
# 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 de stockage (1500€)
* stations IA avec GPU (5000€)
Ces stations, en synergie, visent à résoudre les problèmes évoqués, offrant une alternative innovante
pour les investisseurs souhaitant participer à la transformation du paysage technologique.

View File

@ -26,6 +26,8 @@ MOATS=$9
COOKIE=$10"
PORT="$1" THAT="$2" AND="$3" THIS="$4" APPNAME="$5" WHAT="$6" OBJ="$7" VAL="$8" MOATS="$9" COOKIE="$10"
[[ "$PORT" == "" ]] && echo "$MY_PATH/AMZQR.sh '0' 'la chaine a mettre en QRCODE' 'et' 'TV'" && exit 1
HTTPCORS="HTTP/1.1 200 OK
Access-Control-Allow-Origin: ${myASTROPORT}
Access-Control-Allow-Credentials: true
@ -37,6 +39,8 @@ 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}/
##################################################
@ -44,10 +48,12 @@ USTRING=$(urldecode "${THAT}")
IMAGE="${THIS}"
[[ ! -s ${MY_PATH}/../images/${IMAGE}.png || ${USTRING} == "" ]] \
&& exho "UNKNOW IMAGE ${IMAGE}" \
&& (echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& echo "UNKNOW IMAGE ${IMAGE}" \
&& ( [[ $PORT != "0" ]] && echo "$HTTPCORS ERROR - BAD PARAMS" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) \
&& echo "(☓‿‿☓) Execution time was "`expr $(date +%s) - $start` seconds. && exit 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)
@ -55,6 +61,18 @@ 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)
[[ ! $LP ]] && echo "NO PRINTER FOUND - Brother QL700 validated" && exit 1
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
rm -Rf ~/.zen/tmp/${MOATS}/
end=`date +%s`
echo "(AMZQR) Operation time was "`expr $end - $start` seconds.

View File

@ -159,22 +159,23 @@ 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}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/_ipns.priv "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${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
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 4) ## STRONGER TW SECURITY "AlpH4nUm"
NPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10) ## STRONGER TW SECURITY "AlpH4nUm"
#~ NPASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-9) ## NOUVEAU PASS 8 CHIFFRES
#~ NPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 10) ## STRONGER TW SECURITY "AlpH4nUm"
#~ PPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 2)
PPASS=$(${MY_PATH}/../tools/diceware.sh $(${MY_PATH}/../tools/getcoins_from_gratitude_box.sh) | xargs)
NPASS=$(${MY_PATH}/../tools/diceware.sh $(${MY_PATH}/../tools/getcoins_from_gratitude_box.sh) | xargs)
## CREATE ASTRONAUTE TW ON CURRENT ASTROPORT
(
echo VISA.new.sh "${EMAIL}_${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}"
echo VISA.new.sh "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}"
##### (☉_☉ ) #######
${MY_PATH}/../RUNTIME/VISA.new.sh "${EMAIL}_${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "/ipns/${UMAPNS}" "${LAT}" "${LON}" >> ~/.zen/tmp/email.${EMAIL}.${MOATS}.txt
${MY_PATH}/../RUNTIME/VISA.new.sh "${PPASS}" "${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
@ -183,10 +184,9 @@ end=`date +%s`
echo "(TW REGISTRATION) Operation time was "`expr $end - $start` seconds.
) &
########################################
## Calculating TW IPNS ADDRESS
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${EMAIL}_${PPASS}" "${NPASS}")
TWADD=$(${MY_PATH}/../tools/keygen -t ipfs "${PPASS}" "${NPASS}")
## HTTP nc ON PORT RESPONSE
echo "$HTTPCORS
@ -216,11 +216,11 @@ echo "$HTTPCORS
</style>
</head><body>
<h1>UPlanet Registration</h1>
Your AstroID seeds are:<br>
${EMAIL} AstroID seeds are:<br>
<br>
<h2>${EMAIL}_${PPASS}</h2>
<h1>${NPASS}</h1>
<h2>${PPASS}</h2>
<h2>${NPASS}</h2>
<h2>${PASS}</h2>
Generating account...
<br>Please check your mail box to get your ZenCard and PIN code.
<br>

View File

@ -69,11 +69,11 @@ for YURL in $(cat ~/.zen/game/players/${PLAYER}/G1CopierYoutube/CopierYoutube.js
lastrun=$(echo "$CMD" | rev | cut -d ':' -f 1 | rev) && echo "$CMD"
duree=$(expr ${MOATS} - $lastrun)
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}" >> ~/.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
# 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}
sed -i "s~$lastrun~$MOATS~g" ~/.zen/game/players/${PLAYER}/G1CopierYoutube/yt-dlp.command # UPDATE LASTRUN
fi
done # FINISH YURL loop
@ -94,6 +94,9 @@ 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 ---"

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

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

View File

@ -49,7 +49,7 @@ done < ${MY_PATH}/../A_boostrap_ssh.txt
[[ -s ~/.ssh/id_ed25519.pub ]] && cp ~/.ssh/id_ed25519.pub ~/.zen/tmp/${IPFSNODEID}/y_ssh.pub
## DRAGONz PGP/SSH style (https://pad.p2p.legal/keygen)
gpg --export-ssh-key $(cat ~/.zen/game/players/.current/.player) 2>/dev/null > ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub
[[ -z ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub ]] && rm ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub # remove empty file
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub ]] && rm ~/.zen/tmp/${IPFSNODEID}/z_ssh.pub # remove empty file
############################################
### FORWARD SSH PORT over /x/ssh-${IPFSNODEID}
@ -69,18 +69,48 @@ echo
PORT=22000
PORT=$((PORT+${RANDOM:0:3}))
echo "#!/bin/bash
if [[ ! \$(ipfs p2p ls | grep x/ssh-${IPFSNODEID}) ]]; then
ipfs --timeout=10s ping -n 3 /p2p/${IPFSNODEID}
ipfs p2p forward /x/ssh-${IPFSNODEID} /ip4/127.0.0.1/tcp/$PORT /p2p/${IPFSNODEID}
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
ssh ${USER}@127.0.0.1 -p $PORT
" > ~/.zen/tmp/${IPFSNODEID}/x_ssh.sh
' > ~/.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
echo "CONNECT WITH THIS COMMAND"
echo "ipfs cat /ipns/${IPFSNODEID}/x_ssh.sh | bash"
############################################

View File

@ -115,7 +115,6 @@ cat $HOME/.zen/game/players/${PLAYER}/G1PalPay/${PLAYER}.duniter.history.json |
## GET @ in JSON INLINE
while read LINE; do
echo "MATCHING IN COMMENT"
echo "${LINE}"
JSON=${LINE}
TXIDATE=$(echo $JSON | jq -r .date)
@ -124,7 +123,6 @@ while read LINE; do
TXIAMOUNTUD=$(echo $JSON | jq -r .amountUD)
COMMENT=$(echo $JSON | jq -r .comment)
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
@ -132,18 +130,26 @@ while read LINE; do
## 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 "$TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS % $SHARE %"
[[ $(echo "$TXIAMOUNT < 0" | bc) ]] \
&& echo "TX-OUT" \
&& 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 "$TXIDATE $TXIPUBKEY $TXIAMOUNT [$TXIAMOUNTUD] $TXIMAILS % $SHARE %"
# let's loop over TXIMAILS
for EMAIL in "${TXIMAILS[@]}"; do
[[ ${EMAIL} == $PLAYER ]] && echo "ME MYSELF" && continue
[[ ${EMAIL} == $PLAYER ]] \
&& echo "ME MYSELF" \
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate \
&& continue
echo "EMAIL : ${EMAIL}"
ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED="" # RESET VAR
@ -183,7 +189,9 @@ while read LINE; do
fi
## DONE STAMP IT
[[ $STAMP == 0 ]] && echo "STAMP DONE" && echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate ## MEMORIZE LAST TXIDATE
[[ $STAMP == 0 ]] \
&& echo "STAMP DONE" \
&& echo "$TXIDATE" > ~/.zen/game/players/${PLAYER}/.atdate ## MEMORIZE LAST TXIDATE
done

View File

@ -42,75 +42,75 @@ mkdir -p ~/.zen/tmp/${MOATS}
#####################################################
# CREATION DE LA CLEF DERIVEE "G1VOEU"
#####################################################
source ~/.zen/game/players/${PLAYER}/secret.june ## LE PEPPER DU PLAYER DEVIENT LE SALT DU G1VOEU
[[ ${PEPPER} ]] && echo "Using PLAYER PEPPER AS WISH SALT" && SECRET1=${PEPPER} ##
[[ ! ${SECRET1} ]] && SECRET1=$(${MY_PATH}/../tools/diceware.sh 3 | 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
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}" ## SECRET2 est "TitreDuVoeu PLAYER"
SECRET2="${VoeuName} ${PLAYER}" ## SECRET2 est "TitreDuVoeu PLAYER"
echo "${SECRET2}" && [[ ! ${SECRET2} ]] && echo "EMPTY SECRET2 - ERROR" && exit 1
echo "${SECRET2}" && [[ ! ${SECRET2} ]] && echo "EMPTY SECRET2 - ERROR" && exit 1
echo "## keygen PLAYER DERIVATE WISH KEY"
${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
mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
mv ~/.zen/tmp/${MOATS}/wish.dunikey ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/wish.dunikey
echo "## keygen PLAYER DERIVATE WISH KEY"
${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
mkdir -p ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
mv ~/.zen/tmp/${MOATS}/wish.dunikey ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/wish.dunikey
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}" "${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}"
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}" "${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}"
## NATOOLS ENCRYPT
echo "# NATOOLS ENCODING qrtw.ipfskey "
${MY_PATH}/../tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey -o $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc
ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc | base16)
#~ echo $ENCODING
## NATOOLS ENCRYPT
echo "# NATOOLS ENCODING qrtw.ipfskey "
${MY_PATH}/../tools/natools.py encrypt -p $G1PUB -i $HOME/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/qrtw.ipfskey -o $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc
ENCODING=$(cat $HOME/.zen/tmp/${MOATS}/qrtw.ipfskey.$G1PUB.enc | base16)
#~ echo $ENCODING
## TEST IPFS
#~ 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
## TEST IPFS
#~ 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
echo "# UPGRADING WORLD WHISHKEY DATABASE"
echo "# UPGRADING WORLD WHISHKEY DATABASE"
mkdir -p ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
## A la fois Titre du tag et Pepper construction de clef
echo ${VoeuName} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.pepper
echo ${WISHG1PUB} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.wish
mkdir -p ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
## A la fois Titre du tag et Pepper construction de clef
echo ${VoeuName} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.pepper
echo ${WISHG1PUB} > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/.wish
echo "# CREATION QR CODE"
echo "# CREATION QR CODE"
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
LIBRA=$(head -n 2 ~/.zen/Astroport.ONE/A_boostrap_nodes.txt | tail -n 1 | cut -d ' ' -f 2)
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png" "$LIBRA/ipns/${VOEUNS}"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png" "$LIBRA/ipns/${VOEUNS}"
#################################################################
## MAKING SPECIAL amrzqr => G1Milgram TICKET
## LE QRCODE CORRESPOND A LA CLEF DERIVE "${PLAYER} :: G1${VoeuName} ${PLAYERG1PUB}" avec PASS=YYYYMM
IMAGIC=$(${MY_PATH}/../tools/VOEUX.print.sh "${PLAYER}" "${VoeuName}" "${MOATS}" "${G1PUB}" | tail -n 1)
cp ~/.zen/tmp/${MOATS}/START.png ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
#################################################################
## MAKING SPECIAL amrzqr => G1Milgram TICKET
## LE QRCODE CORRESPOND A LA CLEF DERIVE "${PLAYER} :: G1${VoeuName} ${PLAYERG1PUB}" avec PASS=YYYYMM
IMAGIC=$(${MY_PATH}/../tools/VOEUX.print.sh "${PLAYER}" "${VoeuName}" "${MOATS}" "${G1PUB}" | tail -n 1)
cp ~/.zen/tmp/${MOATS}/START.png ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.ASTROLINK.png" "$LIBRA/ipns/$ASTRONAUTENS"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1ASTRO.png" "${G1PUB}"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png" "${WISHG1PUB}:ZEN"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.IPNS.png" "/ipns/${VOEUNS}"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.ASTROLINK.png" "$LIBRA/ipns/$ASTRONAUTENS"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1ASTRO.png" "${G1PUB}"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png" "${WISHG1PUB}:ZEN"
qrencode -s 12 -o "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.IPNS.png" "/ipns/${VOEUNS}"
#################################
# PREMIER TYPE ~/.zen/tmp/player.png
convert $HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png -resize 300 ~/.zen/tmp/QRWISHLINK.png
convert ${MY_PATH}/../images/logoastro.png -resize 220 ~/.zen/tmp/ASTROLOGO.png
# PREMIER TYPE ~/.zen/tmp/player.png
convert $HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.WISHLINK.png -resize 300 ~/.zen/tmp/QRWISHLINK.png
convert ${MY_PATH}/../images/logoastro.png -resize 220 ~/.zen/tmp/ASTROLOGO.png
composite -compose Over -gravity NorthWest -geometry +350+10 ~/.zen/tmp/ASTROLOGO.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/astroport.png
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/QRWISHLINK.png ~/.zen/tmp/astroport.png ~/.zen/tmp/one.png
@ -120,9 +120,9 @@ convert -gravity northwest -pointsize 30 -fill black -draw "text 320,300 \"*****
convert -gravity northwest -pointsize 33 -fill black -draw "text 320,350 \"${VoeuName}\"" ~/.zen/tmp/salt.png ~/.zen/tmp/player.png
#################################
# SECOND TYPE ~/.zen/tmp/voeu.png
convert $HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png -resize 300 ~/.zen/tmp/G1WISH.png
convert ${MY_PATH}/../images/logojeu.png -resize 260 ~/.zen/tmp/MIZLOGO.png
# SECOND TYPE ~/.zen/tmp/voeu.png
convert $HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/QR.G1WISH.png -resize 300 ~/.zen/tmp/G1WISH.png
convert ${MY_PATH}/../images/logojeu.png -resize 260 ~/.zen/tmp/MIZLOGO.png
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/G1WISH.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/astroport.png
composite -compose Over -gravity NorthWest -geometry +300+0 ~/.zen/tmp/QRWISHLINK.png ~/.zen/tmp/astroport.png ~/.zen/tmp/one.png
@ -131,136 +131,134 @@ composite -compose Over -gravity NorthWest -geometry +320+280 ~/.zen/tmp/MIZLOGO
convert -gravity northwest -pointsize 28 -fill black -draw "text 32,350 \"Ğ1 VOEU\"" ~/.zen/tmp/two.png ~/.zen/tmp/pep.png
convert -gravity northwest -pointsize 50 -fill black -draw "text 30,300 \"${VoeuName}\"" ~/.zen/tmp/pep.png ~/.zen/tmp/voeu.png
# IMAGE DANS IPFS
IVOEUPLAY=$(ipfs add -Hq ~/.zen/tmp/player.png | tail -n 1)
IVOEU=$(ipfs add -Hq ~/.zen/tmp/voeu.png | tail -n 1)
### G1VOEU LIGHTBEAM :: ${PLAYER}_${VoeuName} :: /ipns/${VOEUNS}
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_${VoeuName}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key-'${VoeuName}'","text":"'${VOEUNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-key-'${VoeuName}'","text":"'${WISHG1PUB}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-g1.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-'${VoeuName}'","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
# IMAGE DANS IPFS
IVOEUPLAY=$(ipfs add -Hq ~/.zen/tmp/player.png | tail -n 1)
IVOEU=$(ipfs add -Hq ~/.zen/tmp/voeu.png | tail -n 1)
### G1VOEU LIGHTBEAM :: ${PLAYER}_${VoeuName} :: /ipns/${VOEUNS}
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name","text":"'${PLAYER}_${VoeuName}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-name.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key-'${VoeuName}'","text":"'${VOEUNS}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-key.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-key-'${VoeuName}'","text":"'${WISHG1PUB}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-g1.json
echo '[{"title":"$:/plugins/astroport/lightbeams/saver/g1/lightbeam-natools-'${VoeuName}'","text":"'${ENCODING}'","tags":""}]' > ~/.zen/tmp/${MOATS}/lightbeam-natools.json
# 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>
<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>"
# 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
SHOW G1"${VoeuName}"\n
</\$button>"
# NEW IVEU TIDDLER
echo "## Creation json tiddler : G1${VoeuName} /ipfs/${IVOEU}"
echo '[
{
"created": "'${MOATS}'",
"title": "'${VoeuName}'",
"type": "'text/vnd.tiddlywiki'",
"astronautens": "'/ipns/${ASTRONAUTENS}'",
"wishns": "'/ipns/${VOEUNS}'",
"qrcode": "'/ipfs/${IVOEUPLAY}'",
"decode": "'/ipfs/${IVOEU}'",
"wish": "'${WISHG1PUB}'",
"g1pub": "'${G1PUB}'",
"text": "'${TEXT}'",
"tags": "'G1Voeu G1${VoeuName} ${PLAYER}'",
"asksalt": "'${HPass}'",
"junesec" : "'${ENCODING}'"
}
# NEW IVEU TIDDLER
echo "## Creation json tiddler : G1${VoeuName} /ipfs/${IVOEU}"
echo '[
{
"created": "'${MOATS}'",
"title": "'${VoeuName}'",
"type": "'text/vnd.tiddlywiki'",
"astronautens": "'/ipns/${ASTRONAUTENS}'",
"wishns": "'/ipns/${VOEUNS}'",
"qrcode": "'/ipfs/${IVOEUPLAY}'",
"decode": "'/ipfs/${IVOEU}'",
"wish": "'${WISHG1PUB}'",
"g1pub": "'${G1PUB}'",
"text": "'${TEXT}'",
"tags": "'G1Voeu G1${VoeuName} ${PLAYER}'",
"asksalt": "'${HPass}'",
"junesec" : "'${ENCODING}'"
}
]
' > ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json
rm -f ~/.zen/tmp/newindex.html
rm -f ~/.zen/tmp/newindex.html
echo "Nouveau Voeu ${VoeuName} dans MOA $PSEUDO : http://127.0.0.1:8080/ipns/$ASTRONAUTENS"
tiddlywiki --load $INDEX \
--deletetiddlers '[tag[voeu]]' \
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-g1.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-natools.json "application/json" \
--import ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json "application/json" \
--output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain"
echo "Nouveau Voeu ${VoeuName} dans MOA $PSEUDO : http://127.0.0.1:8080/ipns/$ASTRONAUTENS"
tiddlywiki --load $INDEX \
--deletetiddlers '[tag[voeu]]' \
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-key.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-g1.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-natools.json "application/json" \
--import ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json "application/json" \
--output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain"
echo "PLAYER TW Update..."
if [[ -s ~/.zen/tmp/newindex.html ]]; then
echo "___ Mise à jour $INDEX"
cp -f ~/.zen/tmp/newindex.html $INDEX
else
echo "ERROR INTO ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json"
fi
echo "PLAYER TW Update..."
if [[ -s ~/.zen/tmp/newindex.html ]]; then
echo "___ Mise à jour $INDEX"
cp -f ~/.zen/tmp/newindex.html $INDEX
else
echo "ERROR INTO ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/${VoeuName}.voeu.json"
fi
# PRINTING
LP=$(ls /dev/usb/lp* | head -n1)
if [[ ! $LP ]]; then
echo "NO PRINTER FOUND - Plug a Brother QL700 or Add your printer"
else
echo "IMPRESSION VOEU"
brother_ql_create --model QL-700 --label-size 62 ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/result.png > ~/.zen/tmp/toprint.bin 2>/dev/null
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/player.png > ~/.zen/tmp/toprint.bin 2>/dev/null
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/voeu.png > ~/.zen/tmp/toprint.bin 2>/dev/null
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
fi
# PRINTING
LP=$(ls /dev/usb/lp* | head -n1)
if [[ ! $LP ]]; then
echo "NO PRINTER FOUND - Plug a Brother QL700 or Add your printer"
else
echo "IMPRESSION VOEU"
brother_ql_create --model QL-700 --label-size 62 ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/result.png > ~/.zen/tmp/toprint.bin 2>/dev/null
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/player.png > ~/.zen/tmp/toprint.bin 2>/dev/null
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
brother_ql_create --model QL-700 --label-size 62 ~/.zen/tmp/voeu.png > ~/.zen/tmp/toprint.bin 2>/dev/null
sudo brother_ql_print ~/.zen/tmp/toprint.bin $LP
fi
# COPY QR CODE TO PLAYER ZONE
cp ~/.zen/tmp/player.png ~/.zen/tmp/voeu.png ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
echo "${SECRET1}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.salt
echo "${VoeuName}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.title
# COPY QR CODE TO PLAYER ZONE
cp ~/.zen/tmp/player.png ~/.zen/tmp/voeu.png ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
echo "${SECRET1}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.salt
echo "${VoeuName}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.title
echo "$LIBRA/ipns/${VOEUNS}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.link
cp ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.link ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
cp ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/*.png ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
echo "$LIBRA/ipns/${VOEUNS}" > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.link
cp ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.link ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/
cp ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/*.png ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/
# PUBLISHING
echo "ipfs name publish --key=${WISHG1PUB}"
banner="## ${PLAYER} G1WISH READY :: G1${VoeuName}
<img src=/ipfs/$IMAGIC>
G1Voeu Astronaute (TW) : $LIBRA/ipns/$ASTRONAUTENS
${VoeuName} FLUX Ŋ1
G1${VoeuName} : $LIBRA/ipns/${VOEUNS}
WISH G1PUB : ${WISHG1PUB}"
# PUBLISHING
echo "ipfs name publish --key=${WISHG1PUB}"
banner="## ${PLAYER} G1WISH READY :: G1${VoeuName}
<img src=/ipfs/$IMAGIC>
G1Voeu Astronaute (TW) : $LIBRA/ipns/$ASTRONAUTENS
${VoeuName} FLUX Ŋ1
G1${VoeuName} : $LIBRA/ipns/${VOEUNS}
WISH G1PUB : ${WISHG1PUB}"
IPUSH=$(echo "$banner" | ipfs add -q | tail -n 1)
ipfs name publish --key=${WISHG1PUB} /ipfs/$IPUSH 2>/dev/null
IPUSH=$(echo "$banner" | ipfs add -q | tail -n 1)
ipfs name publish --key=${WISHG1PUB} /ipfs/$IPUSH 2>/dev/null
echo $IPUSH > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.chain.${MOATS}
echo $IPUSH > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/.chain.${MOATS}
echo $banner > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/banner
cat ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/banner
echo $banner > ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/banner
cat ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/banner
#~ echo "## TO RECEIVE G1RONDS Creating Cesium+ Profil #### timeout long ... patience ...."
#~ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/wish.dunikey set --name "G1Voeu ${VoeuName}" --avatar "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/result_qrcode.png" --site "$LIBRA/ipns/${VOEUNS}" #CESIUM+
#~ [[ ! $? == 0 ]] && echo "G1VOEU CESIUM WALLET PROFILE CREATION FAILED !!!!"
#~ echo "## TO RECEIVE G1RONDS Creating Cesium+ Profil #### timeout long ... patience ...."
#~ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB}/wish.dunikey set --name "G1Voeu ${VoeuName}" --avatar "$HOME/.zen/game/world/${VoeuName}/${WISHG1PUB}/result_qrcode.png" --site "$LIBRA/ipns/${VOEUNS}" #CESIUM+
#~ [[ ! $? == 0 ]] && echo "G1VOEU CESIUM WALLET PROFILE CREATION FAILED !!!!"
echo "************************************************************"
#~ echo "COULD LIMIT ON JUNE pour le Voeu ${VoeuName}"
#~ echo ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a 1 -p ${WISHG1PUB} -c \'"${VOEUNS} G1Voeu ${VoeuName}"\' -m
#~ echo "************************************************************"
#~ echo "************************************************************"
echo "************************************************************"
#~ echo "COULD LIMIT ON JUNE pour le Voeu ${VoeuName}"
#~ echo ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a 1 -p ${WISHG1PUB} -c \'"${VOEUNS} G1Voeu ${VoeuName}"\' -m
#~ echo "************************************************************"
#~ echo "************************************************************"
#~ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a 1 -p ${WISHG1PUB} -c "$VOEUXNS G1Voeu ${VoeuName}" -m
#~ [[ ! $? == 0 ]] \
#~ && echo "SOOOOOOOOOOOORRRRRRRY GUY. YOU CANNOT PAY A G1 A NEW WISH - THIS IS FREE TO CHANGE -"
#~ && rm -Rf ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB} \
#~ && rm -Rf ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/ \
#~ && ipfs key rm ${WISHG1PUB} \
#~ && tiddlywiki --load ${INDEX} \
#~ --deletetiddlers '${VoeuName}' \
#~ --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain" \
#~ && cp -f ~/.zen/tmp/newindex.html $INDEX \
#~ && echo "G1${VoeuName} FLUX REMOVED"
#~ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a 1 -p ${WISHG1PUB} -c "$VOEUXNS G1Voeu ${VoeuName}" -m
#~ [[ ! $? == 0 ]] \
#~ && echo "SOOOOOOOOOOOORRRRRRRY GUY. YOU CANNOT PAY A G1 A NEW WISH - THIS IS FREE TO CHANGE -"
#~ && rm -Rf ~/.zen/game/players/${PLAYER}/voeux/${VoeuName}/${WISHG1PUB} \
#~ && rm -Rf ~/.zen/game/world/${VoeuName}/${WISHG1PUB}/ \
#~ && ipfs key rm ${WISHG1PUB} \
#~ && tiddlywiki --load ${INDEX} \
#~ --deletetiddlers '${VoeuName}' \
#~ --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain" \
#~ && cp -f ~/.zen/tmp/newindex.html $INDEX \
#~ && echo "G1${VoeuName} FLUX REMOVED"
echo "************************************************************"
echo "************************************************************"
exit 0

View File

@ -14,6 +14,11 @@ 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 ))
@ -31,26 +36,19 @@ echo ${#SKEYS[@]} " swarm SECTORS"
RKEYS=($(cat ~/.zen/tmp/swarm/12D*/UPLANET/REGIONS/_*_*/_index.html 2>/dev/null | grep -o "url='/[^']*'"| sed "s/url='\(.*\)'/\1/" | awk -F"/" '{print $3}' | shuf ))
echo ${#RKEYS[@]} " swarm REGIONS"
## CHECK FOR ANY ALREADY MErunning
MErunning=$(ps axf --sort=+utime | grep -w ${ME} | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
[[ $MErunning ]] && echo "${ME} MErunning for too long..." && kill -9 $MErunning
echo "(◕‿◕ ) ${ME} starting UPlanet Terraformation _______________________________"
## COMBINE & SHUFFLE KEYS
combined=("${LWKEYS[@]}" "${LSKEYS[@]}" "${LRKEYS[@]}" "${WKEYS[@]}" "${SKEYS[@]}" "${RKEYS[@]}")
UKEYS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
echo ${#UKEYS[@]} " JOBS..."
echo "SYNC ${#UKEYS[@]} GEOKEYS..."
## STORAGE FOR IPFS GET UplanetKeyS
mkdir -p ~/.zen/tmp/flashmem
## Remove flashmem/UplanetKey older than 3 hours
find ~/.zen/tmp/flashmem -mmin +180 -exec rm -r {} +
find ~/.zen/tmp/flashmem -mmin +180 -exec rm -rf {} +
floop=0
medo=0
for key in ${UKEYS[@]}; do
[[ -d ~/.zen/tmp/flashmem/$key ]] \
@ -69,7 +67,33 @@ for key in ${UKEYS[@]}; do
done
echo "=========================="
echo "(◕‿◕ ) ${ME} :: $medo SUCCESS missing $floop KEYS from ${#UKEYS[@]} JOBS"
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
floop=$((floop +1))
mkdir -p ~/.zen/tmp/flashmem/tw/$tw
ipfs --timeout 180s get -o ~/.zen/tmp/flashmem/tw/$tw/index.html /ipns/$tw
[[ $? == 0 ]] \
&& medo=$((medo +1)) && floop=$((floop -1)) \
|| rm -Rf ~/.zen/tmp/flashmem/tw/$tw
[ $floop -gt 33 ] && break
done
echo "=========================="
echo "(✜‿‿✜) ${ME} :: $medo SUCCESS missing $floop KEYS from ${#TWS[@]} TWS"
echo "=========================="
exit 0

View File

@ -73,7 +73,7 @@ if [[ -d ~/.zen/tmp/${IPFSNODEID} ]]; then
fi
## CLEANING SWARM 3 DAYS OLD
echo "## CLEANING SWARM 3 DAYS OLD"
find ~/.zen/tmp/swarm/ -mtime +3 -type d -exec rm -Rf '{}' \;
exit 0

View File

@ -18,12 +18,13 @@ PLAYERONE="$1"
[[ ! ${PLAYERONE} ]] && PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
echo "FOUND : ${PLAYERONE[@]}"
CURRENT=$(readlink ~/.zen/game/players/.current | rev | cut -d '/' -f 1 | rev)
echo "RENEWING UPLANET NODE CACHE
echo "RENEWING LOCAL UPLANET REPOSITORY (ADMIN=${CURRENT})
~/.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/"
echo "CLEANING IPFSNODEID TW CACHE ~/.zen/tmp/${IPFSNODEID}/TW/"
rm -Rf ~/.zen/tmp/${IPFSNODEID}/TW/
## RUNING FOR ALL LOCAL PLAYERS
@ -31,12 +32,15 @@ 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 "${PLAYER} WAS BADLY PLUGGED" \
&& echo "WARNING - ERASE ${PLAYER} - 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
@ -44,30 +48,30 @@ for PLAYER in ${PLAYERONE[@]}; do
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
mkdir -p ~/.zen/tmp/${MOATS}
echo "############################################ ~/.zen/tmp/${MOATS}"
echo "##################################################################"
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/g1reveal
cat ~/.zen/tmp/g1reveal ###DEBUG MODE
COINS=$(cat ~/.zen/tmp/g1reveal | tail -n 1)
$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)
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 (= 1 €OC) ?
echo "##>>>>>>>>>>>>>>>> REFRESH ASTRONAUTE TW"
#~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 10 €/OC) ?
echo "## >>>>>>>>>>>>>>>> REFRESH ASTRONAUTE TW"
## 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
@ -89,234 +93,423 @@ for PLAYER in ${PLAYERONE[@]}; do
################### GET LATEST TW
echo "GETTING TW..."
####################################################################################################
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)
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>"
echo "<a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>"
echo ">> %%% WARNING %%%"
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 "------------------------------------------------"
echo " * <a href='${myIPFS}/ipfs/${LASTCHAIN}'>LAST</a>"
echo " *<a href='${myIPFS}/ipfs/${NOWCHAIN}'>NOW</a>"
echo " * <a href='${myIPFS}/ipfs/${NOWCHAIN}'>NOW</a>"
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
## SEND AN EMAIL ALERT TO PLAYER
echo "<html><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW REFRESH FAILED</a>" > ~/.zen/tmp/result
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
echo "" >> ~/.zen/tmp/result
echo "<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>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
## SEND AN EMAIL ALERT TO PLAYER
echo "<html><head>
<style>
body {
font-family: 'Courier New', monospace;
}
pre {
white-space: pre-wrap;
}
</style></head><body><a href='$myIPFS/ipns/${ASTRONAUTENS}'>TW LOADING TIMEOUT</a>" > ~/.zen/tmp/result
echo "<br>------------------------------------------------" >> ~/.zen/tmp/result
echo "<br>" >> ~/.zen/tmp/result
echo "<br><a href='${myIPFS}/ipfs/${LASTCHAIN}'>TW[-1]</a>: /ipfs/${LASTCHAIN}" >> ~/.zen/tmp/result
echo "<br><a href='${myIPFS}/ipfs/${NOWCHAIN}'>TW[0]</a>: /ipfs/${NOWCHAIN}" >> ~/.zen/tmp/result
echo "<br>" >> ~/.zen/tmp/result
echo "<br> %%% WARNING %%% $try TRY LEFT %%%" >> ~/.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
[[ $try == 0 ]] \
&& echo "PLAYER ${PLAYER} UNPLUG" \
&& ${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} \
&& ${MY_PATH}/PLAYER.unplug.sh ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${PLAYER} "ALL" \
&& continue
try=$((try-1))
echo "$try" > ~/.zen/game/players/${PLAYER}/ipfs/moa/.try
echo " %%% WARNING %%% ${PLAYER} STATION UNPLUG IN $try DAY(S)." >> ~/.zen/tmp/result
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "UNPLUG WARNING"
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/result "TW LOADING TIMEOUT"
continue
else
## FOUND TW
#############################################################
## 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 ]] && echo "${PLAYER} MadeInZion : BAD TW (☓‿‿☓) " && continue
player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
[[ ${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) ## 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
echo "CURCHAIN=${CURCHAIN}"
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)
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 == "" ]] && UMAPNS="/ipns/k51qzi5uqu5djg1gqzujq5p60w25mi235gdg0lgkk5qztkfrpi5c22oolrriyu"
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
[[ $LAT == "null" || $LAT == "" ]] && LAT="0.00"
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
[[ $LON == "null" || $LON == "" ]] && LON="0.00"
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${UMAPNS}"
## UMAP TODATENS ################
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/todate.ipfskey "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
ipfs key rm "_todate" 2>/dev/null
TODATENS=$(ipfs key import "_todate" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/todate.ipfskey)
ipfs key rm "_todate" 2>/dev/null
echo "GPS UMAP LINK UPDATE
${YESTERDATE} : ${myIPFS}${UMAPNS}
${TODATE} : ${myIPFS}/ipns/${TODATENS}"
## UPDATE TW GPS Tiddler #############
sed -i "s~${UMAPNS}~/ipns/${TODATENS}~g" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
## STORE IN PLAYER CACHE
echo "_${LAT}_${LON}" > ~/.zen/game/players/${PLAYER}/.umap
cp ~/.zen/tmp/${MOATS}/GPS.json ~/.zen/game/players/${PLAYER}/
########### 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}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ONE"
echo ">>>> ASTRONAUT ${PLAYER} TW CAPSULE EJECTION TERMINATED"
continue
fi
fi
#############################################################
## GWIP == myIP or TUBE !!
## FOUND TW
#############################################################
# Connect_PLAYER_To_Gchange.sh : Sync FRIENDS TW
## 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) == "[]" ]] \
&& echo "${PLAYER} GPS : BAD TW (☓‿‿☓) " && continue
#############################################################
## CHECK MadeInZion
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) == "[]" ]] \
&& echo "${PLAYER} MadeInZion : BAD TW (☓‿‿☓) " && continue
player=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].player)
#############################################################
## 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"
############################################################ BAD TW SIGNATURE
[[ ${player} != ${PLAYER} || ${PLAYER} != ${signature} ]] \
&& echo "> (☓‿‿☓) BAD PLAYER=$player in TW (☓‿‿☓)" \
&& ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ALL" \
&& continue \
|| echo "${PLAYER} OFFICIAL TW - (⌐■_■) -"
#############################################################
## 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) == "[]" ]] \
&& echo "${PLAYER} Astroport : BAD TW (☓‿‿☓) " && continue
BIRTHDATE=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].birthdate)
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport) ## ZenStation 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))
################################################## +7 DAYS AstroID !!
## REMOVE TW OLDER THAN 7 DAYS WITH AstroID
[[ -s ~/.zen/tmp/${MOATS}/AstroID.json && $days -gt 7 ]] \
&& ${MY_PATH}/PLAYER.unplug.sh "${HOME}/.zen/game/players/${PLAYER}/ipfs/moa/index.html" "${PLAYER}" "ALL" \
&& echo "(#__#) AstroID +7 DAYS = SECURITY ERROR (#__#)" && continue
################################################## 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"
echo ">>>> CIAO ${PLAYER}"
continue
fi
################ VERIFICATIONS DONE ######################
echo "ASTROPORT ZenStation : ${ASTROPORT}"
echo "CURCHAIN=${CURCHAIN}"
echo "================================== TW $days days old"
######################################
#### 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"
LAT=$(makecoord ${ZLAT})
LON=$(makecoord ${ZLON})
SLAT="${LAT::-1}"
SLON="${LON::-1}"
RLAT="$(echo ${LAT} | cut -d '.' -f 1)"
RLON="$(echo ${LON} | cut -d '.' -f 1)"
## SEARCH for TODATENS in SWARM then LOCAL
## ZEN STATION
MYNS=$(cat ~/.zen/tmp/swarm/12D*/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TODATENS)
UMAPG1PUB=$(cat ~/.zen/tmp/swarm/12D*/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/G1PUB)
## BOOSTRAP SCENARIO
[[ $MYNS == "" ]] \
&& MYNS=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/TODATENS) \
&& UMAPG1PUB=$(cat ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/G1PUB)
# Search in flashmem
if [[ ${MYNS} != "" ]]; then
echo "UMAP NEXTNS"
UMAPNS=$(cat ~/.zen/tmp/flashmem/${MYNS}/_next.umapns | cut -d ':' -f 3)
cat ~/.zen/tmp/flashmem/${MYNS}/_next.umapns
echo "SECTOR NEXTNS"
SECTORNS=$(cat ~/.zen/tmp/flashmem/${MYNS}/_next.sectorns | cut -d ':' -f 3)
cat ~/.zen/tmp/flashmem/${MYNS}/_next.sector
echo "REGION NEXTNS"
REGIONNS=$(cat ~/.zen/tmp/flashmem/${MYNS}/_next.regionns | cut -d ':' -f 3)
cat ~/.zen/tmp/flashmem/${MYNS}/_next.region
fi
UMAPG1PUB=$(${MY_PATH}/../tools/keygen "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
## CALCULATE UMAP TODATENS ################
######################################
ipfs key rm "temp" >/dev/null 2>&1
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/todate.ipfskey "${TODATE}${UPLANETNAME}${LAT}" "${TODATE}${UPLANETNAME}${LON}"
UMAPNS=$(ipfs key import "temp" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/todate.ipfskey)
echo "UMAP _${LAT}_${LON} UMAPNS=/ipns/${UMAPNS}"
SECTOR="_${LAT::-1}_${LON::-1}"
## CALCULATE SECTOR TODATENS ################
ipfs key rm "temp" >/dev/null 2>&1
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/sectodate.ipfskey "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}"
TODATESECTORNS=$(ipfs key import "temp" -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/sectodate.ipfskey)
ipfs key rm "temp" >/dev/null 2>&1
#############################################
# MAKE TODATE "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_~/ipns/${TODATESECTORNS}/TW~g" \
> ~/.zen/tmp/${MOATS}/GPS.json
################# PERSONAL VDO.NINJA ADDRESS)
PHONEBOOTH=${PLAYER/@/_}
PHONEBOOTH=${PHONEBOOTH/\./_}
PHONEBOOTH=${PHONEBOOTH/-/_}
# MAKE "ALLO" 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_~${PHONEBOOTH}~g" \
> ~/.zen/tmp/${MOATS}/VISIO.json
## UPDATE PLAYER CACHE
echo "_${LAT}_${LON}" > ~/.zen/game/players/${PLAYER}/.umap
cp ~/.zen/tmp/${MOATS}/GPS.json ~/.zen/game/players/${PLAYER}/
#####################################################################
# (RE)MAKE "CESIUM" TIDDLER
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
#####################################################################
########## $:/moa picture ## lightbeams replacement ###############
## GET $:/moa Tiddlers ####################################### START
echo "GET $:/moa Tiddlers"
###################################################### [tag[$:/moa]]
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 - CONTINUE" && continue
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}
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)
echo "ORIGINH: $ORIGINH"
fi
( ## REFRESH LOCAL PLAYER CACHE with FRIEND ACTUAL TW (&) will be used TOMORROW
ipfs --timeout 480s cat ${FTW} > ~/.zen/game/players/${PLAYER}/FRIENDS/${FPLAYER}/index.html
) &
## 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"
## 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 CREATE TW NEWINDEX - ERROR"
if [[ $ORIGINH != $INSIDEH ]]; 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 CREATE TW NEWINDEX - ERROR"
fi
fi
done
## GET $:/moa Tiddlers ####################################### END
#####################################################################
echo "${UPLAYERSTIDS[@]}"
UPLAYERSTIDS_STR=""
for item in "${UPLAYERSTIDS[@]}"; do
UPLAYERSTIDS_STR+=" $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_~${myUPLANET}~g" \
-e "s~_UPLAYERSTIDS_~${UPLAYERSTIDS_STR}~g" \
-e "s~_SECTORTW_~/ipns/${TODATESECTORNS}/TW~g" \
> ~/.zen/tmp/${MOATS}/SECTORTW_NEWS.json
echo "SECTOR $SECTOR SECTORTW=/ipns/${TODATESECTORNS}/TW"
#############################################################
# Connect_PLAYER_To_Gchange.sh : Sync FRIENDS TW - TODO : REWRITE
##############################################################
echo "##################################################################"
#~ echo "##################################################################"
[[ $(echo "$COINS >= 2" | bc -l) -eq 1 ]] \
&& echo "## Connect_PLAYER_To_Gchange.sh" \
&& ${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" \
|| echo "$COINS <= 1 G1 + 10 ẑen : stars exchange (★★★★★) level"
#~ [[ $(echo "$COINS >= 500" | bc -l) -eq 1 ]] \
#~ && echo "## Connect_PLAYER_To_Gchange.sh" \
#~ && ${MY_PATH}/../tools/Connect_PLAYER_To_Gchange.sh "${PLAYER}" \
#~ || echo "$COINS <= 1 G1 + 10 ẑen : bypass Gchange stars exchange (★★★★★)"
# G1PalPay - 1 G1 mini -> Check for G1 TX incoming comments #
if [[ $(echo "$COINS >= 1" | bc -l) -eq 1 ]]; then
###########
##############################################################
# 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}"
###############
##############################################################
# VOEUX.create.sh #
##############################################################
${MY_PATH}/VOEUX.create.sh ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html "${PLAYER}" "${G1PUB}"
###############
##############################################################
# VOEUX.refresh.sh #
##############################################################
${MY_PATH}/VOEUX.refresh.sh "${PLAYER}" "${MOATS}" ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
else
echo "> ZenCard is not activated ($ZEN)"
echo "> ZenCard not activated ($ZEN ZEN)"
fi
### CHECK FOR pending (TODO! In case PAY4SURE have abandonned pendings)
###################
# REFRESH PLAYER_feed #
##################################
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
## 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
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--import ~/.zen/tmp/${MOATS}/lightbeam-name.json "application/json" \
--import ~/.zen/tmp/${MOATS}/lightbeam-key.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}/SECTORTW_NEWS.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
&& rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html \
|| echo "ERROR - CANNOT CREATE TW NEWINDEX - ERROR"
###########################
####################
## ANY CHANGES ?
## TW NEWINDEX .... #####
##############################################################
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
echo "LOCAL BACKUP + MICROLEDGER TW"
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
[[ -s ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain ]] \
&& ZCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain) \
&& 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
##############################################################
[[ -s ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain ]] \
&& ZCHAIN=$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain) \
&& echo "# CHAIN : ${CURCHAIN} -> ${ZCHAIN}" \
&& [[ ${CURCHAIN} != "" && ${ZCHAIN} != "" ]] \
&& sed -i "s~${CURCHAIN}~${ZCHAIN}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
##################################################
############################### LOCAL "MICRO LEDGER"
################## UPDATING ${PLAYER}/ipfs/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)
######## UPDATING ${PLAYER}/ipfs/moa/.chain
cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \
~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats)
##########################################
## TW IPFS ADD & PUBLISH
##########################################
TW=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
ipfs name publish --key=${PLAYER} /ipfs/${TW}
[[ $DIFF ]] && echo ${TW} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
ipfs --timeout 720s name publish --key=${PLAYER} /ipfs/${TW}
## LOCAL PLAYER CACHING
echo ${TW} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
echo ${MOATS} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
echo "================================================"
@ -324,51 +517,62 @@ for PLAYER in ${PLAYERONE[@]}; do
echo " $myIPFSGW/ipns/${ASTRONAUTENS}"
echo "================================================"
###################
# REFRESH PLAYER_feed KEY
echo "(☉_☉ ) (☉_☉ ) (☉_☉ ) RSS"
## CREATING 30 DAYS JSON RSS STREAM
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/game/players/${PLAYER}/ipfs --render '.' "${PLAYER}.rss.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[days:created[-30]!is[system]!tag[G1Voeu]]'
--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]]'
[[ ! -s ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json ]] \
&& echo "NO ${PLAYER} RSS - BAD "
echo "~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json"
## TODO CREATING 30 DAYS XML RSS STREAM
########################################################
#### PLAYER ACCOUNT HAVE NEW TIDDLER or NOT #########
if [[ $(cat ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json) == "[]" ]]; then
echo "ALERT -- RSS IS EMPTY -- COINS=$COINS / ZEN=$ZEN --"
## DEAD PLAYER ??
if [[ ${DIFF_SECONDS} -eq $(( 27 * 24 * 60 * 60 )) ]]; then
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> ADD MORE 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"
fi
if [[ ${DIFF_SECONDS} -gt $(( 29 * 24 * 60 * 60 )) ]]; 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
${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 -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 ">>>>> ERROR ${PLAYER}_feed IPNS KEY NOT FOUND - ERROR"
fi
## 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]]'
#~ --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 days ago"
##################################
#### PLAYER ACCOUNT CLEANING #########
## IF ZEN < 11
## && EMPTY RSS + 30 DAYS BIRTHDATE
## only for less 90 days TW ? && ${DIFF_SECONDS} -lt $(( 90 * 24 * 60 * 60 )) ????
## ==> 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}/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}"
@ -381,32 +585,46 @@ for PLAYER in ${PLAYERONE[@]}; do
#################################################
################### COPY DATA TO UP LEVEL GRIDS
#################################################
if [[ ${LAT} && ${LON} ]]; then
## SECTOR BANK COORD
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
## REGION
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
## SECTOR BANK COORD
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
## REGION
REGLAT=$(echo ${LAT} | cut -d '.' -f 1)
REGLON=$(echo ${LON} | cut -d '.' -f 1)
echo "/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}"
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
echo "/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}"
## IPFSNODEID 12345 CACHE UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
cp ~/.zen/game/players/${PLAYER}/ipfs/${PLAYER}.rss.json \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
#### CREATE ALL JSON COMPILATION
${MY_PATH}/../tools/json_dir.all.sh \
~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
${MY_PATH}/../tools/json_dir.all.sh ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/RSS/
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/TW/${PLAYER}
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='/ipns/${TODATENS}'\" />" > ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/_index.html
fi
## IPFS PLAYER TW #
mkdir -p ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${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/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${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/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${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/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON}/_index.html
ls -al ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${REGLAT}_${REGLON}/_${SECLAT}_${SECLON}/_${LAT}_${LON} 2>/dev/null
echo "(☉_☉ ) (☉_☉ ) (☉_☉ )"
#####################################################################
## DAY=7 : SEND 3.1 G1 to PLAYER + 3.1 G1 to UMAP
[[ ${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" "3.1" "${G1PUB}" "UPLANET:WELCOME:${MIUSER}:${YOUSER}" \
&& echo "UPLANET:WELCOME:${MIUSER}:${YOUSER}" && echo "(⌐■_■) ~~~ OFFICIAL ~~ _${LAT}_${LON} ~~~ $ASTRONAUTENS"
## MAINTAIN R/RW TW STATE
[[ ${ASTRONS} == "" ]] \
&& echo "${PLAYER} DISCONNECT" \
@ -418,6 +636,10 @@ for PLAYER in ${PLAYERONE[@]}; do
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."

View File

@ -30,7 +30,9 @@ mkdir -p ~/.zen/tmp/${MOATS}
--render '.' 'GPS.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'GPS' ## GPS Tiddler
TWMAPNS=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].umap)
LAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
[[ $LAT == "null" || $LAT == "" ]] && LAT="0.00"
LON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
[[ $LON == "null" || $LON == "" ]] && LON="0.00"
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${TWMAPNS}"
rm ~/.zen/tmp/${MOATS}/GPS.json
@ -57,22 +59,23 @@ mkdir -p ~/.zen/tmp/${MOATS}
ALL="ALL"
[[ $ONE == "ONE" ]] && ALL=1
[[ $ALL == "ALL" ]] && SECTORG1PUB=${WORLDG1PUB} && echo "DEST = WORLDG1PUB"
[[ $ALL == "ALL" ]] && SECTORG1PUB=${WORLDG1PUB} && echo "DEST = WORLDG1PUB: ${WORLDG1PUB}"
[[ ! -z ${SECTORG1PUB} ]] \
&& echo "> PAY4SURE ZEN:${ALL} WALLET MOVE" \
&& ${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${ALL}" "${SECTORG1PUB}" "UNPLUG:${ALL}"
## REMOVING PLAYER from ASTROPORT
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
ipfs key rm ${PLAYER}; ipfs key rm ${PLAYER}_feed; ipfs key rm ${G1PUB};
for vk in $(ls -d ~/.zen/game/players/${PLAYER}/voeux/*/* 2>/dev/null | rev | cut -d / -f 1 | rev); do
echo "removing wish ${vk}"
ipfs key rm ${vk}
[[ ${vk} != "" ]] && ipfs key rm ${vk}
done
## SEND PLAYER LAST KNOW TW
TW=$(ipfs add -Hq ${INDEX} | tail -n 1)
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" "<html><body><h1>Ciao ${PLAYER},</h1> Your TW is unplugged from Astroport : <a href='${myIPFSGW}/ipfs/${TW}'>TW ARCHIVE</a>.<br>$(cat ~/.zen/game/players/${PLAYER}/secret.june)<br><h3>May the force be with you.</h3></body></html>" "BYE BYE MESSAGE"
${MY_PATH}/../tools/mailjet.sh "${PLAYER}" "<html><body><h1>Ciao ${PLAYER},</h1> Your TW is unplugged from Astroport : <a href='/ipfs/${TW}'>TW (${TW})</a>.<br>$(cat ~/.zen/game/players/${PLAYER}/secret.june)<br><h3>May the force be with you.</h3></body></html>" "BYE BYE MESSAGE"
echo "PLAYER IPNS KEYS UNPLUGED"
echo "#######################"

View File

@ -31,9 +31,15 @@ for i in $*; do
UMAPS=("$i" ${UMAPS[@]})
done
[[ ${#UMAPS[@]} == 0 ]] && UMAPS="_0.00_0.00"
## NO $i PARAMETERS - GET ALL UMAPS
if [[ ${#UMAPS[@]} == 0 ]]; then
MEMAPS=($(ls -td ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
SWARMMAPS=($(ls -Gd ~/.zen/tmp/swarm/*/UPLANET/__/_*_*/_*.?_*.?/* 2>/dev/null | rev | cut -d '/' -f 1 | rev | sort | uniq))
combined=("${MEMAPS[@]}" "${SWARMMAPS[@]}")
UMAPS=($(echo "${combined[@]}" | tr ' ' '\n' | sort -u))
fi
######## INIT REGIONS ########################
######## DETERMINE REGIONS FOR ALL UMAPS ################
for UMAP in ${UMAPS[@]}; do
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
@ -57,8 +63,8 @@ REGIONS=($(echo "${MYREGIONS[@]}" | tr ' ' '\n' | sort -u))
echo "ACTIVATED REGIONS : ${REGIONS[@]}"
for REGION in ${REGIONS[@]}; do
echo "_____REGION ${REGION}"
echo "-------------------------------------------------------------------"
echo "_____REGION ${REGION} $(date)"
mkdir -p ~/.zen/tmp/${MOATS}/${REGION}
REGLAT=$(echo ${REGION} | cut -d '_' -f 2)
REGLON=$(echo ${REGION} | cut -d '_' -f 3)
@ -94,7 +100,8 @@ for REGION in ${REGIONS[@]}; do
## GET from IPNS
ipfs --timeout 240s 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/_${REGLAT}_${REGLON}.week.rss.json
@ -137,7 +144,7 @@ for REGION in ${REGIONS[@]}; do
###################################
## NODE PUBLISH REGION TODATENS LINK
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />" \
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATEREGIONNS}'\" />/_${REGLAT}_${REGLON}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/REGIONS/_${REGLAT}_${REGLON}/_index.html
#~ ## DEMO : PREPARE Ask.IA link - PROD will be launched during RUNTIME.
@ -148,7 +155,7 @@ for REGION in ${REGIONS[@]}; do
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo "Numbers of REGION WEEK RSS : ${NL} + ${NS} : "${TOTL}
rm ~/.zen/tmp/${MOATS}/${REGION}/N_*
rm ~/.zen/tmp/${MOATS}/${REGION}/N_* 2>/dev/null
echo ${TOTL} > ~/.zen/tmp/${MOATS}/${REGION}/N_${TOTL}
@ -162,7 +169,7 @@ for REGION in ${REGIONS[@]}; do
fi
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1)
ipfs name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
ipfs --timeout 180s name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${REGIONG1PUB} ${YESTERDATE}${REGIONG1PUB} > /dev/null 2>&1

View File

@ -18,14 +18,16 @@ 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 "BAD UPLANET CONTEXT" && exit 1
[[ ! -s ${INDEX} ]] \
&& sed "s~_SECTOR_~${SECTOR}~g" ${MY_PATH}/../templates/twsector.html > ${INDEX} \
&& echo "REFRESHING SECTOR FROM empty TEMPLATE *****"
echo
echo
## EXTRACT PLAYER FROM RSS FILE NAME
PLAYER=$(echo ${RSS} | rev | cut -d '/' -f 1 | rev | sed "s~.rss.json~~g")
## GET PLAYER INFORMATION
@ -43,10 +45,10 @@ signatures=0
while read title; do
[[ ${floop} -gt 2 ]] && echo "0lder Tiddlers are similaR... BREAK" && break
[[ ${floop} -gt 1 ]] && echo "0lder Tiddlers are similaR... BREAK LOOP" && break
# FILTER Astroport and les than 4 characters title Tiddlers (ex: GPS, ...). extend to allow personnal Tiddlers
[[ ${title} == "GettingStarted" || ${title::4} == ${title} || ${title} == "AstroID" || ${title} == "Voeu1.png" || ${title} == "Astroport" || ${title} == "MadeInZion" || ${title} == "G1Visa" || ${title} == "ZenCard" || ${title::5} == "Draft" ]] \
# 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
@ -59,7 +61,7 @@ while read title; do
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)"
#~ echo "INSIDE TIDDLER HAVE ${TMPSIGN} SIGNATURE(S)"
if [[ "${ISHERE}" != "${title}" || ${TMPSIGN} == 0 ]]; then
@ -79,32 +81,34 @@ while read title; do
&& rm ${INDEX} \
&& mv ~/.zen/tmp/${MOATS}/${SECTOR}/${SECTOR}.html ${INDEX} \
&& ((gloops++)) \
&& echo "SECTOR (${gloops}) : ${title}" \
&& echo "GLOOPS (${gloops}) : ${title}" \
&& signatures=$((signatures + TMPSIGN))
[[ ! -s ${INDEX} ]] && echo "ERROR. TW did not ingest ~/.zen/tmp/${MOATS}/NEW.json" && exit 1
[[ ! -s ${INDEX} ]] && echo "ERROR. TW could not ingest ~/.zen/tmp/${MOATS}/NEW.json" && exit 1
else
## SAME TIDDLER
echo "TIDDLER WITH TITLE $title and more than 1 signature ALREADY EXISTS..."
echo "TIDDLER : $title (${TMPSIGN} signature(s)) ... ALREADY EXISTS..."
cat ~/.zen/tmp/${MOATS}/TMP.json | jq .[] > ~/.zen/tmp/${MOATS}/INSIDE.json
## 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
if [[ $(diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json) == "" ]]; then
echo "... Tiddlers are similar ..."
((floop++))
continue
fi
floop=1
echo
echo "=========== INSIDE.json"
cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -c
echo
echo "=========== NEW.json"
cat ~/.zen/tmp/${MOATS}/NEW.json | jq -c
echo
## 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
@ -119,6 +123,12 @@ while read title; do
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
@ -150,6 +160,9 @@ while read title; do
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>
@ -163,35 +176,43 @@ echo "<html>
}
</style></head>
<body>
<h1>(ᵔ◡◡ᵔ)</h1>
<h1>$(date)</h1>
Tiddler with same title is existing in ${unique_combined[*]} TW(s)
<h2>$title</h2>
Tiddler appears in <b>${unique_combined[*]}</b> TW(s)
<br>
<ul>
<li>$title</li>
<li><a href='$(myIpfsGw)/ipfs/${INSIDETID}'>Actual Tiddler</a></li>
<li><a href='$(myIpfsGw)/ipfs/${NEWTID}'>NEW Tiddler</a> being introduced by : ${NUNIQUE[*]}</li>
</ul>
<br>
To Accept<br>
${COMMON[*]} have to copy <a href='$(myIpfsGw)/ipfs/${NEWTID}'>NEW Tiddler</a> in their TW
MERGE : <br>
${COMMON[*]} import <a href='$(myIpfsGw)/ipfs/${NEWTID}'>NEW Tiddler</a> in your TW
<br><br>
To Refuse<br>
${NUNIQUE[*]} must fork by deleting or modifying New Tiddler title.
or FORK : <br>
${NUNIQUE[*]} by deleting or modifying New Tiddler title.
<br>
<h2><a href='$(myIpfsGw)${VDONINJA}/?room=${MOATS}'>Actual Tiddler</a>Engage discussion about it...</a></h2>
<h2><a href='$(myIpfsGw)${VDONINJA}/?room=${MOATS}'>Arrange a Video Meeting...</a></h2>
</body></html>" > ~/.zen/tmp/${MOATS}/g1message
${MY_PATH}/../tools/mailjet.sh "$email" ~/.zen/tmp/${MOATS}/g1message "TIDDLER COLLISION"
${MY_PATH}/../tools/mailjet.sh "$email" ~/.zen/tmp/${MOATS}/g1message "COLLISION ${title} : ${unique_combined[*]}"
done
## TITLE FORK TO BE SOLVED. NEED "SAME EMAILS SIGNATURES"
continue
## TITLE FORK TO BE SOLVED. NEED "SAME EMAILS SIGNATURES"
continue
else
echo "SIGNATURES ARE THE SAME : ${NEMAILS[*]}"
fi
## CHECK DIFFERENCE
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)
@ -205,7 +226,7 @@ To Refuse<br>
if [ ${DATENEW} -gt ${DATEINSIDE} ]; then
echo "Newer Tiddler version... Updating TW"
echo "Newer Tiddler version... Updating SECTOR TW"
tiddlywiki --load ${INDEX} \
--import ~/.zen/tmp/${MOATS}/NEW.json "application/json" \

View File

@ -60,8 +60,9 @@ 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)
@ -74,6 +75,7 @@ for SECTOR in ${SECTORS[@]}; do
COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1)
ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1)
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}"
ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT
SECTORNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${SECTOR}.priv)
@ -97,22 +99,21 @@ for SECTOR in ${SECTORS[@]}; do
start=`date +%s`
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#~ ## IPFS GET ONLINE YESTERDATE SECTORNS
ipfs --timeout 240s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/
if [[ $? != 0 ]]; then
echo "(╥☁╥ ) swarm memory empty (╥☁╥ )"
# Try retieve memory from UPlanet Zen Memory
[[ ${ZEN} -gt 0 ]] \
&& echo "INTERCOM Refreshing from ZEN MEMORY" \
&& ${MY_PATH}/../RUNTIME/ZEN.SECTOR.memory.sh "${SECTOR}" "${MOATS}"
&& ${MY_PATH}/../RUNTIME/ZEN.SECTOR.memory.sh "${SECTOR}" "${MOATS}" "${G1PUB}"
fi
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end=`date +%s`
echo "_____SECTOR${SECTOR} GET time was "`expr $end - $start` seconds.
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
### ZEN
### 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)
@ -169,6 +170,15 @@ for SECTOR in ${SECTORS[@]}; do
mv ${UREFRESH}.shuf ${UREFRESH}
echo "SETTING NEXT REFRESHER : $(cat ${UREFRESH} | head -n 1)"
############ 101 ZEN 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
@ -183,6 +193,15 @@ for SECTOR in ${SECTORS[@]}; do
## 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))
NL=${#RSSNODE[@]}
@ -216,7 +235,6 @@ for SECTOR in ${SECTORS[@]}; do
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
###########################################################################################
@ -230,8 +248,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
@ -272,7 +290,7 @@ for SECTOR in ${SECTORS[@]}; do
## 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}"'"' \
-pointsize 30 -fill purple -draw 'text 40, 180 "'"${SECTOR}:${YESTERDATE}"'"' \
$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}/
@ -338,7 +356,7 @@ for SECTOR in ${SECTORS[@]}; do
###############################
echo "% PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}"
start=`date +%s`
ipfs name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
ipfs --timeout 240s name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP}
ipfs key rm ${YESTERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1
######################################################
@ -356,7 +374,7 @@ for SECTOR in ${SECTORS[@]}; do
###################################
## NODE CACHE SECTOR TODATENS
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATENS}'\" />" \
echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${TODATENS}'\" />_${SLAT}_${SLON}" \
> ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${REGLAT}_${REGLON}/_${SLAT}_${SLON}/_index.html
## TODO FILTER INFORMATION WITH MULTIPLE SIGNATURES (DONE in REGION.refresh.sh)

View File

@ -18,7 +18,7 @@ echo "
-------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
(__)\ )\\/\\
||----w |
|| ||
@ -49,7 +49,8 @@ for UMAP in ${unique_combined[@]}; do
start=`date +%s`
echo
echo "____________REFRESHING ${UMAP}__________"
echo "-------------------------------------------------------------------"
echo "____________REFRESHING ${UMAP}__________ $(date)"
LAT=$(echo ${UMAP} | cut -d '_' -f 2)
LON=$(echo ${UMAP} | cut -d '_' -f 3)
@ -77,37 +78,40 @@ for UMAP in ${unique_combined[@]}; do
## ORIGIN ##########################################################
## CALCULATE INITIAL UMAP GEOSPACIAL IPNS KEY
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${UMAP}.priv "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}"
ipfs key rm ${G1PUB} > /dev/null 2>&1
UMAPNS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/${UMAP}.priv)
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}"
${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}"
${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}"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start=`date +%s`
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo "## IPFS GET YESTERDATENS"
mkdir ~/.zen/tmp/${MOATS}/${UMAP}
ipfs --timeout 240s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
echo "## IPFS GET YESTERDATENS"
ipfs --timeout 300s get -o ~/.zen/tmp/${MOATS}/${UMAP}/ /ipns/${YESTERDATENS}/
if [[ $? != 0 ]]; then
echo "(╥☁╥ ) swarm memory empty (╥☁╥ )"
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}"
&& ${MY_PATH}/../RUNTIME/ZEN.UMAP.memory.sh "${UMAP}" "${MOATS}" "${G1PUB}"
fi
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end=`date +%s`
echo "_____UMAP${UMAP} GET time was "`expr $end - $start` seconds.
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
## FORMAT CONTROL WARNING
@ -147,15 +151,15 @@ for UMAP in ${unique_combined[@]}; do
[[ ! $(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 "
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
@ -171,12 +175,12 @@ for UMAP in ${unique_combined[@]}; do
echo "------8<-------------8<------------------8<-----------------8<-----------------8<"
continue
fi
########################################
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PASSING THERE MAKE IPFSNODEID UMAP REFRESHER
################################################################################
# ~~~~~~~~~~~~~ GOING FURTHER ~~~ MEANS IPFSNODEID IS UMAP REFRESHER ~~~~~~~~~~~
################################################################################
## NEXT REFRESHER
# TODO: INTRODUCE NODE BALANCE AND CHOOSE THE MOST CONFIDENT ONE
rm ${UREFRESH}
rm ${UREFRESH}
for STRAP in ${STRAPS[@]}; do
echo ${STRAP} >> ${UREFRESH} ## FILL UMAP.refresher file with all STRAPS
done
@ -187,6 +191,14 @@ for UMAP in ${unique_combined[@]}; do
echo ">> NEXT REFRESHER WILL BE $(cat ${UREFRESH} | head -n 1)"
######################################################## # NODE SELECTION in UMAP.refresher
############ 101 ZEN 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 " ~~~ (♥‿‿♥) ~~ _${LAT}_${LON} ~~ (♥‿‿♥) ~~~ "
# %%%%%%%%%% ##################################################
## SECTOR LINKING >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>${SLAT}_${SLON}
# %%%%%%%%%% ##################################################
@ -229,6 +241,70 @@ 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
####################################################################################
######################## 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/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_next.umapns
## IN UMAP KEY PUBLICATION
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_next.umapns \
~/.zen/tmp/${MOATS}/${UMAP}/
## 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/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_next.sectorns
## IN UMAP KEY PUBLICATION
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_next.sectorns \
~/.zen/tmp/${MOATS}/${UMAP}/
## 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/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_next.regionns
## IN UMAP KEY PUBLICATION
cp ~/.zen/tmp/${IPFSNODEID}/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/_next.regionns \
~/.zen/tmp/${MOATS}/${UMAP}/
####################################################################################
## TODATE DATA
####################################################################################
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
####################################################################################
# %%%%%%%%%% ##################################################
## COLLECT RSS FROM ALL PLAYERS WITH SAME UMAP IN SWARM MEMORY /UPLANET/__/_*_*/_*.?_*.?/_*.??_*.??
# %%%%%%%%%% ##################################################
@ -400,6 +476,8 @@ for UMAP in ${unique_combined[@]}; do
-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}\&deg=0.01~g" \
-e "s~http://127.0.0.1:8080~~g" \
@ -430,7 +508,7 @@ for UMAP in ${unique_combined[@]}; do
## ZEN CHAINING
# Send 1 Zen to UPlanet SECTORG1PUB Wallet containing REGION TW HASH
INTERCOM="UPLANET:${UMAP}:${TODATE}:/ipfs/${UMAPROOT}"
echo "> INTERCOM ${INTERCOM} (${ZEN} ZEN)"
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}"
@ -444,7 +522,7 @@ for UMAP in ${unique_combined[@]}; do
echo "PUBLISHING ${TODATE} UMAPROOT : ${myIPFS}/ipfs/${UMAPROOT}"
ipfs name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
ipfs --timeout 300s name publish --key=${TODATE}${G1PUB} /ipfs/${UMAPROOT}
end=`date +%s`
echo "(UMAP) ${UMAP} ${TODATE} PUBLISH time was "`expr $end - $start` seconds.

View File

@ -19,29 +19,33 @@ SALT="$1"
PEPPER="$2"
PLAYER="$3"
PSEUDO="$4"
[[ $PSEUDO == "" ]] && PSEUDO="Anonymous"
## Fill UP TW with VIDEO URL or UMAP NS
URL="$5"
[[ $URL == "" ]] && URL="_URL_"
## UPLANET SECTOR
## UPLANET UMAP
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/bafybeiewwxkmiojbskcqhbj2gbkde3czkeqftn6fgvwoa7ez5n5whido3q"
# ipfs cat $TWMODEL > templates/twdefault.html
MINIMAL="/ipfs/bafybeifnlpnvpxxnblgwefoflmdnt2vhckmnu22orsi43zilh2v4sbegjy"
# ipfs cat $MINIMAL > templates/twuplanet.html
#~ TWMODEL="/ipfs/bafybeid7xwuqkgyiffehs77x3wky3dghjncxepr5ln6dewapgvbwrqi7n4"
#~ # ipfs cat $TWMODEL > templates/twdefault.html
TWUPLANET="/ipfs/bafybeigpwapdih24vnakummoyj6vodxiem4i6ezp5hxa35yt3paxpqz53y" ## WITH LIGHTBEAMS SAVER
TWUPLANET="/ipfs/bafybeicquhlstbogaxgx2bwqjra5zlmfg33ciengwwy62w5myucaxksuli" ## WITH IPFS SAVER
# ipfs cat $TWUPLANET > templates/twuplanet.html
################################################################################
mkdir -p ~/.zen/tmp/${MOATS}/TW
## Chargement TW !!!
## TEST chargement ONLINE TW !!!
if [[ $SALT != "" && PEPPER != "" ]]; then
## Creating SALT/PEPPER IPNS KEY
@ -57,22 +61,22 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
[[ $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
&& read ENTER
# 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}"
if [[ $ENTER != "" ]]; then
# BACKUP tiddlers
tiddlywiki --load ~/.zen/tmp/${MOATS}/TW/index.html --output ~/.zen/tmp \
--render '.' 'backup.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[!is[system]]'
rm ~/.zen/tmp/${MOATS}/TW/index.html
echo ">> Tiddlers Backup : ~/.zen/tmp/backup.json"
fi
#############################################
## AUCUN RESULTAT
if [ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]; 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
cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html
else
#############################################
@ -80,10 +84,11 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
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)
HPass=$(cat ~/.zen/tmp/${MOATS}/AstroID.json | jq -r .[].HPASS)
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
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)
@ -98,7 +103,7 @@ if [[ $SALT != "" && PEPPER != "" ]]; then
else
echo ">> NO ACTIVE TW - CREATING FRESH NEW ONE"
cp ${MY_PATH}/../templates/twdefault.html ~/.zen/tmp/${MOATS}/TW/index.html
cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/index.html
fi
@ -124,7 +129,7 @@ fi
[[ $SALT == "" ]] && SALT=$(${MY_PATH}/../tools/diceware.sh 4 | xargs)
#~ echo "-> ID : $SALT"
[[ $PEPPER == "" ]] && PEPPER=$(${MY_PATH}/../tools/diceware.sh 2 | xargs)
[[ $PEPPER == "" ]] && PEPPER=$(${MY_PATH}/../tools/diceware.sh 4 | xargs)
#~ echo "-> PASS : $PEPPER"
[[ ! $PSEUDO ]] && PSEUDO=${PLAYER%%[0-9]*}
@ -132,8 +137,9 @@ 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
[[ ! ${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,,}
@ -141,341 +147,324 @@ 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)
[[ ! $G1PUB ]] && echo "Désolé. clef Cesium absente. ERROR" && exit 1
## CREATE Player personnal files storage and IPFS publish directory
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
## CREATE Player personnal files storage and IPFS publish directory
mkdir -p ~/.zen/game/players/${PLAYER}/.ipfs # Prepare PLAYER datastructure
echo "/ip4/127.0.0.1/tcp/5001" > ~/.zen/game/players/${PLAYER}/.ipfs/api
# 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)"
## 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}/
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"
[[ $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
${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)
## 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
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}"
############################################################################
## SEC PASS PROTECTED QRCODE : base58 secret.june / openssl(pass)
#~ 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}"
[[ $isLAN ]] && NID="http://ipfs.localhost:8080" \
&& WID="http://ipfs.localhost:5001"
## 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
rm ~/.zen/tmp/${MOATS}/topgp
#~ openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in ~/.zen/game/players/${PLAYER}/secret.june -out "$HOME/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec" -k "$PASS"
#~ PASsec=$(cat ~/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec | base64 -w 0 | jq -sRr '@uri' )
#~ HPass=$(echo "$PASS" | sha512sum | cut -d ' ' -f 1)
#~ qrencode -s 12 -o $HOME/.zen/game/players/${PLAYER}/QRsec.png $PASsec
####
## Add logo to QRCode
cp ${MY_PATH}/../images/astrologo_nb.png ~/.zen/tmp/${MOATS}/fond.png
mv ~/.zen/tmp/${MOATS}/secret.dunikey ~/.zen/game/players/${PLAYER}/
## ASTROID ~~~~~
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} \
-l H \
-p ~/.zen/tmp/${MOATS}/fond.png 1>/dev/null
# 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)
## ADD PLAYER EMAIL
convert -gravity northwest -pointsize 28 -fill black -draw "text 5,5 \"$PLAYER\"" ~/.zen/tmp/${MOATS}/fond_qrcode.png ~/.zen/game/players/${PLAYER}/result_qrcode.png
convert ~/.zen/game/players/${PLAYER}/result_qrcode.png -resize 480 ~/.zen/game/players/${PLAYER}/AstroID.png
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"
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}"
############################################################################
## SEC PASS PROTECTED QRCODE : base58 secret.june / openssl(pass)
#~ secFromDunikey=$(cat ~/.zen/game/players/${PLAYER}/secret.dunikey | grep "sec" | cut -d ' ' -f2)
#~ echo "$secFromDunikey" > ~/.zen/tmp/${MOATS}/${PSEUDO}.sec
## 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
rm ~/.zen/tmp/${MOATS}/topgp
#~ openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in ~/.zen/game/players/${PLAYER}/secret.june -out "$HOME/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec" -k "$PASS"
#~ PASsec=$(cat ~/.zen/tmp/${MOATS}/enc.${PSEUDO}.sec | base64 -w 0 | jq -sRr '@uri' )
#~ HPass=$(echo "$PASS" | sha512sum | cut -d ' ' -f 1)
#~ qrencode -s 12 -o $HOME/.zen/game/players/${PLAYER}/QRsec.png $PASsec
## Add logo to QRCode
cp ${MY_PATH}/../images/astrologo_nb.png ~/.zen/tmp/${MOATS}/fond.png
## 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} \
-l H \
-p ~/.zen/tmp/${MOATS}/fond.png 1>/dev/null
## ADD PLAYER EMAIL
convert -gravity northwest -pointsize 28 -fill black -draw "text 5,5 \"$PLAYER\"" ~/.zen/tmp/${MOATS}/fond_qrcode.png ~/.zen/game/players/${PLAYER}/result_qrcode.png
convert ~/.zen/game/players/${PLAYER}/result_qrcode.png -resize 480 ~/.zen/game/players/${PLAYER}/AstroID.png
ASTROQR="/ipfs/$(ipfs add -q $HOME/.zen/game/players/${PLAYER}/AstroID.png | tail -n 1)"
ASTROQR="/ipfs/$(ipfs add -q $HOME/.zen/game/players/${PLAYER}/AstroID.png | tail -n 1)"
############################################################################ TW
### INITALISATION WIKI dans leurs répertoires de publication IPFS
mkdir -p ~/.zen/game/players/${PLAYER}/ipfs/moa/
### 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/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
[[ ! -s ~/.zen/tmp/${MOATS}/TW/index.html ]] \
&& cp ${MY_PATH}/../templates/twuplanet.html ~/.zen/tmp/${MOATS}/TW/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'
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
sed -i "s~${ASTROPORT}~/ipns/${IPFSNODEID}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
sed "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/tmp/${MOATS}/TW/index.html \
> ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
# TW CHAIN INIT WITH TWMODEL
sed -i "s~_MOATS_~${MOATS}~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
# 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'
ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
sed -i "s~${ASTROPORT}~/ipns/${IPFSNODEID}~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} != "" ]] && SRCPASS=${HPass} || SRCPASS="_HPASS_"
sed -i "s~${SRCPASS}~${HPASS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
# 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
## 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
## AND HACK QRCODE.sh FOR _PGP KEY_ TO VERIFY LAST HASH OF PROVIDED PASS
HPASS=$(echo $PASS | sha512sum | cut -d ' ' -f 1)
[[ ${HPass} != "" ]] && SRCPASS=${HPass} || SRCPASS="_HPASS_"
sed -i "s~${SRCPASS}~${HPASS}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## Fill LNK - Tiddler - escape \&
sed -i "s~_URL_~$(echo "${URL}" | sed 's/[&/]/\\&/g')~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
# INSERT PLAYER DATA
sed -i "s~_PLAYER_~${PLAYER}~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
## Fill LNK - Tiddler - escape \&
sed -i "s~_URL_~$(echo "${URL}" | sed 's/[&/]/\\&/g')~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
# INSERT PLAYER DATA
sed -i "s~_PLAYER_~${PLAYER}~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~_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
# 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~_G1PUB_~${G1PUB}~g" \
-e "s~_ASTRONAUTENS_~${ASTRONAUTENS}~g" \
-e "s~_HPASS_~${HPASS}~g" \
> ~/.zen/tmp/${MOATS}/AstroID.json
## 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
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"
## 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}"
sed -i "s~_SECTOR_~${SECTOR}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
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'
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
sed -i "s~${OUMAP}~${UMAP}~g" ~/.zen/tmp/${MOATS}/GPS.json
fi
# 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'
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)
## TODATE #########################################
TODATESECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${TODATE}${UPLANETNAME}${SECTOR}" "${TODATE}${UPLANETNAME}${SECTOR}")
DEMAINSECTORNS=$(${MY_PATH}/../tools/keygen -t ipfs "${DEMAINDATE}${UPLANETNAME}${SECTOR}" "${DEMAINDATE}${UPLANETNAME}${SECTOR}")
OLAT=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lat)
OLON=$(cat ~/.zen/tmp/${MOATS}/GPS.json | jq -r .[].lon)
# 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
###########
## 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_"
## 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}"
## 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)
#~ 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}/bafybeiewwxkmiojbskcqhbj2gbkde3czkeqftn6fgvwoa7ez5n5whido3qsecret.dunikey.$G1PUB.enc | base16)
sed -i "s~${OLD16}~${ENCODING}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
# 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
#~ echo "DEBUG : $(cat $HOME/.zen/tmp/${MOATS}/crypto.2)"
###########
## CRYPTO PROCESS VALIDATED
[[ -s ~/.zen/tmp/${MOATS}/crypto.2 ]] && echo "NATOOLS LOADED STATION TW KEY " \
|| echo "NATOOLS ERRORS - CHECK STATION" # MACHINEPUB CRYPTO ERROR
# TODO : MAKE NODE FORGET PASS THEN DECODE ${PLAYER}/secret.june 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)
sed -i "s~${OLD16}~${ENCODING}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
echo "ENCODING: ${ENCODING}"
# IN CASE ORIGINAL STATION NEEDS ACCESS # COULD BE REMOVED ?
###########
#~ 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
#~ echo "DEBUG : $(cat $HOME/.zen/tmp/${MOATS}/crypto.2)"
###########
## CRYPTO PROCESS VALIDATED
[[ -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
OSECTOR=$(cat ~/.zen/tmp/${MOATS}/MadeInZion.json | jq -r .[].sector)
[[ ${OSECTOR} != "null" ]] && sed -i "s~${OSECTOR}~${SECTOR}~g" ~/.zen/tmp/${MOATS}/MadeInZion.json
### CREATE ${NID} ADDRESS FOR API & ROUND ROBIN FOR GW
cat ${MY_PATH}/../templates/data/local.api.json | sed "s~_NID_~${WID}~g" > ~/.zen/tmp/${MOATS}/local.api.json
cat ${MY_PATH}/../templates/data/local.gw.json | sed "s~_NID_~${NID}~g" > ~/.zen/tmp/${MOATS}/local.gw.json
### CREATE ${NID} ADDRESS FOR API & ROUND ROBIN FOR GW
cat ${MY_PATH}/../templates/data/local.api.json | sed "s~_NID_~${WID}~g" > ~/.zen/tmp/${MOATS}/local.api.json
cat ${MY_PATH}/../templates/data/local.gw.json | sed "s~_NID_~${NID}~g" > ~/.zen/tmp/${MOATS}/local.gw.json
# Create"${PLAYER}_feed" Key ! DERIVATED ! "$SALT" "$PEPPER $G1PUB"
${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)
# 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)
## MAKE LightBeam Plugin Tiddler ${PLAYER}_feed
# $:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key
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
## MAKE LightBeam Plugin Tiddler ${PLAYER}_feed
# $:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key
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
## 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}/local.api.json "application/json" \
--import ~/.zen/tmp/${MOATS}/local.gw.json "application/json" \
--import ~/.zen/tmp/${MOATS}/GPS.json "application/json" \
--import ~/.zen/tmp/${MOATS}/AstroID.json "application/json" \
--import ~/.zen/tmp/${MOATS}/MadeInZion.json "application/json" \
--import "${MY_PATH}/../templates/tw/\$ _ipfs_saver_api.json" "application/json" \
--import "${MY_PATH}/../templates/tw/\$ _ipfs_saver_gateway.json" "application/json" \
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "tw.html" "text/plain"
#~ 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" \
--import ~/.zen/tmp/${MOATS}/AstroID.json "application/json" \
--import ~/.zen/tmp/${MOATS}/MadeInZion.json "application/json" \
--import "${MY_PATH}/../templates/tw/\$ _ipfs_saver_api.json" "application/json" \
--import "${MY_PATH}/../templates/tw/\$ _ipfs_saver_gateway.json" "application/json" \
--output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "tw.html" "text/plain"
## COPY TO LOCAL & 12345 IPFSNODEID MAP
[[ -s ~/.zen/tmp/${MOATS}/tw.html ]] \
&& cp -f ~/.zen/tmp/${MOATS}/tw.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
&& mkdir -p ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
&& cp ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/ \
|| ( echo "Problem with TW - EXIT" && exit 1 )
## COPY TO LOCAL & 12345 IPFSNODEID MAP
[[ -s ~/.zen/tmp/${MOATS}/tw.html ]] \
&& cp -f ~/.zen/tmp/${MOATS}/tw.html ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html \
&& mkdir -p ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
&& cp ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/ \
|| ( echo "Problem with TW - EXIT" && exit 1 )
############################################################################ G1TW
#### MAKE G1TW
[[ -s ~/.zen/G1BILLET/MAKE_G1BILLET.sh ]] && \
~/.zen/G1BILLET/MAKE_G1BILLET.sh "$SALT" "$PEPPER" "___" "$G1PUB" "${PASS}" "${PSEUDO-xastro}" "$ASTRONAUTENS" "$PLAYER"
[[ -s ~/.zen/G1BILLET/MAKE_G1BILLET.sh ]] && \
~/.zen/G1BILLET/MAKE_G1BILLET.sh "$SALT" "$PEPPER" "___" "$G1PUB" "${PASS}" "${PSEUDO-xastro}" "$ASTRONAUTENS" "$PLAYER"
#### MADE # BILLETNAME=$(echo "$SALT" | sed 's/ /_/g') ##
# IMAGE ~/.zen/G1BILLET/tmp/g1billet/${PASS}/${BILLETNAME}.BILLET.jpg
############################################################################
## MAKE IMAGE AVATAR WITH G1PUB QRCODE
if [[ $(which amzqr) ]]; then
## MAKE IMAGE AVATAR WITH G1PUB QRCODE
if [[ $(which amzqr) ]]; then
GIMG="${MY_PATH}/../images/moa_net.png"
CIMG="${MY_PATH}/../images/zenticket.png"
GIMG="${MY_PATH}/../images/moa_net.png"
CIMG="${MY_PATH}/../images/zenticket.png"
# QRG1avatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] && amzqr "${G1PUB}" -l H -p "$CIMG" -c -n QRG1avatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
# QRTWavatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] && amzqr "${myIPFSGW}/ipns/${ASTRONAUTENS}" -l H -p "$GIMG" -c -n QRTWavatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
# QRG1avatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] && amzqr "${G1PUB}" -l H -p "$CIMG" -c -n QRG1avatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
# QRTWavatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] && amzqr "${myIPFSGW}/ipns/${ASTRONAUTENS}" -l H -p "$GIMG" -c -n QRTWavatar.png -d ~/.zen/game/players/${PLAYER}/ 1>/dev/null
else
else
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] \
&& cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/QRG1avatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRG1avatar.png ]] \
&& cp ~/.zen/game/players/${PLAYER}/QR.png ~/.zen/game/players/${PLAYER}/QRG1avatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] \
&& cp ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png ~/.zen/game/players/${PLAYER}/QRTWavatar.png
[[ ! -s ~/.zen/game/players/${PLAYER}/QRTWavatar.png ]] \
&& cp ~/.zen/game/players/${PLAYER}/QR.ASTRONAUTENS.png ~/.zen/game/players/${PLAYER}/QRTWavatar.png
fi
fi
## ID CARD & QRCODE
convert ~/.zen/game/players/${PLAYER}/QRG1avatar.png -resize 300 ~/.zen/tmp/${MOATS}/QR.png 2>/dev/null
convert ~/.zen/game/players/${PLAYER}/QRTWavatar.png -resize 240 ~/.zen/tmp/${MOATS}/TW.png 2>/dev/null
convert ${MY_PATH}/../images/astroport.jpg -resize 240 ~/.zen/tmp/${MOATS}/ASTROPORT.png 2>/dev/null
## ID CARD & QRCODE
convert ~/.zen/game/players/${PLAYER}/QRG1avatar.png -resize 300 ~/.zen/tmp/${MOATS}/QR.png 2>/dev/null
convert ~/.zen/game/players/${PLAYER}/QRTWavatar.png -resize 240 ~/.zen/tmp/${MOATS}/TW.png 2>/dev/null
convert ${MY_PATH}/../images/astroport.jpg -resize 240 ~/.zen/tmp/${MOATS}/ASTROPORT.png 2>/dev/null
composite -compose Over -gravity SouthEast -geometry +5+5 ~/.zen/tmp/${MOATS}/ASTROPORT.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/${MOATS}/astroport.png 2>/dev/null
composite -compose Over -gravity NorthEast -geometry +10+55 ~/.zen/tmp/${MOATS}/TW.png ~/.zen/tmp/${MOATS}/astroport.png ~/.zen/tmp/${MOATS}/astroport2.png 2>/dev/null
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/${MOATS}/QR.png ~/.zen/tmp/${MOATS}/astroport2.png ~/.zen/tmp/${MOATS}/one.png 2>/dev/null
convert -gravity SouthWest -pointsize 12 -fill black -draw "text 5,3 \"$G1PUB\"" ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/txt.png
composite -compose Over -gravity SouthEast -geometry +5+5 ~/.zen/tmp/${MOATS}/ASTROPORT.png ${MY_PATH}/../images/Brother_600x400.png ~/.zen/tmp/${MOATS}/astroport.png 2>/dev/null
composite -compose Over -gravity NorthEast -geometry +10+55 ~/.zen/tmp/${MOATS}/TW.png ~/.zen/tmp/${MOATS}/astroport.png ~/.zen/tmp/${MOATS}/astroport2.png 2>/dev/null
composite -compose Over -gravity NorthWest -geometry +0+0 ~/.zen/tmp/${MOATS}/QR.png ~/.zen/tmp/${MOATS}/astroport2.png ~/.zen/tmp/${MOATS}/one.png 2>/dev/null
convert -gravity SouthWest -pointsize 12 -fill black -draw "text 5,3 \"$G1PUB\"" ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/txt.png
# composite -compose Over -gravity NorthWest -geometry +280+280 ~/.zen/game/players/.current/QRsec.png ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/image.png
# composite -compose Over -gravity NorthWest -geometry +280+280 ~/.zen/game/players/.current/QRsec.png ~/.zen/tmp/${MOATS}/one.png ~/.zen/tmp/${MOATS}/image.png
convert -gravity northwest -pointsize 25 -fill black -draw "text 50,300 \"$PSEUDO\"" ~/.zen/tmp/${MOATS}/txt.png ~/.zen/tmp/${MOATS}/image.png
convert -gravity northwest -pointsize 20 -fill black -draw "text 300,40 \"${PLAYER}\"" ~/.zen/tmp/${MOATS}/image.png ~/.zen/tmp/${MOATS}/pseudo.png
convert -gravity northwest -pointsize 25 -fill black -draw "text 50,300 \"$PSEUDO\"" ~/.zen/tmp/${MOATS}/txt.png ~/.zen/tmp/${MOATS}/image.png
convert -gravity northwest -pointsize 20 -fill black -draw "text 300,40 \"${PLAYER}\"" ~/.zen/tmp/${MOATS}/image.png ~/.zen/tmp/${MOATS}/pseudo.png
## WITH CONFIDENTIAL (LOCAL PRINT)
convert -gravity northeast -pointsize 25 -fill black -draw "text 20,180 \"$PASS\"" ~/.zen/tmp/${MOATS}/pseudo.png ~/.zen/tmp/${MOATS}/pass.png
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,100 \"$SALT\"" ~/.zen/tmp/${MOATS}/pass.png ~/.zen/tmp/${MOATS}/salt.png
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,140 \"$PEPPER\"" ~/.zen/tmp/${MOATS}/salt.png ~/.zen/game/players/${PLAYER}/ID.png
## WITH CONFIDENTIAL (LOCAL PRINT)
convert -gravity northeast -pointsize 25 -fill black -draw "text 20,180 \"$PASS\"" ~/.zen/tmp/${MOATS}/pseudo.png ~/.zen/tmp/${MOATS}/pass.png
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,100 \"$SALT\"" ~/.zen/tmp/${MOATS}/pass.png ~/.zen/tmp/${MOATS}/salt.png
convert -gravity northwest -pointsize 25 -fill black -draw "text 300,140 \"$PEPPER\"" ~/.zen/tmp/${MOATS}/salt.png ~/.zen/game/players/${PLAYER}/ID.png
# INSERTED IMAGE IPFS
# IASTRO=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ID.png | tail -n 1) ## ZENCARD PUBLIC / PRIVATE
IASTRO="/ipfs/$(ipfs add -Hq ~/.zen/tmp/${MOATS}/pseudo.png | tail -n 1)" ## ZENCARD PUBLIC ONLY
# INSERTED IMAGE IPFS
# IASTRO=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ID.png | tail -n 1) ## ZENCARD PUBLIC / PRIVATE
IASTRO="/ipfs/$(ipfs add -Hq ~/.zen/tmp/${MOATS}/pseudo.png | tail -n 1)" ## ZENCARD PUBLIC ONLY
## Update ZenCard
[[ ! $ZenCard ]] && ZenCard="/ipfs/bafybeidhghlcx3zdzdah2pzddhoicywmydintj4mosgtygr6f2dlfwmg7a"
sed -i "s~${ZenCard}~${IASTRO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## Update ZenCard
[[ ! $ZenCard ]] && ZenCard="/ipfs/bafybeidhghlcx3zdzdah2pzddhoicywmydintj4mosgtygr6f2dlfwmg7a"
sed -i "s~${ZenCard}~${IASTRO}~g" ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
echo
echo "♥ IPFS Ŋ1 TW INIT ♥"
echo "TW ${NID}/ipns/${ASTRONAUTENS}/"
IPUSH=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
echo $IPUSH > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain # Contains last IPFS backup PLAYER KEY
echo $MOATS > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
echo
echo "♥ IPFS Ŋ1 TW INIT ♥"
echo "TW ${NID}/ipns/${ASTRONAUTENS}/"
IPUSH=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
echo $IPUSH > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain # Contains last IPFS backup PLAYER KEY
echo $MOATS > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
(
#~ echo "$MOATS :: /ipfs/$IPUSH"
ipfs name publish --key=${PLAYER} /ipfs/$IPUSH
#~ echo "TW PUBLISHING DONE"
) &
(
#~ echo "$MOATS :: /ipfs/$IPUSH"
ipfs name publish --key=${PLAYER} /ipfs/$IPUSH
#~ echo "TW PUBLISHING DONE"
) &
## MEMORISE PLAYER Ŋ1 ZONE
echo "${PLAYER}" > ~/.zen/game/players/${PLAYER}/.player
echo "$PSEUDO" > ~/.zen/game/players/${PLAYER}/.pseudo
echo "$G1PUB" > ~/.zen/game/players/${PLAYER}/.g1pub
## MEMORISE PLAYER Ŋ1 ZONE
echo "${PLAYER}" > ~/.zen/game/players/${PLAYER}/.player
echo "$PSEUDO" > ~/.zen/game/players/${PLAYER}/.pseudo
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 "${ASTRONAUTENS}" > ~/.zen/game/players/${PLAYER}/.playerns
#~ echo; echo "Création Clefs et QR codes pour accès au niveau Astroport Ŋ1"; sleep 1
@ -484,9 +473,10 @@ 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"
################# PREPARE DOCKERIZATION
#~ [[ -l ~/.zen/game/players/.current ]] \
#~ && ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
####### 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
. "${MY_PATH}/../tools/my.sh"
@ -528,8 +518,7 @@ echo " "
echo "* AstroID : with PASS : $PASS"
echo "${NID}/ipns/${ASTRONAUTENS}#AstroID"
echo
echo "* UMap : registration at ${LAT}, ${LON}
${myIPFS}${URL}"
echo "* UMap : registration at ${LAT}, ${LON}"
echo
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo ""
@ -550,7 +539,11 @@ echo "<html><head>
}
</style></head>
<body>
<h1>UPlanet : ZenCard + <a href='${myIPFS}/ipns/${ASTRONAUTENS}'>TW</a></h1>" > ~/.zen/tmp/${MOATS}/ZenCard.html
<h1>UPlanet : <a href='${myIPFS}/ipns/${ASTRONAUTENS}'>TW</a></h1>" > ~/.zen/tmp/${MOATS}/ZenCard.html
echo "<h2><a href='${myIPFS}/ipns/${ASTRONAUTENS}#ZenCard' title='${G1PUB}'>ZenCard</a></h2>
<img src='${myIPFSGW}${IASTRO}'\><br>" >> ~/.zen/tmp/${MOATS}/ZenCard.html
asciiart="${MY_PATH}/../images/astroport.art"
while IFS= read -r line
do
@ -558,9 +551,7 @@ do
echo "<br>" >> ~/.zen/tmp/${MOATS}/ZenCard.html
done <"$asciiart"
echo "<h2>PRINT & SHARE <a href='${myIPFS}/ipns/${ASTRONAUTENS}#ZenCard' title='${G1PUB}'>ZenCard</a></h2>
<img src='${myIPFSGW}${IASTRO}'\><br>
</body></html>" >> ~/.zen/tmp/${MOATS}/ZenCard.html
echo "</body></html>" >> ~/.zen/tmp/${MOATS}/ZenCard.html
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/ZenCard.html "ZenCard (${PLAYER}) "
@ -581,7 +572,14 @@ echo "<html><head>
}
</style></head>
<body>
<h1>UPlanet : AstroID ($PASS)</h1>" > ~/.zen/tmp/${MOATS}/AstroID.html
<h1><a href='${myUPLANET}'>UPlanet</a> : AstroID</h1>" > ~/.zen/tmp/${MOATS}/AstroID.html
echo "<a href='${myIPFS}/ipns/${ASTRONAUTENS}#AstroID'>AstroID<br><img width=300px src='${myIPFSGW}${ASTROQR}'\></a>
<h3>SECRET1=\"$SALT\" SECRET2=\"$PEPPER\" ($PASS)</h3>
<h3>ASTROPORT : <a href='${myIPFS}/ipns/${IPFSNODEID}'>/ipns/${IPFSNODEID}</a></h3>
<h2> <--> SECTOR : <a href='${EARTHCID}/map_render.html?southWestLat=${LAT::-1}&southWestLon=${LON::-1}&deg=0.1'>${SECTOR}</a> <--> </h2>
" >> ~/.zen/tmp/${MOATS}/AstroID.html
asciiart="${MY_PATH}/../images/logoastro.art"
while IFS= read -r line
do
@ -589,13 +587,7 @@ do
echo "<br>" >> ~/.zen/tmp/${MOATS}/AstroID.html
done <"$asciiart"
echo "
<h2> <--> 0.1 SECTOR : <a href='${EARTHCID}/map_render.html?southWestLat=${LAT::-1}&southWestLon=${LON::-1}&deg=0.1'>${SECTOR}</a> <--> </h2>
<br>PRINT & KEEP SAFE <a href='${myIPFS}/ipns/${ASTRONAUTENS}#AstroID'>AstroID<br><img width=120px src='${myIPFSGW}${ASTROQR}'\></a>
<br>SECRET1=$SALT<br>SECRET2=$PEPPER<br>($PASS)<br>
<h3>ASTROPORT : <a href='${myIPFS}/ipns/${IPFSNODEID}'>/ipns/${IPFSNODEID}</a></h3>
<a href='https://qo-op.com'>Uplanet</a>
</body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.html
echo "</body></html>" >> ~/.zen/tmp/${MOATS}/AstroID.html
$MY_PATH/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/AstroID.html "AstroID (${PLAYER}) "

View File

@ -275,7 +275,7 @@ 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 name publish -k $VOEUKEY /ipfs/$WISHFLUX # PUBLISH $VOEUKEY
ipfs --timeout 180s 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}" &
@ -285,6 +285,12 @@ do
echo "WALLET ${VOEUKEY} FOUNDED by ${G1PUB}"
cp -f ~/.zen/tmp/${IPFSNODEID}/WISH/${PLAYER}/g1voeu/${WISHNAME}/* ~/.zen/game/players/${PLAYER}/G1${WISHNAME}/${G1PUB}/ 2>/dev/null
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo "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
################################################
@ -304,30 +310,29 @@ if [[ ${wishnumbers} -gt 0 ]]; then
LON=$(makecoord $LON)
echo "LAT=${LAT}; LON=${LON}; UMAPNS=${TWMAPNS}"
rm ~/.zen/tmp/${MOATS}/GPS.json
SECLAT="${LAT::-1}"
SECLON="${LON::-1}"
SECTOR="_${SECLAT}_${SECLON}"
SLAT="${LAT::-1}"
SLON="${LON::-1}"
SECTOR="_${SLAT}_${SLON}"
RLAT="$(echo ${LAT} | cut -d '.' -f 1)"
RLON="$(echo ${LON} | cut -d '.' -f 1)"
REGION="_${RLAT}_${RLON}"
##############################################################
SECTORG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
UMAPG1PUB=$(cat ~/.zen/tmp/swarm/12D*/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/G1PUB | tail -n 1)
SECTORG1PUB=$(cat ~/.zen/tmp/swarm/12D*/UPLANET/__/_${RLAT}_${RLON}/_${SLAT}_${SLON}/_${LAT}_${LON}/SECTORG1PUB | tail -n 1)
[[ ${UMAPG1PUB} == "" ]] && UMAPG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${LAT}" "${UPLANETNAME}${LON}")
[[ ${SECTORG1PUB} == "" ]] && SECTORG1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}")
##############################################################
GRATITUDE=$($MY_PATH/../tools/getcoins_from_gratitude_box.sh)
G1AMOUNT=$(echo "$GRATITUDE / 10" | bc -l | xargs printf "%.2f" | sed "s~,~.~g" )
echo "***** PLAYER $PLAYER *************************************"
echo "GRATITUDE ${GRATITUDE} ZEN = ${G1AMOUNT} G1
to ${SECTOR} WALLET ${SECTORG1PUB}"
echo "GRATITUDE ${GRATITUDE} ZEN (${G1AMOUNT} G1)
to UMAP_${LAT}_${LON} WALLET ${UMAPG1PUB}"
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}" "${SECTORG1PUB}" "UPLANET:TWISH:$TODATE:/ipfs/${MYWISHFLUX}"
${MY_PATH}/../tools/PAY4SURE.sh "${HOME}/.zen/game/players/${PLAYER}/secret.dunikey" "${G1AMOUNT}" "${UMAPG1PUB}" "UPLANET:UWISH:$YOUSER:/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

View File

@ -17,6 +17,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
SECTOR="$1"
[[ $SECTOR == "" ]] && echo "MISSING SECTOR ADRESS" && exit 1
MOATS="$2"
G1PUB="$3"
## CHECK FOR BAD PARAM
[[ ! -d ~/.zen/tmp/${MOATS-empty}/${SECTOR-empty}/ ]] \
@ -40,23 +41,24 @@ COINS=$($MY_PATH/../tools/COINScheck.sh ${REGIONG1PUB} | tail -n 1)
echo "REGION : ${REGION} (${COINS} G1) WALLET : ${REGIONG1PUB}"
## RETRIEVE FROM REGION UKEY
${MY_PATH}/timeout.sh -t 20 $MY_PATH/jaklis/jaklis.py history -n 300 -p ${REGIONG1PUB} -j \
${MY_PATH}/../tools/timeout.sh -t 20 ${MY_PATH}/../tools/jaklis/jaklis.py history -n 100 -p ${REGIONG1PUB} -j \
> ~/.zen/tmp/${MOATS}/${REGION}.g1history.json
## SCAN FOR UPLANET:${SECTOR} in TX
if [[ -s ~/.zen/tmp/${MOATS}/${REGION}.g1history.json ]]; then
intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .comment' ~/.zen/tmp/${MOATS}/${REGION}.g1history.json)
ipfs_pop=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':/ipfs/\K[^"]+')
todate=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':\K[^:]*')
echo "SYNC ~/.zen/tmp/${MOATS}/${SECTOR} <=> /ipfs/$ipfs_pop"
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 => $ipfs_pop"
## TODO: SECURITY PATCH : check payment emitter is SECTORG1PUB
if [[ $ipfs_pop ]]; then
echo "from $todate memory slot"
ipfs --timeout 90s get -o ~/.zen/tmp/${MOATS}/${SECTOR} /ipfs/$ipfs_pop
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 -o ~/.zen/tmp/${MOATS}/${SECTOR} $ipfs_pop \
|| echo "$ipfs_pop ERROR ... "
else
echo "WARNING cannot remember... scan for more TX ??!"
echo "WARNING cannot revover any memory !!"
fi
else
@ -67,30 +69,4 @@ fi
end=`date +%s`
echo "(${SECTOR}.memory) ${todate} get time : "`expr $end - $start` seconds.
#~ ## EXTRACT WORLDG1PUB HISTORY
#~ ${MY_PATH}/timeout.sh -t 20 $MY_PATH/jaklis/jaklis.py history -n 300 -p ${WORLDG1PUB} -j \
#~ > ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json
#~ ## SCAN FOR UPLANET:${SECTOR} in TX
#~ if [[ -s ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json ]]; then
#~ intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .comment' ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json)
#~ ipfs_pop=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':/ipfs/\K[^"]+')
#~ todate=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':\K[^:]*')
#~ echo "SYNC ~/.zen/tmp/${MOATS}/${SECTOR} <=> /ipfs/$ipfs_pop"
#~ if [[ $ipfs_pop ]]; then
#~ echo "from $todate memory slot"
#~ ipfs --timeout 90s get -o ~/.zen/tmp/${MOATS}/${SECTOR} /ipfs/$ipfs_pop
#~ end=`date +%s`
#~ echo "(${SECTOR}) ${todate} get time : "`expr $end - $start` seconds.
#~ else
#~ echo "WARNING cannot remember... scan for more TX ??!"
#~ fi
#~ else
#~ echo "FATAL ERROR cannot access to WORLDG1PUB history"
#~ exit 1
#~ fi
exit 0

View File

@ -17,6 +17,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
UMAP="$1"
[[ $UMAP == "" ]] && echo "MISSING UMAP ADRESS" && exit 1
MOATS="$2"
G1PUB="$3"
## CHECK FOR BAD PARAM
[[ ! -d ~/.zen/tmp/${MOATS-empty}/${UMAP-empty}/ ]] \
@ -43,23 +44,26 @@ COINS=$($MY_PATH/../tools/COINScheck.sh ${SECTORG1PUB} | tail -n 1)
echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${SECTORG1PUB}"
## RETRIEVE FROM SECTOR UKEY
${MY_PATH}/timeout.sh -t 20 $MY_PATH/jaklis/jaklis.py history -n 300 -p ${SECTORG1PUB} -j \
${MY_PATH}/../tools/timeout.sh -t 20 ${MY_PATH}/../tools/jaklis/jaklis.py history -n 100 -p ${SECTORG1PUB} -j \
> ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json
## SCAN FOR UPLANET:${UMAP} in TX
if [[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json ]]; then
intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .comment' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json)
ipfs_pop=$(echo "$intercom" | grep -oP 'UPLANET:'"${UMAP}"':/ipfs/\K[^"]+')
todate=$(echo "$intercom" | grep -oP 'UPLANET:'"${UMAP}"':\K[^:]*')
echo "SYNC ~/.zen/tmp/${MOATS}/${UMAP} <=> /ipfs/$ipfs_pop"
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 ~/.zen/tmp/${MOATS}/${UMAP} <=> $ipfs_pop"
## TODO: SECURITY PATCH : check payment emitter is UMAPG1PUB
if [[ $ipfs_pop ]]; then
echo "from $todate memory slot"
ipfs --timeout 90s get -o ~/.zen/tmp/${MOATS}/${UMAP} /ipfs/$ipfs_pop
echo "FOUND $todate MEMORY SLOT"
g1pub=$(jq -r '.[] | select(.comment | test("UPLANET:'"${UMAP}"'")) | .pubkey' ~/.zen/tmp/${MOATS}/${SECTOR}.g1history.json | tail -n 1)
[[ "$g1pub" != "$G1PUB" ]] && echo "INFO :: $g1pub Memory updater"
ipfs --timeout 180s get -o ~/.zen/tmp/${MOATS}/${UMAP} $ipfs_pop \
|| echo "$ipfs_pop ERROR ... "
else
echo "WARNING cannot remember... scan for more TX ??!"
echo "WARNING cannot revover any memory !!"
fi
else

View File

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

View File

@ -47,10 +47,11 @@ CHAN=$(ipfs key list -l | grep -w "MySwarm_${IPFSNODEID}" | cut -d ' ' -f 1)
#######################################################
## CREATE MySwarm KEYS ?
if [[ ${CHAN} == "" || ${CHAN} == "null" ]]; then
if [[ ${CHAN} == "" || ${CHAN} == "null" || ! -s ~/.zen/game/myswarm_secret.june ]]; 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" "$SECRET2"
${MY_PATH}/tools/keygen -t duniter -o ~/.zen/game/myswarm_secret.dunikey "$SECRET1" "$SECRET2"
@ -65,15 +66,16 @@ echo "<meta http-equiv=\"refresh\" content=\"0; url='/ipns/${CHAN}'\" />" > ~/.z
############################################################
############################################################
echo 0 > ~/.zen/tmp/random.sleep
###################
# NEVER ENDING LOOP
#### UPLANET FLASHMEM UPDATES
${MY_PATH}/RUNTIME/UPlanetKEYS_refresh.sh &
${MY_PATH}/RUNTIME/GEOKEYS_refresh.sh &
###################################################################
## WILL SCAN ALL BOOSTRAP - REFRESH "SELF IPNS BALISE" - RECEIVE UPLINK ORDERS
###################################################################
###################
# NEVER ENDING LOOP
while true; do
start=`date +%s`
@ -82,16 +84,27 @@ while true; do
lastrun=$(cat ~/.zen/tmp/${IPFSNODEID}/_MySwarm.moats)
duree=$(expr ${MOATS} - $lastrun)
### STOP SWARM SYNC 1H BEFORE 20H12
[[ $(date +"%H%M") -gt 1912 ]] \
&& echo "$(date +"%H%M") : 20H12 is coming... " && continue
## FIXING TIC TAC FOR NODE & SWARM REFRESH ( 1H )
if [[ ${duree} -gt 3600000 ]]; then
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/UPlanetKEYS_refresh.sh &
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
[[ ${PLAYERONE[@]} == "" ]] && echo "EMPTY ASTROPORT - NO PLAYER - NO PUBLISHING" && continue
${MY_PATH}/RUNTIME/GEOKEYS_refresh.sh &
#####################################
( ##### SUB-PROCESS £
@ -101,7 +114,7 @@ while true; do
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"))
PENDINGS=($(ls "$HOME/.zen/game/pending/${g1pub}/*.TX" 2>/dev/null))
for pending in "${PENDINGS[@]}"; do
echo ${pending}
# TODO TREAT PENDINGS

View File

@ -0,0 +1 @@
12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j

View File

@ -0,0 +1,20 @@
1709306506 N8.txt= -25
1709306506 N2.txt= +25
1709306506 N3.txt= -1
1709306506 N10.txt= +1
1709306506 N7.txt= -43
1709306506 N8.txt= +43
1709306506 N3.txt= -14
1709306506 N10.txt= +14
1709306506 N9.txt= -48
1709306506 N6.txt= +48
1709306506 N10.txt= -37
1709306506 N9.txt= +37
1709306506 N4.txt= -21
1709306506 N5.txt= +21
1709306506 N4.txt= -15
1709306506 N7.txt= +15
1709306506 N6.txt= -47
1709306506 N3.txt= +47
1709306506 N6.txt= -1
1709306506 N3.txt= +1

View File

@ -0,0 +1,200 @@
1709306497 N2.txt= -6
1709306497 N4.txt= +6
1709306497 N2.txt= -23
1709306497 N7.txt= +23
1709306497 N2.txt= -31
1709306497 N8.txt= +31
1709306497 N3.txt= -42
1709306497 N8.txt= +42
1709306497 N4.txt= -16
1709306497 N8.txt= +16
1709306497 N5.txt= -9
1709306497 N3.txt= +9
1709306497 N9.txt= -27
1709306497 N10.txt= +27
1709306497 N8.txt= -29
1709306497 N10.txt= +29
1709306497 N8.txt= -19
1709306497 N4.txt= +19
1709306497 N1.txt= -23
1709306497 N9.txt= +23
1709306498 N7.txt= -34
1709306498 N5.txt= +34
1709306498 N7.txt= -8
1709306498 N4.txt= +8
1709306498 N6.txt= -46
1709306498 N4.txt= +46
1709306498 N9.txt= -18
1709306498 N5.txt= +18
1709306498 N2.txt= -40
1709306498 N3.txt= +40
1709306498 N1.txt= -42
1709306498 N9.txt= +42
1709306498 N7.txt= -21
1709306498 N10.txt= +21
1709306498 N4.txt= -27
1709306498 N8.txt= +27
1709306498 N10.txt= -33
1709306498 N1.txt= +33
1709306498 N3.txt= -7
1709306498 N10.txt= +7
1709306499 N7.txt= -26
1709306499 N6.txt= +26
1709306499 N5.txt= -1
1709306499 N3.txt= +1
1709306499 N7.txt= -49
1709306499 N10.txt= +49
1709306499 N9.txt= -26
1709306499 N3.txt= +26
1709306499 N6.txt= -11
1709306499 N10.txt= +11
1709306499 N5.txt= -19
1709306499 N9.txt= +19
1709306499 N6.txt= -8
1709306499 N3.txt= +8
1709306499 N3.txt= -22
1709306499 N5.txt= +22
1709306499 N8.txt= -42
1709306499 N5.txt= +42
1709306499 N7.txt= -47
1709306499 N6.txt= +47
1709306500 N7.txt= -33
1709306500 N5.txt= +33
1709306500 N3.txt= -41
1709306500 N7.txt= +41
1709306500 N6.txt= -25
1709306500 N3.txt= +25
1709306500 N1.txt= -22
1709306500 N8.txt= +22
1709306500 N7.txt= -4
1709306500 N8.txt= +4
1709306500 N2.txt= -47
1709306500 N3.txt= +47
1709306500 N1.txt= -30
1709306500 N9.txt= +30
1709306500 N10.txt= -43
1709306500 N1.txt= +43
1709306500 N6.txt= -11
1709306500 N1.txt= +11
1709306500 N6.txt= -21
1709306500 N8.txt= +21
1709306501 N6.txt= -16
1709306501 N8.txt= +16
1709306501 N5.txt= -28
1709306501 N6.txt= +28
1709306501 N8.txt= -29
1709306501 N4.txt= +29
1709306501 N7.txt= -41
1709306501 N10.txt= +41
1709306501 N3.txt= -48
1709306501 N6.txt= +48
1709306501 N2.txt= -12
1709306501 N9.txt= +12
1709306501 N5.txt= -18
1709306501 N4.txt= +18
1709306501 N1.txt= -27
1709306501 N2.txt= +27
1709306501 N9.txt= -20
1709306501 N2.txt= +20
1709306501 N4.txt= -30
1709306501 N8.txt= +30
1709306502 N5.txt= -26
1709306502 N10.txt= +26
1709306502 N10.txt= -39
1709306502 N6.txt= +39
1709306502 N10.txt= -18
1709306502 N4.txt= +18
1709306502 N1.txt= -7
1709306502 N3.txt= +7
1709306502 N10.txt= -20
1709306502 N2.txt= +20
1709306502 N2.txt= -42
1709306502 N5.txt= +42
1709306502 N6.txt= -7
1709306502 N2.txt= +7
1709306502 N3.txt= -36
1709306502 N1.txt= +36
1709306502 N7.txt= -30
1709306502 N10.txt= +30
1709306502 N2.txt= -15
1709306502 N6.txt= +15
1709306503 N4.txt= -13
1709306503 N8.txt= +13
1709306503 N2.txt= -28
1709306503 N9.txt= +28
1709306503 N10.txt= -37
1709306503 N1.txt= +37
1709306503 N6.txt= -8
1709306503 N1.txt= +8
1709306503 N10.txt= -39
1709306503 N6.txt= +39
1709306503 N1.txt= -20
1709306503 N3.txt= +20
1709306503 N10.txt= -33
1709306503 N4.txt= +33
1709306503 N5.txt= -34
1709306503 N9.txt= +34
1709306503 N6.txt= -17
1709306503 N4.txt= +17
1709306503 N4.txt= -41
1709306503 N5.txt= +41
1709306504 N3.txt= -42
1709306504 N10.txt= +42
1709306504 N2.txt= -48
1709306504 N1.txt= +48
1709306504 N10.txt= -1
1709306504 N2.txt= +1
1709306504 N8.txt= -47
1709306504 N5.txt= +47
1709306504 N4.txt= -4
1709306504 N1.txt= +4
1709306504 N7.txt= -36
1709306504 N10.txt= +36
1709306504 N8.txt= -43
1709306504 N5.txt= +43
1709306504 N2.txt= -1
1709306504 N10.txt= +1
1709306504 N4.txt= -48
1709306504 N10.txt= +48
1709306504 N6.txt= -35
1709306504 N7.txt= +35
1709306505 N9.txt= -8
1709306505 N2.txt= +8
1709306505 N9.txt= -4
1709306505 N2.txt= +4
1709306505 N7.txt= -26
1709306505 N10.txt= +26
1709306505 N10.txt= -21
1709306505 N7.txt= +21
1709306505 N8.txt= -31
1709306505 N7.txt= +31
1709306505 N8.txt= -11
1709306505 N10.txt= +11
1709306505 N1.txt= -22
1709306505 N6.txt= +22
1709306505 N3.txt= -16
1709306505 N5.txt= +16
1709306505 N8.txt= -19
1709306505 N3.txt= +19
1709306505 N6.txt= -10
1709306505 N4.txt= +10
1709306506 N8.txt= -25
1709306506 N2.txt= +25
1709306506 N3.txt= -1
1709306506 N10.txt= +1
1709306506 N7.txt= -43
1709306506 N8.txt= +43
1709306506 N3.txt= -14
1709306506 N10.txt= +14
1709306506 N9.txt= -48
1709306506 N6.txt= +48
1709306506 N10.txt= -37
1709306506 N9.txt= +37
1709306506 N4.txt= -21
1709306506 N5.txt= +21
1709306506 N4.txt= -15
1709306506 N7.txt= +15
1709306506 N6.txt= -47
1709306506 N3.txt= +47
1709306506 N6.txt= -1
1709306506 N3.txt= +1

View File

@ -0,0 +1,80 @@
import os
import random
import time
folder_user = './../LACHAINE'
def genesis():
print("Lancement de la chaine")
with open("chaine.txt", "w") as fichier:
fichier.write("")
def get_users_account():
if os.path.isdir(folder_user):
users_name = os.listdir(folder_user)
return users_name
def regeneration_account(users_name):
for user in users_name:
with open(os.path.join(folder_user, user), "w") as fichier:
fichier.write("N=100")
def create_block(users_name):
with open("block.txt", "w") as fichier:
fichier.write("")
for i in range(10):
transaction = create_transaction(users_name)
def create_transaction(users_name):
debtor = random.choice(users_name)
creditor = random.choice(users_name)
while debtor == creditor:
creditor = random.choice(users_name)
payment = random.randint(1, 50)
print('debtor:', debtor, 'creditor:', creditor, 'payment:', payment)
debit_value(debtor, payment)
credit_value(creditor, payment)
with open("block.txt", "a") as fichier:
timestamp = int(time.time())
fichier.write(str(timestamp)+' '+debtor+"= -"+str(payment)+'\n')
fichier.write(str(timestamp)+' '+creditor+"= +"+str(payment)+'\n')
def debit_value(debtor, payment):
with open(os.path.join(folder_user, debtor), "r") as fichier:
account = fichier.read()
account_value = int(account.split("=")[1])
new_account_value = "N="+ str(account_value - payment)
with open(os.path.join(folder_user, debtor), "w") as fichier:
fichier.write(new_account_value)
def credit_value(creditor, payment):
with open(os.path.join(folder_user, creditor), "r") as fichier:
account = fichier.read()
account_value = int(account.split("=")[1])
new_account_value = "N="+ str(account_value + payment)
with open(os.path.join(folder_user, creditor), "w") as fichier:
fichier.write(new_account_value)
def get_account_value(user):
path = os.path.join(folder_user, user)
with open(path, "r") as fichier:
contenu_lu = fichier.read()
print(user, contenu_lu)
def push_to_chaine():
with open("block.txt", "r") as fichier:
block = fichier.read()
with open("chaine.txt", "a") as fichier:
fichier.write(block)
genesis()
users_name = get_users_account()
regeneration_account(users_name)
for i in range(10):
time.sleep(1)
create_block(users_name)
push_to_chaine()

View File

@ -0,0 +1 @@
N=127

View File

@ -0,0 +1 @@
N=199

View File

@ -0,0 +1 @@
N=-81

View File

@ -0,0 +1 @@
N=81

View File

@ -0,0 +1 @@
N=89

View File

@ -0,0 +1 @@
N=324

View File

@ -0,0 +1 @@
N=149

View File

@ -0,0 +1 @@
N=-132

View File

@ -0,0 +1 @@
N=70

View File

@ -0,0 +1 @@
N=174

View File

@ -7,3 +7,6 @@ Connaissances techniques: Python, Bash, Docker, SQL, MongoDB, Power BI
Activité pro: Data analyst
Objectif souhaité: Utiliser la technologie blockchain dans un point de vue Data engineering
---
ipfs_id=12D3KooWHfPeHQCqmZHzYs5pMa5LqEjxcEZDLJZgU92kLr5JAXhT

View File

@ -0,0 +1 @@
10.799999999999978

View File

@ -0,0 +1 @@
31.39999999999999

View File

@ -0,0 +1 @@
60.699999999999974

View File

@ -0,0 +1 @@
65.69999999999996

View File

@ -0,0 +1 @@
43.99999999999998

View File

@ -0,0 +1 @@
-29.10000000000003

View File

@ -0,0 +1 @@
50.89999999999997

View File

@ -0,0 +1 @@
24.49999999999998

View File

@ -0,0 +1 @@
35.19999999999997

View File

@ -0,0 +1 @@
70.59999999999997

View File

@ -0,0 +1 @@
35.29999999999996

View File

@ -0,0 +1,103 @@
N_TOTAL = 1000
from time import sleep
import random
def read_sold(user):
sold = 0
with open(f'./LACHAINE/{user}.txt', 'r') as file:
file_content = file.read()
sold = float(file_content)
return sold
def write_sold(user, sold):
with open(f'./LACHAINE/{user}.txt', 'w') as file:
file.write(str(sold))
def read_tx():
transactions = []
with open('./tx_list.txt', 'r') as file:
file_content = file.read()
transactions = file_content.split('\n')
tx = []
for t in transactions:
tx.append(t.split(','))
return tx
def main():
tx = read_tx()
for t in tx:
sleep(0.1)
demandeur = t[5]
montant = float(t[4])
montant_without_commission = montant - 0.10
N1 = t[1]
if N1 != demandeur:
print(f'tx:{t[0]: <4} -> Processing transaction 🚫')
continue
print(f'tx:{t[0]: <4} -> Processing transaction ✅')
N2 = t[2]
tx_type = t[3]
sold_N1 = read_sold(N1)
sold_N2 = read_sold(N2)
if tx_type == '-':
sold_N1 -= montant_without_commission
sold_N2 += montant_without_commission
elif tx_type == '+':
sold_N1 -= montant_without_commission
sold_N2 -= montant_without_commission
write_sold(N1, sold_N1)
write_sold(N2, sold_N2)
N0_sold = read_sold('N0')
write_sold('N0',N0_sold+0.1)
def tx_generator():
file_path = './tx_list.txt'
try:
with open(file_path, 'w') as file:
for i in range(1, 1000):
n_i = random.randint(1, 10)
n_i_plus_1 = random.randint(1, 10)
n_demandeur = random.randint(1, 10)
montant = random.randint(1, 10)
tx_type = random.choice(['-', '+'])
if i == 999:
line = f"{i},N{n_i},N{n_i_plus_1 if i < 10 else 1},{tx_type},{montant},N{n_demandeur}"
else:
line = f"{i},N{n_i},N{n_i_plus_1 if i < 10 else 1},{tx_type},{montant},N{n_demandeur}\n"
file.write(line)
print(f"Content successfully written to '{file_path}'.")
except Exception as e:
print(f"An error occurred: {e}")
def reset_account():
for i in range(0, 11):
with open(f'./LACHAINE/N{i}.txt', 'w') as file:
if i == 0:
file.write('0')
else:
file.write('100')
print('Reset done')
if __name__ == '__main__':
tx_generator()
reset_account()
main()

View File

@ -0,0 +1,999 @@
1,N1,N10,+,9,N10
2,N10,N6,-,7,N5
3,N5,N6,-,5,N10
4,N4,N3,+,3,N5
5,N2,N3,-,1,N9
6,N10,N7,+,2,N1
7,N7,N2,+,10,N6
8,N9,N10,+,6,N1
9,N4,N2,+,4,N9
10,N6,N1,+,9,N8
11,N8,N1,+,10,N2
12,N8,N1,+,3,N9
13,N7,N1,+,8,N10
14,N3,N1,+,8,N8
15,N10,N1,-,1,N1
16,N9,N1,-,9,N6
17,N2,N1,+,7,N9
18,N6,N1,-,5,N8
19,N9,N1,+,7,N5
20,N5,N1,-,3,N5
21,N4,N1,+,2,N2
22,N8,N1,-,2,N4
23,N10,N1,+,9,N1
24,N10,N1,-,2,N3
25,N4,N1,+,5,N3
26,N6,N1,-,9,N2
27,N8,N1,+,1,N2
28,N7,N1,+,10,N8
29,N2,N1,-,6,N10
30,N6,N1,-,8,N7
31,N7,N1,+,8,N3
32,N4,N1,+,1,N7
33,N5,N1,-,5,N7
34,N10,N1,+,5,N3
35,N3,N1,+,4,N3
36,N3,N1,+,5,N1
37,N5,N1,-,6,N9
38,N1,N1,+,4,N9
39,N3,N1,+,1,N4
40,N7,N1,+,1,N8
41,N2,N1,+,1,N7
42,N9,N1,+,8,N8
43,N8,N1,-,5,N6
44,N8,N1,+,10,N5
45,N3,N1,+,10,N2
46,N9,N1,+,7,N9
47,N3,N1,+,2,N3
48,N7,N1,+,5,N5
49,N6,N1,+,8,N8
50,N10,N1,-,1,N5
51,N2,N1,+,2,N3
52,N8,N1,+,4,N10
53,N7,N1,-,4,N8
54,N4,N1,-,9,N6
55,N4,N1,-,6,N9
56,N2,N1,+,8,N3
57,N5,N1,-,8,N4
58,N2,N1,-,8,N7
59,N8,N1,-,9,N6
60,N5,N1,+,4,N2
61,N8,N1,-,4,N6
62,N10,N1,+,5,N1
63,N1,N1,+,10,N4
64,N4,N1,+,9,N4
65,N1,N1,-,2,N4
66,N1,N1,-,8,N2
67,N7,N1,-,10,N5
68,N4,N1,+,8,N6
69,N10,N1,-,10,N9
70,N3,N1,-,10,N7
71,N4,N1,-,4,N10
72,N6,N1,-,9,N7
73,N4,N1,+,7,N6
74,N7,N1,-,5,N1
75,N10,N1,+,9,N9
76,N5,N1,+,9,N6
77,N9,N1,-,10,N7
78,N2,N1,+,8,N4
79,N7,N1,-,1,N1
80,N7,N1,+,1,N5
81,N9,N1,+,10,N3
82,N1,N1,-,6,N9
83,N3,N1,+,4,N5
84,N9,N1,+,7,N8
85,N1,N1,-,7,N9
86,N5,N1,-,1,N1
87,N10,N1,+,10,N7
88,N3,N1,-,8,N1
89,N5,N1,+,6,N2
90,N7,N1,+,3,N6
91,N8,N1,-,8,N9
92,N8,N1,+,10,N2
93,N8,N1,+,3,N10
94,N6,N1,-,8,N6
95,N7,N1,+,1,N1
96,N10,N1,+,5,N2
97,N4,N1,-,7,N10
98,N7,N1,-,4,N7
99,N6,N1,+,3,N7
100,N9,N1,+,3,N4
101,N5,N1,-,3,N6
102,N4,N1,-,6,N4
103,N1,N1,+,2,N7
104,N8,N1,-,2,N6
105,N2,N1,-,3,N2
106,N9,N1,-,9,N1
107,N4,N1,-,7,N10
108,N4,N1,+,3,N10
109,N8,N1,+,3,N7
110,N6,N1,+,2,N6
111,N3,N1,-,4,N6
112,N10,N1,-,7,N10
113,N4,N1,-,8,N4
114,N4,N1,-,2,N6
115,N7,N1,-,2,N2
116,N2,N1,+,4,N4
117,N8,N1,-,9,N6
118,N6,N1,+,7,N6
119,N6,N1,+,5,N1
120,N4,N1,+,10,N1
121,N7,N1,-,3,N10
122,N3,N1,+,10,N8
123,N7,N1,+,7,N6
124,N8,N1,+,10,N9
125,N4,N1,+,10,N3
126,N2,N1,+,1,N7
127,N1,N1,+,2,N4
128,N2,N1,+,6,N8
129,N5,N1,-,10,N2
130,N1,N1,+,2,N6
131,N9,N1,+,4,N2
132,N2,N1,+,2,N1
133,N4,N1,+,9,N4
134,N9,N1,+,4,N10
135,N5,N1,+,6,N9
136,N10,N1,+,3,N9
137,N3,N1,-,3,N5
138,N7,N1,-,5,N8
139,N6,N1,+,8,N6
140,N2,N1,-,2,N2
141,N2,N1,+,4,N9
142,N3,N1,-,6,N7
143,N1,N1,+,9,N7
144,N2,N1,-,6,N8
145,N4,N1,+,8,N3
146,N7,N1,+,1,N2
147,N6,N1,-,8,N6
148,N10,N1,-,10,N6
149,N1,N1,+,8,N5
150,N6,N1,+,2,N1
151,N7,N1,-,3,N2
152,N4,N1,-,9,N5
153,N8,N1,+,5,N7
154,N7,N1,+,10,N5
155,N4,N1,+,1,N4
156,N8,N1,+,5,N10
157,N10,N1,+,10,N1
158,N2,N1,-,1,N3
159,N4,N1,-,10,N9
160,N2,N1,-,3,N10
161,N1,N1,-,6,N7
162,N2,N1,+,8,N3
163,N3,N1,-,7,N3
164,N6,N1,+,3,N6
165,N6,N1,+,9,N4
166,N1,N1,-,5,N3
167,N2,N1,-,3,N3
168,N5,N1,+,1,N6
169,N6,N1,-,10,N8
170,N3,N1,+,10,N9
171,N8,N1,+,3,N3
172,N6,N1,+,5,N2
173,N2,N1,-,8,N3
174,N4,N1,-,6,N10
175,N6,N1,-,10,N2
176,N4,N1,-,9,N9
177,N1,N1,-,10,N5
178,N4,N1,-,2,N7
179,N1,N1,+,3,N8
180,N6,N1,-,9,N4
181,N8,N1,+,8,N2
182,N9,N1,+,2,N3
183,N10,N1,+,1,N4
184,N1,N1,-,8,N3
185,N9,N1,-,3,N2
186,N1,N1,-,1,N6
187,N5,N1,-,10,N10
188,N8,N1,+,5,N4
189,N5,N1,-,10,N10
190,N10,N1,+,6,N9
191,N7,N1,+,4,N9
192,N8,N1,-,2,N4
193,N10,N1,+,3,N3
194,N6,N1,-,6,N6
195,N10,N1,-,7,N10
196,N9,N1,+,4,N3
197,N4,N1,-,7,N7
198,N2,N1,+,9,N9
199,N4,N1,-,2,N5
200,N10,N1,+,9,N6
201,N2,N1,+,3,N6
202,N8,N1,-,5,N5
203,N4,N1,+,1,N8
204,N7,N1,+,5,N2
205,N5,N1,+,5,N10
206,N3,N1,+,9,N7
207,N6,N1,+,5,N1
208,N7,N1,-,3,N3
209,N2,N1,-,4,N9
210,N5,N1,-,4,N6
211,N9,N1,+,4,N6
212,N10,N1,+,9,N2
213,N3,N1,-,1,N1
214,N5,N1,+,10,N7
215,N4,N1,-,3,N6
216,N1,N1,+,5,N8
217,N7,N1,-,10,N6
218,N8,N1,+,1,N6
219,N3,N1,+,8,N10
220,N9,N1,-,2,N8
221,N6,N1,+,7,N6
222,N8,N1,+,4,N6
223,N6,N1,-,2,N5
224,N8,N1,+,7,N9
225,N7,N1,+,3,N7
226,N1,N1,+,5,N9
227,N8,N1,-,8,N2
228,N3,N1,+,8,N8
229,N8,N1,+,7,N7
230,N2,N1,+,2,N7
231,N3,N1,+,9,N2
232,N4,N1,-,3,N7
233,N6,N1,+,10,N9
234,N3,N1,+,1,N2
235,N5,N1,+,2,N7
236,N4,N1,+,2,N2
237,N3,N1,+,10,N6
238,N7,N1,-,7,N3
239,N4,N1,+,2,N8
240,N9,N1,+,9,N1
241,N10,N1,+,7,N9
242,N4,N1,-,10,N6
243,N9,N1,-,2,N3
244,N6,N1,+,9,N2
245,N10,N1,+,4,N3
246,N1,N1,+,3,N10
247,N9,N1,-,9,N8
248,N2,N1,-,1,N10
249,N6,N1,-,4,N8
250,N5,N1,-,10,N5
251,N6,N1,+,7,N7
252,N2,N1,-,9,N10
253,N10,N1,+,10,N8
254,N2,N1,+,7,N8
255,N8,N1,+,2,N4
256,N6,N1,+,1,N3
257,N4,N1,+,6,N8
258,N1,N1,-,7,N4
259,N6,N1,-,10,N1
260,N6,N1,-,6,N5
261,N3,N1,-,8,N3
262,N9,N1,-,1,N4
263,N4,N1,+,9,N6
264,N9,N1,+,7,N10
265,N7,N1,+,10,N3
266,N10,N1,-,7,N5
267,N4,N1,+,7,N5
268,N7,N1,+,8,N4
269,N2,N1,-,4,N10
270,N5,N1,+,5,N9
271,N3,N1,+,9,N7
272,N4,N1,-,3,N4
273,N8,N1,-,7,N1
274,N7,N1,-,8,N6
275,N8,N1,-,1,N8
276,N3,N1,-,7,N3
277,N1,N1,+,5,N9
278,N6,N1,-,9,N9
279,N8,N1,-,7,N6
280,N8,N1,+,2,N5
281,N6,N1,+,4,N1
282,N8,N1,+,5,N7
283,N2,N1,-,7,N5
284,N2,N1,-,2,N2
285,N1,N1,-,7,N8
286,N7,N1,+,5,N5
287,N10,N1,+,9,N7
288,N7,N1,-,4,N7
289,N10,N1,-,5,N10
290,N4,N1,+,10,N9
291,N10,N1,+,7,N6
292,N4,N1,+,10,N7
293,N6,N1,-,4,N1
294,N2,N1,+,8,N7
295,N4,N1,+,9,N4
296,N8,N1,+,10,N10
297,N8,N1,+,7,N5
298,N8,N1,+,5,N1
299,N4,N1,+,5,N8
300,N8,N1,+,7,N6
301,N3,N1,-,9,N1
302,N7,N1,-,1,N1
303,N9,N1,-,10,N10
304,N4,N1,+,3,N6
305,N10,N1,-,3,N2
306,N1,N1,+,7,N1
307,N5,N1,+,5,N3
308,N6,N1,-,3,N10
309,N7,N1,+,6,N7
310,N4,N1,+,9,N4
311,N7,N1,-,6,N2
312,N3,N1,+,6,N5
313,N1,N1,-,4,N10
314,N6,N1,+,9,N3
315,N4,N1,+,7,N8
316,N4,N1,+,2,N5
317,N2,N1,-,6,N4
318,N10,N1,-,8,N10
319,N10,N1,-,3,N7
320,N4,N1,-,5,N6
321,N9,N1,+,7,N2
322,N8,N1,-,10,N4
323,N2,N1,+,1,N1
324,N8,N1,+,2,N3
325,N8,N1,+,6,N9
326,N10,N1,+,4,N6
327,N10,N1,-,1,N4
328,N8,N1,+,3,N7
329,N4,N1,-,8,N2
330,N2,N1,-,7,N5
331,N8,N1,+,1,N3
332,N6,N1,-,1,N1
333,N9,N1,-,4,N2
334,N9,N1,-,3,N8
335,N4,N1,-,9,N2
336,N5,N1,+,5,N4
337,N2,N1,-,3,N10
338,N8,N1,-,2,N5
339,N8,N1,+,10,N4
340,N10,N1,+,9,N5
341,N10,N1,-,1,N10
342,N8,N1,-,3,N7
343,N9,N1,+,9,N5
344,N3,N1,-,10,N7
345,N10,N1,+,1,N4
346,N3,N1,-,7,N10
347,N1,N1,+,5,N7
348,N6,N1,-,5,N6
349,N4,N1,-,4,N10
350,N8,N1,-,3,N5
351,N3,N1,+,9,N10
352,N9,N1,+,4,N7
353,N2,N1,+,6,N8
354,N2,N1,+,5,N3
355,N3,N1,+,4,N8
356,N4,N1,+,4,N3
357,N10,N1,-,5,N5
358,N7,N1,-,6,N3
359,N9,N1,-,7,N2
360,N4,N1,-,5,N7
361,N8,N1,+,5,N10
362,N5,N1,-,10,N6
363,N4,N1,-,10,N4
364,N2,N1,+,8,N3
365,N4,N1,+,1,N10
366,N6,N1,-,10,N2
367,N4,N1,+,6,N6
368,N2,N1,+,4,N1
369,N10,N1,+,3,N3
370,N8,N1,+,9,N7
371,N5,N1,-,4,N7
372,N3,N1,-,9,N9
373,N6,N1,-,4,N8
374,N9,N1,-,10,N1
375,N9,N1,+,4,N10
376,N9,N1,-,10,N3
377,N8,N1,+,7,N2
378,N3,N1,+,9,N2
379,N5,N1,-,10,N6
380,N10,N1,-,5,N2
381,N7,N1,+,8,N7
382,N3,N1,+,5,N5
383,N3,N1,+,10,N3
384,N1,N1,+,3,N10
385,N3,N1,+,10,N10
386,N4,N1,-,2,N10
387,N4,N1,-,5,N7
388,N1,N1,-,8,N3
389,N8,N1,-,7,N7
390,N4,N1,+,5,N5
391,N6,N1,-,7,N9
392,N7,N1,+,4,N3
393,N1,N1,+,8,N10
394,N9,N1,+,7,N6
395,N6,N1,-,1,N5
396,N9,N1,+,3,N9
397,N10,N1,+,9,N6
398,N2,N1,-,3,N6
399,N9,N1,+,1,N2
400,N6,N1,-,6,N8
401,N1,N1,+,4,N8
402,N1,N1,+,1,N7
403,N3,N1,+,10,N6
404,N1,N1,-,9,N7
405,N10,N1,-,6,N2
406,N2,N1,+,2,N5
407,N10,N1,+,6,N8
408,N3,N1,+,5,N10
409,N9,N1,+,1,N7
410,N8,N1,-,10,N1
411,N5,N1,+,2,N1
412,N6,N1,-,2,N1
413,N3,N1,-,5,N8
414,N9,N1,+,5,N8
415,N7,N1,-,9,N10
416,N5,N1,-,9,N2
417,N6,N1,-,7,N5
418,N1,N1,-,5,N8
419,N5,N1,-,9,N4
420,N3,N1,+,4,N4
421,N9,N1,-,2,N7
422,N9,N1,+,1,N9
423,N1,N1,+,9,N9
424,N9,N1,-,1,N10
425,N10,N1,+,8,N3
426,N4,N1,-,6,N6
427,N9,N1,-,2,N5
428,N2,N1,+,3,N10
429,N3,N1,+,3,N1
430,N7,N1,-,1,N9
431,N7,N1,+,8,N1
432,N2,N1,+,9,N1
433,N3,N1,-,5,N6
434,N3,N1,+,4,N4
435,N6,N1,+,3,N6
436,N8,N1,-,1,N10
437,N2,N1,+,7,N9
438,N10,N1,+,2,N1
439,N4,N1,-,1,N9
440,N3,N1,-,10,N2
441,N9,N1,+,3,N6
442,N2,N1,+,10,N3
443,N9,N1,+,7,N9
444,N8,N1,+,10,N10
445,N6,N1,-,10,N4
446,N4,N1,+,3,N6
447,N10,N1,-,5,N4
448,N8,N1,+,9,N7
449,N10,N1,-,3,N1
450,N9,N1,-,5,N9
451,N3,N1,+,9,N9
452,N10,N1,+,7,N5
453,N10,N1,-,4,N3
454,N10,N1,+,6,N1
455,N1,N1,+,9,N9
456,N7,N1,+,4,N10
457,N5,N1,+,5,N5
458,N10,N1,+,5,N7
459,N4,N1,-,8,N4
460,N9,N1,-,9,N4
461,N7,N1,-,6,N1
462,N1,N1,-,1,N7
463,N2,N1,-,10,N10
464,N6,N1,+,8,N5
465,N10,N1,+,1,N4
466,N5,N1,+,10,N6
467,N5,N1,-,5,N4
468,N1,N1,+,6,N2
469,N1,N1,+,9,N4
470,N4,N1,+,6,N4
471,N4,N1,-,4,N5
472,N3,N1,-,5,N1
473,N1,N1,+,7,N5
474,N1,N1,+,7,N3
475,N8,N1,-,3,N9
476,N9,N1,-,1,N9
477,N7,N1,-,3,N2
478,N10,N1,-,10,N9
479,N5,N1,-,4,N5
480,N9,N1,-,6,N7
481,N7,N1,+,4,N7
482,N3,N1,+,9,N5
483,N1,N1,-,10,N9
484,N5,N1,-,6,N4
485,N3,N1,-,2,N4
486,N1,N1,+,5,N9
487,N4,N1,+,1,N7
488,N1,N1,+,7,N4
489,N6,N1,-,10,N10
490,N4,N1,-,5,N6
491,N3,N1,-,4,N3
492,N8,N1,-,9,N1
493,N6,N1,-,4,N10
494,N2,N1,-,10,N6
495,N2,N1,+,4,N1
496,N4,N1,-,8,N1
497,N2,N1,-,6,N9
498,N8,N1,-,9,N2
499,N8,N1,-,7,N10
500,N10,N1,-,3,N5
501,N10,N1,+,7,N4
502,N2,N1,-,10,N8
503,N1,N1,+,1,N9
504,N5,N1,-,8,N6
505,N5,N1,-,3,N1
506,N4,N1,-,7,N2
507,N1,N1,-,6,N1
508,N7,N1,+,9,N5
509,N2,N1,+,2,N9
510,N5,N1,-,7,N7
511,N9,N1,+,10,N8
512,N2,N1,-,7,N6
513,N8,N1,-,2,N3
514,N4,N1,+,5,N9
515,N2,N1,+,2,N8
516,N1,N1,+,8,N6
517,N4,N1,-,7,N9
518,N9,N1,-,2,N9
519,N7,N1,-,3,N5
520,N6,N1,+,3,N10
521,N10,N1,-,4,N8
522,N6,N1,-,6,N3
523,N8,N1,-,9,N8
524,N2,N1,+,3,N2
525,N2,N1,-,8,N4
526,N4,N1,+,1,N2
527,N7,N1,+,2,N6
528,N7,N1,-,2,N3
529,N5,N1,+,8,N6
530,N6,N1,-,4,N2
531,N3,N1,+,4,N7
532,N3,N1,-,3,N7
533,N6,N1,-,6,N8
534,N7,N1,-,5,N2
535,N2,N1,-,5,N8
536,N5,N1,-,5,N6
537,N7,N1,-,3,N10
538,N4,N1,+,2,N2
539,N6,N1,+,5,N6
540,N10,N1,-,6,N9
541,N1,N1,-,5,N2
542,N5,N1,+,4,N10
543,N5,N1,-,2,N1
544,N10,N1,+,5,N1
545,N1,N1,+,9,N2
546,N4,N1,-,2,N3
547,N7,N1,-,3,N3
548,N7,N1,+,9,N5
549,N6,N1,-,5,N9
550,N1,N1,-,8,N7
551,N1,N1,+,5,N3
552,N8,N1,-,7,N1
553,N9,N1,+,6,N5
554,N10,N1,+,8,N7
555,N9,N1,-,5,N8
556,N6,N1,+,5,N5
557,N5,N1,+,3,N7
558,N1,N1,+,3,N1
559,N4,N1,+,3,N2
560,N8,N1,+,10,N6
561,N5,N1,+,4,N6
562,N6,N1,-,10,N2
563,N5,N1,+,3,N9
564,N6,N1,-,8,N7
565,N5,N1,+,10,N3
566,N5,N1,+,2,N1
567,N5,N1,+,3,N6
568,N5,N1,-,6,N5
569,N2,N1,+,2,N4
570,N7,N1,-,9,N5
571,N2,N1,+,9,N4
572,N6,N1,-,7,N1
573,N7,N1,+,4,N7
574,N5,N1,+,6,N5
575,N9,N1,+,2,N2
576,N4,N1,-,2,N2
577,N3,N1,+,6,N10
578,N2,N1,+,9,N1
579,N9,N1,+,7,N9
580,N1,N1,-,7,N3
581,N6,N1,-,8,N5
582,N7,N1,+,9,N10
583,N2,N1,-,3,N1
584,N4,N1,-,8,N10
585,N8,N1,+,3,N3
586,N6,N1,-,9,N3
587,N10,N1,+,9,N1
588,N8,N1,-,8,N5
589,N8,N1,-,2,N3
590,N9,N1,+,1,N8
591,N6,N1,+,5,N10
592,N7,N1,-,7,N6
593,N8,N1,+,1,N7
594,N2,N1,+,5,N3
595,N3,N1,+,5,N6
596,N6,N1,-,4,N5
597,N9,N1,+,7,N8
598,N1,N1,-,8,N7
599,N7,N1,-,4,N4
600,N1,N1,+,1,N3
601,N8,N1,-,4,N6
602,N8,N1,-,1,N4
603,N5,N1,-,2,N1
604,N10,N1,+,8,N1
605,N5,N1,-,5,N7
606,N6,N1,-,7,N6
607,N9,N1,-,9,N1
608,N8,N1,+,1,N5
609,N3,N1,+,10,N2
610,N5,N1,-,8,N10
611,N5,N1,+,2,N6
612,N1,N1,+,8,N1
613,N4,N1,-,1,N8
614,N8,N1,-,6,N5
615,N1,N1,+,8,N7
616,N10,N1,-,6,N2
617,N5,N1,-,10,N1
618,N5,N1,+,3,N10
619,N6,N1,+,8,N1
620,N9,N1,+,3,N3
621,N4,N1,-,3,N2
622,N6,N1,+,7,N2
623,N4,N1,+,2,N8
624,N7,N1,-,8,N4
625,N3,N1,-,1,N3
626,N2,N1,-,4,N10
627,N2,N1,+,4,N3
628,N6,N1,+,4,N9
629,N3,N1,+,10,N4
630,N1,N1,-,6,N3
631,N6,N1,+,1,N2
632,N4,N1,-,2,N7
633,N1,N1,+,5,N9
634,N6,N1,+,3,N7
635,N9,N1,+,7,N4
636,N10,N1,-,7,N2
637,N6,N1,-,9,N3
638,N3,N1,-,2,N6
639,N4,N1,-,6,N4
640,N9,N1,+,10,N9
641,N1,N1,+,10,N4
642,N4,N1,-,8,N9
643,N8,N1,+,4,N2
644,N6,N1,+,3,N1
645,N8,N1,+,4,N8
646,N6,N1,+,4,N3
647,N5,N1,-,7,N5
648,N1,N1,-,10,N3
649,N2,N1,-,6,N9
650,N1,N1,-,2,N2
651,N2,N1,+,7,N6
652,N8,N1,-,6,N9
653,N5,N1,+,2,N1
654,N2,N1,+,7,N9
655,N8,N1,+,3,N1
656,N1,N1,-,4,N7
657,N1,N1,+,6,N8
658,N1,N1,+,1,N8
659,N4,N1,-,10,N1
660,N2,N1,+,7,N2
661,N9,N1,-,10,N9
662,N6,N1,-,8,N5
663,N10,N1,+,8,N5
664,N1,N1,+,3,N3
665,N5,N1,-,7,N8
666,N10,N1,-,10,N1
667,N5,N1,-,7,N7
668,N10,N1,-,5,N5
669,N9,N1,+,6,N4
670,N9,N1,+,9,N8
671,N5,N1,-,2,N1
672,N1,N1,+,5,N7
673,N8,N1,+,3,N9
674,N2,N1,-,2,N5
675,N2,N1,-,2,N4
676,N4,N1,+,4,N1
677,N4,N1,-,2,N5
678,N6,N1,-,5,N3
679,N2,N1,+,3,N6
680,N6,N1,-,3,N7
681,N1,N1,+,1,N6
682,N4,N1,+,5,N1
683,N6,N1,+,1,N6
684,N3,N1,+,3,N4
685,N2,N1,+,5,N9
686,N7,N1,-,7,N7
687,N1,N1,-,7,N10
688,N10,N1,+,8,N3
689,N6,N1,+,5,N7
690,N4,N1,+,9,N5
691,N4,N1,-,1,N1
692,N2,N1,+,8,N1
693,N9,N1,-,7,N10
694,N2,N1,-,7,N1
695,N10,N1,+,8,N4
696,N4,N1,+,10,N6
697,N4,N1,+,1,N5
698,N5,N1,-,2,N6
699,N5,N1,+,1,N1
700,N2,N1,+,5,N3
701,N6,N1,-,5,N5
702,N9,N1,+,8,N3
703,N10,N1,+,1,N2
704,N5,N1,-,2,N7
705,N3,N1,-,7,N10
706,N7,N1,+,4,N6
707,N7,N1,+,7,N4
708,N1,N1,-,6,N7
709,N5,N1,+,3,N8
710,N4,N1,+,3,N5
711,N6,N1,-,6,N8
712,N4,N1,-,5,N8
713,N5,N1,-,5,N6
714,N5,N1,+,8,N1
715,N10,N1,-,4,N5
716,N6,N1,+,5,N9
717,N2,N1,+,4,N5
718,N4,N1,-,3,N4
719,N10,N1,-,1,N7
720,N8,N1,-,9,N4
721,N4,N1,+,3,N5
722,N3,N1,-,6,N2
723,N8,N1,-,3,N6
724,N5,N1,-,9,N7
725,N2,N1,-,6,N4
726,N9,N1,+,8,N9
727,N4,N1,-,2,N1
728,N6,N1,-,4,N4
729,N7,N1,-,9,N8
730,N1,N1,+,7,N3
731,N3,N1,+,10,N2
732,N3,N1,-,10,N9
733,N7,N1,+,9,N4
734,N4,N1,+,8,N4
735,N7,N1,-,8,N6
736,N2,N1,+,5,N9
737,N4,N1,+,10,N4
738,N4,N1,+,6,N4
739,N6,N1,-,5,N2
740,N5,N1,+,6,N4
741,N7,N1,-,7,N7
742,N10,N1,+,5,N6
743,N8,N1,-,6,N8
744,N7,N1,+,9,N6
745,N8,N1,-,2,N2
746,N2,N1,+,2,N8
747,N3,N1,+,4,N3
748,N7,N1,-,6,N4
749,N9,N1,+,4,N9
750,N7,N1,+,10,N3
751,N1,N1,+,5,N7
752,N3,N1,-,2,N5
753,N4,N1,+,6,N2
754,N1,N1,-,6,N8
755,N6,N1,+,4,N4
756,N3,N1,+,9,N2
757,N6,N1,-,9,N4
758,N4,N1,+,9,N8
759,N7,N1,-,1,N8
760,N4,N1,+,4,N8
761,N1,N1,-,6,N2
762,N10,N1,+,9,N1
763,N1,N1,-,2,N4
764,N8,N1,+,6,N3
765,N6,N1,+,1,N6
766,N3,N1,+,4,N2
767,N7,N1,+,7,N2
768,N10,N1,-,6,N3
769,N4,N1,-,9,N8
770,N10,N1,+,3,N9
771,N5,N1,+,7,N5
772,N7,N1,-,8,N2
773,N4,N1,-,5,N2
774,N4,N1,+,9,N7
775,N8,N1,+,7,N9
776,N7,N1,+,4,N4
777,N7,N1,-,1,N5
778,N10,N1,+,7,N2
779,N1,N1,-,8,N4
780,N5,N1,+,8,N8
781,N7,N1,-,5,N10
782,N1,N1,+,8,N6
783,N5,N1,+,6,N1
784,N7,N1,-,8,N9
785,N9,N1,-,6,N10
786,N10,N1,-,8,N9
787,N3,N1,+,7,N10
788,N10,N1,+,9,N10
789,N6,N1,+,2,N4
790,N10,N1,+,10,N1
791,N5,N1,-,8,N7
792,N9,N1,-,5,N5
793,N5,N1,+,9,N7
794,N10,N1,+,6,N3
795,N7,N1,-,8,N8
796,N8,N1,-,6,N6
797,N7,N1,+,5,N2
798,N8,N1,+,4,N10
799,N2,N1,-,7,N1
800,N3,N1,+,10,N3
801,N7,N1,+,7,N6
802,N8,N1,-,2,N10
803,N7,N1,+,9,N2
804,N3,N1,-,5,N2
805,N1,N1,+,8,N8
806,N2,N1,-,6,N1
807,N8,N1,+,5,N5
808,N2,N1,+,10,N1
809,N8,N1,+,4,N1
810,N10,N1,-,4,N1
811,N4,N1,+,6,N4
812,N1,N1,-,6,N8
813,N4,N1,+,9,N10
814,N6,N1,-,7,N4
815,N7,N1,-,2,N10
816,N10,N1,-,3,N3
817,N7,N1,-,3,N1
818,N5,N1,-,9,N2
819,N3,N1,-,5,N10
820,N8,N1,+,4,N1
821,N2,N1,+,9,N2
822,N9,N1,+,4,N7
823,N5,N1,+,5,N8
824,N1,N1,-,7,N9
825,N8,N1,+,5,N5
826,N1,N1,+,9,N1
827,N2,N1,-,3,N4
828,N7,N1,-,10,N7
829,N7,N1,+,4,N6
830,N9,N1,-,10,N6
831,N3,N1,+,9,N5
832,N7,N1,-,4,N3
833,N3,N1,+,8,N2
834,N8,N1,+,4,N1
835,N7,N1,+,6,N6
836,N1,N1,+,4,N5
837,N7,N1,+,6,N7
838,N10,N1,+,4,N7
839,N6,N1,+,5,N8
840,N7,N1,-,4,N10
841,N4,N1,+,10,N8
842,N6,N1,-,9,N4
843,N2,N1,-,9,N2
844,N3,N1,+,5,N7
845,N2,N1,+,5,N4
846,N10,N1,+,5,N7
847,N1,N1,-,10,N3
848,N2,N1,-,5,N7
849,N4,N1,+,3,N1
850,N3,N1,+,4,N4
851,N3,N1,+,4,N4
852,N10,N1,-,10,N9
853,N4,N1,-,2,N5
854,N9,N1,+,8,N5
855,N6,N1,+,4,N9
856,N7,N1,-,6,N8
857,N1,N1,+,1,N5
858,N10,N1,+,1,N3
859,N3,N1,+,6,N4
860,N8,N1,+,2,N6
861,N6,N1,+,6,N6
862,N7,N1,+,3,N7
863,N1,N1,+,9,N6
864,N7,N1,-,3,N2
865,N6,N1,+,5,N3
866,N10,N1,-,2,N1
867,N10,N1,-,3,N5
868,N4,N1,+,3,N10
869,N6,N1,+,7,N5
870,N5,N1,+,2,N5
871,N7,N1,+,1,N10
872,N8,N1,+,10,N2
873,N9,N1,+,6,N6
874,N1,N1,+,3,N4
875,N3,N1,+,7,N5
876,N4,N1,-,8,N4
877,N9,N1,-,6,N2
878,N5,N1,-,10,N9
879,N1,N1,+,9,N8
880,N3,N1,-,3,N8
881,N4,N1,+,6,N4
882,N10,N1,-,5,N5
883,N1,N1,+,10,N7
884,N8,N1,+,4,N8
885,N2,N1,-,5,N5
886,N3,N1,-,3,N8
887,N9,N1,+,1,N9
888,N6,N1,-,2,N9
889,N1,N1,-,7,N10
890,N10,N1,+,3,N10
891,N2,N1,-,2,N9
892,N9,N1,+,2,N2
893,N10,N1,-,4,N9
894,N1,N1,+,6,N1
895,N6,N1,-,7,N2
896,N5,N1,+,1,N10
897,N7,N1,+,5,N10
898,N6,N1,+,6,N5
899,N1,N1,+,9,N2
900,N2,N1,-,10,N8
901,N2,N1,+,4,N8
902,N9,N1,-,8,N4
903,N5,N1,-,10,N8
904,N1,N1,+,2,N1
905,N8,N1,-,9,N10
906,N8,N1,+,5,N6
907,N2,N1,-,1,N8
908,N3,N1,-,2,N4
909,N7,N1,+,6,N2
910,N8,N1,-,7,N3
911,N2,N1,+,7,N9
912,N5,N1,+,2,N8
913,N9,N1,+,2,N3
914,N1,N1,+,6,N6
915,N1,N1,+,5,N4
916,N8,N1,+,10,N3
917,N4,N1,-,8,N3
918,N10,N1,+,2,N3
919,N2,N1,+,2,N3
920,N3,N1,+,5,N6
921,N9,N1,-,2,N5
922,N1,N1,+,4,N1
923,N4,N1,+,10,N10
924,N2,N1,+,6,N10
925,N3,N1,+,6,N4
926,N4,N1,-,10,N2
927,N6,N1,+,4,N8
928,N7,N1,-,4,N9
929,N2,N1,-,8,N8
930,N9,N1,-,10,N2
931,N2,N1,+,3,N4
932,N6,N1,+,9,N7
933,N9,N1,-,1,N10
934,N1,N1,+,3,N9
935,N3,N1,+,7,N1
936,N10,N1,-,2,N5
937,N9,N1,-,7,N10
938,N10,N1,+,9,N4
939,N9,N1,-,7,N2
940,N2,N1,-,5,N4
941,N6,N1,-,6,N8
942,N4,N1,+,6,N3
943,N10,N1,+,7,N4
944,N10,N1,+,5,N9
945,N1,N1,+,5,N10
946,N3,N1,+,8,N10
947,N5,N1,-,3,N10
948,N3,N1,+,6,N1
949,N8,N1,-,4,N6
950,N6,N1,-,1,N8
951,N1,N1,-,2,N8
952,N6,N1,-,9,N2
953,N2,N1,-,10,N4
954,N5,N1,+,10,N7
955,N10,N1,+,1,N8
956,N1,N1,-,5,N1
957,N2,N1,-,5,N8
958,N7,N1,+,8,N9
959,N7,N1,-,2,N8
960,N3,N1,-,7,N9
961,N3,N1,+,4,N1
962,N10,N1,+,10,N4
963,N2,N1,+,10,N8
964,N10,N1,+,5,N8
965,N3,N1,+,8,N2
966,N2,N1,+,9,N5
967,N1,N1,-,3,N6
968,N10,N1,-,3,N6
969,N6,N1,-,10,N4
970,N7,N1,+,6,N9
971,N1,N1,+,9,N2
972,N5,N1,+,5,N2
973,N8,N1,+,4,N2
974,N8,N1,-,5,N2
975,N9,N1,+,6,N6
976,N8,N1,-,1,N6
977,N6,N1,+,7,N4
978,N6,N1,+,2,N8
979,N5,N1,-,6,N3
980,N5,N1,-,3,N7
981,N9,N1,-,2,N10
982,N4,N1,+,3,N8
983,N10,N1,+,1,N8
984,N9,N1,-,7,N1
985,N8,N1,+,6,N8
986,N4,N1,+,1,N1
987,N8,N1,-,8,N10
988,N9,N1,+,4,N3
989,N2,N1,-,5,N3
990,N4,N1,-,8,N1
991,N9,N1,+,5,N4
992,N2,N1,+,5,N3
993,N1,N1,+,5,N7
994,N1,N1,-,4,N1
995,N4,N1,-,10,N3
996,N5,N1,+,10,N4
997,N5,N1,-,10,N8
998,N2,N1,-,5,N7
999,N2,N1,-,9,N4

View File

@ -16,6 +16,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
###################################################################
### CREER VOTRE PROPRE VERSION DU JEU
### List games/E@MAIL/ directories
## ADD PROPOSAL ON THE METHOD
GAMES_DIR="games"
@ -90,4 +91,4 @@ cd "$homefolder"
rm -r $HOME/.zen/adventure/$newplayer
echo "To continue..."
exit
exit

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,48 @@
# SCRIPT01.CYBSEC
```
Loading... hRXUD1VyXh/rooms/start.sh
Résolvez 16 + 17 : 33
Correct !
Bravo !
Résolvez 17 - 2 : 15
Correct !
Bravo !
```
+ 9 : game engine
+ 2 : multigame compatibility
+1 : shellcheck
+1 : arithmetic
> final 13
## "GameShell" LEVEL ?
```
Seulement dans ../_votre jeu/: adventure.sh
Seulement dans ../_votre jeu/: art
Seulement dans ../_votre jeu/: logic
Seulement dans ../_votre jeu/rooms: bigroom.sh
Seulement dans ../_votre jeu/rooms: brown.sh
Seulement dans ../_votre jeu/rooms: end.sh
Seulement dans ../_votre jeu/rooms: gameroom.sh
Seulement dans ../_votre jeu/rooms: green.sh
Seulement dans ../_votre jeu/rooms: grue.sh
Seulement dans ../_votre jeu/rooms: kroo2.sh
Seulement dans ../_votre jeu/rooms: kroo.sh
Seulement dans ../_votre jeu/rooms: magic8.sh
Seulement dans ../_votre jeu/rooms: mainroom.sh
Seulement dans ../_votre jeu/rooms: meteofrance.sh
Seulement dans ../_votre jeu/rooms: red.sh
Les fichiers ./rooms/start.sh et ../_votre jeu/rooms/start.sh sont différents
Seulement dans ../_votre jeu/rooms: white.sh
Seulement dans ../_votre jeu/: script
```

0
adventure/games/anais.dupin@ynov.com/rooms/start.sh Normal file → Executable file
View File

View File

@ -0,0 +1,36 @@
# SCRIPT01.CYBSEC
valhalla
+ 11 : game engine
+ 2 : multigame compatibility
> final 13
## "GameShell" LEVEL ?
```
diff --recursive --brief ./ ../_votre\ jeu/
Les fichiers ./logic/leverlogic.ben et ../_votre jeu/logic/leverlogic.ben sont différents
Seulement dans ./: note
Les fichiers ./rooms/brown.sh et ../_votre jeu/rooms/brown.sh sont différents
Les fichiers ./rooms/end.sh et ../_votre jeu/rooms/end.sh sont différents
Les fichiers ./rooms/gameroom.sh et ../_votre jeu/rooms/gameroom.sh sont différents
Les fichiers ./rooms/start.sh et ../_votre jeu/rooms/start.sh sont différents
Seulement dans ./rooms: valhalla.sh
Les fichiers ./rooms/white.sh et ../_votre jeu/rooms/white.sh sont différents
```
```
------------------------------------------------------------------------------
Searching for valhalla.sh recursively. Please Wait...
------------------------------------------------------------------------------
./rooms/white.sh: ./valhalla.sh;;
------------------------------------------------------------------------------
```

View File

@ -2,10 +2,10 @@
secret level
+ 12 : game engine
+ 11 : game engine
+ 2 : multigame compatibility
> final 14
> final 13
## "GameShell" LEVEL ?

View File

@ -0,0 +1,67 @@
#!/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"
if [ -d "$MY_PATH/rooms" ]; then
cp -r "$MY_PATH/rooms" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/rooms does not exist or is not a directory."
fi
if [ -d "$MY_PATH/art" ]; then
cp -r "$MY_PATH/art" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/art does not exist or is not a directory."
fi
if [ -d "$MY_PATH/script" ]; then
cp -r "$MY_PATH/script" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/script does not exist or is not a directory."
fi
if [ -d "$MY_PATH/logic" ]; then
cp -r "$MY_PATH/logic" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/logic does not exist or is not a directory."
fi
fi
###################################################################
echo "Loading..."
echo
###################################################################
if hash uuidgen 2>/dev/null; then
cd $HOME/.zen/adventure/$newplayer/rooms
else
cd rooms
fi
./start.sh
###################################################################
if hash uuidgen 2>/dev/null; then
cd "$homefolder"
rm -r $HOME/.zen/adventure/$newplayer
fi
echo "To continue..."
exit

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,75 @@
# ATTENTION POUR VOIR LES IMAGES OUVRIR LE DOCX !
Adventure.sh avec WSL
Dans un premier temps, trouver le projet cloné qui pour moi ce situe sur le bureau.
Passer par /mnt une fois lenvironnement wsl lancé pour accéder au répertoire de mon windows
Résolution des bugs :
Supprimer le saut de ligne (ligne 20) pour la première erreur
Puis installer dos2unix pour la 2eme :
sudo apt install dos2unix
Si linstallation ne fonctionne pas, noubliez pas de faire :
sudo apt update
Et
sudo apt upgrade
Une fois dos2unix installé, faites dos2unix adventure.sh pour convertir le fichier.
Maintenant nous avons ces erreurs :
Pour régler ça jai dû modifier un peu la partie des PATH dans adventure.sh :
'''
if hash uuidgen 2>/dev/null; then
homefolder=$(pwd)
newplayer=$(uuidgen)
## Copy Player Game Files
mkdir -p "$HOME/.zen/adventure/$newplayer"
if [ -d "$MY_PATH/rooms" ]; then
cp -r "$MY_PATH/rooms" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/rooms does not exist or is not a directory."
fi
if [ -d "$MY_PATH/art" ]; then
cp -r "$MY_PATH/art" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/art does not exist or is not a directory."
fi
if [ -d "$MY_PATH/script" ]; then
cp -r "$MY_PATH/script" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/script does not exist or is not a directory."
fi
if [ -d "$MY_PATH/logic" ]; then
cp -r "$MY_PATH/logic" "$HOME/.zen/adventure/$newplayer/"
else
echo "Source directory $MY_PATH/logic does not exist or is not a directory."
fi
fi
'''
Autre erreur me dit que :
Ça traduit une erreur dinterprétation dans le fichier « start.sh » que jai réglé en utilisant la commande ''' dos2unix *.sh ''' dans le dossier « rooms » pour convertir tous les fichiers :
BRAVO :
Dans le jeu on se rend compte que cette erreur apparaît :
Il faut installer ''' sudo apt install xdg-utils ''' ainsi que ''' sudo apt install firefox ''' pour résoudre ça
Le levier ne fonctionne pas, « ACTIVATION STATION » mais rien ne se passe.
c'est parce que le script ne se souvient que du premiere appel du levier donc il faut le lui rappeller juste après l'action avec :
leverstate=$(cat $MY_PATH/../logic/leverlogic.ben)

View File

@ -0,0 +1 @@
off

View File

@ -0,0 +1 @@
off

View File

@ -0,0 +1,36 @@
# SCRIPT01.CYBSEC
SNAKe
+ 12 : game engine
+ 2 : multigame compatibility
> final 14
## "GameShell" LEVEL ?
```
Les fichiers ./adventure.sh et ../_votre jeu/adventure.sh sont différents
Seulement dans ./: debug_wsl.docx
Seulement dans ./: debug_wsl.md
Les fichiers ./rooms/brown.sh et ../_votre jeu/rooms/brown.sh sont différents
Les fichiers ./rooms/end.sh et ../_votre jeu/rooms/end.sh sont différents
Les fichiers ./rooms/gameroom.sh et ../_votre jeu/rooms/gameroom.sh sont différents
Les fichiers ./rooms/kroo2.sh et ../_votre jeu/rooms/kroo2.sh sont différents
Les fichiers ./rooms/kroo.sh et ../_votre jeu/rooms/kroo.sh sont différents
Les fichiers ./rooms/mainroom.sh et ../_votre jeu/rooms/mainroom.sh sont différents
Les fichiers ./rooms/meteofrance.sh et ../_votre jeu/rooms/meteofrance.sh sont différents
Les fichiers ./rooms/start.sh et ../_votre jeu/rooms/start.sh sont différents
```
```
geany ./rooms/meteofrance.sh
```

View File

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

View File

@ -0,0 +1,65 @@
#!/bin/bash
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
clear
# Initialise the Title Art
file1="$MY_PATH/../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# 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 $MY_PATH/../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 ) if [ "$leverstate" = "on" ]; then
echo "A chaque frappe d'une touche. l'écran fait défiler le texte 'SCANNEZ VISA SVP'."
else
sed -i -e '${/^$/d;}' -e 's/off/on/' $MY_PATH/../logic/leverlogic.ben
echo "Vous pianotez sur l'appareil..."
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
leverstate=$(cat $MY_PATH/../logic/leverlogic.ben)
;;
h ) echo "Le terminal comporte un clavier numérique. Un petit écran.. Il est réalisé avec un mini ordinateur Raspberry Pi. Il porte l'adresse G1TAG [https://g1sms.fr]" ;;
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
esac
done
esac
exit

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,52 @@
#!/bin/bash
clear
# This room gets a little artsy with sleep commands, to help with the
# narrative of the story. This is why there are two versions - foyer and foyer2.
# Initialise the Title Art
file1="../art/titleart.ben"
while IFS= read -r line
do
echo "$line"
done <"$file1"
echo
# It's script time again...
echo "Vous parcourez l'espace du regard"
echo "Au nord, face à vous se trouve un foyer où brule un feu."
echo
echo "A l'ouest sont suspendus tuyaux, ustensiles et bocaux. Une cuisine?"
echo "A l'est il y a un genre de 'photomaton' "
echo
echo "Derrière vous, la porte par où vous êtes entré est encore ouverte."
echo
echo "Que voulez vous faire?"
echo
echo "Il y a toujours l'ordinateur au millieu de la pièce avec l'inscription : 'Appuyez sur U pour lancer le jeu'"
# And once again the room logic.
while true; do
read -p "> " nsewuh
case $nsewuh in
n ) echo "Vous vous asseyez sur le grand tapis devant le feu. Vous vous relaxez un instant."
./magic8.sh
;;
s ) ./bigroom.sh
exit ;;
e ) ./gameroom.sh
exit ;;
w ) ./grue.sh
exit ;;
u ) echo "Vous tapotez sur le barmoètre. Une photo satellite?"
./meteofrance.sh
exit
;;
h ) echo "La pièce est spacieuse. La chaleur du feu agréable, à gauche on dirait une cuisine explosée, à droite une chaise moletonnée fait face à un écran." ;;
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
esac
done
esac
exit

View File

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

View File

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

View File

@ -0,0 +1,216 @@
#!/bin/bash
# Fonction pour afficher l'interface du jeu
draw_game() {
clear
for ((i = 0; i < height; i++)); do
for ((j = 0; j < width; j++)); do
if [[ $i -eq 0 || $i -eq $((height - 1)) || $j -eq 0 || $j -eq $((width - 1)) ]]; then
echo -e "\033[1;34m#\033[0m\c"
elif [[ $i -eq $fruit_row && $j -eq $fruit_col ]]; then
echo -e "\033[1;31m@\033[0m\c"
else
local is_snake_segment=false
for ((k = 0; k < ${#snake_body_rows[@]}; k++)); do
if [[ $i -eq ${snake_body_rows[$k]} && $j -eq ${snake_body_cols[$k]} ]]; then
echo -e "\033[1;32m#\033[0m\c"
is_snake_segment=true
break
fi
done
if [[ $is_snake_segment == false ]]; then
echo -e " \c"
fi
fi
done
echo
done
}
# Initialisation des variables
height=20
width=40
snake_body_rows=()
snake_body_cols=()
snake_length=1
direction="RIGHT"
fruit_row=$((RANDOM % (height - 2) + 1))
fruit_col=$((RANDOM % (width - 2) + 1))
# Position initiale du serpent
snake_body_rows[0]=$((height / 2))
snake_body_cols[0]=$((width / 2))
# Fonction pour déplacer le serpent
move_snake() {
local i
for ((i = ${#snake_body_rows[@]} - 1; i > 0; i--)); do
snake_body_rows[$i]=${snake_body_rows[$((i - 1))]}
snake_body_cols[$i]=${snake_body_cols[$((i - 1))]}
done
case $direction in
"UP")
snake_body_rows[0]=$((snake_body_rows[0] - 1))
;;
"DOWN")
snake_body_rows[0]=$((snake_body_rows[0] + 1))
;;
"LEFT")
snake_body_cols[0]=$((snake_body_cols[0] - 1))
;;
"RIGHT")
snake_body_cols[0]=$((snake_body_cols[0] + 1))
;;
esac
}
# Fonction pour vérifier les collisions
check_collision() {
if [[ ${snake_body_rows[0]} -le 0 || ${snake_body_rows[0]} -ge $((height - 1)) || ${snake_body_cols[0]} -le 0 || ${snake_body_cols[0]} -ge $((width - 1)) ]]; then
return 1
fi
for ((i = 1; i < ${#snake_body_rows[@]}; i++)); do
if [[ ${snake_body_rows[0]} -eq ${snake_body_rows[$i]} && ${snake_body_cols[0]} -eq ${snake_body_cols[$i]} ]]; then
return 1
fi
done
if [[ ${snake_body_rows[0]} -eq $fruit_row && ${snake_body_cols[0]} -eq $fruit_col ]]; then
generate_fruit
grow_snake
fi
return 0
}
# Fonction pour faire grandir le serpent
grow_snake() {
local last_index=$(( ${#snake_body_rows[@]} - 1 ))
local last_row=${snake_body_rows[$last_index]}
local last_col=${snake_body_cols[$last_index]}
snake_body_rows+=($last_row)
snake_body_cols+=($last_col)
}
# Fonction pour générer un nouveau fruit
generate_fruit() {
fruit_row=$((RANDOM % (height - 2) + 1))
fruit_col=$((RANDOM % (width - 2) + 1))
}
# Boucle principale du jeu
while true; do
draw_game
echo "Score: ${#snake_body_rows[@]}"
# Appel à la fonction move_snake pour que le serpent avance automatiquement
move_snake
read -s -t 0.2 -n 1 action
case $action in
"z")
if [[ $direction != "DOWN" ]]; then
direction="UP"
fi
;;
"s")
if [[ $direction != "UP" ]]; then
direction="DOWN"
fi
;;
"q")
if [[ $direction != "RIGHT" ]]; then
direction="LEFT"
fi
;;
"d")
if [[ $direction != "LEFT" ]]; then
direction="RIGHT"
fi
;;
esac
# Vérifier les collisions après le déplacement
check_collision
if [[ $? -eq 1 ]]; then
echo "Bravo ! Vous avez eu le score de ${#snake_body_rows[@]} ! Appuyez sur \"q\" pour quitter le jeu ou sur \"r\" pour rejouer"
read -n 1 -s choice
case $choice in
q)
./kroo2.sh
;;
r)
./meteofrance.sh
;;
*)
echo "Choix non reconnu."
;;
esac
fi
done
# #!/bin/bash
# ################################################################################
# # Author: Fred (support@qo-op.com)
# # Version: 0.1
# # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
# ################################################################################
# MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
# mkdir -p ~/.zen/tmp/${MOATS}
# ################################################################################
# # Choisir la source de capture
# # https://fr.sat24.com/image?type=visual5HDComplete&region=fr
# MY_PATH="`dirname \"$0\"`" # relative
# MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
# ME="${0##*/}"
# ## TEST IPFS
# [[ ! $(which ipfs) ]] && echo "Missing IPFS. Please install... https://ipfs.tech" && exit 1
# ## PREPARE FILE SYSTEM CACHE
# mkdir -p ~/.zen/adventure/meteo.anim.eu
# rm -f ~/.zen/adventure/meteo.anim.eu/meteo.png
# ## SCRAPING meteo.png
# curl -m 20 --output ~/.zen/adventure/meteo.anim.eu/meteo.png https://s.w-x.co/staticmaps/wu/wu/satir1200_cur/europ/animate.png
# if [[ ! -f ~/.zen/adventure/meteo.anim.eu/meteo.png ]]; then
# echo "Impossible de se connecter au service meteo"
# exit 1
# else
# echo "Mise à jour archive meteo : ${MOATS}"
# echo ${MOATS} > ~/.zen/adventure/meteo.anim.eu/.moats
# OLDID=$(cat ~/.zen/adventure/.meteo.index 2>/dev/null)
# # TODO : COMPARE SIMILAR OR NOT
# # ipfs get "/ipfs/$OLDID/meteo.anim.eu/meteo.png"
# ## PREPARE NEW index.html
# sed "s/_OLDID_/$OLDID/g" ${MY_PATH}/../templates/meteo_chain.html > /tmp/index.html
# sed -i "s/_IPFSID_/$IPFSID/g" /tmp/index.html
# sed -i "s/_DATE_/$(date -u "+%Y-%m-%d#%H:%M:%S")/g" /tmp/index.html
# sed "s/_PSEUDO_/${USER}/g" /tmp/index.html > ~/.zen/adventure/index.html
# # Copy style css
# cp -r ${MY_PATH}/../templates/styles ~/.zen/adventure/
# INDEXID=$(ipfs add -rHq ~/.zen/adventure/* | tail -n 1)
# echo $INDEXID > ~/.zen/adventure/.meteo.index
# echo "METEO INDEX : http://127.0.0.1:8080/ipfs/$INDEXID"
# IPFS=$(ipfs add -q ~/.zen/adventure/meteo.anim.eu/meteo.png | tail -n 1)
# echo $IPFS > ~/.zen/adventure/meteo.anim.eu/.chain
# fi

View File

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

View File

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

View File

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

View File

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

View File

@ -1 +0,0 @@
ici

View File

View File

@ -32,7 +32,7 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
# REMOVE GtkDialog errors for zenity
shopt -s expand_aliases
alias zenity='zenity 2> >(grep -v GtkDialog >&2)'
alias espeak='espeak 1>&2>/dev/null'
alias espeak='espeak >/dev/null 2>&1'
## CHECK IF IPFS DAEMON IS STARTS WELL
floop=0
@ -71,7 +71,7 @@ if [[ ${PLAYER} == "" ]]; then
players=($(ls ~/.zen/game/players | grep "@" 2>/dev/null))
if [[ ${#players[@]} -ge 1 ]]; then
espeak "SELECT YOUR PLAYER" 2>/dev/null
espeak "SELECT YOUR PLAYER"
OUTPUT=$(zenity --list --width 480 --height 200 --title="Choix du PLAYER" --column="Astronaute" "${players[@]}")
[[ ${OUTPUT} == "" ]] && espeak "No player selected. EXIT" && exit 1
else

View File

@ -12,6 +12,13 @@ TS=$(date -u +%s%N | cut -b1-13)
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
#~ mkdir -p ~/.zen/tmp/${MOATS}
### CHECK and CORRECT .current
CURRENT=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
[[ ${CURRENT} == "" ]] \
&& lastplayer=$(ls -t ~/.zen/game/players 2>/dev/null | grep "@" | head -n 1) \
&& [[ ${lastplayer} ]] \
&& ln -s ~/.zen/game/players/${lastplayer} ~/.zen/game/players/.current && CURRENT=${lastplayer}
echo '
_ ____ _____ ____ ___ ____ ___ ____ _____ ___ _ _ _____
/ \ / ___|_ _| _ \ / _ \| _ \ / _ \| _ \_ _| / _ \| \ | | ____|
@ -19,14 +26,11 @@ echo '
/ ___ \ ___) || | | _ <| |_| | __/| |_| | _ < | | | |_| | |\ | |___
/_/ \_\____/ |_| |_| \_\\___/|_| \___/|_| \_\|_| \___/|_| \_|_____|
Ambassade numérique pair à pair sur IPFS.
Astroport is a Web3 engine running UPlanet hosting TW5s on IPFS, and more...
@@@@@@@@@@@@@@@@@@
ASTROPORT
VISA : MadeInZion
ADMIN = '${CURRENT}'
@@@@@@@@@@@@@@@@@@'
CURRENT=$(cat ~/.zen/game/players/.current/.player)
echo "CURRENT = ${CURRENT}"
echo
## VERIFY SOFTWARE DEPENDENCIES
@ -37,66 +41,75 @@ YOU=$(myIpfsApi);
echo 'PRESS ENTER... '; read
## CREATE AND OR CONNECT USER
PS3='Astronaute connectez votre PLAYER ___ '
players=( "PRINT ZENCARD" "CREATE PLAYER" "IMPORT PLAYER" $(ls ~/.zen/game/players | grep "@" 2>/dev/null))
## MULTIPLAYER
PS3=' ____ Select ___ ? '
players=( "CREATE PLAYER" "PRINT QRCARD" $(ls ~/.zen/game/players | grep "@" 2>/dev/null))
## MULTIPLAYER
select fav in "${players[@]}"; do
case $fav in
"PRINT QRCARD")
## DIRECT VISA.print.sh
echo "'Email ?'"
read EMAIL
[[ ${EMAIL} == "" ]] && EMAIL=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
echo "'Secret 1 ?'"
read SALT
[[ ${SALT} == "" ]] && SALT=$(${MY_PATH}/tools/diceware.sh 4 | xargs)
echo "'Secret 2?'"
read PEPPER
[[ ${PEPPER} == "" ]] && PEPPER=$(${MY_PATH}/tools/diceware.sh 4 | xargs)
echo "'PIN ?'"
read PASS
echo "${MY_PATH}/tools/VISA.print.sh" "${EMAIL}" "'"$SALT"'" "'"$PEPPER"'" "'"$PASS"'"
${MY_PATH}/tools/VISA.print.sh "${EMAIL}" "$SALT" "$PEPPER" "$PASS" ##
select fav in "${players[@]}"; do
case $fav in
"PRINT ZENCARD")
## DIRECT VISA.print.sh
echo "'Email ?'"
read EMAIL
[[ ${EMAIL} == "" ]] && EMAIL=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
echo "'Secret 1 ?'"
read SALT
[[ ${SALT} == "" ]] && SALT=$(${MY_PATH}/tools/diceware.sh 4 | xargs)
echo "'Secret 2?'"
read PEPPER
[[ ${PEPPER} == "" ]] && PEPPER=$(${MY_PATH}/tools/diceware.sh 4 | xargs)
echo "'PIN ?'"
read PASS
echo "${MY_PATH}/tools/VISA.print.sh" "${EMAIL}" "'"$SALT"'" "'"$PEPPER"'" "'"$PASS"'"
${MY_PATH}/tools/VISA.print.sh "${EMAIL}" "$SALT" "$PEPPER" "$PASS" ##
[[ ${EMAIL} != "" && ${EMAIL} != $(cat ~/.zen/game/players/.current/.player 2>/dev/null) ]] && rm -Rf ~/.zen/game/players/${EMAIL}/
[[ ${EMAIL} != "" && ${EMAIL} != $(cat ~/.zen/game/players/.current/.player 2>/dev/null) ]] && rm -Rf ~/.zen/game/players/${EMAIL}/
exit
;;
"CREATE PLAYER")
${MY_PATH}/RUNTIME/VISA.new.sh
fav=$(cat ~/.zen/tmp/PSEUDO 2>/dev/null) && rm ~/.zen/tmp/PSEUDO
echo "Astronaute $fav bienvenue sur UPlanet. Set TW GPS position..."
exit
;;
"IMPORT PLAYER")
echo "'Secret 1'"
read SALT
echo "'Secret 2'"
read PEPPER
echo "'Adresse Email'"
read EMAIL
${MY_PATH}/RUNTIME/VISA.new.sh "$SALT" "$PEPPER" "$EMAIL"
fav=$(cat ~/.zen/tmp/PSEUDO 2>/dev/null) && rm ~/.zen/tmp/PSEUDO
echo "Astronaute $fav WELCOME"
exit
;;
"")
echo "Choix obligatoire. exit"
exit
;;
*) echo "Salut $fav"
break
;;
esac
done
PLAYER=$fav
exit
;;
"CREATE PLAYER")
echo "'Email ?'"
read EMAIL
[[ ${EMAIL} == "" ]] && break
echo "'Secret 1'"
read PPASS
[[ ${PPASS} == "" ]] \
&& PPASS=$(${MY_PATH}/tools/diceware.sh $(${MY_PATH}/tools/getcoins_from_gratitude_box.sh) | xargs)
echo "'Secret 2'"
read NPASS
[[ ${NPASS} == "" ]] \
&& NPASS=$(${MY_PATH}/tools/diceware.sh $(${MY_PATH}/tools/getcoins_from_gratitude_box.sh) | xargs)
echo "'Latitude ?'"
read LAT
[[ ${LAT} == "" ]] && LAT="0.00"
echo "'Longitude ?'"
read LON
[[ ${LON} == "" ]] && LON="0.00"
echo "${MY_PATH}/RUNTIME/VISA.new.sh" "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "_URL_" "${LAT}" "${LON}"
${MY_PATH}/RUNTIME/VISA.new.sh "${PPASS}" "${NPASS}" "${EMAIL}" "UPlanet" "_URL_" "${LAT}" "${LON}"
fav=$(cat ~/.zen/tmp/PSEUDO 2>/dev/null) && rm ~/.zen/tmp/PSEUDO
echo "Astronaute $fav bienvenue sur UPlanet..."
exit
;;
"")
echo "Choix obligatoire. exit"
exit
;;
*) echo "Salut $fav"
break
;;
esac
done
PLAYER=$fav
####### 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
pass=$(cat ~/.zen/game/players/$PLAYER/.pass 2>/dev/null)
########################################## DEVEL
echo "Saisissez votre PASS -- UPGRADE CRYPTO FREELY -- $pass" && read PASS
echo "Saisissez votre PASS -- FREE MODE -- $pass" && read PASS
## DECODE CURRENT PLAYER CRYPTO
# echo "********* DECODAGE SecuredSocketLayer *********"
@ -105,11 +118,11 @@ echo "Saisissez votre PASS -- UPGRADE CRYPTO FREELY -- $pass" && read PASS
[[ $PASS != $pass ]] && echo "ERROR. MAUVAIS PASS. EXIT" && exit 1
## CURRENT CHANGE ?
[[ ${CURRENT} != ${PLAYER} ]] \
&& echo "BECOME ADMIN ? hit ENTER for NO, write something for YES" && read ADM \
&& [[ ${ADM} != "" ]] \
&& rm -f ~/.zen/game/players/.current \
&& ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
#~ [[ ${CURRENT} != ${PLAYER} ]] \
#~ && echo "BECOME ADMIN ? hit ENTER for NO, write something for YES" && read ADM \
#~ && [[ ${ADM} != "" ]] \
#~ && rm -f ~/.zen/game/players/.current \
#~ && ln -s ~/.zen/game/players/${PLAYER} ~/.zen/game/players/.current
echo "________LOGIN OK____________";
echo

BIN
images/mayakins.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 KiB

View File

@ -44,7 +44,7 @@ echo "#############################################"
echo "######### INSTALL BASE & PYTHON3 PACKAGE ####"
echo "#############################################"
for i in git make cmake docker-compose fail2ban npm shellcheck socat netcat-traditional ncdu chromium miller inotify-tools curl net-tools libsodium* libcurl4-openssl-dev python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli python3-aiohttp mpack; do
for i in git make cmake docker-compose fail2ban npm shellcheck multitail netcat-traditional ncdu chromium miller inotify-tools curl net-tools libsodium* libcurl4-openssl-dev python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli python3-aiohttp mpack; do
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
sudo apt install -y $i
@ -116,7 +116,7 @@ fi
echo "#####################################"
echo "## CRYPTO LIB & PYTHON TOOLS"
export PATH=$HOME/.local/bin:$PATH
for i in pip setuptools wheel cryptography Ed25519 base58 google duniterpy silkaj pynacl pgpy pynentry SecureBytes amzqr pdf2docx pyppeteer; do
for i in pip setuptools wheel amzqr pdf2docx pyppeteer cryptography Ed25519 base58 google duniterpy pynacl pgpy pynentry SecureBytes; do
echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
python -m pip install --break-system-packages -U $i
[[ $? != 0 ]] && echo "INSTALL $i FAILED." && echo "python -m pip install -U $i FAILED." >> /tmp/install.errors.log && continue

51
microledger.me.sh Normal file
View File

@ -0,0 +1,51 @@
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# 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
echo '
############################################################### ipfs
## __ __ ___ ____ ____ ___ _ _____ ____ ____ _____ ____
## | \/ |_ _/ ___| _ \ / _ \ | | | ____| _ \ / ___| ____| _ \
## | |\/| || | | | |_) | | | | | | | _| | | | | | _| _| | |_) |
## | | | || | |___| _ <| |_| | | |___| |___| |_| | |_| | |___| _ <
## |_| |_|___\____|_| \_\\___/ |_____|_____|____/ \____|_____|_| \_\ me
'
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
OLD=$(cat ${MY_PATH}/.chain)
[[ -z ${OLD} ]] \
&& GENESYS=$(ipfs add -rwq ${MY_PATH}/* | tail -n 1) \
&& echo ${GENESYS} > ${MY_PATH}/.chain \
&& echo "### - (^‿‿^) - " >> ${MY_PATH}/README.md \
&& echo /ipfs/${GENESYS} >> ${MY_PATH}/README.md \
&& echo "CHAIN BLOC ZERO : ${GENESYS}" \
## TIMESTAMP CHAIN SHIFTING
cp ${MY_PATH}/.chain \
${MY_PATH}/.chain.$(cat ${MY_PATH}/.moats)
IPFSME=$(ipfs add -rwHq ${MY_PATH}/* | tail -n 1)
[[ ${IPFSME} == ${OLD} ]] && echo "No change." && exit 0
## CHAIN UPGRADE
echo ${IPFSME} > ${MY_PATH}/.chain
echo ${MOATS} > ${MY_PATH}/.moats
## README UPGRADE
sed -i "s~${OLD}~${IPFSME}~g" ${MY_PATH}/README.md
## AUTO GIT
echo '# ENTER COMMENT FOR YOUR COMMIT :'
git add .
read COMMENT \
&& git commit -m "$COMMENT : https://ipfs.copylaradio.com/ipfs/${IPFSME}" \
&& git push
exit 0

7
show1234.log.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
#############################################################
## DISPLAY SERVER LOG FILES
#############################################################
## 1234 API ~/.zen/tmp/12345.log
############################################################
tail -f ~/.zen/tmp/12345.log -n 200

7
show_12345.log.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
#############################################################
## DISPLAY SERVER LOG FILES
#############################################################
## 12345 API ~/.zen/tmp/_12345.log
#############################################################
tail -f ~/.zen/tmp/_12345.log -n 200

11
show_server.log.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
#############################################################
## DISPLAY SERVER LOG FILES
#############################################################
## 1234 API ~/.zen/tmp/12345.log
## 12345 API ~/.zen/tmp/_12345.log
#############################################################
[[ ! $(which multitail) ]] && sudo apt install multitail
multitail -s 2 -I ~/.zen/tmp/12345.log ~/.zen/tmp/_12345.log

View File

@ -11,10 +11,12 @@ echo "ASTROPORT.ONE START
@@@@@@@@@@@@@@@@@@
$USER@$HOSTNAME
@@@@@@@@@@@@@@@@@@"
RUNLEVEL=$1
[[ ! $RUNLEVEL ]] && RUNLEVEL="ON"
echo "cron_VRFY.sh ON"
echo "cron_VRFY.sh $RUNLEVEL"
###################################################
${MY_PATH}/tools/cron_VRFY.sh ON
${MY_PATH}/tools/cron_VRFY.sh $RUNLEVEL
echo "ipfs start"
sudo systemctl start ipfs
sleep 5
@ -23,6 +25,8 @@ sudo systemctl start astroport
echo "g1billet start"
sudo systemctl start g1billet
########################################## NO systemctl mode ########
### OLD METHOD USING SELF PID
#~ echo "(RE)STARTING 12345.sh"
#~ ###################################################
#~ [[ -s ~/.zen/.pid ]] && kill -9 $(cat ~/.zen/.pid) \

View File

@ -160,6 +160,7 @@ iframe {
| <a href="INFO.png" target="aframe" title="INFO"> _<img width=20 src="http://127.0.0.1:8080/ipfs/QmaeRPu6yYZ8iRACgkd4DtD1V1H8NdXT8yf5Gfxf17c9pm" ></a> |
<a href="https://transiscope.gogocarto.fr/map#/carte/@_LAT_,_LON_,12z?cat=all" target="aframe" title="- Transiscope - Le portail des alternatives"><img width=20 src="http://127.0.0.1:8080/ipfs/QmbM7PH7untyyZRYHTT1Y27rdaYNWUcBF1YAeXbFMW7GX8" ></a> |
<a href="_CESIUMIPFS_/#/app/wot/tx/_SECTORG1PUB_/" target="aframe" title="ZEN BANK ACCOUNT"><img width=20 src="http://127.0.0.1:8080/ipfs/QmQd7rNi13eHHWaEfqKLHxmY6V5HWakGsXNZH8QVoGQvNt" ></a> |
<a href="http://127.0.0.1:8080/ipns/_ZONENS_/TWz" target="aframe" title="SOURCE TWs"><img width=20 src="http://127.0.0.1:8080/ipfs/QmaLzMFUR7QfKvxp63KkHkPco92maRSiNvPEgMoKNxM7Q8" ></a> |
<a href="./TW" target="aframe" title="LOCAL TW NEWS"> _<img width=20 src="http://127.0.0.1:8080/ipfs/QmZX2Titv5L488iNVHwbRNeuZh2PJULSCfxoSgF4Qzv547" ></a> |
<!--
<a href="https://minetest.dustlabs.io/?launch" target="aframe" title="- Minetest - Building Blocks on UPlanet - DEV -"><img width=20 src="http://127.0.0.1:8080/ipfs/Qmeaaee1gojMHkos4Quqqw8dwmF4SDP8kTCgAdnJiTeVgJ" ></a> |

View File

@ -152,6 +152,7 @@ iframe {
</div>
<div id="console">
| <a href="_index.p4n.html" target="aframe" title="Local POI"> <img width=20 src="http://127.0.0.1:8080/ipfs/QmNp9pTJJNqz4AA9RLvd3pTDLFhAzqxiFgtUocNuZmsef2" ></a> |
<a href="_CESIUMIPFS_/#/app/wot/tx/_G1PUB_/" target="aframe" title="UMAP ACCOUNT"><img width=20 src="http://127.0.0.1:8080/ipfs/QmQd7rNi13eHHWaEfqKLHxmY6V5HWakGsXNZH8QVoGQvNt" ></a> |
<a href="http://127.0.0.1:8080/ipns/_ZONENS_/TW" target="aframe" title="LOCAL PLAYERs TW"><img width=20 src="http://127.0.0.1:8080/ipfs/QmaLzMFUR7QfKvxp63KkHkPco92maRSiNvPEgMoKNxM7Q8" ></a> |
<a href="https://minetest.dustlabs.io/?launch" target="aframe" title="Building Blocks UPlanet"><img width=20 src="http://127.0.0.1:8080/ipfs/Qmeaaee1gojMHkos4Quqqw8dwmF4SDP8kTCgAdnJiTeVgJ" ></a> |
<a href="http://127.0.0.1:8080/ipns/_UPZONENS_/TW" target="aframe" title="_UPZONE_ TW NEWS" ><img width=20 src="http://127.0.0.1:8080/ipfs/QmZX2Titv5L488iNVHwbRNeuZh2PJULSCfxoSgF4Qzv547" ></a>

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