Merge branch 'papiche:master' into master
This commit is contained in:
commit
0daca449ff
|
@ -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 ]] \
|
||||
|
|
|
@ -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.
|
22
API/AMZQR.sh
22
API/AMZQR.sh
|
@ -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.
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 ---"
|
||||
|
|
|
@ -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.
|
|
@ -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"
|
||||
############################################
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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."
|
||||
|
||||
|
|
|
@ -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 "#######################"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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}\°=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.
|
||||
|
||||
|
|
|
@ -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}°=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}°=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}) "
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
31
_12345.sh
31
_12345.sh
|
@ -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
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
12D3KooWK1ACupF7RD3MNvkBFU9Z6fX11pKRAR99WDzEUiYp5t8j
|
|
@ -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
|
|
@ -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
|
|
@ -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()
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
N=127
|
|
@ -0,0 +1 @@
|
|||
N=199
|
|
@ -0,0 +1 @@
|
|||
N=-81
|
|
@ -0,0 +1 @@
|
|||
N=81
|
|
@ -0,0 +1 @@
|
|||
N=89
|
|
@ -0,0 +1 @@
|
|||
N=324
|
|
@ -0,0 +1 @@
|
|||
N=149
|
|
@ -0,0 +1 @@
|
|||
N=-132
|
|
@ -0,0 +1 @@
|
|||
N=70
|
|
@ -0,0 +1 @@
|
|||
N=174
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
10.799999999999978
|
|
@ -0,0 +1 @@
|
|||
31.39999999999999
|
|
@ -0,0 +1 @@
|
|||
60.699999999999974
|
|
@ -0,0 +1 @@
|
|||
65.69999999999996
|
|
@ -0,0 +1 @@
|
|||
43.99999999999998
|
|
@ -0,0 +1 @@
|
|||
-29.10000000000003
|
|
@ -0,0 +1 @@
|
|||
50.89999999999997
|
|
@ -0,0 +1 @@
|
|||
24.49999999999998
|
|
@ -0,0 +1 @@
|
|||
35.19999999999997
|
|
@ -0,0 +1 @@
|
|||
70.59999999999997
|
|
@ -0,0 +1 @@
|
|||
35.29999999999996
|
|
@ -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()
|
|
@ -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
|
|
@ -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
|
@ -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,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;;
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
```
|
||||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
secret level
|
||||
|
||||
+ 12 : game engine
|
||||
+ 11 : game engine
|
||||
+ 2 : multigame compatibility
|
||||
|
||||
> final 14
|
||||
> final 13
|
||||
|
||||
## "GameShell" LEVEL ?
|
||||
|
||||
|
|
|
@ -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
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
|
||||
.';:llllc;'.
|
||||
.:xXWX;.,ll;.:XWXx;.
|
||||
;0MMMMMMKl;'',l0MMMMMWO,
|
||||
,0MMMMMMW0dc;,,;cd0WMMMMMMO.
|
||||
dWMMMMM0; ;OMMMMMN:
|
||||
dMMMMMN: .,'. cWMMMMMc
|
||||
,WMMMMX. .xNMMMMNx,'lONMMMMMMN.
|
||||
oMMMMM: :WMMMMMMMMMMMMMMMMMMMMc
|
||||
xMMMMM' xMMMMMMOlllllllloNMMMMo
|
||||
oMMMMMc ,NMMMMMWd. KMMMM:
|
||||
.WMMMMN, .l0NWWWKc KMMMX.
|
||||
cMMMMMWo .. KMMW;
|
||||
cWMMMMMXo' .lKd. KMK'
|
||||
.xWMMMMMMN0dlllldONMMMMWOXd
|
||||
.xNMMMMMMMd''lWMMMMMMXo.
|
||||
'lONWMW, .XMWXOl.
|
||||
..,,..,,..
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
.':cdxxxxxoc;.
|
||||
.:x00dc;'..:..,:lk00o'
|
||||
;0Xd, oMo :OXx.
|
||||
:KK; cMMMl .oNk.
|
||||
.kN: ;MMMMMc xNl
|
||||
.0K. ,WMMMMMW; ;Wo
|
||||
OX. ,WMMMMMMMW; ;Wc
|
||||
cM; .WMMMMMMMMMW, kX.
|
||||
OX .NMMMMMMMMMMMW' ,Mc
|
||||
O0 .NMMMMMMMMMMMMMW' .Mc
|
||||
ON .XMMMMM0kkkkKMMMMN. ,M:
|
||||
:M; KMMMMM: .,,;dMMMMMN. kX.
|
||||
ON. 0MMMMMl ,WMMMMMMMMMMX. ;Wc
|
||||
.0K. 0MMMMMd 'WMMMMMMMMMMMMX. :Wo
|
||||
.xN: kMMMMMO .XWWWWNNNNNXXKKKd xNc
|
||||
;0Xl. .oXx.
|
||||
,OXx, .cOKd.
|
||||
;d00xl:,....';coO0Ol'
|
||||
.;:odddddl:,.
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
MMMMMMMMMMMMMMMMMMMl xxlxxxd . KNNMNl. 'd0xdddkXKxc. ,dNMMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMWKOl:cc' .NNOMXNX .ld; ,lxXMMMMMMMMMMM
|
||||
MMMMMMMMNo. ,,' .KKWMOXX .. .dWMMMMMMMM
|
||||
MMMMMMWc cdddc .NNNMXNX .do '' ' .:,:k; l, .KMMMMMMM
|
||||
MMMMMW, ;ll: .,:ddddd .KKOM0XX .do '0MMXMo . dMMMMMMXOMX0: XMMMMMM
|
||||
MMMMMo xc:d 'ddddddd .XXWMK00' .do .oo. .dMMMMMMO;lWNMMMMMMWXMMMX: :MMMMMM
|
||||
MMMMW. .cXKKXWooK0kk0d0Oxxkkx .XXNM0Ok; .:ol:'do,0MMK ... 'XMMMMMMMMMMMMMMMMMWWMMMMx .dkONMM
|
||||
MKNK. NMWooOWllKKoMNll0MM0x0 xNXXOMKOkKOoM0kkkOkWMMMM0NWWXXMMMMMMMMMMW:WkWk0OKMWdOMNxd0O. .KM
|
||||
l dkkMMWloOWcc0KoMNccOMMxl0cMMXXWM0KOMMMM0OkkOKMMMMMMMMMMMMMMMMMMMMM0 : o.. 'll.lMMMMMMx .O
|
||||
;kMMMMMWlckWooKXdMNccOMMxlXk0MMMNMMMMMMMM0OkkOWMMMMMMMMMMMMMMMMMMMMMMo0OWW,xNWKcooMM0NN0Oc
|
||||
.NMMMMMMNllkWllKKoMNll0MMxlNxOMMMOMMMMMMMM0OkOOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNMMNdxMMMk
|
||||
;WMMMMMMMMMMMNNWWNMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWx.
|
||||
:MMkxxxWMMMWkxxxxxxxWXxxxxxxxxKWxxxxxxxxxWMMKxxxxxxKMMKxxxxxxxxKMMXxxxxxx0MMkxxxxxxxxNMXxdlloodO:
|
||||
:N, OMM0. 'N. 0: :Mc XK Nx kl ,N. ;'
|
||||
x..M0xddddKMMOddddddddKKddddddddxNxdddddddddOWoooooooooN0ddddddddddNdoooooooo0xdddddddddkKdddddddox.
|
||||
MWKK ,MN. .,XMMMMl ;MMMM' xc 'MMd .Mx ;x .NMO N; dMMMl ,W
|
||||
MMMK NM:. 'MMMW. xMMMO dW. oMM. lM' .:N, ;MM; ;K oMMMW. dO
|
||||
MMMMMMMo xXXXXXk .MMMO NMMM; .WWN. 00 XM0 KK 0WWWWMMW OMX kc .WWW. OMMMO Nc
|
||||
MMMMMMMX dMMM; ;MMMN dMMk N0 .. oMl .MMMMMMMN ... :W. lMM0 XMMM; ;M' .c
|
||||
MMMMMMMM, .xMMMW. kMMMx .NMM: cMMd. .;0MM. oMMMMMMMMk. .,kMO XMMl :MMMW. kMOKMM
|
||||
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
|
|
@ -0,0 +1,21 @@
|
|||
.,'.
|
||||
.,,;,'',;,'',,.'.
|
||||
.;;,,.. .........'
|
||||
.l:. ............cc.
|
||||
.c, .................:c.
|
||||
.lc ................... .l;
|
||||
l' ... .............. c:
|
||||
:: .. ........... l'
|
||||
d . .''...... 'o
|
||||
.o .. ''''''. l
|
||||
.d . ......''''''' l
|
||||
o . .,,,,,,'''''' 'l
|
||||
;: . ',,,,''''', l.
|
||||
l, .. .,,,''''', oc
|
||||
.lc .',,,''',. .c,
|
||||
'l, .,,''',..:c.
|
||||
';;. .,,',,:;.
|
||||
':;;'. .;:,,,.
|
||||
.,,'''''','..;,,.
|
||||
,:.
|
||||
.,
|
|
@ -0,0 +1,9 @@
|
|||
_______ _ ______ _
|
||||
|__ __| | | ____| | |
|
||||
| | | |__ ___ | |__ _ __ __| |
|
||||
| | | '_ \ / _ \ | __| | '_ \ / _` |
|
||||
| | | | | | __/ | |____| | | | (_| |_
|
||||
|_| |_| |_|\___| |______|_| |_|\__,_(_)
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
|
||||
.:dO0NNkNX0ko,.
|
||||
.:OWMMMMMMc cWMMMMMXd,
|
||||
'kWMMMMMMMMc cWMMMMMMMNo.
|
||||
.kMMMMMMMMMMo lMMMMMMMMMWl
|
||||
.KMMMMMMMMMMd oMMMMMMMMMMx
|
||||
.XMMMMMMMMMMk dMMMMMMMMMMx
|
||||
xMMMMMMMMMM0 OMMMMMMMMMM,
|
||||
.NMMMMMMMMMK. OMMMMMMMMMk
|
||||
'MMMMMMMMMK. OMMMMMMMMK
|
||||
.NMMMMMMMK. ,;;;;' OMMMMMMMx
|
||||
dMMMMMMX. kMKkxxc 0MMMMMM,
|
||||
.KMMMMN. dMx .KMMMMd
|
||||
.0MMN. cMx .KMMd
|
||||
xW' 'W0. ......:Xc
|
||||
.lXNNWNWMMMMMMMMMMMMMMMMXl
|
||||
;xXMMMMMMMMMMMMMMWKo'
|
||||
.,lxkKKKK0kdc'
|
||||
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
_____ _ _
|
||||
/ ____| (_) | |
|
||||
| (___ _ _ _ __ _ __ _ __ _ ___ ___| |
|
||||
\___ \| | | | '__| '_ \| '__| / __|/ _ \ |
|
||||
____) | |_| | | | |_) | | | \__ \ __/_|
|
||||
|_____/ \__,_|_| | .__/|_| |_|___/\___(_)
|
||||
| |
|
||||
|_|
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
_ _ _ ____ ___ _ ____
|
||||
/ \ ___| |_ _ __ ___ _ __ ___ _ __| |_ |___ \ / _ \ _ / |___ \
|
||||
/ _ \ / __| __| '__/ _ \| '_ \ / _ \| '__| __| __) | | | | (_) | | __) |
|
||||
/ ___ \\__ \ |_| | | (_) | |_) | (_) | | | |_ / __/| |_| | _ | |/ __/
|
||||
/_/ \_\___/\__|_| \___/| .__/ \___/|_| \__| |_____|\___/ (_) |_|_____|
|
||||
|_|
|
||||
|
||||
--- Un JEu de Forêt Jardin en Monnaie Libre sur IPFS ---
|
||||
|
Binary file not shown.
|
@ -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 l’environnement 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 l’installation ne fonctionne pas, n’oubliez 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 j’ai 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 d’interprétation dans le fichier « start.sh » que j’ai 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)
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
off
|
|
@ -0,0 +1 @@
|
|||
off
|
|
@ -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
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
#!/bin/bash
|
||||
clear
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
|
||||
# This is close to the endgame, but affords the player a last set of things to try and do.
|
||||
# Obviously if you use this framework to create a game of your own, you can extend this massively.
|
||||
|
||||
echo
|
||||
sleep 1
|
||||
echo "Vous décidez de sortir de la Sation Astroport."
|
||||
echo
|
||||
echoleverstate=`cat ../logic/stationlogic.ben`
|
||||
if [ "$leverstate" = "on" ]; then
|
||||
|
||||
sleep 2
|
||||
echo "Il ne dépend que de vous d'explorer ce nouveau futur."
|
||||
echo "Le Visa MadeInZion inaugure un monde sans territoire, sans frontière, transnationnal, interplanétaire, à vous de voir?"
|
||||
sleep 2
|
||||
echo "Avant de nous rejoindre. Visitez notre 'bon coin' https://gchange.fr "
|
||||
echo
|
||||
sleep 3
|
||||
echo "Ouvrez une ambassade? Installez IPFS, devenons hébergeur, fournisseur d'accès de nos Internets."
|
||||
echo
|
||||
sleep 4
|
||||
echo "Ouvrez votre propriété au futur en commun, activez Astroport."
|
||||
echo "Nous organisons des formations habitats posés, vissés et cousus. Eau potable. Biogaz, Marmite Norvégienne..."
|
||||
echo "Comment nourrir le sol, reconnaitre les plantes... Redevenir ceuilleur, créateur."
|
||||
echo
|
||||
else
|
||||
echo ""
|
||||
echo "Aucune entrée n'est visible."
|
||||
fi
|
||||
echo
|
||||
sleep 5
|
||||
echo
|
||||
echo "Que voulez vous faire?"
|
||||
|
||||
while true; do
|
||||
read -p "> " nsewuh
|
||||
case $nsewuh in
|
||||
n ) echo "Pas moyen de se déplacer." ;;
|
||||
s ) echo ".Pas le choix." ;;
|
||||
e ) echo "Pas par là." ;;
|
||||
w ) echo "Plus à l'ouest que ça? Y'a pas!" ;;
|
||||
u ) ./end.sh
|
||||
exit ;;
|
||||
h ) echo "Comment refuser une telle proposition..." ;;
|
||||
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
|
||||
esac
|
||||
done
|
||||
|
||||
esac
|
||||
exit
|
|
@ -0,0 +1,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
|
|
@ -0,0 +1,71 @@
|
|||
#!/bin/bash
|
||||
clear
|
||||
|
||||
# This is the endgame. This file does nothing but give you the final bit of storyline.
|
||||
# Use (over-use) of 'sleep' is for dramatic effect - play around with it, see how it reads.
|
||||
|
||||
# Let's reset the lever, now that we're done with it.
|
||||
sed -i='' 's/on/off/' ../logic/leverlogic.ben
|
||||
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
sleep 1
|
||||
echo "Voici la fin de cette petite aventure."
|
||||
echo
|
||||
sleep 4
|
||||
echo "Vous venez de visiter la forêt où s'est posé Astroport ONE."
|
||||
sleep 3
|
||||
echo
|
||||
echo "Une oeuvre habitable. Un jardin sur sol vivant. Un progamme pair à pair interplanétaire"
|
||||
sleep 4
|
||||
echo
|
||||
echo "Les terraformeurs"
|
||||
echo "En quête de la meilleure façon de vivre sur le vaisseau spatial Terre..."
|
||||
echo
|
||||
sleep 5
|
||||
echo "Vous aussi ouvrez votre Ambassade."
|
||||
echo "Activez le JEu. Invitez vos visiteurs à rêver d'un monde meilleur"
|
||||
echo "Reproduisez, améliorez, partagez les plans pour y parvenir."
|
||||
echo
|
||||
sleep 7
|
||||
echo "Il est l'heure de laisser derrière vous la civilisation thermo industrielle."
|
||||
echo "Gagnez en autonomie, en convivialité, en optimisme, en conscience."
|
||||
echo
|
||||
sleep 5
|
||||
echo
|
||||
echo "EMBARQUEZ VERS LE FUTUR"
|
||||
echo
|
||||
sleep 9
|
||||
echo
|
||||
file1="../art/bigfinish.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
echo
|
||||
read -p "Appuyez sur [ENTER] pour terminer..."
|
||||
echo
|
||||
clear
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
echo "Merci d'avoir joué le jeu"
|
||||
echo "Je suis heureux de vous avoir fait partager le rêve des astronautes terraformeurs."
|
||||
echo
|
||||
echo "Le futur ne se prédit pas, il se construit. Il se vit."
|
||||
echo
|
||||
echo " - @Fred"
|
||||
echo
|
||||
|
||||
# That's all, folks!
|
||||
|
||||
exit
|
|
@ -0,0 +1,88 @@
|
|||
#!/bin/bash
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
|
||||
clear
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
|
||||
# This room gives the player a typical poisoned apple style scenaro.
|
||||
# Just because something looks shiny and fun, doesn't make it any
|
||||
# less deadly.
|
||||
sleep 1
|
||||
echo "Dans une cabine, un écran est disposé en coin. Un tout petit ordinateur"
|
||||
echo "y est raccordé... D'autres fils sortent de l'appareil. Une webcam. Une imprimante."
|
||||
echo
|
||||
echo "Que voulez vous faire?"
|
||||
myIP=$(hostname -I | awk '{print $1}' | head -n 1)
|
||||
isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/")
|
||||
[[ ! $myIP || $isLAN ]] && myIP="127.0.1.1"
|
||||
|
||||
while true; do
|
||||
read -p "> " nsewuh
|
||||
case $nsewuh in
|
||||
n ) echo "Vous êtes dans une cabine. Des QRCode sont collés à la parois nord" ;;
|
||||
s ) echo "Cette paroie comporte un miroir. Pour se faire une beauté avant d'enregistrer une capsule vidéo." ;;
|
||||
w ) ./kroo.sh
|
||||
exit ;;
|
||||
e ) echo "Vous êtes face à l'écran. Au dessus des hauts parleurs, une webcam" ;;
|
||||
u ) leverstate=`cat ../logic/stationlogic.ben`
|
||||
if [ "$leverstate" = "on" ]; then
|
||||
echo "A chaque frappe d'une touche. l'écran fait défiler le texte 'SCANNEZ VISA SVP'."
|
||||
else
|
||||
sed -i='' 's/off/on/' ../logic/stationlogic.ben
|
||||
echo "Vous appuyez sur l'interupteur de l'écran. Y apparaît alors :"
|
||||
sleep 3
|
||||
echo "AMBASSADE MadeInZion - TerraPi4 - 2 To -"
|
||||
echo ""
|
||||
echo
|
||||
sleep 2
|
||||
echo "INTERNET est dangereux. il vend vos information personnelles pour que vous deveniez un produit. "
|
||||
sleep 2
|
||||
echo
|
||||
echo "Rebootez INTERNET. Activez votre TW sur le Système de Fichiers Interplanétaire (IPFS)."
|
||||
sleep 2
|
||||
echo
|
||||
echo "On y échange en pair à pair. La monnaie y est Libre."
|
||||
sleep 4
|
||||
file1="../art/astrored.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
echo
|
||||
echo "____ Astroport déclenche à 20:12 la synchronisation de ses ambassades..."
|
||||
echo "Rapport 2022 : https://ipfs.asycn.io/ipfs/QmUtGpGeMZvwp47ftqebVmoFWCmvroy5wEtWsKvWvDWJpR"
|
||||
sleep 3
|
||||
echo
|
||||
echo "ASTROPORT ONE"
|
||||
echo "VISA pour le vaisseau spatial TERRE."
|
||||
if [[ -d ~/.zen/Astroport.ONE ]]; then
|
||||
read -p "Appuyez sur [ENTER] pour activer votre Station Astroport.ONE"
|
||||
espeak "Astroport Command" > /dev/null 2>&1
|
||||
|
||||
~/.zen/Astroport.ONE/command.sh
|
||||
else
|
||||
espeak "Please Install Astroport" > /dev/null 2>&1
|
||||
echo "Install Astroport.ONE ..."
|
||||
echo "bash <(wget -qO- https://raw.githubusercontent.com/papiche/Astroport.ONE/master/install.sh)"
|
||||
./end.sh
|
||||
fi
|
||||
fi
|
||||
exit
|
||||
;;
|
||||
|
||||
h ) echo "'DEMARRER API http://$myIP:1234 ... Une Station Astroport.ONE.?." ;;
|
||||
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
|
||||
esac
|
||||
done
|
||||
|
||||
esac
|
||||
exit
|
|
@ -0,0 +1,38 @@
|
|||
#!/bin/bash
|
||||
clear
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
|
||||
# Everybody clap your hands. I mean, here is the script.
|
||||
sleep 1
|
||||
echo "Vous atteignez une zone remplie de jeunes épineux"
|
||||
echo "Vous reconnaissez des prunus, des aubépines."
|
||||
echo "Quelques génévriers dont vous remarquez les baies noires."
|
||||
echo "Un peu plus loin ce sont les ronces."
|
||||
echo
|
||||
echo "Plus vous progressez plus vous souffrez des épines. Existe-t-il un passage? Qui sait."
|
||||
echo
|
||||
echo "Que voulez vous faire?"
|
||||
|
||||
# And here's what you could have won...
|
||||
while true; do
|
||||
read -p "> " nsewuh
|
||||
case $nsewuh in
|
||||
n ) echo "Un énorme roncier vous barre la route. Ca ne passe pas." ;;
|
||||
s ) echo "Vers le sud, aucun passage en vue." ;;
|
||||
e ) ./mainroom.sh
|
||||
exit ;;
|
||||
w ) echo "Vous voyez le même paysage à perte de vue" ;;
|
||||
u ) echo "Vous cueillez une baie de genèvrier. Vous la portez à la bouche. Croquez. La saveur est délicieuse. La force de la plante vous envahi." ;;
|
||||
h ) echo "Ce type de terrain est caractéritique des zones déboisées. La nature sort ses épines pour protéger les arbres qui poussent en dessous." ;;
|
||||
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
|
||||
esac
|
||||
done
|
||||
|
||||
esac
|
||||
exit
|
|
@ -0,0 +1,35 @@
|
|||
#!/bin/bash
|
||||
clear
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
|
||||
# I like this room. There is no way to get out of it alive.
|
||||
sleep 1
|
||||
echo "Un évier derrière une fenère, une ancienne porte d'armoire comme table."
|
||||
echo "Un meuble fait de planches de bois cousues rempli de bocaux"
|
||||
echo "Une glacière recouverte d'une couche d'isolant Un bruleur à gaz."
|
||||
echo "C'est un espace pour cuisiner."
|
||||
sleep 3
|
||||
echo
|
||||
echo "Vous avez soif. Un filtre à eau gravitationnel vous fait face"
|
||||
echo "vous attraper un gobelet et le remplissez à raz bord du liquide de la bombone"
|
||||
echo "Vous portez le verre à vos lèvres..."
|
||||
echo
|
||||
sleep 5
|
||||
echo "A la première gorgée vous vous sentez ramolir. Comment savoir combien vous avez bu"
|
||||
echo "quand votre corps devenu impossible à garder droit s'est éffondré sur le sol."
|
||||
echo "Simplement le temps de vous demander pourquoi?"
|
||||
echo
|
||||
echo "Vous sombrez dans l'inconscience."
|
||||
sleep 4
|
||||
echo "VOUS VOUS SENTEZ DECOLLER."
|
||||
echo
|
||||
read -p "Appuyez sur [ENTER] pour revenir..."
|
||||
./mainroom.sh
|
||||
|
||||
exit
|
|
@ -0,0 +1,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
|
|
@ -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
|
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
|
||||
# magic 8 ball. Yup. Pick a random number, output message
|
||||
# source: https://www.linuxjournal.com/content/bash-shell-games-lets-play-go-fish
|
||||
|
||||
answers=("Oui c'est certain." "C'est carrément ça."
|
||||
"Sans aucun doute." "Oui - assurément."
|
||||
"Comptez la dessus." "Comme je le vois, oui." "Très probablement."
|
||||
"Bonne perspective." "Oui." "Les signes indiquent que oui."
|
||||
"Réponse floue, essayez à nouveau." "Redemandez plus tard."
|
||||
"Il vaut mieux ne pas vous le dire maintenant.." "Impossible de prédire maintenant."
|
||||
"Concentrez-vous et demandez à nouveau." "N'y comptez pas."
|
||||
"Ma réponse est non." "Mes sources disent que non."
|
||||
"Rien de bon." "Très douteux.")
|
||||
|
||||
echo "Oh ! Boule magique, dis-moi la vérité, s'il te plaît...." ; echo ""
|
||||
/bin/echo -n "Quelle est votre question ? "
|
||||
read question
|
||||
|
||||
answer=$(( $RANDOM % 20 ))
|
||||
|
||||
echo ""
|
||||
echo "J'ai regardé dans le futur et je dis: "
|
||||
echo " ${answers[$answer]}" ; echo ""
|
||||
|
||||
sleep 3
|
||||
./mainroom.sh
|
||||
|
||||
exit
|
|
@ -0,0 +1,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
|
|
@ -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®ion=fr
|
||||
|
||||
# MY_PATH="`dirname \"$0\"`" # relative
|
||||
# MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
# ME="${0##*/}"
|
||||
|
||||
# ## TEST IPFS
|
||||
# [[ ! $(which ipfs) ]] && echo "Missing IPFS. Please install... https://ipfs.tech" && exit 1
|
||||
|
||||
# ## PREPARE FILE SYSTEM CACHE
|
||||
# mkdir -p ~/.zen/adventure/meteo.anim.eu
|
||||
# rm -f ~/.zen/adventure/meteo.anim.eu/meteo.png
|
||||
|
||||
# ## SCRAPING meteo.png
|
||||
# curl -m 20 --output ~/.zen/adventure/meteo.anim.eu/meteo.png https://s.w-x.co/staticmaps/wu/wu/satir1200_cur/europ/animate.png
|
||||
|
||||
# if [[ ! -f ~/.zen/adventure/meteo.anim.eu/meteo.png ]]; then
|
||||
|
||||
# echo "Impossible de se connecter au service meteo"
|
||||
# exit 1
|
||||
|
||||
# else
|
||||
|
||||
# echo "Mise à jour archive meteo : ${MOATS}"
|
||||
# echo ${MOATS} > ~/.zen/adventure/meteo.anim.eu/.moats
|
||||
|
||||
# OLDID=$(cat ~/.zen/adventure/.meteo.index 2>/dev/null)
|
||||
# # TODO : COMPARE SIMILAR OR NOT
|
||||
# # ipfs get "/ipfs/$OLDID/meteo.anim.eu/meteo.png"
|
||||
|
||||
# ## PREPARE NEW index.html
|
||||
# sed "s/_OLDID_/$OLDID/g" ${MY_PATH}/../templates/meteo_chain.html > /tmp/index.html
|
||||
# sed -i "s/_IPFSID_/$IPFSID/g" /tmp/index.html
|
||||
# sed -i "s/_DATE_/$(date -u "+%Y-%m-%d#%H:%M:%S")/g" /tmp/index.html
|
||||
# sed "s/_PSEUDO_/${USER}/g" /tmp/index.html > ~/.zen/adventure/index.html
|
||||
|
||||
# # Copy style css
|
||||
# cp -r ${MY_PATH}/../templates/styles ~/.zen/adventure/
|
||||
|
||||
# INDEXID=$(ipfs add -rHq ~/.zen/adventure/* | tail -n 1)
|
||||
# echo $INDEXID > ~/.zen/adventure/.meteo.index
|
||||
# echo "METEO INDEX : http://127.0.0.1:8080/ipfs/$INDEXID"
|
||||
|
||||
# IPFS=$(ipfs add -q ~/.zen/adventure/meteo.anim.eu/meteo.png | tail -n 1)
|
||||
# echo $IPFS > ~/.zen/adventure/meteo.anim.eu/.chain
|
||||
|
||||
# fi
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
#!/bin/bash
|
||||
clear
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
|
||||
# Set up the script for this room. It's a simple one!
|
||||
sleep 1
|
||||
echo "Vous entrez dans l'ancienne bergerie."
|
||||
echo "Un canapé mauve est installé au milieu de l'espace"
|
||||
echo "Une bache transparente vous sépare du ciel."
|
||||
echo
|
||||
echo "Vous êtes dans une serre."
|
||||
echo "Une seule sortie. A l'Ouest, d'où vous venez."
|
||||
echo
|
||||
echo "Que voulez-vous faire?"
|
||||
|
||||
# And the choices go here.
|
||||
while true; do
|
||||
read -p "> " nsewuh
|
||||
case $nsewuh in
|
||||
n ) echo "Une fente dans le mur vous laisse observer une carcasse de voiture. Une vieille 2cv. Un grillage vous empêche de passer." ;;
|
||||
s ) echo "L'emplacement d'un grand feu se trouve la. Il ne reste que de la cendre." ;;
|
||||
e ) echo "Une autre pièce remplie de gravats et d'éboulis se trouve devant vous. Impossible d'y accéder." ;;
|
||||
w ) ./mainroom.sh
|
||||
exit ;;
|
||||
u ) echo "Vous vous asseyez dans le canapé. Vous vous sentez immédiatement happé par un nuage."
|
||||
sleep 2
|
||||
xdg-open "https://www.copylaradio.com/blog/blog-1/post/le-pas-a-pas-qui-libere-du-grand-mechant-cloud-36#scrollTop=0"
|
||||
;;
|
||||
h ) echo "Aucun détail particulier si ce n'est une tache sur le sofa." ;;
|
||||
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
|
||||
esac
|
||||
done
|
||||
|
||||
esac
|
||||
exit
|
|
@ -0,0 +1,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
|
|
@ -0,0 +1,62 @@
|
|||
#!/bin/bash
|
||||
clear
|
||||
# Initialise the Title Art
|
||||
file1="../art/titleart.ben"
|
||||
while IFS= read -r line
|
||||
do
|
||||
echo "$line"
|
||||
done <"$file1"
|
||||
echo
|
||||
|
||||
#Setting up the room...
|
||||
sleep 1
|
||||
echo "Vous parcourez un chemin qui monte en direction du nord.."
|
||||
echo "Au sommet de cette petite colline vous découvrez un magestueux chêne"
|
||||
echo "trônant au centre d'une clairière lumineuse. La forêt à cet endroit"
|
||||
echo "forme un cercle tout autour..."
|
||||
echo
|
||||
echo "Un Astroport fait de vitres, de planches, de tôles et de chevrons"
|
||||
echo "est posé là. Eclairé par les rayons du soleil."
|
||||
echo
|
||||
# Here we're going to check to see if the lever - the only logic we are using in this game - is on or off.
|
||||
leverstate=`cat ../logic/leverlogic.ben`
|
||||
if [ "$leverstate" = "on" ]; then
|
||||
echo "Une poignée est apparue sur la porte de la façade..."
|
||||
else
|
||||
echo "Vous en faites le tour..."
|
||||
echo "Aucune entrée n'est visible."
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Pas d'autre chemin praticable que celui d'où vous venez."
|
||||
echo
|
||||
echo "Que voulez-vous faire ?"
|
||||
|
||||
# Now lets capture this room's actions. Note that here, the actions change depending on whether or not
|
||||
# the lever is on or off. If it's on, you go elsewhere. If it's off, you don't.
|
||||
while true; do
|
||||
read -p "> " nsewuh
|
||||
case $nsewuh in
|
||||
n ) echo "Vous vous aventurez dans la forêt plus au nord. Sans boussole, vous allez vous perdre rapidement... " ;;
|
||||
s ) ./mainroom.sh
|
||||
exit ;;
|
||||
e ) echo "Une corniche surplombe un ruisseau qui coule dans le fond de la ravine. Impossible de passer sans équipement" ;;
|
||||
w ) echo "Vous voilà face à un Jardin luxuriant. Une cloture électrique le délimite et en empêche l'accès." ;;
|
||||
h ) echo "Vous voyez à l'interieur de la Station une video en cours de projection..."
|
||||
sleep 2
|
||||
xdg-open "https://www.youtube.com/embed/Yk-WRXKysXM"
|
||||
;;
|
||||
u ) leverstate=`cat ../logic/leverlogic.ben`
|
||||
if [ "$leverstate" = "on" ]; then
|
||||
./kroo.sh
|
||||
exit
|
||||
else
|
||||
echo "Vous cherchez une ouverture... Pas la moindre. Impossible d'entrer sans commettre une effraction..."
|
||||
fi
|
||||
;;
|
||||
* ) echo "Je suis désolé, je ne vous comprends pas. Les commandes sont : n, e, s, w, u et h..";;
|
||||
esac
|
||||
done
|
||||
|
||||
esac
|
||||
exit
|
|
@ -0,0 +1,23 @@
|
|||
Message de la Confédération Interplanétaire
|
||||
|
||||
La planète où vous vous trouvez est en danger. Les menaces sont nombreuses.
|
||||
Vos gouvernements se disputent les dernières ressources. Le cycle du vivant est perturbé !
|
||||
Le "contrat social" des 'pays civilisés' vascille. Les technocrates réclament plus de contrôle.
|
||||
|
||||
La commission extraterrestre est formelle. Vous êtes en danger.
|
||||
|
||||
Heureusement la monnaie libre a été découverte sur votre planète!
|
||||
Elle s'utilise dans un jeu 'grandeur nature'. Astroport 20:12
|
||||
Bienvenue dans l'aventure du changement de civilisation.
|
||||
|
||||
Les commandes pour vous déplacer et interagir sont
|
||||
'n' aller au nord,
|
||||
's' aller au sud,
|
||||
'e' aller à l'est,
|
||||
'w' aller à l'ouest,
|
||||
'u' utiliser,
|
||||
'h' observer plus en détail.
|
||||
|
||||
Ctrl-C pour quitter.
|
||||
|
||||
- - -
|
|
@ -1 +0,0 @@
|
|||
ici
|
|
@ -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
|
||||
|
|
139
command.sh
139
command.sh
|
@ -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
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 786 KiB |
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
#############################################################
|
||||
## DISPLAY SERVER LOG FILES
|
||||
#############################################################
|
||||
## 1234 API ~/.zen/tmp/12345.log
|
||||
############################################################
|
||||
tail -f ~/.zen/tmp/12345.log -n 200
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
#############################################################
|
||||
## DISPLAY SERVER LOG FILES
|
||||
#############################################################
|
||||
## 12345 API ~/.zen/tmp/_12345.log
|
||||
#############################################################
|
||||
tail -f ~/.zen/tmp/_12345.log -n 200
|
|
@ -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
|
8
start.sh
8
start.sh
|
@ -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) \
|
||||
|
|
|
@ -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> |
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue