diff --git a/.install/mpd_rompr.sh b/.install/mpd_rompr.sh new file mode 100755 index 0000000..4ee6f6a --- /dev/null +++ b/.install/mpd_rompr.sh @@ -0,0 +1,188 @@ +#!/bin/bash +######################################################################## +# Author: Fred (support@qo-op.com) +# 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##*/}" +######################################################################## +YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) || er+=" ipfs daemon not running" +IPFSNODEID=$(ipfs id -f='\n') || er+=" ipfs id problem" +WHOAMI=$(sbotc whoami | jq -r .id) || er+=" sbotc whoami problem" +[[ "$YOU" == "" || "$IPFSNODEID" == "" || "$WHOAMI" == "" ]] && echo "ERROR : $er " && exit 1 +######################################################################## +#### DO NOT RUN AS ROOT +[[ $USER == "root" ]] && echo "DO NOT RUN AS root!! Use regular USER with sudo AUTHORISATION" && exit 1 +#### APACHE NOT SUPPORTED +is_apache_running=$(ps auxf --sort=+utime | grep -w apache | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1); +[[ $is_apache_running ]] && echo "SORRY ONLY nginx is supported. EXIT" && exit 1 +#### ARM / X64 NOT USED THERE +MACHINE_TYPE=`uname -m` +[ ${MACHINE_TYPE:0:3} == 'arm' ] && isARM="YES" + +### UPDATE apt cache +sudo apt-get update + +### Adding YOU to www-data group +sudo adduser $YOU www-data + +################################## +## INSTALL RAINBOW ASCII ;) +[[ ! $(which figlet) ]] && sudo apt install figlet -y +[[ ! $(which lolcat) ]] && sudo apt install lolcat -y + +echo ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ______ __ ____ ___ + / ____/___ ____ __ __/ / ____ _/ __ \____ _____/ (_)___ + / / / __ \/ __ \/ / / / / / __ `/ /_/ / __ `/ __ / / __ \ +/ /___/ /_/ / /_/ / /_/ / /___/ /_/ / _, _/ /_/ / /_/ / / /_/ / +\____/\____/ .___/\__, /_____/\__,_/_/ |_|\__,_/\__,_/_/\____/ + /_/ /____/ + +Multimedia Layer (https://www.copylaradio.com) +' | lolcat +## MULTIMEDIA +## VIDEO & AUDIO & PLAYLISTS ~/.zen/ DIR +mkdir -p ~/astroport/films +mkdir -p ~/astroport/animes +mkdir -p ~/astroport/series +mkdir -p ~/astroport/docus +mkdir -p ~/astroport/musiques + +mkdir -p ~/.zen/video +mkdir -p ~/.zen/audio +mkdir -p ~/.zen/playlists + +######## YOUTUBE-DL ########## +if [[ ! $(which youtube-dl) ]]; then + sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl || err=1 + sudo chmod a+rx /usr/local/bin/youtube-dl + sudo chown $YOU /usr/local/bin/youtube-dl +fi + +############################### +# MPD/MPC RompR AUDIO LAYER +############################### +if [[ ! $(which mpd) ]]; then + sudo apt-get install libid3-tools mpd mpc lame ffmpeg lsof lltag inotify-tools bc -y || err=1 + sudo apt-get install lame sox libsox-fmt-mp3 eyed3 python-chardet imagemagick curl -y || err=1 #libav-tools unavailable on some system + sudo apt-get install ca-certificates git-core binutils rsync alsa-utils bc espeak mpg321 fuse atomicparsley -y || err=1 + + ## CONFIG MPD + sudo cp -f /home/$YOU/.zen/astroport/.install/templates/copylaradio/mpd.conf /etc/mpd.conf + sudo sed -i "s/_USER_/$YOU/g" /etc/mpd.conf || err=1 + mkdir ~/.config/mpd && sudo cp -f /etc/mpd.conf ~/.config/mpd/mpd.conf && sudo chown $YOU ~/.config/mpd/mpd.conf + + ## CHOWN mpd FILES STRUCTURE + sudo chown -R $YOU /var/lib/mpd/ /var/run/mpd /run/mpd /var/log/mpd + sudo service mpd restart || err=1 +fi + +### INSTALL NGINX +echo '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + _ + ____ ____ _(_)___ _ __ + / __ \/ __ `/ / __ \| |/_/ + / / / / /_/ / / / / /> < +/_/ /_/\__, /_/_/ /_/_/|_| + /____/ + +install +' | lolcat + +sudo apt-get install fail2ban nginx ssl-cert php-curl php-sqlite3 php-gd php-json php-xml php-mbstring php-fpm sqlite -y || err=1 + +[[ ! $(which nslookup) ]] && sudo apt-get install lolcat dnsutils -y + +echo '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + __ ___ _ ___ + / |/ /_ __ ____ ____ _____ ___ ___ (_)___/__ \ + / /|_/ / / / / / __ \/ __ `/ __ `__ \/ _ \ / / ___// _/ + / / / / /_/ / / / / / /_/ / / / / / / __/ / (__ )/_/ +/_/ /_/\__, / /_/ /_/\__,_/_/ /_/ /_/\___/ /_/____/(_) + /____/ +' | lolcat + +myIP=$(hostname -I | awk '{print $1}' | head -n 1) +isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") + +# Ask to the router its name (BOX DNS or system defined) +[[ -f /home/$YOU/.zen/astroport/zen/tools/nodename ]] && NODENAME=$(/home/$YOU/.zen/astroport/zen/tools/nodename) \ +|| NODENAME=$(curl -s https://git.p2p.legal/axiom-team/astroport/raw/master/zen/tools/nodename | bash) ## RUNNING ALONE !! + +echo $NODENAME + + +echo ' + __ ____ _ __________ __ + / / / __ \ | / / ____/ / ____ _____ ____/ / + / / / / / / | / / __/ / / / __ `/ __ \/ __ / + / /___/ /_/ /| |/ / /___/ /___/ /_/ / / / / /_/ / +/_____/\____/ |___/_____/_____/\__,_/_/ /_/\__,_/ + +Portal +' | lolcat + +### +echo "INSTALL LOVELand WebSite. Linking to /var/www ..." +if [[ ! -L /var/www/loveland ]]; then + sudo ln -s /home/$YOU/.zen/astroport/www/LOVELand /var/www/loveland +fi + +echo "JUKEBOX init" +[[ -d /var/www/loveland/jukebox/albumart ]] && sudo chmod -R 777 /var/www/loveland/jukebox/albumart +[[ -d /var/www/loveland/jukebox/prefs ]] && sudo chmod -R 777 /var/www/loveland/jukebox/prefs +[[ -d /var/www/loveland/g1barre/img/qrcodes ]] && sudo chmod -R 777 /var/www/loveland/g1barre/img/qrcodes + +# CONFIG NGINX - LOVE LAND FRONTAL WEB PAGE +echo "$NODENAME" | figlet -f slant | lolcat + +## Write NODENAME to IPFS +echo "$NODENAME" > /home/$YOU/.zen/ipfs/.$IPFSNODEID/G1SSB/_nodename + +PHPVERSION=$(ps auxf | grep php-fpm | grep -v -E 'color=auto|grep' | head -n 1 | grep -oP '(?<=\().*(?=\))' | awk -F '/' '{print $4}') + +### JUKEBOX RompR CopyLaRadio +if [[ $(which mpd) ]]; then + sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/jukebox.conf + sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/jukebox.conf + sudo sed -i "s/_PORT_/80/g" /tmp/jukebox.conf + sudo sed -i "s/_APPLI_/jukebox/g" /tmp/jukebox.conf + sudo cp -f /tmp/jukebox.conf /etc/nginx/conf.d/jukebox.conf +fi + +##### RESTART NGINX +sudo systemctl restart nginx || err=1 + +if [[ $err ]]; then + + echo -e "${c_red}Installation de bizarre??$c_" + echo "PLEASE... POST YOUR ISSUE! https://git.p2p.legal/axiom-team/astroport/issues" + + exit 1 +else + + echo -e "${c_green}Installation réalisée avec succès$c_" + echo -e "Astroport JUKEBOX http://$NODENAME (TRY ME)" + +fi + +# Open in browser +URL="http://$NODENAME" +path=$(which xdg-open || which gnome-open) + +xo () +{ + for var in "$@"; do + $path "$var"; + sleep 0.5 + done +} + +[[ -n $path ]] && xo $URL:80 > /dev/null + +} # for script being completely downloaded before run diff --git a/.install/youtube-dl.sh b/.install/youtube-dl.sh new file mode 100755 index 0000000..36e9d3a --- /dev/null +++ b/.install/youtube-dl.sh @@ -0,0 +1,8 @@ +#!/bin/bash +######################################################################## +######## YOUTUBE-DL ########## +if [[ ! $(which youtube-dl) ]]; then + sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl || exit 1 + sudo chmod a+rx /usr/local/bin/youtube-dl + sudo chown $USER /usr/local/bin/youtube-dl +fi diff --git a/zen/cesium_INIT.sh b/zen/cesium_INIT.sh new file mode 100644 index 0000000..24058aa --- /dev/null +++ b/zen/cesium_INIT.sh @@ -0,0 +1,116 @@ +#!/bin/bash +######################################################################## +# Author: Fred (support@qo-op.com) +# Version: 2020.11.30 +# 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##*/}" + +######################################################################## +# ENVIRONEMENT DETECTION + IPFS ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_info +######################################################################## +YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1); +IPFSNODEID=$(ipfs id -f='\n') +[[ $IPFSNODEID == "" ]] && echo "ERROR missing IPFS Node id !! EXIT" && exit 1 +######################################################################## +[[ ! -f ~/.zen/secret.dunikey ]] && echo "Missing ~/.zen/secret.dunikey. EXIT" && exit 1 +G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) +[[ $G1PUB == "" ]] && echo "ERROR G1PUB empty !! EXIT" && exit 1 +######################################################################## + +# GET NODE disk performance. TODO, publish and use as IPFS repartition +echo "DISK SIZE AVAILABLE & PERFORMANCE TESTING" +[[ -f ~/.ipfs/test.disk ]] && rm -f ~/.ipfs/test.disk +diskperf=$(dd if=/dev/zero of=~/.ipfs/test.disk bs=10M count=1 oflag=dsync 2>&1 | tail -n 1 | sed s/\,\ /\ -/g | cut -d '-' -f 4) +# echo $diskperf + +# IPFS LOCAL REPOSITORY for Node Identity +mkdir -p ~/.zen/ipfs/.$IPFSNODEID/G1SSB + +# find IPFSTRYME public address +echo "" > ~/.zen/ipfs/.${IPFSNODEID}/tryme.addr +for tryme in $(ipfs id | jq -r .Addresses[]); +do + isLAN=$(echo $tryme | cut -f3 -d '/' | grep -E "(^127\.)|(^192\.168\.)|(^fd42\:)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1$)|(^[fF][cCdD])/") + [[ ! $isLAN ]] && echo "$tryme" >> ~/.zen/ipfs/.${IPFSNODEID}/tryme.addr +done +cat ~/.zen/ipfs/.${IPFSNODEID}/tryme.addr + + +################################ +# ADD Cesium+ informations +CESIUMPLUS="https://g1.data.le-sou.org" + +# PREPARE title +# Made from Gchange+ profile tittle and city OR user@hostname +title=$(curl -s ${CESIUMPLUS}/user/profile/${G1PUB} | jq -r '._source.title') +[[ -f ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_uidna ]] && uidna=$(cat ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_uidna) + +# Put in .$IPFSNODEID INDEX: _g1.uidna & _g1.cesium_name (used by Minetest flavour and others) +[[ $uidna ]] && echo "$uidna" > ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.uidna +[[ $title ]] && echo "$title" > ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_name + +[[ $uidna ]] && [[ "$title" == "null" ]] && title="Station $uidna" +[[ "$title" == "null" ]] && title="Station $USER@$(cat /etc/hostname)" + +city=$(curl -s ${CESIUMPLUS}/user/profile/${G1PUB} | jq -r '._source.city') +[[ "$city" != "null" ]] && title="$title in $city" + + +# ADD "cesium_geoPoint.lat" AND "cesium_geoPoint.lon" messages in SSB feed +# This way any SSB account is connected to its Cesium+ Geolocalisation. +geopointlat=$(curl -s ${CESIUMPLUS}/user/profile/${G1PUB} | jq '._source.geoPoint.lat') +geopointlon=$(curl -s ${CESIUMPLUS}/user/profile/${G1PUB} | jq '._source.geoPoint.lon') + +# REFRESH Cesium+ Avatar image +curl -s ${CESIUMPLUS}/user/profile/${G1PUB} | jq -r '._source.avatar._content' | base64 -d > "/tmp/_gchange.avatar.png" + +# Get nodename +[[ -f /home/$YOU/.zen/ipfs/.$IPFSNODEID/G1SSB/_nodename ]] && nodename=$(cat /home/$YOU/.zen/ipfs/.$IPFSNODEID/G1SSB/_nodename) +if [[ $nodename == "" ]]; then + nodename=$(cat /etc/hostname) + extension=$(echo $nodename | cut -d '.' -f 2) + if [[ $extension == $nodename ]]; then + nodename=$nodename.home + fi + echo "$nodename" > /home/$YOU/.zen/ipfs/.$IPFSNODEID/G1SSB/_nodename +fi +######################################################################## +# DUNITER G1 Wallet balance +export LC_ALL=C.UTF-8 #attipix +export LANG=C.UTF-8 #attipix + +# COPY NODE G1SSB ID to IPFS +echo "$G1PUB" > ~/.zen/ipfs/.${IPFSNODEID}/G1SSB/_g1.pubkey + +# IPFS Node PUBLISH Adresses so Pub can become bootstrap for ${g1author} +ipfs id | jq -r .Addresses[] > ~/.zen/ipfs/.${IPFSNODEID}/Addresses + +# IPFS Node PUBLISH AgentVersion & repo.stat +ipfs id | jq -r .AgentVersion > ~/.zen/ipfs/.${IPFSNODEID}/AgentVersion +ipfs repo stat > ~/.zen/ipfs/.${IPFSNODEID}/repo.stat + +echo "$diskperf" > ~/.zen/ipfs/.${IPFSNODEID}/disk.perf +echo $(df ~/.ipfs/ | tail -n 1 | awk '{print $4}') > ~/.zen/ipfs/.${IPFSNODEID}/disk.bytes + + +IWALLETS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1) +NODEIPNS=$(ipfs name publish --allow-offline --quieter /ipfs/$IWALLETS) + +### +# GET ALL MY CESIUMPLUS FRIENDS AND SEND THEM my IPFS Address + +cd ~/.zen/astroport/zen/jaklis +# GET LIST of issuer(s) who likes me +for liking_me in $(./jaklis.py like | jq -r '.likes[].issuer'); +do + # CHECk if I am liking him either + friend_of_mine=$(./jaklis.py like -p $liking_me | jq -r '.yours'); + echo "Sending IPFSTRYME message to $liking_me" + [[ $friend_of_mine != null ]] && ./jaklis.py send -d $liking_me -t "ipfstryme" -f ~/.zen/ipfs/.${IPFSNODEID}/tryme.addr +done +cd - + +exit 0