diff --git a/G1VOEUX.sh b/G1VOEUX.sh index 84d507bf..b80c5e83 100755 --- a/G1VOEUX.sh +++ b/G1VOEUX.sh @@ -30,7 +30,6 @@ ASTRONAUTENS=$(ipfs key list -l | grep -w "${PLAYER}" | cut -d ' ' -f 1) [[ $ASTRONAUTENS == "" ]] && echo "ASTRONAUTE manquant" && exit 1 echo "Bienvenue $PSEUDO ($PLAYER) : $G1PUB" -echo "Astronaute Ŋ1 : http://127.0.0.1:8080/ipns/$ASTRONAUTENS" echo ######################################################## @@ -39,7 +38,7 @@ rm -f ~/.zen/tmp/index.html ipfs --timeout 5s get -o ~/.zen/tmp/index.html /ipns/$ASTRONAUTENS if [ ! -f ~/.zen/tmp/index.html ]; then echo "ERROR IPNS TIMEOUT. Restoring local backup..." - TW=$(ipfs add -Hq ~/.zen/game/players/$PLAYER/ipfs/moa/index.html | tail -n 1) + TW=$(ipfs add -rHq ~/.zen/game/players/$PLAYER/ipfs/moa/ | tail -n 1) ipfs name publish --key=$PLAYER /ipfs/$TW else # Backup @@ -72,14 +71,16 @@ do myIP=$(hostname -I | awk '{print $1}' | head -n 1) echo " QR code fonctionnel sur réseau IP local (qo-op) : $myIP" - echo "# CREATION WORLD UPGRADE DATABASE" + echo "# UPGRADING WORLD WHISHKEY DATABASE" MOATS=$(date -u +"%Y%m%d%H%M%S%4N") mkdir -p ~/.zen/game/world/$WISHKEY/ echo $PEPPER > ~/.zen/game/world/$WISHKEY/.pepper echo "# CREATION TW" + ########################################################################################## # ipfs cat /ipfs/bafybeierk6mgrlwpowdcfpvibujhg2b6upjfl3gryw2k72f7smxt6cqtiu > ~/.zen/Astroport.ONE/templates/twdefault.html + ########################################################################################## cp ~/.zen/Astroport.ONE/templates/twdefault.html ~/.zen/game/world/$WISHKEY/index.html # PERSONNALISATION @@ -97,10 +98,19 @@ do # ASTROPORT LOCAL IP RELAY == Smartphone doesn't resolve LAN DNS. So using Astroport Station IP sed -i "s~ipfs.infura.io~tube.copylaradio.com~g" ~/.zen/game/world/$WISHKEY/index.html sed -i "s~127.0.0.1~$myIP~g" ~/.zen/game/world/$WISHKEY/index.html - #sed -i "s~https://ipfs.bluelightav.org~http://127.0.0.1:5001~g" ~/.zen/game/world/$WISHKEY/index.html + # ADD API GW TIDDLERS for IPFS SAVE + ########################################################################################## + # [{"title":"$:/ipfs/saver/api/http/local/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://127.0.0.1:5001"}] + # [{"title":"$:/ipfs/saver/gateway/local/myip","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://127.0.0.1:8080"}] + ########################################################################################## + tiddlywiki --verbose --load ~/.zen/game/world/$WISHKEY/index.html \ + --import ~/.zen/Astroport.ONE/templates/data/local.api.json "application/json" \ + --import ~/.zen/Astroport.ONE/templates/data/local.gw.json "application/json" \ + --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain" + [[ -f ~/.zen/tmp/newindex.html ]] && cp ~/.zen/tmp/newindex.html ~/.zen/game/world/$WISHKEY/index.html -ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://'$myIP':8080", "http://127.0.0.1:8080", "http://astroport", "https://astroport.com", "https://qo-op.com", "https://tube.copylaradio.com" ]' + ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://'$myIP':8080", "http://127.0.0.1:8080", "http://astroport", "https://astroport.com", "https://qo-op.com", "https://tube.copylaradio.com" ]' ## RESTART IPFS !? echo "# CREATION QR CODE" @@ -152,23 +162,38 @@ convert -gravity northwest -pointsize 50 -fill black -draw "text 30,300 \"Ğ1 VO echo "## Creation json tiddler : Qr${PEPPER} /ipfs/${IVOEU}" echo '[ { - "title": "'Qr${PEPPER}'", + "title": "'Voeu${PEPPER}'", "type": "'image/jpeg'", - "tags": "'Voeu ${PEPPER}'", + "text": "''", + "tags": "'$:/isAttachment $:/isEmbedded voeu ${PEPPER}'", "_canonical_uri": "'/ipfs/${IVOEUPLAY}'" } ] ' > ~/.zen/game/world/$WISHKEY/${PEPPER}.voeu.json - rm ~/.zen/tmp/newindex.html - echo "Ajout nouveau tiddler Qr$PEPPER dans MOA $PSEUDO : http://127.0.0.1:8080/ipns/$ASTRONAUTENS" - tiddlywiki --verbose --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html --import ~/.zen/game/world/$WISHKEY/${PEPPER}.voeu.json --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain" + + + rm -f ~/.zen/tmp/newindex.html + + echo "Nouveau Qr$PEPPER dans MOA $PSEUDO : http://127.0.0.1:8080/ipns/$ASTRONAUTENS" + tiddlywiki --verbose --load ~/.zen/game/players/$PLAYER/ipfs/moa/index.html \ + --import ~/.zen/game/world/$WISHKEY/${PEPPER}.voeu.json "application/json" \ + --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain" + + echo "TW Updated..." if [[ -f ~/.zen/tmp/newindex.html ]]; then - TW=$(ipfs add -Hq ~/.zen/tmp/newindex.html | tail -n 1) - echo "Pulication IPNS clef $PLAYER /ipfs/$TW" + echo "Mise à jour ~/.zen/game/players/$PLAYER/ipfs/moa/index.html" + cp -f ~/.zen/tmp/newindex.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html + MOATS=$(date -u +"%Y%m%d%H%M%S%4N") + echo "Avancement blockchain $PLAYER : $MOATS" + cp ~/.zen/game/players/$PLAYER/ipfs/moa/.chain ~/.zen/game/players/$PLAYER/ipfs/moa/.chain.old + TW=$(ipfs add -rHq ~/.zen/game/players/$PLAYER/ipfs/moa/ | tail -n 1) + echo "ipfs name publish --key=$PLAYER /ipfs/$TW" ipfs name publish --key=$PLAYER /ipfs/$TW # MAJ CACHE TW $PLAYER - cp -f ~/.zen/tmp/newindex.html ~/.zen/game/players/$PLAYER/ipfs/moa/index.html + echo $TW > ~/.zen/game/players/$PLAYER/ipfs/moa/.chain + echo $MOATS > ~/.zen/game/players/$PLAYER/ipfs/moa/.moats + echo fi # PRINTING @@ -195,6 +220,8 @@ convert -gravity northwest -pointsize 50 -fill black -draw "text 30,300 \"Ğ1 VO echo $MOATS > ~/.zen/game/world/$WISHKEY/.moats ipfs name publish --key=${WISHKEY} /ipfs/$IPUSH 2>/dev/null + echo "Astronaute Ŋ1 : http://127.0.0.1:8080/ipns/$ASTRONAUTENS" + echo "CAPSULE A REVE $PEPPER : http://127.0.0.1:8080/ipns/$VOEUXNS" diff --git a/installnot.sh b/installnot.sh new file mode 100644 index 00000000..b6616798 --- /dev/null +++ b/installnot.sh @@ -0,0 +1,199 @@ +#!/bin/bash +######################################################################## +# Version: 0.3 +# 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##*/}" + +[ $(id -u) -eq 0 ] && echo "LANCEMENT root INTERDIT. Utilisez un simple utilisateur du groupe \"sudo\" SVP" && exit 1 + + +######################################################################## +[[ ! $(which ipfs) ]] && echo "=== Installez IPFS !!" && echo "https://docs.ipfs.io/install/command-line/#official-distributions" && exit 1 + +# MAIN # SI AUCUNE CLEF DE STATION... +if [[ ! -f ~/.zen/secret.dunikey ]]; +then + +# Check requirements +echo "AstrXbian installateur pour distributions DEBIAN et dérivées : LinuxMint (https://www.linuxmint.com/) ou XBIAN (https://xbian.org) recommandées" +echo "Appuyez sur ENTRER pour commencer."; read TEST; [[ "$TEST" != "" ]] && echo "SORTIE" && exit 0 ## Ajouter confirmation à chaque nouvelle étape (+explications) +echo ; echo "Mise à jour des dépots de votre distribution..." +sudo apt-get update + +[[ "$USER" != "xbian" ]] &&\ + for i in x11-utils xclip zenity handbrake*; do\ + [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ] &&\ + echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<";\ + sudo apt install -y $i; + done + +for i in git fail2ban netcat-traditional inotify-tools curl net-tools libsodium* python3-dev python3-pip python3-setuptools python3-wheel python3-dotenv mpack libssl-dev libffi-dev; do + if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then + echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" + sudo apt install -y $i + fi +done + +for i in build-essential qrencode jq bc file gawk yt-dlp ffmpeg sqlite dnsutils v4l-utils vlc mp3info musl-dev openssl* cargo detox nmap httrack html2text ssmtp imagemagick ttf-mscorefonts-installer libcurl4-openssl-dev; do + if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then + echo ">>> Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" + sudo apt install -y $i + fi +done + +[[ ! $(which kodi) && "$USER" != "xbian" ]] &&\ + echo ">>> Installation Kodi + Vstream = VOTRE VIDEOTHEQUE ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<";\ + sudo apt-get install kodi -y;\ + ${MY_PATH}/.install/kodi_uqload_downloader.sh + +echo "## INSTALLATION AstroGEEK OpenCV = 'Intelligence Amie' " +sudo apt-get install python3-opencv -y + +## Correct PDF restrictions for imagemagick +echo "# Correction des droits export PDF imagemagick" +if [[ $(cat /etc/ImageMagick-6/policy.xml | grep PDF) ]]; then + cat /etc/ImageMagick-6/policy.xml | grep -Ev PDF > /tmp/policy.xml + sudo cp /tmp/policy.xml /etc/ImageMagick-6/policy.xml +fi + +echo "###########################" +echo "## INSTALL PYTHON CRYPTO LAYER " +echo "###########################" +echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc && source ~/.bashrc; echo ">>> PATH=$PATH" +python3 -m pip install -U pip +python3 -m pip install -U setuptools wheel +python3 -m pip install -U cryptography Ed25519 base58 google duniterpy pynacl pgpy +python3 -m pip install -U nicotine-plus silkaj +python3 -m pip install -U protobuf==3.19.0 + + +if [[ "$USER" == "pi" ]]; then ## PROPOSE QR_CODE PRINTER SUR RPI + echo "Ambassade? Souhaitez vous ajouter imprimante 'brother_ql'? Saisissez OUI, sinon laissez vide et tapez sur ENTRER" + read saisie + if [[ $saisie != "" ]]; then + sudo apt install printer-driver-all cups -y + sudo pip3 install brother_ql + sudo cupsctl --remote-admin + sudo usermod -aG lpadmin pi + sudo usermod -a -G gammu pi + fi +fi + +# python3 -m pip install -U silkaj +## python -> python3 link +sudo ln -f -s /usr/bin/python3 /usr/bin/python + + +######################################################################## +echo "=== Clonage git CODE 'astrXbian' + 'Astroport.ONE' depuis https://git.p2p.legal" +mkdir -p ~/.zen +cd ~/.zen +git clone https://git.p2p.legal/axiom-team/astrXbian.git +git clone https://git.p2p.legal/qo-op/Astroport.ONE.git +# TODO INSTALL FROM IPFS / IPNS + + +## Scripts pour systemd ou InitV (xbian) +echo "=== Activation SYSTEM IPFS" +~/.zen/astrXbian/.install/ipfs_alone.sh + +######################################################################## +echo "=== IMPORT configuration ASTROPORT dans ~/.kodi" +cp -Rf ~/.zen/astrXbian/.install/.kodi ~/ + +######################################################################## +echo "=== Configuration jaklis: Centre de communication CESIUM+ GCHANGE+" +cd ~/.zen/astrXbian/zen/jaklis +./setup.sh + +######################################################################## +echo "=== Sécurisation DEFCON SUDOERS FAIL2BAN" +## XBIAN fail2ban ERROR correction ## +#[....] Starting authentication failure monitor: fail2ban No file(s) found for glob /var/log/auth.log +[[ "$USER" == "xbian" ]] && sudo sed -i "s/auth.log/faillog/g" /etc/fail2ban/paths-common.conf +# NODE activates fail2ban IN zen/ipfs_SWARM_refresh.sh + +### MODIFIYING /etc/sudoers ### +[[ "$USER" == "xbian" ]] && echo "xbian ALL=(ALL) NOPASSWD:ALL" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/astroport') + +# PERSONNAL DEFCON LEVEL +# cp ~/.zen/astrXbian/DEFCON ~/.zen/ + +if [[ "$USER" == "xbian" ]] +then + echo "enabling ipfs initV service autostart" + cd /etc/rc2.d && sudo ln -s ../init.d/ipfs S02ipfs + cd /etc/rc3.d && sudo ln -s ../init.d/ipfs S02ipfs + cd /etc/rc4.d && sudo ln -s ../init.d/ipfs S02ipfs + cd /etc/rc5.d && sudo ln -s ../init.d/ipfs S02ipfs + + cd /etc/rc0.d && sudo ln -s ../init.d/ipfs K01ipfs + cd /etc/rc1.d && sudo ln -s ../init.d/ipfs K01ipfs + cd /etc/rc6.d && sudo ln -s ../init.d/ipfs K01ipfs + + # Disable xbian-config auto launch + echo 0 > ~/.xbian-config-start + +fi + +######################################################################## +# CREATE ~/astroport FILESYSTEM GATE +mkdir -p ~/astroport/film +mkdir -p ~/astroport/serie +mkdir -p ~/astroport/anime +echo '${TYPE};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME' > ~/astroport/ajouter_video.modele.txt + + +####################################################################### + +echo "## INSTALL open_with_linux.py ## +## https://darktrojan.github.io/openwith/webextension.html" +~/.zen/astrXbian/open_with_linux.py install + +echo ">>> INFO : Ajoutez l'extension 'OpenWith' à votre navigateur !! +# https://addons.mozilla.org/firefox/addon/open-with/ +# https://chrome.google.com/webstore/detail/open-with/cogjlncmljjnjpbgppagklanlcbchlno" + +if [[ "$USER" != "xbian" ]] +then + ## Desktop install + echo "INITIALISATIOn Astroport/KODI" + echo "Appuyez sur la touche ENTREE pour démarrer le mode Aventure" + echo "sinon interrompez ici l'installation, et activez votre Ambassade ~/.zen/Astroport.ONE/start.sh" + read + ~/.zen/Astroport.ONE/adventure.sh + # ~/.zen/astrXbian/ISOconfig.sh +else + ## Rpi Xbian install. + cat /etc/rc.local | grep -Ev "exit 0" > /tmp/new.rc.local ## REMOVE "exit 0" + # PREPARE NEXT BOOT - Network config - NEXTBOOT - ISOConfig - NEXTBOOT - OK + echo "su - xbian -c '~/.zen/astrXbian/FirstBOOT.sh'" >> /tmp/new.rc.local + echo "exit 0" >> /tmp/new.rc.local + sudo cp -f /tmp/new.rc.local /etc/rc.local + + echo "STOP!! Redémarrer Xbian pour continuer la configuration de votre station Astroport/KODI" + echo "Faites une ISO : sudo xbian-config" + exit 0 +fi + +# MAIN # -f ~/.zen/secret.june (ISOConfig déjà lancé) ## +else + +echo "Installation existante !! +======================== +Astroport/KODI (Gchange) +======================== +Connectez-vous sur https://gchange.fr avec vos identifiants + +$(cat ~/.zen/secret.june) + +https://astroport.com +" + +# MAIN # +fi +} diff --git a/templates/data/local.api.json b/templates/data/local.api.json new file mode 100644 index 00000000..4ee04524 --- /dev/null +++ b/templates/data/local.api.json @@ -0,0 +1 @@ +[{"title":"$:/ipfs/saver/api/http/local/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://127.0.0.1:5001"}] diff --git a/templates/data/local.gw.json b/templates/data/local.gw.json new file mode 100644 index 00000000..13d8f005 --- /dev/null +++ b/templates/data/local.gw.json @@ -0,0 +1 @@ +[{"title":"$:/ipfs/saver/gateway/local/myip","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://127.0.0.1:8080"}] diff --git a/tools/VOEUX.refresh.sh b/tools/VOEUX.refresh.sh new file mode 100755 index 00000000..5ad943bd --- /dev/null +++ b/tools/VOEUX.refresh.sh @@ -0,0 +1,56 @@ +#!/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 +ME="${0##*/}" +################################################################################ +# Inspect game wishes, refresh latest IPNS version +# Backup and chain + +[[ $PLAYER == "" ]] && PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null) + + +for voeu in $(ls ~/.zen/game/world/); +do + echo "VOEU : $voeu" + voeuns=$($MY_PATH/g1_to_ipfs.py $voeu) + echo "http://127.0.0.1:8080/ipns/$voeuns" + echo + W=$(cat ~/.zen/game/world/$voeu/.pepper 2>/dev/null) + echo $W + + mkdir -p ~/.zen/tmp/work + + echo "Getting latest online TW..." + ipfs --timeout 12s get -o ~/.zen/tmp/work/ /ipns/$voeuns + + + if [[ ! -f ~/.zen/tmp/work/index.html ]]; then + echo "UNAVAILABLE WISH! Removing $W $voeu" + ipfs key rm $voeu + rm -Rf ~/.zen/game/world/$voeu + continue + fi + + # RECORDING BLOCKCHAIN TIC + MOATS=$(date -u +"%Y%m%d%H%M%S%4N") + cp ~/.zen/game/world/$voeu/.chain ~/.zen/game/world/$voeu/.chain.old + IPUSH=$(ipfs add -rHq ~/.zen/game/world/$voeu/ | tail -n 1) + echo $IPUSH > ~/.zen/game/world/$voeu/.chain + echo $MOATS > ~/.zen/game/world/$voeu/.moats + ipfs name publish --key=${voeu} /ipfs/$IPUSH 2>/dev/null + + rm -Rf ~/.zen/tmp/work + + if [[ -d ~/.zen/game/players/$PLAYER/voeux/$voeu ]]; then + echo "Supprimer votre voeux $W? Tapez sur ENTRER pour passer au voeu suivant..." + read QUOI + [[ "$QUOI" != "" ]] && ipfs key rm $voeu && rm -Rf ~/.zen/game/world/$voeu && rm -Rf ~/.zen/game/players/$PLAYER/voeux/$voeu && echo "SUPRESSION OK" + fi + +done + diff --git a/youtube-dl.sh b/youtube-dl.sh new file mode 100644 index 00000000..72352cb7 --- /dev/null +++ b/youtube-dl.sh @@ -0,0 +1,22 @@ +#!/bin/bash +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" +######## YOUTUBE-DL ########## +## NOW INSTALL yt-dlp AND LINK TO youtube-dl + +if [[ ! -f /usr/local/bin/yt-dlp ]]; then + sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && \ + sudo chmod a+rx /usr/local/bin/yt-dlp && sudo chown $USER /usr/local/bin/yt-dlp + + ytdl=$(which youtube-dl) # modify old + [[ -f ${ytdl} && ! -f ${ytdl}.old ]] &&\ + sudo cp ${ytdl} ${ytdl}.old && \ + sudo rm ${ytdl} + + sudo ln -s /usr/local/bin/yt-dlp /usr/local/bin/youtube-dl ## NOW youtube-dl is linked to yt-dlp (COMMANDS ARE THE SAME ?) +fi + +## UPGRADE TO LATEST +ls -al /usr/local/bin/youtube-dl