From f572c4470da345d5dc7f852d1a73606a38fff1e5 Mon Sep 17 00:00:00 2001 From: fred Date: Thu, 6 Jul 2023 17:06:34 +0200 Subject: [PATCH] RUNTIME --- ASTROBOT/_G1Kodi.sh | 161 ++++++++++++++++++++++++ RUNTIME/G1Voeu.sh | 266 ++++++++++++++++++++++++++++++++++++++++ tools/json_to_xml.jq | 60 +++++++++ tools/verify_payment.sh | 25 ++++ 4 files changed, 512 insertions(+) create mode 100755 ASTROBOT/_G1Kodi.sh create mode 100755 RUNTIME/G1Voeu.sh create mode 100644 tools/json_to_xml.jq create mode 100755 tools/verify_payment.sh diff --git a/ASTROBOT/_G1Kodi.sh b/ASTROBOT/_G1Kodi.sh new file mode 100755 index 00000000..0f6702a3 --- /dev/null +++ b/ASTROBOT/_G1Kodi.sh @@ -0,0 +1,161 @@ +#!/bin/bash +######################################################################## +# Version: 0.5 +# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) +######################################################################## +# PAD COCODING : https://pad.p2p.legal/s/G1Kodi +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" + +. "${MY_PATH}/../tools/my.sh" + +echo "(✜‿‿✜) G1Kodi : Get Kodi database from ~/.kodi/userdata/Database/MyVideos116.db +export movie to RSS (ex : http://ipfs.localhost:8080/ipfs/QmSJYf4uTj3NmqovSFZpBZuUhSS8j9FXKKnAjUMuVE896k)" +echo "$ME RUNNING" + +######################################################################## +# KODI SERVICE +######################################################################## +######################################################################## +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 + +#~ 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 + +#~ # Extract tag=tube from TW +#~ MOATS="$3" +#~ [[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N") + +#~ ################################################################### +#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY +#~ ################################################################### +#~ mkdir -p $HOME/.zen/tmp/${IPFSNODEID}/G1Kodi/${PLAYER}/ +#~ mkdir -p $HOME/.zen/game/players/${PLAYER}/G1Kodi/ +#~ mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS} + +#~ echo "EXPORT Kodi Wish for ${PLAYER}" +#~ rm -f ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json +#~ tiddlywiki --load ${INDEX} \ + #~ --output ~/.zen/game/players/${PLAYER}/G1Kodi \ + #~ --render '.' 'Kodi.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Kodi' + +#~ ## Second export try +#~ if [[ ! -s ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json ]] ; then + #~ tiddlywiki --load ${INDEX} \ + #~ --output ~/.zen/game/players/${PLAYER}/G1Kodi \ + #~ --render '.' 'Kodi.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Kodi]]' + + #~ fi + +#~ [[ ! -s ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json ]] && echo "AUCUN VOEU G1KODI - EXIT -" && exit 0 + + +#~ WISH=$(cat ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json | jq -r '.[].wish') +#~ WISHNS=$(cat ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json | jq -r '.[].wishns') + +MOATS=$(date -u +"%Y%m%d%H%M%S%4N") + +#~ ################################################################### +#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY +#~ ################################################################### +mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS} + +#~ echo ${myIPFS}${WISHNS} +echo "=========== ( ◕‿◕) (◕‿◕ ) ==============" + +## EXTRACT MOVIE FILES LIST +sqlite3 -csv ~/.kodi/userdata/Database/MyVideos116.db 'select c00, c01, c22, c14 from movie' > ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv +[[ ! -s ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv ]] && echo "EMPTY KODI MOVIE DATABASE - EXIT -" && exit 0 +################################# + +## PREPARE RSS XML +echo ' + + + Astroport Kodi + Astroport Kodi Movies RSS feed + http://astroport.copylaradio.com + 2020 Astroport.com All rights reserved + Mon, 6 Sep 2020 00:01:00 +0000 + Sun, 6 Sep 2020 16:20:00 +0000 + 1800' > $HOME/.zen/tmp/${MOATS}/movie.rss + +while read LINE +do + TITLE=$(echo $LINE | csvcut -c 1) + DESC=$(echo $LINE | csvcut -c 2) + SOURCE=$(echo $LINE | csvcut -c 3) + CAT=$(echo $LINE | csvcut -c 4 | sed "s~\/~~g") + echo "$TITLE ($CAT)" + echo "$SOURCE" + ## ADD MOVIE TO IPFS + #~ + #~ Delicatessen + #~ La vie des étranges habitants d'un immeuble de banlieue qui se dresse dans un immense terrain vague et qui tous vont se fournir chez le boucher-charcutier, à l'enseigne « Delicatessen ». + #~ http://ipfs.localhost:8080/ipfs/QmfVuhDo4kEk5eh5EULfZGxiWqrrCcHBehojgPF6kiq8r3/Delicatessen.mp4 + #~ Sun, 6 Sep 2022 16:20:00 +0000 + #~ + + if [[ ! $(echo $SOURCE | grep ipfs) ]]; then + + MIME=$(file --mime-type -b "$SOURCE" ) + echo "$MIME" + + FILE=$(basename $SOURCE ) + EXT=$(echo $FILE | rev | cut -d '.' -f1 | rev ) + #~ PATH=$(echo $SOURCE | rev | cut -d / -f2- | rev ) + echo "FILE : $FILE ($EXT)" + + tiddlywiki --load ${INDEX} \ + --output ~/.zen/tmp/${MOATS} \ + --render '.' 'inTW.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "$FILE" + + [[ -s ~/.zen/tmp/${MOATS}/inTW.json ]] \ + && echo "FOUND IN TW" && continue \ + || echo "NOT IN TW" + + #~ # [[ $MIME == "video/mp4" ]] && ${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "$PATH" "$FILE" + + #~ else + + #~ echo "IPFS FILE : '$SOURCE" + #~ echo ' + #~ + #~ '$TITLE' + #~ '$DESC' + #~ '$SOURCE' + #~ Sun, 1 Sep 2020 20:12:00 +0000 + #~ + #~ ' >> $HOME/.zen/tmp/${MOATS}/movie.rss + + fi + + echo "~~~~~~~~" + + +done < ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv + +echo ' +' >> $HOME/.zen/tmp/${MOATS}/movie.rss + +#~ IPRSS=$(ipfs add -q $HOME/.zen/tmp/${MOATS}/movie.rss) + +#~ ipfs name publish -k $WISH /ipfs/$IPRSS + +echo "=========== ( ◕‿◕) (◕‿◕ ) ==============" + +ll $HOME/.zen/tmp/${MOATS} + +exit 0 diff --git a/RUNTIME/G1Voeu.sh b/RUNTIME/G1Voeu.sh new file mode 100755 index 00000000..acba554a --- /dev/null +++ b/RUNTIME/G1Voeu.sh @@ -0,0 +1,266 @@ +#!/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 +. "${MY_PATH}/../tools/my.sh" +################################################################################ +# Create G1VOEU TW for PLAYER +# Mon Titre => G1MonTitre +## PARAM : "TITRE DU VOEU" "PLAYER" "INDEX" +################################################################################ +TITRE="$1" +PLAYER="$2" +INDEX="$3" + +[[ ${PLAYER} == "" ]] && PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null) +[[ ${PLAYER} == "" ]] && echo "Second paramètre PLAYER manquant" && exit 1 +PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) +[[ $G1PUB == "" ]] && G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null) +[[ $G1PUB == "" ]] && echo "Troisième paramètre G1PUB manquant" && exit 1 + +[[ ! $INDEX ]] && INDEX="$HOME/.zen/game/players/${PLAYER}/ipfs/moa/index.html" +echo $INDEX +[[ ! -s $INDEX ]] && echo "TW ${PLAYER} manquant" && exit 1 + +echo "Working on $INDEX" + +ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1) +[[ $ASTRONAUTENS == "" ]] && echo "CLEF IPNS ASTRONAUTE MANQUANTE - EXIT -" && exit 1 + +echo "Bienvenue $PSEUDO (${PLAYER}) : $G1PUB" +echo + +###################################################################### +MOATS="$4" +[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N") +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) + + 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 + EMAIL1 + + SECRET2="${VoeuName}" ## SECRET2 est "TitreDuVoeu PLAYER" + + 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 "# 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 + + ## 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" + + 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" + + 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}" + + ################################################################# + ## 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}" + 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 + +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 +convert -gravity northwest -pointsize 20 -fill black -draw "text 320,250 \"${PLAYER}\"" ~/.zen/tmp/one.png ~/.zen/tmp/hop.png +convert -gravity northwest -pointsize 30 -fill black -draw "text 20,320 \"${VoeuName}\"" ~/.zen/tmp/hop.png ~/.zen/tmp/pseudo.png +convert -gravity northwest -pointsize 30 -fill black -draw "text 320,300 \"*****\"" ~/.zen/tmp/pseudo.png ~/.zen/tmp/salt.png +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 + +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 +composite -compose Over -gravity NorthWest -geometry +320+280 ~/.zen/tmp/MIZLOGO.png ~/.zen/tmp/one.png ~/.zen/tmp/two.png + +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 + + + +# TEXT="

"${VoeuName}"" +#:[tag[G1CopierYoutube]] [tag[pdf]] + # Contains QRCode linked to G1VoeuTW and BUTTON listing G1Voeux + #
+ TEXT="
+ TW G1Voeu "${PLAYER}"

+ <\$button class='tc-tiddlylink'> + <\$list filter='[tag[G1"${VoeuName}"]]'> + <\$action-navigate \$to=<> \$scroll=no/> + + Afficher tous vos G1"${VoeuName}" + " + + # 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 + + 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 + + # 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 + + 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} + + 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 + + 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 "## 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 "Hop, UNE 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" + + echo "************************************************************" + +exit 0 diff --git a/tools/json_to_xml.jq b/tools/json_to_xml.jq new file mode 100644 index 00000000..76d9b963 --- /dev/null +++ b/tools/json_to_xml.jq @@ -0,0 +1,60 @@ +"@" as $attr_prefix | +"#text" as $content_key | + +# ">" only needs to be escaped if preceded by "]]". +# Some whitespace also need escaping, at least in attribute. +{ "&": "&", "<": "<", ">": ">" } as $escapes | +{ "&": "&", "<": "<", "\"": """ } as $attr_escapes | + +def text_to_xml: split( "" ) | map( $escapes[.] // . ) | join( "" ); +def text_to_xml_attr_val: split( "" ) | map( $attr_escapes [.] // . ) | join( "" ); + +def node_to_xml: + if type == "string" then + text_to_xml + else + ( + if .attrs then + .attrs | + to_entries | + map( " " + .key + "=\"" + ( .value | text_to_xml_attr_val ) + "\"" ) | + join( "" ) + else + "" + end + ) as $attrs | + + if .children and ( .children | length ) > 0 then + ( .children | map( node_to_xml ) | join( "" ) ) as $children | + "<" + .name + $attrs + ">" + $children + "" + else + "<" + .name + $attrs + "/>" + end + end +; + +def fix_tree( $name ): + type as $type | + if $type == "array" then + .[] | fix_tree( $name ) + elif $type == "object" then + reduce to_entries[] as { key: $k, value: $v } ( + { name: $name, attrs: {}, children: [] }; + + if $k[0:1] == $attr_prefix then + .attrs[ $k[1:] ] = $v + elif $k == $content_key then + .children += [ $v ] + else + .children += [ $v | fix_tree( $k ) ] + end + ) + else + { name: $name, attrs: {}, children: [ . ] } + end +; + +def fix_tree: fix_tree( "" ) | .children[]; + +fix_tree | node_to_xml + diff --git a/tools/verify_payment.sh b/tools/verify_payment.sh new file mode 100755 index 00000000..7e9ebe4d --- /dev/null +++ b/tools/verify_payment.sh @@ -0,0 +1,25 @@ +#!/bin/bash +######################################################################## +# Version: 0.4 +# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) +# ON LINE echo script! LAST LINE export VARIABLE values +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" + +. "${MY_PATH}/my.sh" +### USE 12345 MAP +## EXPLORE SWARM BOOTSTRAP REPLICATED TW CACHE + + start=`date +%s` + MOATS=$(date -u +"%Y%m%d%H%M%S%4N") + +G1DEST="$1" +COMMENT="$2" + +${MY_PATH}/jaklis/jaklis.py history -p $G1DEST -n 10 -j + + +echo "export DEST=$DEST COMMENT=$COMMENT ASTROMAIL=$EMAIL ASTROFEED=$FEEDNS" +exit 0