diff --git a/start.sh b/start.sh
index ba98324c..68112a9c 100755
--- a/start.sh
+++ b/start.sh
@@ -17,7 +17,8 @@ echo '
/_/ \_\____/ |_| |_| \_\\___/|_| \___/|_| \_\|_| \___/|_| \_|_____|
-ASTROPORT jeu de terraformation planétaire sur IPFS.<
+ASTROPORT Ambassade numérique pair à pair sur IPFS.
+VISA : MadeInZion
@@@@@@@@@
ACTUAL PLAYERS
@@ -27,20 +28,16 @@ ACTUAL PLAYERS
## VERIFY SOFTWARE DEPENDENCIES
[[ ! $(which ipfs) ]] && echo "EXIT. Vous devez avoir installé ipfs CLI sur votre ordinateur" && echo "https://dist.ipfs.io/#go-ipfs" && exit 1
-## CHECK CONNECTED USER
-if [[ -e ~/.zen/game/players/.current/.pseudo ]]; then
- PLAYER=$(cat ~/.zen/game/players/.current/.player)
- PSEUDO=$(cat ~/.zen/game/players/.current/.pseudo)
- echo "BIENVENUE $PSEUDO - $PLAYER"
-else
- PS3='Choisissez ou créez votre identité : '
- players=($(ls ~/.zen/game/players) "NOUVEAU VISA")
+## CONNECT USER
+ PS3='Choisissez votre combinaison Astronaute ou ajoutez la votre. Identité ? '
+ players=("NOUVEAU VISA" $(ls ~/.zen/game/players))
select fav in "${players[@]}"; do
case $fav in
"NOUVEAU VISA")
${MY_PATH}/tools/VISA.new.sh
fav=$(cat ~/.zen/tmp/PSEUDO)
- break
+ echo "Astronaute $fav bienvenue dans le jeu de terraformation forêt jardin MadeInZion"
+ exit
;;
"")
echo "Choix obligatoire. exit"
@@ -52,13 +49,13 @@ else
esac
done
- PLAYER=$fav
-fi
+PLAYER=$fav
echo "SVP entrez votre PASS $fav"
rm -f ~/.zen/game/players/.current
ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
-cat ~/.zen/game/players/.current/.pass # DEVEL
+cat ~/.zen/game/players/.current/.pass 2>/dev/null # DEVEL
+echo "Saisissez votre PASS "
read PASS
## DECODE CURRENT PLAYER CRYPTO
@@ -66,7 +63,7 @@ openssl enc -aes-256-cbc -d -in "$HOME/.zen/game/players/.current/enc.secret.dun
[ $? != 0 ] && echo "ERROR. MAUVAIS PASS. EXIT" && rm $HOME/.zen/tmp/${PLAYER}.dunikey && exit 1
PS3="$PLAYER choisissez une action à mener : "
-choices=("AJOUTER VIDEOBLOG" "IMPRIMER VISA" "EXPORTER VISA" "SUPPRIMER VISA" "QUITTER")
+choices=("WEBCAM" "JOURNAUX" "IMPRIMER VISA" "EXPORTER VISA" "SUPPRIMER VISA" "QUITTER")
select fav in "${choices[@]}"; do
case $fav in
"IMPRIMER VISA")
@@ -86,10 +83,14 @@ select fav in "${choices[@]}"; do
rm -Rf ~/.zen/game/players/$PLAYER
break
;;
- "AJOUTER VIDEOBLOG")
+ "WEBCAM")
echo "VIDEOBLOG"
${MY_PATH}/tools/vlc_webcam.sh
;;
+ "JOURNAUX")
+ ${MY_PATH}/tools/PLAYER.entrance.sh
+ break
+ ;;
"QUITTER")
echo "CIAO" && exit 0
;;
diff --git a/templates/moawiki.html b/templates/moawiki.html
new file mode 100644
index 00000000..7e2de04b
--- /dev/null
+++ b/templates/moawiki.html
@@ -0,0 +1,3244 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Astronaute _PSEUDO_
+
+— votre carnet de notes interplanétaire
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/playerwiki.html b/templates/playerwiki.html
new file mode 100644
index 00000000..81d13e5b
--- /dev/null
+++ b/templates/playerwiki.html
@@ -0,0 +1,3262 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+_PSEUDO_
+
+— votre propriété numérique privée et inaliénable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/qoopwiki.html b/templates/qoopwiki.html
new file mode 100644
index 00000000..68e43c78
--- /dev/null
+++ b/templates/qoopwiki.html
@@ -0,0 +1,3244 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Astronaute _PSEUDO_
+
+— votre carnet de notes interplanétaire
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/JOURNAL.visit.sh b/tools/JOURNAL.visit.sh
new file mode 100755
index 00000000..ddfef7ed
--- /dev/null
+++ b/tools/JOURNAL.visit.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+################################################################################
+# Author: Fred (support@qo-op.com)
+# Version: 0.1
+# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
+################################################################################
+# INTERFACE DE GESTION DE JOURNAUX DES PLAYERS
+# Le Journal du CAPTAIN est désormais le journal de bord de cet Astroport
+
+# Sa tâche sera de faire le tour des nouveaux rêves pour les ajouter à son journal désormais publié comme balise de la station astrXbian
+# Alerter de manque de placement sur certains ou sur les primes de maintenance.
+
+# ~/.zen/game/players/$PLAYER/ipfs/
+# ~/.zen/ipfs/.$IPFSNODEID
+################################################################################
+################################################################################
+MY_PATH="`dirname \"$0\"`" # relative
+MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
+ME="${0##*/}"
+
+# Check who is currently current connected PLAYER
+PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
+PSEUDO=$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null)
+source ~/.zen/ipfs.sync
+
+if [[ $IPFS_SYNC_DIR == "$PLAYER" ]]; then
+ echo "Bienvenue capitaine $PLAYER !"; sleep 2
+ echo "$PSEUDO ouverture du journal de votre Astroport (rassemblez les Good News des journaux Moa) ?"
+ # Récupération de la clef du capitaine PLAYER ( identique à celle du démon IPFS )
+ IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
+ [ $? == 0 ] && xdg-open "http://127.0.0.1:8080/ipns/$IPFSNODEID"
+
+ # Ouverture des Moa de tous les PLAYER
+ for play in $(ls ~/.zen/game/players); do
+ moaplayer=$(ipfs key list -l | grep -w moa_$play | cut -d ' ' -f 1)
+ g1pub=$(cat ~/.zen/game/players/$play/_g1.pubkey)
+
+ # Check if different from last record (check .chain)
+ nowchain=$(ipfs cat /ipns/$moaplayer/chain 2>/dev/null)
+ moachain=$(cat ~/.zen/ipfs/.$IPFSNODEID/FRIENDS/$g1pub/chain.moa 2>/dev/null)
+
+ [[ $nowchain != $moachain ]] && xdg-open "http://127.0.0.1:8080/ipns/$moaplayer"
+ # TODO Save actual moachain from a command received through Instscan/nc trick for exemple, or recurrent astrXbian actions...
+ # ipfs cat /ipns/$moaplayer/chain > ~/.zen/ipfs/.$IPFSNODEID/FRIENDS/$g1pub/chain.moa
+ done
+
+ zenity --question --width 300 --text "$PLAYER souhaitez-vous ouvrir votre journal 'secret' (niveau 5) ?"
+ # Récupération de la clef du capitaine PLAYER ( identique à celle du démon IPFS )
+ player=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f 1)
+ [ $? == 0 ] && xdg-open "http://127.0.0.1:8080/ipns/$player"
+
+fi
+
+# NOT CAPTAIN
+zenity --question --width 300 --text "$PSEUDO souhaitez-vous ouvrir votre journal 'Moa' (niveau 3) ?"
+# Récupération de la clef du capitaine PLAYER ( identique à celle du démon IPFS )
+moa=$(ipfs key list -l | grep -w moa_$PLAYER | cut -d ' ' -f 1)
+[ $? == 0 ] && xdg-open "http://127.0.0.1:8080/ipns/$moa"
+
+zenity --question --width 300 --text "$PSEUDO souhaitez-vous ouvrir votre journal 'qo-op' (niveau 0) ?"
+# Récupération de la clef du capitaine PLAYER ( identique à celle du démon IPFS )
+qo-op=$(ipfs key list -l | grep -w $PLAYER | cut -d ' ' -f 1)
+[ $? == 0 ] && xdg-open "http://127.0.0.1:8080/ipns/$qo-op"
+
+# TODO: fabriquer une interface où passer d'un journal à l'autre, y glisser déposer, etc ...
+# Le journal transmit par la balise IPFS est celui de la clef PLAYER du CAPTAIN.
+# Ce journal ne se remplit pour un joueur que lorsqu'il devient CAPTAIN (y compris pour le canal secret).
+#
+# Le journal Moa = NFT où nous repertorions nos exploits et talents
+# Le journal qo-op fait partie de la diffusion incensurable des bunkerbox (evolutions Youtube/Facebook/etc... ici on se branche au vieux web)
+
+exit 0
diff --git a/tools/PLAYER.entrance.sh b/tools/PLAYER.entrance.sh
new file mode 100755
index 00000000..0e38cd26
--- /dev/null
+++ b/tools/PLAYER.entrance.sh
@@ -0,0 +1,84 @@
+#!/bin/bash
+################################################################################
+# Author: Fred (support@qo-op.com)
+# Version: 0.1
+# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
+################################################################################
+# Gestion de l'identité IPFS de la Station parmis celle des PLAYER
+# La première clef n'a aucun chalenge pour le faire.
+# Les suivantes peuvent être soumises au niveau de confiance (LOVE) des meilleurs Astronautes.
+#
+# ~/.zen/game/players/$PLAYER/ipfs/
+# ~/.zen/ipfs/.$IPFSNODEID
+################################################################################
+################################################################################
+MY_PATH="`dirname \"$0\"`" # relative
+MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
+ME="${0##*/}"
+
+# Check who is currently current connected PLAYER
+PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null)
+PSEUDO=$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null)
+
+# Check if Astroport Station already has a "captain"
+source ~/.zen/ipfs.sync
+
+### AN ASTROPORT NEEDS A CAPTAIN
+##############################
+if [[ $IPFS_SYNC_DIR == "" || $IPFS_SYNC_DIR == "$HOME/astroport" ]]; then
+
+ echo "Aucun pilote dans le cockpit."; sleep 1
+ echo "$PLAYER séquence déplacement clef balise station..."; sleep 1
+
+ # astrXbian tranformation only once!
+ [[ -f ~/.ipfs/config.astrXbian ]] && echo "FATAL ERROR"; echo "File corruption detected. EXIT"; exit 1
+
+ # 1st Captain. Changing IPFS station key.
+ sudo service ipfs stop
+
+ # Replace ~/.ipfs
+ mv ~/.ipfs/config ~/.ipfs/config.astrXbian
+ cp ~/.zen/game/players/$PLAYER/ipfs.config ~/.ipfs/config
+ ## TODO CONTROL keystore to enhance security level
+ ## ajouter_video KEYS will be moved when captain is changing?
+
+ # Moving captain data into Balise Station
+ mv ~/.zen/game/players/$PLAYER/ipfs/.* ~/.zen/ipfs/
+
+ ## Start IPFS DAEMON
+ sudo service ipfs start
+
+ echo "Nouvelle Identité balise IPFS"; sleep 1
+ ipfs id
+ echo "##################################################### OK"
+ echo "IPFS_SYNC_DIR=$PLAYER" > ~/.zen/ipfs.sync ## PLAYER IS ASTROPORT CAPTAIN NOW
+
+else
+ if [[ $IPFS_SYNC_DIR == "$PLAYER" ]]; then
+ ## THE CAPTAIN IS LOGGED IN
+ echo "Bienvenue capitaine !"; sleep 2
+ echo "Ouverture des journaux...";
+
+ else
+ # A PLAYER IS LOGGED IN
+ echo "Joueur $PLAYER, $IPFS_SYNC_DIR est votre capitaine"; sleep 1
+ echo "$PSEUDO, inscrivez dans votre 'Moa Journal' vos rêves et remarques à adresser au monde ou capitaine de cet Astroport"; sleep 1
+
+ fi
+fi
+
+${MY_PATH}/tools/JOURNAL.visit.sh # OPEN TIDDLYWIKIS
+
+
+[[ $1 != "quiet" ]] && echo "=============================================
+Appuyez sur ENTRER pour vous déconnecter.
+Saisissez 'S' avant pour copier vos données sur clef USB ?
+=======================================================
+"
+read EJECT
+[[ $EJECT == "" ]] && echo "Merci. Au revoir"; rm -f ~/.zen/game/players/.current && exit 0
+
+echo "## TODO BACKUP SUR CLEF USB"
+# ${MY_PATH}/tools/SAVE.astronaut.sh # tar.gzip PLAYER DATA TO USB KEY TODO
+
+exit 0
diff --git a/tools/VISA.new.sh b/tools/VISA.new.sh
index 625ca0ff..d9f31cc7 100755
--- a/tools/VISA.new.sh
+++ b/tools/VISA.new.sh
@@ -11,71 +11,68 @@ MadeInZion DIPLOMATIC PASSPORT
=============================================
A cryptographic key pair to control your P2P Digital Life.
Solar Punk garden forest terraforming game.
+=============================================
+Bienvenue 'Astronaute'"; sleep 1
-Création de votre PSEUDO, votre PLAYER, votre PASS (6 chiffres)
-Création de votre SALT PEPPER : compte Gchange et son portefeuille G1.
-Création de votre clef DUNITER : la clef d'accès Cesium
-Création de vos clef IPNS : vos balises de publication dans le réseau IPFS.
-PLAYER, MOA & STARGATES
-
-Vos identifiants 'Astronaute' sont:
-"
+echo ""
################################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
SALT=$(${MY_PATH}/diceware.sh 4 | xargs)
-[[ $1 != "quiet" ]] && echo "-> SALT : $SALT"
+# [[ $1 != "quiet" ]] && echo "-> SALT : $SALT"
PEPPER=$(${MY_PATH}/diceware.sh 4 | xargs)
-[[ $1 != "quiet" ]] && echo "-> PEPPER : $PEPPER"
+# [[ $1 != "quiet" ]] && echo "-> PEPPER : $PEPPER"
-[[ $1 != "quiet" ]] && echo "CHOISISSEZ UN PSEUDO" && read PSEUDO; PSEUDO=${PSEUDO,,} && [[ -d ~/.zen/game/players/$PSEUDO ]] && echo "CE PSEUDO EST DEJA UN PLAYER. EXIT" && exit 1
+echo "Création de votre PSEUDO, votre PLAYER, avec PASS (6 chiffres)"
+
+[[ $1 != "quiet" ]] && echo "CHOISISSEZ UN PSEUDO" && read PSEUDO; PSEUDO=${PSEUDO,,} && [[ $(ls ~/.zen/game/players/$PSEUDO* 2>/dev/null) ]] && echo "CE PSEUDO EST DEJA UN PLAYER. EXIT" && exit 1
# PSEUDO=${PSEUDO,,} #lowercase
PLAYER=${PSEUDO}${RANDOM:0:2}$(${MY_PATH}/diceware.sh 1 | xargs)${RANDOM:0:2}
[[ ! $PSEUDO ]] && PSEUDO=$PLAYER
-[[ $1 != "quiet" ]] && echo "$PSEUDO voici votre identifiant Astronaute: $PLAYER"; sleep 1
+[[ $1 != "quiet" ]] && echo; echo "Génération de vos identités Astronaute (PLAYER):"; sleep 1; echo "$PLAYER"; sleep 2
PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7)
-[[ $1 != "quiet" ]] && echo "et votre PASS : $PASS"; sleep 2
+############################################################
+######### CLEFS IPNS PLAYER + moa_ + qo-op_
PLAYERNS=$(ipfs key gen $PLAYER)
PLAYERKEYFILE=$(${MY_PATH}/give_me_keystore_filename.py "$PLAYER")
-[[ $1 != "quiet" ]] && echo "Votre clef $PLAYER <=> $PLAYERNS ($PLAYERKEYFILE)"; sleep 2
+# echo "Votre espace Astronaute privé. Compteurs LOVE 'Astroport' (amis de niveau 5)"
+# [[ $1 != "quiet" ]] && echo "Votre clef $PLAYER <=> $PLAYERNS ($PLAYERKEYFILE)"; sleep 2
MOANS=$(ipfs key gen moa_$PLAYER)
MOAKEYFILE=$(${MY_PATH}/give_me_keystore_filename.py "moa_$PLAYER")
-echo "Votre coffre personnel constitués des média que vous aurez embarqué dans votre 'Astroport' (amis de niveau 3)"
-[[ $1 != "quiet" ]] && echo "Votre clef moa_$PLAYER <=> $MOANS ($MOAKEYFILE)"; sleep 2
+# echo "Coffre personnel multimedia journalisé dans votre 'Astroport' (amis de niveau 3)"
+# [[ $1 != "quiet" ]] && echo "Votre clef moa_$PLAYER <=> $MOANS ($MOAKEYFILE)"; sleep 2
QOOPNS=$(ipfs key gen qo-op_$PLAYER)
QOOPKEYFILE=$(${MY_PATH}/give_me_keystore_filename.py "qo-op_$PLAYER")
-echo "Votre journal de bord pubié dans le réseau des ambassades 'Astroport One' (zone 'publique' niveau 0 du réseau Astroport)"
-[[ $1 != "quiet" ]] && echo "Votre clef qo-op_$PLAYER <=> $QOOPNS ($QOOPKEYFILE)"; sleep 2
+# echo "Votre journal de bord pubié dans le réseau des ambassades/passerelles 'Astroport One' (zone 'publiques' niveau 0 et 1)"
+# [[ $1 != "quiet" ]] && echo "Votre clef qo-op_$PLAYER <=> $QOOPNS ($QOOPKEYFILE)"; sleep 2
-## CREATE Player personnal files storage and IPFS publish directory
-mkdir -p ~/.zen/game/players/$PLAYER/ipfs/
-
-echo "$PSEUDO" > ~/.zen/game/players/$PLAYER/.pseudo
-echo "$PLAYER" > ~/.zen/game/players/$PLAYER/.player
-
-echo "$SALT" > ~/.zen/game/players/$PLAYER/secret.june
-echo "$PEPPER" >> ~/.zen/game/players/$PLAYER/secret.june
-
-[[ $1 != "quiet" ]] && echo "Rendez-vous sur https://gchange.fr
+[[ $1 != "quiet" ]] && echo "Compte Gchange et portefeuille G1.
Utilisez ces identifiants pour rejoindre le réseau JUNE
+
$SALT
$PEPPER
-"; sleep 3
+
+Rendez-vous sur https://gchange.fr"; sleep 3
+
+echo; echo "Création de votre clef 'secret.dunikey' accès aux réseaux DU(G1) + LOVE + IPFS astrXbian."; sleep 2
+echo;
G1PUB=$(python3 ${MY_PATH}/key_create_dunikey.py "$SALT" "$PEPPER")
if [[ ! $G1PUB ]]; then
[[ $1 != "quiet" ]] && echo "Désolé. Nous n'avons pas pu générer votre clef Cesium automatiquement."
else
+ ## CREATE Player personnal files storage and IPFS publish directory
+ mkdir -p ~/.zen/game/players/$PLAYER # Prepare PLAYER datastructure
########################################################################
- echo "CREATING ~/.zen/game/players/$PLAYER/ipfs.config"
+ #echo "CREATION ~/.zen/game/players/$PLAYER/ipfs.config"; sleep 1
########################################################################
ipfs_ID=$(python3 ~/.zen/astrXbian/zen/tools/create_ipfsnodeid_from_tmp_secret.dunikey.py)
echo $ipfs_ID > ~/.zen/game/players/$PLAYER/secret.ipfs && source ~/.zen/game/players/$PLAYER/secret.ipfs
@@ -86,10 +83,13 @@ else
rm -f ~/.zen/tmp/config.tmp ~/.zen/tmp/config.ipfs
mv ~/.zen/tmp/ipfs.config ~/.zen/game/players/$PLAYER/
- mkdir -p ~/.zen/game/players/$PLAYER/ipfs/.$PeerID # Prepare astrXbian datastructure
-
mv /tmp/secret.dunikey ~/.zen/game/players/$PLAYER/
- qrencode -s 6 -o $HOME/.zen/game/players/$PLAYER/QR.png "$G1PUB"
+
+ # plus on est proche de root, plus les données sont privés à cause des partages recursif ipfs
+ mkdir -p ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB # Prepare astrXbian sub-datastructure
+
+ qrencode -s 6 -o ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/QR.png "$G1PUB"
+ echo "$G1PUB" > ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/_g1.pubkey # G1SSB NOTATION (astrXbian compatible)
secFromDunikey=$(cat ~/.zen/game/players/$PLAYER/secret.dunikey | grep "sec" | cut -d ' ' -f2)
echo "$secFromDunikey" > /tmp/${PSEUDO}.sec
@@ -98,16 +98,82 @@ else
qrencode -s 6 -o $HOME/.zen/game/players/$PLAYER/QRsec.png $PASsec
[[ $1 != "quiet" ]] && echo "Votre Clef publique G1 est : $G1PUB"; sleep 1
- [[ $1 != "quiet" ]] && echo "SEC $secFromDunikey"; sleep 1
+
+ # TODO ZIP &| ENCRYPT FOR SECURITY (better control to keystore access)
+ mkdir -p ~/.zen/game/players/$PLAYER/keystore/
+ cp $HOME/.ipfs/keystore/$PLAYERKEYFILE ~/.zen/game/players/$PLAYER/keystore/
+ cp $HOME/.ipfs/keystore/$MOAKEYFILE ~/.zen/game/players/$PLAYER/keystore/
+ cp $HOME/.ipfs/keystore/$QOOPKEYFILE ~/.zen/game/players/$PLAYER/keystore/
+
+ ### INITALISATION WIKI dans leurs répertoires de publication IPFS
+ ############ TODO améliorer templates, sed, ajouter index.html, etc...
+ MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
+ IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID) # We should have a Captain already...
+
+ # PLAYER WIKI
+ cp ${MY_PATH}/../templates/playerwiki.html ~/.zen/game/players/$PLAYER/
+ sed -i "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/game/players/$PLAYER/playerwiki.html
+ sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/$PLAYER/playerwiki.html
+ sed -i "s~_MOAID_~${PLAYERNS}~g" ~/.zen/game/players/$PLAYER/playerwiki.html
+ sed -i "s~_QOOP_~${QOOPNS}~g" ~/.zen/game/players/$PLAYER/playerwiki.html
+ sed -i "s~_MOAKEY_~${PLAYER}~g" ~/.zen/game/players/$PLAYER/playerwiki.html
+ sed -i "s~k2k4r8opmmyeuee0xufn6txkxlf3qva4le2jlbw6da7zynhw46egxwp2~${PLAYERNS}~g" ~/.zen/game/players/$PLAYER/playerwiki.html
+ sed -i "s~ipfs.infura.io~tube.copylaradio.com~g" ~/.zen/game/players/$PLAYER/playerwiki.html
+ sed -i "s~_IPFSNODEID_~${IPFSNODEID}~g" ~/.zen/game/players/$PLAYER/playerwiki.html
+
+ #echo "## PUBLISHING ${PLAYER} /ipns/$PLAYERNS"
+ IPUSH=$(ipfs add -wHq ~/.zen/game/players/$PLAYER/playerwiki.html | tail -n 1)
+ ipfs name publish --key=${PLAYER} /ipfs/$IPUSH 2>/dev/null
+
+ # Moa WIKI
+ cp ${MY_PATH}/../templates/moawiki.html ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+ sed -i "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+ sed -i "s~_PSEUDO_~${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+ sed -i "s~_MOAID_~${MOANS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+ sed -i "s~_QOOP_~${QOOPNS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+ sed -i "s~_MOAKEY_~moa_${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+ sed -i "s~k2k4r8opmmyeuee0xufn6txkxlf3qva4le2jlbw6da7zynhw46egxwp2~${MOANS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+ sed -i "s~ipfs.infura.io~tube.copylaradio.com~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+ sed -i "s~_IPFSNODEID_~${IPFSNODEID}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html
+
+ #echo "## PUBLISHING moa_${PLAYER} /ipns/$MOANS"
+ IPUSH=$(ipfs add -wHq ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/moawiki.html | tail -n 1)
+ ipfs name publish --key=moa_${PLAYER} /ipfs/$IPUSH 2>/dev/null
+
+ # qo-op WIKI
+ cp ${MY_PATH}/../templates/qoopwiki.html ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+ sed -i "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+ sed -i "s~_PSEUDO_~${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+ sed -i "s~_MOAID_~${QOOPNS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+ sed -i "s~_QOOP_~${QOOPNS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+ sed -i "s~_MOAKEY_~qo-op_${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+ sed -i "s~k2k4r8opmmyeuee0xufn6txkxlf3qva4le2jlbw6da7zynhw46egxwp2~${QOOPNS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+ sed -i "s~ipfs.infura.io~tube.copylaradio.com~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+ sed -i "s~_IPFSNODEID_~${IPFSNODEID}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html
+
+ #echo "## PUBLISHING qo-op_${PLAYER} /ipns/$QOOPNS"
+ IPUSH=$(ipfs add -wHq ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/G1SSB/qoopwiki.html | tail -n 1)
+ ipfs name publish --key=qo-op_${PLAYER} /ipfs/$IPUSH 2>/dev/null
+
+
+ echo "$PSEUDO" > ~/.zen/game/players/$PLAYER/.pseudo
+ echo "$PLAYER" > ~/.zen/game/players/$PLAYER/.player
+
+ echo "$SALT" > ~/.zen/game/players/$PLAYER/secret.june
+ echo "$PEPPER" >> ~/.zen/game/players/$PLAYER/secret.june
+
fi
-[[ $1 != "quiet" ]] && echo "Rendez-vous sur https://cesium.app et utilisez les mêmes identifiants pour accéder à votre portefeuille JUNE"; sleep 2
+qrencode -s 6 -o "$HOME/.zen/game/players/$PLAYER/QR.PLAYERNS.png" "$PLAYERNS"
+qrencode -s 6 -o "$HOME/.zen/game/players/$PLAYER/QR.MOANS.png" "$MOANS"
+qrencode -s 6 -o "$HOME/.zen/game/players/$PLAYER/QR.QOOPNS.png" "$QOOPNS"
+echo; echo "Création de vos QR codes IPNS, clefs de votre réseau IPFS."; sleep 1
-cp $HOME/.ipfs/keystore/$KEYFILE ~/.zen/game/players/$PLAYER/
-qrencode -s 6 -o "$HOME/.zen/game/players/$PLAYER/QR.IPNSFL.PLAYER.png" "http://localhost:8080/ipns/$IPNS"
-[[ $1 != "quiet" ]] && echo; echo; echo "*** Espace privé activé : ~/.zen/game/players/$PLAYER/"; sleep 1
-[[ $1 != "quiet" ]] && echo; echo "*** Votre journal de bord : http://localhost:8080/ipns/$IPNS"; sleep 1
+[[ $1 != "quiet" ]] && echo; echo "*** Espace Astronaute Activé : ~/.zen/game/players/$PLAYER/"; sleep 1
+[[ $1 != "quiet" ]] && echo; echo "*** Votre Journal Personnel (niveau 5) : $PLAYER"; echo "http://127.0.0.1:8080/ipns/$PLAYERNS/playerwiki.html"; sleep 2
+[[ $1 != "quiet" ]] && echo; echo "*** Votre Journal Astronaute (niveau 3) : moa_$PLAYER"; echo " http://127.0.0.1:8080/ipns/$MOANS/moawiki.html"; sleep 2
+[[ $1 != "quiet" ]] && echo; echo "*** Votre Journal Passerelle (niveau 0/1) : qo-op_$PLAYER"; echo " http://127.0.0.1:8080/ipns/$QOOPNS/qoopwiki.html"; sleep 2
# PASS CRYPTING KEY
openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/secret.june" -out "$HOME/.zen/game/players/$PLAYER/enc.secret.june" -k $PASS 2>/dev/null
@@ -116,7 +182,7 @@ openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/$KEYFILE -ou
## TODO MORE SECURE ?! USE opengpg, natools, etc ...
# ${MY_PATH}/natools.py encrypt -p $G1PUB -i ~/.zen/game/players/$PLAYER/secret.dunikey -o "$HOME/.zen/game/players/$PLAYER/secret.dunikey.oasis"
-[[ $1 != "quiet" ]] && echo "Sécurisation de vos clefs par chiffrage SSL... $PASS"; sleep 1
+[[ $1 != "quiet" ]] && echo; echo "Sécurisation de vos clefs par chiffrage SSL... $PASS"; sleep 1
#################################################
# !!!! # DEV MODE. REMOVE FOR PRODUCTION STATION FORGET PASS
@@ -127,17 +193,14 @@ echo "$PASS" > ~/.zen/game/players/$PLAYER/.pass
rm -f ~/.zen/game/players/.current
ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
-## CLEANING CLEAR FILES
-rm -f ~/.zen/game/players/$PLAYER/$KEYFILE
-rm -f ~/.zen/game/players/$PLAYER/secret.dunikey
+[[ $1 != "quiet" ]] && echo "_____ REINIT COMMAND____"
+[[ $1 != "quiet" ]] && echo "for p in \$(ls ~/.zen/game/players/); do rm -Rf ~/.zen/game/players/\$p"
+[[ $1 != "quiet" ]] && echo "for k in \$(ipfs key list | grep \$p); do ipfs key rm \$k; done; done"
+[[ $1 != "quiet" ]] && echo "_____ALL PLAYERS REMOVAL____"
-[[ $1 != "quiet" ]] && echo "_____DEBUG PLAYER REMOVE COMMANDS____"
-[[ $1 != "quiet" ]] && echo "rm -Rf ~/.zen/game/players/$PLAYER"
-[[ $1 != "quiet" ]] && echo "ipfs key rm $PLAYER > /dev/null"
-[[ $1 != "quiet" ]] && echo "_____DEBUG PLAYER REMOVE COMMANDS____"
-
-[[ $1 != "quiet" ]] && echo "Bienvenue à toi Astronaute $PSEUDO ($PLAYER)"
-
-echo $PSEUDO > ~/.zen/tmp/PSEUDO
+[[ $1 != "quiet" ]] && echo "Bienvenue 'Astronaute' $PSEUDO ($PLAYER)"
+[[ $1 != "quiet" ]] && echo "Votre PASS : $PASS"; sleep 2
+echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to start.sh
+echo "cool $(${MY_PATH}/face.sh cool)"
exit 0
diff --git a/tools/face.sh b/tools/face.sh
new file mode 100755
index 00000000..166a29cb
--- /dev/null
+++ b/tools/face.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# Inpored from https://pwnagotchi.ai/
+
+[[ $1 == 'sleep' ]] && face='(⇀‿‿↼)'
+[[ $1 == 'awake' ]] && face='(≖‿‿≖)'
+[[ $1 == 'normal' ]] && face='(◕‿‿◕)'
+[[ $1 == 'surprise' ]] && face='(☉_☉ )'
+[[ $1 == 'observe' ]] && face='(◕‿◕ )'
+[[ $1 == 'intense' ]] && face='(°▃▃°)'
+[[ $1 == 'cool' ]] && face='(⌐■_■)'
+[[ $1 == 'happy' ]] && face='(•‿‿•)'
+[[ $1 == 'grateful' ]] && face='(^‿‿^)'
+[[ $1 == 'excited' ]] && face='(ᵔ◡◡ᵔ)'
+[[ $1 == 'smart' ]] && face='(✜‿‿✜)'
+[[ $1 == 'friendly' ]] && face='(♥‿‿♥)'
+[[ $1 == 'motivated' ]] && face='(☼‿‿☼)'
+[[ $1 == 'demotivated' ]] && face='(≖__≖)'
+[[ $1 == 'bored' ]] && face='(-__-)'
+[[ $1 == 'sad' ]] && face='(╥☁╥ )'
+[[ $1 == 'lonely' ]] && face='(ب__ب)'
+[[ $1 == 'broken' ]] && face='(☓‿‿☓)'
+[[ $1 == 'bug' ]] && face='(#__#)'
+
+[[ $face == '' ]] && face='(☉_☉ )'
+
+echo $face
+exit 0