forked from axiom-team/astroport
multiply install modulation
This commit is contained in:
parent
48970b176b
commit
938e2a3b67
|
@ -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='<id>\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
|
|
@ -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
|
|
@ -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='<id>\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
|
Loading…
Reference in New Issue