diff --git a/API/QRCODE.sh b/API/QRCODE.sh
index b1c7a27b..cde14b87 100755
--- a/API/QRCODE.sh
+++ b/API/QRCODE.sh
@@ -94,7 +94,7 @@ if [[ ${QRCODE} == "station" ]]; then
if [[ $carouselrunning ]]; then
ISTATION="/ipfs/QmVTHH8sTXEqRBsvcKo5jDo16rvp7Q7ERyHZP5vmWUxeS6" ## G1WorldCrafting.jpg
else
- ## GENERATE PLAYER G1 TO ZEN ACCOUNTING
+ ## GENERATE PLAYER G1 TO ♥ ACCOUNTING
ISTATION=$($MY_PATH/../tools/make_image_ipfs_index_carousel.sh | tail -n 1)
echo $ISTATION > ~/.zen/tmp/ISTATION ## STATION G1WALLET CAROUSEL
fi
@@ -272,7 +272,7 @@ if [[ ${QRCODE:0:5} == "~~~~~" ]]; then
if [[ ! ${ISTHERE} ]]; then
(
echo "$HTTPCORS
-
LOGOUT ERROR
${PLAYER} keys not found on ZEN Station
" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 \
+ LOGOUT ERROR
${PLAYER} keys not found on ♥ Station
" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 \
&& echo "SLURP PLAYER ERROR ${player}"
) &
exit 0
@@ -690,9 +690,9 @@ echo ">>> ${QRCODE} g1_to_ipfs $ASTROTOIPNS"
if [[ $VISITORCOINS == "null" || ${ZEN} -lt 10 ]]; then
DISPLAY="$DISPLAY
- !! LOW ZEN WALLET ZEN=${ZEN}"
+ !! LOW ♥ WALLET ZEN=${ZEN}"
- DISPLAY="$DISPLAYLOW ZEN WARNING
+ DISPLAY="$DISPLAYLOW ♥ WARNING
PLEASE CHARGE... ${ZEN} ZEN"
fi
diff --git a/ASTROBOT/G1ForkUplanet.sh b/ASTROBOT/G1ForkUplanet.sh
new file mode 100644
index 00000000..0d792fc1
--- /dev/null
+++ b/ASTROBOT/G1ForkUplanet.sh
@@ -0,0 +1,112 @@
+#!/bin/bash
+########################################################################
+# Version: 0.1
+# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
+########################################################################
+MY_PATH="`dirname \"$0\"`" # relative
+MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
+ME="${0##*/}"
+
+. "${MY_PATH}/../tools/my.sh"
+
+## IT MAKES WISH WALLET MASTER OF NEW UPLANET
+## IT MAKES swarm.key as UPLANETNAME
+## SAME WISH BE CONNECTED TO THE PRIVATE IPFS MADE FIRST
+
+echo "(✜‿‿✜) Fork UPlanet
+This wish makes Player generate or join a private IPFS swarm
+It can be use to populate UPlanet ZERO (or not)
+All friends with the same wish will share the SECRET
+then any can activate a new ipfs daemon connected to that private ZONE
+Planet shape could be define from text found in command tiddler
+and initiale new euclidian geokeys...
+Default :
+flaoting points"
+
+echo "$ME RUNNING"
+
+########################################################################
+INDEX="$1"
+[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
+[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
+[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
+ORIGININDEX=${INDEX}
+
+PLAYER="$2"
+[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
+[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
+
+ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
+[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
+
+G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
+[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
+
+MOATS="$3"
+[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
+
+echo "${PLAYER} ${INDEX} ${ASTRONAUTENS} ${G1PUB} "
+mkdir -p $HOME/.zen/tmp/${MOATS}
+echo "~/.zen/tmp/${MOATS}/swarm.key"
+JSONWISH="$4"
+## SHOW WISH CONTAINS SELF CRYPTED SWARMKEY (+ SIGNERS)
+cat ${JSONWISH} | jq -r
+
+PLAYERPUB=$(cat $HOME/.zen/game/${PLAYER}/secret.dunikey | grep pub | cut -d ' ' -f 2)
+[[ "${PLAYERPUB}" == "" ]] && echo "FATAL ERROR PLAYER KEY MISSING" && exit 1
+WISHNAME=$(cat ${JSONWISH} | jq .title) # ForkUPlanet !
+UPNAME=$(cat ${JSONWISH} | jq -r ".name") ## What name is given ?
+CONTRACT=$(cat ${JSONWISH} | jq -r ".text") ## What contract is applying ?
+
+## CHECK EXISTING ${WISHNAME}.${UPNAME}.swarm.key
+[[ ! -s $HOME/.zen/game/${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key ]] \
+ && MSG=$MSG" ${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key NOT FOUND" && ERR="NO LOCAL KEY"
+
+## CREATE 64 bit swarm.key ( maximum individual Fork 1,844674407×10¹⁹ )
+echo -e '/key/swarm/psk/1.0.0/\n/base16/' > $HOME/.zen/tmp/${MOATS}/swarm.key
+head -c 64 /dev/urandom | od -t x1 -A none - | tr -d '\n ' >> $HOME/.zen/tmp/${MOATS}/swarm.key
+echo '' >> $HOME/.zen/tmp/${MOATS}/swarm.key
+
+## EXTRACT SECRET FROM JSONWISH
+###############################
+OLD16=$(cat ${JSONWISH} | jq -r ".secret")
+[[ ${OLD16} == "" || ${OLD16} == "null" ]] \
+ && echo "NO SECRET FOUND" \
+ && echo "NEW SECRET SWARM.KEY GENERATION" \
+ && cat $HOME/.zen/tmp/${MOATS}/swarm.key \
+ && cp $HOME/.zen/tmp/${MOATS}/swarm.key $HOME/.zen/game/${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key \
+ && echo "------- NEW ------ ${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key"
+
+## DEBASE16
+echo "${OLD16}" | base16 -d \
+ > ~/.zen/tmp/${MOATS}/swarmkey.crypted
+
+## TRY TO DECODE with PLAYER secret.dunikey
+${MY_PATH}/../tools/natools.py decrypt \
+ -f pubsec \
+ -k $HOME/.zen/game/${PLAYER}/secret.dunikey \
+ -i ~/.zen/tmp/${MOATS}/swarmkey.crypted \
+ -o ~/.zen/tmp/${MOATS}/swarmkey.decrypted
+
+[[ $(diff ~/.zen/tmp/${MOATS}/swarmkey.decrypted $HOME/.zen/game/${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key) ]] \\
+ && echo " SWARM AND LOCAL KEY ARE DIFFERENT " && ERR="TW SWARM CHANGED"
+
+## ALWAYS UPDATE PLAYER LOCAL ?!
+cp ~/.zen/tmp/${MOATS}/swarmkey.decrypted \
+ $HOME/.zen/game/${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key
+
+if [[ "$ERR" == "" ]] ; then
+ #~ echo "# CRYPTO ENCODING PLAYER KEY WITH PLAYERPUB
+ ${MY_PATH}/../tools/natools.py encrypt \
+ -p ${PLAYERPUB} \
+ -i $HOME/.zen/game/${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key \
+ -o $HOME/.zen/game/${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key.enc
+ ENCODING=$(cat $HOME/.zen/game/${PLAYER}/${WISHNAME}.${UPNAME}.swarm.key.enc | base16)
+ sed -i "s~${OLD16}~${ENCODING}~g" ${JSONWISH}
+ echo "ENCODING: ${ENCODING}"
+
+fi
+
+
+
+exit 0
diff --git a/RUNTIME/G1PalPay.sh b/RUNTIME/G1PalPay.sh
index b25960e9..18ae00cb 100755
--- a/RUNTIME/G1PalPay.sh
+++ b/RUNTIME/G1PalPay.sh
@@ -251,12 +251,12 @@ while read LINE; do
## Count emails found
emails=($(echo "$TTAGS" | grep -E -o "\b[a-zA-Z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"))
nb=${#emails[@]}
- zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10 = 1 Zen each
+ zen=$(echo "scale=2; $nb / 10" | bc) ## / divide by 10 = 1 ♥ each
## Get first zmail
ZMAIL="${emails}"
- MSG="SEND + $zen ZEN TO BROs : ${emails[@]}"
+ MSG="SEND + $zen ♥ TO BROs : ${emails[@]}"
echo $MSG
ASTROTW="" STAMP="" ASTROG1="" ASTROIPFS="" ASTROFEED=""
@@ -267,7 +267,7 @@ while read LINE; do
if [[ ${ASTROG1} && ${ASTROG1} != ${G1PUB} ]]; then
- ## SEND zen ZEN (G1 dice JUNE) TO ALL ## MAKE ONE EACH AFTER ALL EMAIL CONSUMED ##
+ ## SEND zen ♥ (G1 dice JUNE) TO ALL ## MAKE ONE EACH AFTER ALL EMAIL CONSUMED ##
#~ ~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \
#~ ${MY_PATH}/../tools/PAY4SURE.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a ${zen} -p ${ASTROG1} -c "${emails[@]} $TTITLE" -m > /dev/null 2>&1
## Filling comment with email list will make players resend to all ## MAY BE A BAD IDEA ###
diff --git a/RUNTIME/PLAYER.refresh.sh b/RUNTIME/PLAYER.refresh.sh
index 5699e479..3a9a6c85 100755
--- a/RUNTIME/PLAYER.refresh.sh
+++ b/RUNTIME/PLAYER.refresh.sh
@@ -58,9 +58,9 @@ for PLAYER in ${PLAYERONE[@]}; do
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 /"
+ echo "+++ WALLET BALANCE _ $COINS (G1) _ / $ZEN ♥ /"
- #~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ZEN (= 10 €/OC) ?
+ #~ ## ZENCARD ARE ACTIVATED WITH 1 G1 + 10 ♥ (= 10 €/OC) ?
echo "## >>>>>>>>>>>>>>>> REFRESH ASTRONAUTE TW"
## REFRESH ASTRONAUTE TW
ASTRONAUTENS=$(ipfs key list -l | grep -w ${G1PUB} | cut -d ' ' -f1)
@@ -502,7 +502,7 @@ for PLAYER in ${PLAYERONE[@]}; do
## DEAD PLAYER ??
if [[ ${DIFF_SECONDS} -eq $(( 27 * 24 * 60 * 60 )) ]]; then
echo "WARNING.
Your TW will be UNPLUGGED and stop being published..." > ~/.zen/tmp/alert
- echo "
ADD MORE ZEN ($ZEN) " >> ~/.zen/tmp/alert
+ echo "
ADD MORE ♥ ($ZEN)