refined & easy ♥Box system interconnection

MODE DEMO :: BRECHE DE SECURITE POTENTIELLE :: LA SECURITE EST DANS IPFS la G1 et sa Toile de Confiance ::
Indiquez l'IP externe de la BOX "Internet" dans le fichier ~/.zen/♥Box
Ouvrir les ports mis en commentaire dans my.sh

YOU ARE WISITING US THROUGH N0 WORLD
TROLLS LAND -
DO NOT USE IN PRODUCTION !!
 IF YOU LIKE TO HACK COME WITH US.
PLENTY NEW LEVELS ARE RISING
This commit is contained in:
fred 2023-05-06 02:35:06 +02:00
parent cee27162f0
commit 024e9cd972
7 changed files with 239 additions and 138 deletions

View File

@ -65,8 +65,8 @@ while true; do
# EACH VISITOR RECEIVE COMMAND RESPONSE ON
## RANDOM PORT = RESPONSE SOCKET & IPNS SESSION TOKEN
if [[ ${isLAN} && $(which yunohost) ]]; then
PORT=$((PORT+1)) && [ ${PORT} -ge 45782 ] && PORT=45780 ## yunohost OPEN FIREWALL 1234 12345 45780 45781
if [[ ${isLAN} && ( $(which yunohost) || -s ~/.zen/♥Box ) ]]; then
PORT=$((PORT+1)) && [ ${PORT} -ge 45782 ] && PORT=45780 ## yunohost|♥Box : OPEN FIREWALL 1234 12345 45780 45781
else
[ ${PORT} -le 12345 ] && PORT=$((PORT+${RANDOM:0:2})) || PORT=$((PORT-${RANDOM:0:2}))
fi ## RANDOM PORT SWAPPINESS AVOIDING COLLISION

View File

@ -265,7 +265,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
NEWLINE=$(urldecode ${WHAT})
DESTMAIL=$(urldecode ${VAL,,}) # lowercase
echo "## G1MISSIVE - PASS ${PASS} - $APPNAME"
echo "## G1BILLET+ - @PASS ${PASS} - $APPNAME"
if [[ ${PASS} != "" ]]; then
@ -277,14 +277,14 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
cat ~/.zen/tmp/${MOATS}/disco.aes | gpg -d --passphrase "${PASS}" --batch > ~/.zen/tmp/${MOATS}/decoded
if [[ ! -s ~/.zen/tmp/${MOATS}/decoded ]]; then
## COULD BE ONE MONTH OLDER
## COULD BE ONE MONTH OLDER (TODO CHOOSE VALIDITY TIME TO MOVE)
UPASS=$(date -d "1 month ago" +"%Y%m")
cat ~/.zen/tmp/${MOATS}/disco.aes | gpg -d --passphrase "${UPASS}" --batch > ~/.zen/tmp/${MOATS}/decoded
fi
# cat ~/.zen/tmp/${MOATS}/disco
## FORMAT IS "/?salt=${USALT}&pepper=${UPEPPER}"
## MADE by tools/VOEUX.print.sh WITH SALT="EMAIL G1PUB" PEPPER="G1VoeuName"
## MADE by tools/VOEUX.print.sh WITH USALT="EMAIL(_SEC1_SEC2)" UPEPPER="G1VoeuName OriG1PUB"
DISCO=$(cat ~/.zen/tmp/${MOATS}/decoded | cut -d '?' -f2)
arr=(${DISCO//[=&]/ })
s=$(urldecode ${arr[0]} | xargs)
@ -296,36 +296,95 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
if [[ ${salt} != "" && ${pepper} != "" ]]; then
echo "secret1=$salt" ## CONTAINS "EMAIL ORIGING1PUB"
player=$(echo $salt | cut -d ' ' -f 1)
ORIG1=$(echo $salt | cut -d ' ' -f 2)
echo "secret1=$salt" ## CONTAINS "EMAIL(_SEC1_SEC2)"
player=$(echo $salt | cut -d '_' -f 1 | cut -d ' ' -f 1 | grep '@')
echo "player=$player"
echo "secret2=$pepper" ## CONTAINS "G1VoeuName"
[[ ${pepper:0:2} != "G1" ]] && echo "NO GOOD KEY : $pepper" && exit 1
VoeuName=$(echo $pepper | cut -c 3-)
# # G1BILLET+ interlinked ? ##
[[ $(echo "$salt" | grep '_') ]] \
&& echo "G1BILLET+ interlinked : salt pepper refining" \
&& murge=($(echo $salt | cut -d '_' -f 2- | sed 's/_/ /g' | xargs)) \
&& echo "${#murge[@]} dice words" && i=$(( ${#murge[@]} / 2 )) && i=$(( i + 1 )) \
&& extra1=$(echo "${murge[@]}" | rev | cut -d ' ' -f $i- | rev) \
&& extra2=$(echo "${murge[@]}" | cut -d ' ' -f $i-) \
&& VoeuName="G1BILLET+" \
&& billkeyname=$(echo "${extra1} ${extra2}" | sha512sum | awk '{print $1}')
keyname="${player}_${VoeuName}"
echo "KeyName=$keyname"
echo "salt=$salt" ## CONTAINS "EMAIL"
echo "pepper=$pepper" ## CONTAINS "G1VoeuName ORIGING1PUB" or G1BILLET+ secret2
ISTHERE=$(ipfs key list -l | grep -w ${player} | cut -d ' ' -f1)
echo "<h1>$player G1MISSIVE<h1> $ISTHERE" >> ~/.zen/tmp/${MOATS}/disco
[[ ${pepper:0:2} == "G1" ]] \
&& VoeuName=$(echo $pepper | cut -d ' ' -f 1 | cut -c 3-) \
&& PLAYERORIG1=$(echo $pepper | rev | cut -d ' ' -f 1 | rev) \
&& echo "$VoeuName $PLAYERORIG1 @PASS"
## CHECK PLAYERORIG1 WALLETS
echo "${MY_PATH}/../tools/jaklis/jaklis.py balance -p ${PLAYERORIG1}"
PLAYERCOINS=$(${MY_PATH}/../tools/COINScheck.sh ${PLAYERORIG1} | tail -n 1)
echo "<br><b>${player} $PLAYERCOINS G1</b>" >> ~/.zen/tmp/${MOATS}/disco
### IF EMPTY ??? WHAT TODO
orikeyname="${player}_${VoeuName}"
destkeyname="${DESTMAIL}_${VoeuName}"
echo "@PASS KEYS :
ORIGIN=$orikeyname
DEST=$destkeyname
BILL=$billkeyname"
## REVEAL THE KEYS
# G1VOEU & IPNS KEY
[[ ${player} != "" ]] \
&& ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/playersecret.ipfs "${player}" "G1${VoeuName} ${PLAYERORIG1}" \
&& ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/player.secret.key "${player}" "G1${VoeuName} ${PLAYERORIG1}" \
&& G1VOEUPUB=$(cat ~/.zen/tmp/${MOATS}/player.secret.key | grep 'pub:' | cut -d ' ' -f 2)
# INSTALL orikeyname IPNS KEY ON NODE
IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 )
[[ ! $IK ]] && ipfs key import ${orikeyname} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/playersecret.ipfs
## IS IT A TRANSFER ? MILGRAM G1MISSIVE
[[ ${DESTMAIL} != "" ]] \
&& echo "MILGRAM :: ${player} :: ${DESTMAIL}" \
&& DESTG1=$(${MY_PATH}/../tools/keygen "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}") \
&& ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/destsecret.ipfs "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}"
# INSTALL orikeyname IPNS KEY ON NODE
IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 )
[[ ! $IK ]] && ipfs key import ${orikeyname} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/playersecret.ipfs
## IS IT LINKED WITH extra G1BILLET+
[[ ${extra1} != "" && ${extra2} != "" ]] \
&& echo "@PASS LINK TO G1BILLET+ :: ${extra1} :: ${extra2}" \
&& EXTRAG1=$(${MY_PATH}/../tools/keygen "${extra1}" "${extra2}") \
&& ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/extrasecret.ipfs "${extra1}" "${extra2}" \
&& EXTRAG1COINS=$(${MY_PATH}/../tools/COINScheck.sh ${EXTRAG1} | tail -n 1) \
&& echo "<br><b>EXTRA ${VoeuName} $EXTRAG1COINS G1</b>" >> ~/.zen/tmp/${MOATS}/disco
# Don't care if ORIGIN PLAYER is THERE
#~ ISTHERE=$(ipfs key list -l | grep -w ${player} | cut -d ' ' -f1)
#~ echo "<h1>$player G1MISSIVE<h1> $ISTHERE" >> ~/.zen/tmp/${MOATS}/disco
echo "${MY_PATH}/../tools/jaklis/jaklis.py balance -p ${G1VOEUPUB}"
G1VOEUCOINS=$(${MY_PATH}/../tools/COINScheck.sh ${G1VOEUPUB} | tail -n 1)
echo "<br><b>${VoeuName} $G1VOEUCOINS G1</b>" >> ~/.zen/tmp/${MOATS}/disco
# Recreate G1 KEY
${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/secret.key "$salt" "$pepper"
G1PUB=$(cat ~/.zen/tmp/${MOATS}/secret.key | grep 'pub:' | cut -d ' ' -f 2)
## CHECK ORIG1 amount
echo "${MY_PATH}/../tools/jaklis/jaklis.py balance -p ${ORIG1}"
MCOINS=$(${MY_PATH}/../tools/COINScheck.sh ${ORIG1} | tail -n 1)
echo "<br><b>$MCOINS G1</b>" >> ~/.zen/tmp/${MOATS}/disco
#CONVERT TO IPNS KEY
QNS=$(${MY_PATH}/../tools/g1_to_ipfs.py ${G1PUB})
G1VOEUNS=$(${MY_PATH}/../tools/g1_to_ipfs.py ${G1VOEUPUB})
## RETRIEVE IPNS CONTENT
echo "http://127.0.0.1:8080/ipns/$QNS"
if [[ ! -s ~/.zen/tmp/coucou/${ORIG1}.${VoeuName}.missive.txt ]]; then
avanla=$(ps axf --sort=+utime | grep -w 'ipfs cat /ipns/$QNS' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
[[ ! $avanla ]] && ipfs cat /ipns/$QNS > ~/.zen/tmp/coucou/${ORIG1}.${VoeuName}.missive.txt &
echo "http://127.0.0.1:8080/ipns/$G1VOEUNS"
if [[ ! -s ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt ]]; then
HELLO="@PASS :: G1BILLET+ :: ${G1VOEUPUB} :: $(date) :: ${player} :: ${PLAYERORIG1}"
echo "${HELLO}"
avanla=$(ps axf --sort=+utime | grep -w 'ipfs cat /ipns/$G1VOEUNS' | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
[[ ! $avanla ]] \
&& ( ipfs cat /ipns/$G1VOEUNS > ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt \
&& [[ ! -s ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt ]] \
&& echo "@PASS G1BILLET+ INIT" \
&& echo "${HELLO}" > ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt \
&& MILGRAM=$(ipfs add -q ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt) \
&& ipfs name publish -k ${player}_${VoeuName} /ipfs/${MILGRAM} &
) &
echo "<br>PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS<br>" >> ~/.zen/tmp/${MOATS}/disco
(
@ -336,7 +395,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
fi
echo "<br><br>" >> ~/.zen/tmp/${MOATS}/disco
cat ~/.zen/tmp/coucou/${ORIG1}.${VoeuName}.missive.txt >> ~/.zen/tmp/${MOATS}/disco
cat ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt >> ~/.zen/tmp/${MOATS}/disco
[[ ${NEWLINE} == "" || ${NEWLINE} == "undefined" ]] && echo "<br> NO NEW LINE <br>" >> ~/.zen/tmp/${MOATS}/disco
[[ ${DESTMAIL} == "" || ${DESTMAIL} == "undefined" ]] && echo "<br> Missing Destination EMAIL <br>" >> ~/.zen/tmp/${MOATS}/disco
@ -352,28 +411,29 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
$($MY_PATH/../tools/search_for_this_email_in_players.sh ${DESTMAIL}) ## export ASTROTW and more
echo "export ASTROTW=${ASTRONAUTENS} ASTROG1=${ASTROG1} ASTROMAIL=${DESTMAIL} ASTROFEED=${FEEDNS}"
## CREATE NEXT G1Missive !
NEWIMAGIC=$(${MY_PATH}/../tools/VOEUX.print.sh "${DESTMAIL}" "${VoeuName}" "${MOATS}" "${ORIG1}" | tail -n 1)
# Create Next G1 & IPNS KEY
DESTG1PUB=$(${MY_PATH}/../tools/keygen"${DESTMAIL} ${ORIG1}" "G1${VoeuName}")
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/newsecret.ipfs "${DESTMAIL} ${ORIG1}" "G1${VoeuName}"
# Create Next G1 & IPNS KEY
DESTG1PUB=$(${MY_PATH}/../tools/keygen"${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}")
${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/newsecret.ipfs "${DESTMAIL}" "G1${VoeuName} ${PLAYERORIG1}"
orikeyname="${DESTMAIL}_${VoeuName}"
# INSTALL NEXT IPNS KEY ON NODE
IK=$(ipfs key list -l | grep -w "${DESTMAIL}_${VoeuName}" | cut -d ' ' -f 1 )
[[ ! $IK ]] && ipfs key import ${DESTMAIL}_${VoeuName} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/newsecret.ipfs
IK=$(ipfs key list -l | grep -w "${orikeyname}" | cut -d ' ' -f 1 )
[[ ! $IK ]] && ipfs key import ${orikeyname} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/newsecret.ipfs
## CREATE NEXT G1Missive !
NEWIMAGIC=$(${MY_PATH}/../tools/VOEUX.print.sh "${DESTMAIL}" "${VoeuName}" "${MOATS}" "${PLAYERORIG1}" | tail -n 1)
## ADD NEWLINE TO MESSAGE
if [[ ${NEWLINE} != "" ]]; then
CLINE=$(echo "${NEWLINE}" | detox --inline)
echo "$CLINE" >> ~/.zen/tmp/coucou/${ORIG1}.${VoeuName}.missive.txt ## NB: File could still being into "ipfs cat" process... TODO MAKE BETTER
echo "$CLINE" >> ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt ## NB: File could still being into "ipfs cat" process... TODO MAKE BETTER
fi
echo "UPDATED" >> ~/.zen/tmp/${MOATS}/disco
cat ~/.zen/tmp/coucou/${ORIG1}.${VoeuName}.missive.txt >> ~/.zen/tmp/${MOATS}/disco
cat ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt >> ~/.zen/tmp/${MOATS}/disco
echo "<br><img src=/ipfs/$NEWIMAGIC />" >> ~/.zen/tmp/${MOATS}/disco
MILGRAM=$(ipfs add -q ~/.zen/tmp/coucou/${ORIG1}.${VoeuName}.missive.txt)
MILGRAM=$(ipfs add -q ~/.zen/tmp/coucou/${PLAYERORIG1}.${VoeuName}.missive.txt)
(
ipfs name publish -k ${DESTMAIL}_${VoeuName} /ipfs/${MILGRAM}
@ -383,7 +443,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then
fi
else
## TODO : EMPTY WALLET BACK TO ORIGIN
echo "<br><h1>${PASS} ${UPASS} TOO OLD</h1>" >> ~/.zen/tmp/${MOATS}/disco
echo "<br><img src='http://127.0.0.1:8080/ipfs/QmVnQ3GkQjNeXw9qM7Fb1TFzwwxqRMqD9AQyHfgx47rNdQ/your-own-data-cloud.svg' />" >> ~/.zen/tmp/${MOATS}/disco

View File

@ -75,7 +75,7 @@ mkdir -p ~/.zen/tmp/${MOATS}
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
#~ echo $ENCODING
## TEST IPFS
#~ ipfs --timeout=30s cat /ipns/${VOEUNS} > ~/.zen/tmp/${VOEUNS}.json
@ -98,8 +98,9 @@ mkdir -p ~/.zen/tmp/${MOATS}
#################################################################
## MAKING SPECIAL amrzqr => G1Milgram TICKET
## LE QRCODE CORRESPOND A LA CLEF DERIVE "${PLAYER} :: G1${VoeuName}" avec PASS=YYYYMM
IMAGIC=$(${MY_PATH}/../tools/VOEUX.print.sh "${PLAYER}" "${VoeuName}" "${MOATS}" | tail -n 1)
## 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"

View File

@ -216,7 +216,7 @@ function testLatency(cb) {
function countdown() {
if (timeLeft == -1) {
clearTimeout(timerId);
document.getElementById("countdown").innerHTML = "Créez votre TW. Remplacez les '0' par les secrets de votre G1PASS.<br>Utilisez les identifiants de votre compte GChange si vous en disposez déjà <br><form method='get' action='http://g1billet.localhost:33101' target='aframe'><input type='hidden' name='montant' value='0' ><label for='type'>Type :</label><select name='type'><option value=''>G1BILLET x 6</option><option value='jeu' selected>G1PASS</option><option value='xastro'>G1TW</option></select>&nbsp;&nbsp;&nbsp;&nbsp;<button type='submit'>Lancer Fabrication</button></form>";
document.getElementById("countdown").innerHTML = "<form method='get' action='http://g1billet.localhost:33101' target='aframe'><input type='hidden' name='montant' value='0' ><label for='type'>Type :</label><select name='type'><option value=''>G1BILLET x 6</option><option value='jeu' selected>G1PASS</option><option value='xastro'>G1TW</option></select>&nbsp;&nbsp;&nbsp;&nbsp;<button type='submit'>Lancer Fabrication</button></form>";
} else {
// elem.innerHTML = timeLeft + " s";
timeLeft--;

View File

@ -7,7 +7,9 @@ MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "$MY_PATH/my.sh"
PLAYER=$1
PLAYER_=$1
PLAYER=$(echo "${PLAYER_}" | cut -d '_' -f 1 | cut -d ' ' -f 1) ## EMAIL_dice_words kinds
VoeuName=$2
MOATS=$3
G1PUB=$4
@ -22,42 +24,62 @@ UPASS=$(date '+%Y%m') # YYYYMM
############################################################ G1Voeu.sh use
############################################################ PRINT G1Milgram (once a month)
if [[ ${G1PUB} != "" && ${VoeuName} != "" && -d ~/.zen/tmp/${MOATS} ]]; then
if [[ ${G1PUB} != "" && ${VoeuName} != "" && ${MOATS} != "" ]]; then
#################################################################
## MAKING SPECIAL amrzqr => G1Milgram TICKET = G1Missive
## LE QRCODE CORRESPOND A LA CLEF DERIVE "${PLAYER} ${G1PUB} :: G1${VoeuName}" avec PASS=YYYYMM
SECRET1="${PLAYER} ${G1PUB}"
SECRET2="G1${VoeuName}"
mkdir -p ~/.zen/tmp/${MOATS}
#################################################################
## MAKING SPECIAL amrzqr => G1Milgram TICKET = G1Missive
## LE QRCODE CORRESPOND A LA CLEF DERIVE "${PLAYER} :: G1${VoeuName} ${G1PUB}" avec PASS=YYYYMM
# LINK TO G1BILLET with MAKE_G1BILLET.sh :: ${PLAYER}_dice_words :: G1${VoeuName} ${G1PUB}"
${MY_PATH}/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${VoeuName}.ipfskey "${SECRET1}" "${SECRET2}"
# PLAYER G1Voeu G1BILLET+ (derivated key)
SECRET1="${PLAYER}"
SECRET2="G1${VoeuName} ${G1PUB}"
USALT=$(echo "${SECRET1}" | jq -Rr @uri)
UPEPPER=$(echo "${SECRET2}" | jq -Rr @uri)
DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
echo "${DISCO}" > ~/.zen/tmp/${MOATS}/topgp
rm -f ~/.zen/tmp/${MOATS}/gpg.asc
cat ~/.zen/tmp/${MOATS}/topgp | gpg --symmetric --armor --batch --passphrase "$UPASS" -o ~/.zen/tmp/${MOATS}/gpg.asc
## ATTACHED G1BILLET+
[[ $(cat ${PLAYER_} | grep '_' ) ]] \
&& echo "G1BILLET+ interlinked : salt pepper refining" \
&& murge=($(echo "${PLAYER_}" | cut -d '_' -f 2- | sed 's/_/ /g' | xargs)) \
&& i=$(( ${#murge[@]} / 2 )) && i=$(( i + 1 )) \
&& extra1=$(echo "${murge[@]}" | rev | cut -d ' ' -f $i- | rev) \
&& extra2=$(echo "${murge[@]}" | cut -d ' ' -f $i-) \
&& echo "extra1=${extra1} extra2=${extra2}"
cp ${MY_PATH}/../images/g1magicien.png ~/.zen/tmp/${MOATS}/result.png
## @PASS PLAYER IPFS KEY
echo "@PASS - G1Voeu"
${MY_PATH}/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${VoeuName}.ipfskey "${SECRET1}" "${SECRET2}"
## MAKE amzqr WITH @@@@@ PGP G1PASS FORMAT (%40)
amzqr "$(cat ~/.zen/tmp/${MOATS}/gpg.asc | tr '-' '@' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )" \
-d "$HOME/.zen/tmp/${MOATS}" \
-l H \
-p ~/.zen/tmp/${MOATS}/result.png -c
## EXTRA @PASS G1BILLET IPFS KEY
[[ ${extra1} != "" && ${extra2} != "" ]] \
&& echo "G1BILLET+ EXTRA" \
&& ${MY_PATH}/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${VoeuName}.BILL.ipfskey "${extra1}" "${extra2}"
convert -gravity northwest -pointsize 25 -fill black -draw "text 5,5 \"${PLAYER} - ${UPASS} -\"" ~/.zen/tmp/${MOATS}/result_qrcode.png ~/.zen/tmp/${MOATS}/layer1.png
convert -gravity southeast -pointsize 25 -fill black -draw "text 5,5 \"${VoeuName}\"" ~/.zen/tmp/${MOATS}/layer1.png ~/.zen/tmp/${MOATS}/START.png
USALT=$(echo "${PLAYER_}" | jq -Rr @uri)
UPEPPER=$(echo "${SECRET2}" | jq -Rr @uri)
DISCO="/?salt=${USALT}&pepper=${UPEPPER}"
echo "${DISCO}" > ~/.zen/tmp/${MOATS}/topgp
rm -f ~/.zen/tmp/${MOATS}/gpg.asc
cat ~/.zen/tmp/${MOATS}/topgp | gpg --symmetric --armor --batch --passphrase "$UPASS" -o ~/.zen/tmp/${MOATS}/gpg.asc
IMAGIC=$(ipfs add -Hq ~/.zen/tmp/${MOATS}/START.png | tail -n 1)
echo ${IMAGIC}
cp ${MY_PATH}/../images/g1magicien.png ~/.zen/tmp/${MOATS}/result.png
## SENDING EMAIL #############
echo "(•‿‿•) SCAN https://astroport.com/scan" > ~/.zen/tmp/${MOATS}/intro.txt
mpack -a -s "(•‿‿•) : Missive ${VoeuName} - ${UPASS} - La♥Box" -d ~/.zen/tmp/${MOATS}/intro.txt ~/.zen/tmp/${MOATS}/START.png ${PLAYER} &
## MAKE amzqr WITH @@@@@ PGP G1PASS FORMAT (%40)
amzqr "$(cat ~/.zen/tmp/${MOATS}/gpg.asc | tr '-' '@' | tr '\n' '-' | tr '+' '_' | jq -Rr @uri )" \
-d "$HOME/.zen/tmp/${MOATS}" \
-l H \
-p ~/.zen/tmp/${MOATS}/result.png -c
exit 0
convert -gravity northwest -pointsize 25 -fill black -draw "text 5,5 \"${PLAYER} - ${UPASS} -\"" ~/.zen/tmp/${MOATS}/result_qrcode.png ~/.zen/tmp/${MOATS}/layer1.png
convert -gravity southeast -pointsize 25 -fill black -draw "text 5,5 \"${VoeuName}\"" ~/.zen/tmp/${MOATS}/layer1.png ~/.zen/tmp/${MOATS}/START.png
IMAGIC=$(ipfs add -Hq ~/.zen/tmp/${MOATS}/START.png | tail -n 1)
echo ${IMAGIC}
## SENDING EMAIL TOO LONG (BETTER FROM ./command.sh) #############
#~ echo "(•‿‿•) SCAN https://astroport.com/scan" > ~/.zen/tmp/${MOATS}/intro.txt
#~ mpack -a -s "(•‿‿•) : Missive ${VoeuName} - ${UPASS} - La♥Box" -d ~/.zen/tmp/${MOATS}/intro.txt ~/.zen/tmp/${MOATS}/START.png ${PLAYER} &
exit 0
fi
############################################################

View File

@ -1,4 +1,11 @@
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.12
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
# Create HTML page with image caroussel
# If no image directory = create G1Station Local PLAYER accounts
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
. "$MY_PATH/my.sh"
@ -7,85 +14,86 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
img_dir="$1"
if [[ ! -d $img_dir ]]; then
PLAYERONE=($(ls -t ~/.zen/game/players/ | grep "@" 2>/dev/null))
[[ ! $PLAYERONE ]] && echo "NO PLAYER IN THE GAME HERE" && exit 1
[[ ! $PLAYERONE ]] && echo "NO PLAYER IN THE GAME HERE" && exit 1
echo "ASTROPORT STATION CAROUSEL MODE"
rm -Rf ~/.zen/tmp/carousel 2>/dev/null
mkdir -p ~/.zen/tmp/carousel
# Make it with latest PLAYERS WALLETS
## RUNING FOR ALL LOCAL PLAYERS
for PLAYER in ${PLAYERONE[@]}; do
echo "ASTROPORT STATION CAROUSEL MODE"
rm -Rf ~/.zen/tmp/carousel 2>/dev/null
mkdir -p ~/.zen/tmp/carousel
pub=$(cat ~/.zen/game/players/$PLAYER/.g1pub)
## RUNING FOR ALL LOCAL PLAYERS
for PLAYER in ${PLAYERONE[@]}; do
# Get PLAYER wallet amount :: ~/.zen/game/players/${PLAYER}/ipfs/G1SSB/COINS
echo "$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey balance"
COINS=$($MY_PATH/COINScheck.sh ${pub} | tail -n 1)
echo "+++ ${PLAYER} have $COINS Ğ1 Coins +++"
pub=$(cat ~/.zen/game/players/$PLAYER/.g1pub)
## USE G1BARRE OR G1WorldMap.png AS 1ST IMAGE
#~ curl -m 3 -so ~/.zen/tmp/carousel/${pub}.one.png \
#~ "https://g1sms.fr/g1barre/image.php?pubkey=${pub}&target=20000&title=${PLAYER}&node=g1.asycn.io&start_date=2020-01-01&display_pubkey=true&display_qrcode=true"
#~ [[ $(file -b ~/.zen/tmp/carousel/${pub}.one.png | cut -d ' ' -f 1) == "PNG" ]] \
#~ && echo "GOT ~/.zen/tmp/carousel/${pub}.one.png" \
#~ || cp $MY_PATH/../images/G1WorldMap.png ~/.zen/tmp/carousel/${pub}.one.png
# Get PLAYER wallet amount :: ~/.zen/game/players/${PLAYER}/ipfs/G1SSB/COINS
echo "$MY_PATH/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey balance"
COINS=$($MY_PATH/COINScheck.sh ${pub} | tail -n 1)
echo "+++ ${PLAYER} have $COINS Ğ1 Coins +++"
cp $MY_PATH/../images/G1WorldMap.png ~/.zen/tmp/carousel/${pub}.one.png
## USE G1BARRE OR G1WorldMap.png AS 1ST IMAGE
#~ curl -m 3 -so ~/.zen/tmp/carousel/${pub}.one.png \
#~ "https://g1sms.fr/g1barre/image.php?pubkey=${pub}&target=20000&title=${PLAYER}&node=g1.asycn.io&start_date=2020-01-01&display_pubkey=true&display_qrcode=true"
#~ [[ $(file -b ~/.zen/tmp/carousel/${pub}.one.png | cut -d ' ' -f 1) == "PNG" ]] \
#~ && echo "GOT ~/.zen/tmp/carousel/${pub}.one.png" \
#~ || cp $MY_PATH/../images/G1WorldMap.png ~/.zen/tmp/carousel/${pub}.one.png
##################
## PREPARE LOOP LINK LINE
ASTRONAUTENS=$(cat ~/.zen/game/players/${PLAYER}/.playerns)
[[ $COINS -gt 0 ]] \
&& echo "<a href=\"javascript:homeAstroportStation('"$myASTROPORT"/?qrcode="$ASTRONAUTENS"', 'page', '3000')\" title=\"$PLAYER ($COINS G1) CHARGEUR DE G1BILLET \">_REPLACE_</a>" > ~/.zen/tmp/carousel/${pub}.insert \
|| echo "_REPLACE_" > ~/.zen/tmp/carousel/${pub}.insert
cp $MY_PATH/../images/G1WorldMap.png ~/.zen/tmp/carousel/${pub}.one.png
## EXTRACT G1Voeu FROM PLAYER TW
echo "Ŋ1Flux ____ " > ~/.zen/tmp/carousel/${pub}.button
INDEX=~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
##################
## PREPARE LOOP LINK LINE
ASTRONAUTENS=$(cat ~/.zen/game/players/${PLAYER}/.playerns)
[[ $COINS -gt 0 ]] \
&& echo "<a href=\"javascript:homeAstroportStation('"$myASTROPORT"/?qrcode="$ASTRONAUTENS"', 'page', '3000')\" title=\"$PLAYER ($COINS G1) CHARGEUR DE G1BILLET \">_REPLACE_</a>" > ~/.zen/tmp/carousel/${pub}.insert \
|| echo "_REPLACE_" > ~/.zen/tmp/carousel/${pub}.insert
if [[ -s ${INDEX} ]]; then
# EXTRACT [tag[moa]] : ~/.zen/game/players/${PLAYER}/moa.jpg
tiddlywiki --load ${INDEX} --output ~/.zen/tmp --render '.' "${PLAYER}.moa.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[moa]]'
cat ~/.zen/tmp/${PLAYER}.moa.json | jq -r '.[].text' | base64 -d > ~/.zen/game/players/${PLAYER}/moa.jpg
echo "DESSIN DE MOA : ~/.zen/game/players/${PLAYER}/moa.jpg"
[[ $(file -b ~/.zen/game/players/${PLAYER}/moa.jpg | cut -d ' ' -f 1) == "JPEG" ]] \
&& convert ~/.zen/game/players/${PLAYER}/moa.jpg -resize 200 ~/.zen/tmp/moa.jpg \
&& composite -compose Over -gravity Center -geometry +0+0 ~/.zen/tmp/moa.jpg ~/.zen/tmp/carousel/${pub}.one.png ~/.zen/tmp/carousel/${pub}.one.png
## EXTRACT G1Voeu FROM PLAYER TW
echo "Ŋ1Flux ____ " > ~/.zen/tmp/carousel/${pub}.button
INDEX=~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
## EXTRACT [tag[G1Voeu]] : ~/.zen/tmp/${PLAYER}.g1wishes.txt
tiddlywiki --load ${INDEX} --output ~/.zen/tmp --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
cat ~/.zen/tmp/${PLAYER}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${PLAYER}.g1wishes.txt
while read WISH
do
[[ ${WISH} == "" || ${WISH} == "null" ]] && echo "BLURP. EMPTY WISH" && continue
WISHNAME=$(cat ~/.zen/tmp/${PLAYER}.g1voeu.json | jq .[] | jq -r 'select(.wish=="'${WISH}'") | .title')
[[ ! ${WISHNAME} ]] && echo "WISH sans NOM - CONTINUE -" && continue
echo "<button onclick=\"homeAstroportStation('$myASTROPORT/?qrcode=G1G1$WISHNAME&tw=$ASTRONAUTENS', 'tab', 9000)\">G1$WISHNAME</button>" >> ~/.zen/tmp/carousel/${pub}.button
done < ~/.zen/tmp/${PLAYER}.g1wishes.txt
fi
echo "<button onclick=\"window.open('"$myIPFS"/ipns/"$ASTRONAUTENS"');\">TW</button>" >> ~/.zen/tmp/carousel/${pub}.button
if [[ -s ${INDEX} ]]; then
# EXTRACT [tag[moa]] : ~/.zen/game/players/${PLAYER}/moa.jpg
tiddlywiki --load ${INDEX} --output ~/.zen/tmp --render '.' "${PLAYER}.moa.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[moa]]'
cat ~/.zen/tmp/${PLAYER}.moa.json | jq -r '.[].text' | base64 -d > ~/.zen/game/players/${PLAYER}/moa.jpg
echo "DESSIN DE MOA : ~/.zen/game/players/${PLAYER}/moa.jpg"
[[ $(file -b ~/.zen/game/players/${PLAYER}/moa.jpg | cut -d ' ' -f 1) == "JPEG" ]] \
&& convert ~/.zen/game/players/${PLAYER}/moa.jpg -resize 200 ~/.zen/tmp/moa.jpg \
&& composite -compose Over -gravity Center -geometry +0+0 ~/.zen/tmp/moa.jpg ~/.zen/tmp/carousel/${pub}.one.png ~/.zen/tmp/carousel/${pub}.one.png
## EXTRACT [tag[G1Voeu]] : ~/.zen/tmp/${PLAYER}.g1wishes.txt
tiddlywiki --load ${INDEX} --output ~/.zen/tmp --render '.' "${PLAYER}.g1voeu.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
cat ~/.zen/tmp/${PLAYER}.g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${PLAYER}.g1wishes.txt
while read WISH
do
[[ ${WISH} == "" || ${WISH} == "null" ]] && echo "BLURP. EMPTY WISH" && continue
WISHNAME=$(cat ~/.zen/tmp/${PLAYER}.g1voeu.json | jq .[] | jq -r 'select(.wish=="'${WISH}'") | .title')
[[ ! ${WISHNAME} ]] && echo "WISH sans NOM - CONTINUE -" && continue
echo "<button onclick=\"homeAstroportStation('$myASTROPORT/?qrcode=G1G1$WISHNAME&tw=$ASTRONAUTENS', 'tab', 9000)\">G1$WISHNAME</button>" >> ~/.zen/tmp/carousel/${pub}.button
done < ~/.zen/tmp/${PLAYER}.g1wishes.txt
fi
echo "<button onclick=\"window.open('"$myIPFS"/ipns/"$ASTRONAUTENS"');\">TW</button>" >> ~/.zen/tmp/carousel/${pub}.button
##################
# CREATE G1 AMZQR
CIMG="$MY_PATH/../images/g1ticket.png"
amzqr ${pub} -l H -p "$CIMG" -c -n QRG1avatar.png -d ~/.zen/game/players/${PLAYER}/
convert ~/.zen/game/players/${PLAYER}/QRG1avatar.png -resize 250 ~/.zen/tmp/QR.png
# ADD IT
composite -compose Over -gravity NorthEast -geometry +0+0 ~/.zen/tmp/QR.png ~/.zen/tmp/carousel/${pub}.one.png ~/.zen/tmp/one.png
# CREATE G1 AMZQR
CIMG="$MY_PATH/../images/g1ticket.png"
amzqr ${pub} -l H -p "$CIMG" -c -n QRG1avatar.png -d ~/.zen/game/players/${PLAYER}/
convert ~/.zen/game/players/${PLAYER}/QRG1avatar.png -resize 250 ~/.zen/tmp/QR.png
# ADD IT
composite -compose Over -gravity NorthEast -geometry +0+0 ~/.zen/tmp/QR.png ~/.zen/tmp/carousel/${pub}.one.png ~/.zen/tmp/one.png
## WRITE ON IT : ASK FOR REFILL
convert -font 'Liberation-Sans' \
-pointsize 80 -fill purple -draw 'text 50,120 "'"$COINS Ğ1"'"' \
-pointsize 30 -fill purple -draw 'text 40, 180 "'"$PLAYER"'"' \
-pointsize 14 -fill white -draw 'text 40, 200 "'"$(date)"'"' \
"${HOME}/.zen/tmp/one.png" "${HOME}/.zen/tmp/carousel/${pub}.png" \
&& rm ${HOME}/.zen/tmp/carousel/${pub}.one.png
## WRITE ON IT : ASK FOR REFILL
convert -font 'Liberation-Sans' \
-pointsize 80 -fill purple -draw 'text 50,120 "'"$COINS Ğ1"'"' \
-pointsize 30 -fill purple -draw 'text 40, 180 "'"$PLAYER"'"' \
-pointsize 14 -fill white -draw 'text 40, 200 "'"$(date)"'"' \
"${HOME}/.zen/tmp/one.png" "${HOME}/.zen/tmp/carousel/${pub}.png" \
&& rm ${HOME}/.zen/tmp/carousel/${pub}.one.png
done
img_dir="$HOME/.zen/tmp/carousel"
done
img_dir="$HOME/.zen/tmp/carousel"
fi
#Set Path to HTML page
@ -155,7 +163,7 @@ if [[ $i =~ \.(JPG|jpg|PNG|png|JPEG|jpeg|GIF|gif)$ ]]; then
MORE="${i%.png}.insert"
echo "$MORE"
CODEBOUTON="$(cat ${i%.png}.button)"
CODEBOUTON="$(cat ${i%.png}.button 2>/dev/null)"
echo "$CODEBOUTON"
LINK="<img src=\"/ipfs/$ilink\" alt=\"$img_alt\" width=\"$img_width\" height=\"$img_height\">"

View File

@ -13,7 +13,7 @@ Revert() {
}
isLan() {
local isLan=$(ip route |awk '$1 == "default" {print $3}' | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/" \
local isLan=$(ip route | awk '$1 == "default" {print $3}' | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/" \
|| route -n |awk '$1 == "0.0.0.0" {print $2}' | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/" \
|| true)
[ -n "$isLan" ] && echo "$isLan" || true
@ -404,3 +404,13 @@ myASTROTUBE="https://$(myAstroTube)"
&& myHOST="astroport.$(myHostName)" \
&& myG1BILLET="http://${myIP}:33101" \
|| true
## zIP :: PUT YOUR Internet Box IP IN ~/.zen/♥Box ( Forward PORTS 8080 4001 5001 33101 33102 1234 12345 45780 45781 )
[ -s "~/.zen/♥Box" ] \
&& zIP=$(cat ~/.zen/♥Box)
&& myASTROPORT="http://$(zIP):1234" \
&& myAPI="http://$(zIP):5001" \
&& myIPFS="http://$(zIP):8080" \
&& myHOST="$(zIP)" \
&& myG1BILLET="http://$(zIP):33101" \
|| true