From 024e9cd972bcb74b6a15b8be0594f62c6b1ed706 Mon Sep 17 00:00:00 2001 From: fred Date: Sat, 6 May 2023 02:35:06 +0200 Subject: [PATCH] =?UTF-8?q?refined=20&=20easy=20=E2=99=A5Box=20system=20in?= =?UTF-8?q?terconnection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- 12345.sh | 4 +- API/QRCODE.sh | 138 +++++++++++++++++------- ASTROBOT/G1Voeu.sh | 7 +- templates/register.html | 2 +- tools/VOEUX.print.sh | 78 +++++++++----- tools/make_image_ipfs_index_carousel.sh | 136 ++++++++++++----------- tools/my.sh | 12 ++- 7 files changed, 239 insertions(+), 138 deletions(-) diff --git a/12345.sh b/12345.sh index 87c8dc53..d9cd1ebd 100755 --- a/12345.sh +++ b/12345.sh @@ -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 diff --git a/API/QRCODE.sh b/API/QRCODE.sh index 5342fcdc..9b729b06 100755 --- a/API/QRCODE.sh +++ b/API/QRCODE.sh @@ -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 "

$player G1MISSIVE

$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 "
${player} $PLAYERCOINS G1" >> ~/.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 "
EXTRA ${VoeuName} $EXTRAG1COINS G1" >> ~/.zen/tmp/${MOATS}/disco + + # Don't care if ORIGIN PLAYER is THERE + #~ ISTHERE=$(ipfs key list -l | grep -w ${player} | cut -d ' ' -f1) + #~ echo "

$player G1MISSIVE

$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 "
${VoeuName} $G1VOEUCOINS G1" >> ~/.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 "
$MCOINS G1" >> ~/.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 "
PLEASE RETRY IN 30 SECONDS GETTING MESSAGE FROM IPFS
" >> ~/.zen/tmp/${MOATS}/disco ( @@ -336,7 +395,7 @@ if [[ ${QRCODE:0:5} == "@@@@@" ]]; then fi echo "

" >> ~/.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 "
NO NEW LINE
" >> ~/.zen/tmp/${MOATS}/disco [[ ${DESTMAIL} == "" || ${DESTMAIL} == "undefined" ]] && echo "
Missing Destination EMAIL
" >> ~/.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 "
" >> ~/.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 "

${PASS} ${UPASS} TOO OLD

" >> ~/.zen/tmp/${MOATS}/disco echo "
" >> ~/.zen/tmp/${MOATS}/disco diff --git a/ASTROBOT/G1Voeu.sh b/ASTROBOT/G1Voeu.sh index 3d7a9917..2ded9b1b 100755 --- a/ASTROBOT/G1Voeu.sh +++ b/ASTROBOT/G1Voeu.sh @@ -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" diff --git a/templates/register.html b/templates/register.html index 410dbbfd..1fc32b4e 100644 --- a/templates/register.html +++ b/templates/register.html @@ -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.
Utilisez les identifiants de votre compte GChange si vous en disposez déjà
    
"; + document.getElementById("countdown").innerHTML = "
    
"; } else { // elem.innerHTML = timeLeft + " s"; timeLeft--; diff --git a/tools/VOEUX.print.sh b/tools/VOEUX.print.sh index f1c39480..e84ace02 100755 --- a/tools/VOEUX.print.sh +++ b/tools/VOEUX.print.sh @@ -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 ############################################################ diff --git a/tools/make_image_ipfs_index_carousel.sh b/tools/make_image_ipfs_index_carousel.sh index b08e2187..26bfea8e 100755 --- a/tools/make_image_ipfs_index_carousel.sh +++ b/tools/make_image_ipfs_index_carousel.sh @@ -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 "_REPLACE_" > ~/.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 "_REPLACE_" > ~/.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 "" >> ~/.zen/tmp/carousel/${pub}.button - done < ~/.zen/tmp/${PLAYER}.g1wishes.txt - fi - echo "" >> ~/.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 "" >> ~/.zen/tmp/carousel/${pub}.button + done < ~/.zen/tmp/${PLAYER}.g1wishes.txt + fi + echo "" >> ~/.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_alt\"" diff --git a/tools/my.sh b/tools/my.sh index bdedf165..298328e8 100755 --- a/tools/my.sh +++ b/tools/my.sh @@ -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