astroport/.install/loveland.sh

265 lines
11 KiB
Bash
Raw Permalink Normal View History

2020-05-10 23:55:40 +02:00
#!/bin/bash
2020-05-13 20:37:04 +02:00
########################################################################
# Author: Fred (support@qo-op.com)
2020-05-15 06:03:38 +02:00
# Version: 0.3
2020-05-13 20:37:04 +02:00
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
2020-05-10 23:55:40 +02:00
{
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
2020-05-13 20:37:04 +02:00
ME="${0##*/}"
2020-05-23 18:10:10 +02:00
########################################################################
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
2020-05-10 23:55:40 +02:00
[[ $USER == "root" ]] && echo "DO NOT RUN AS root!! Use regular USER with sudo AUTHORISATION" && exit 1
2020-05-23 18:10:10 +02:00
#### APACHE NOT SUPPORTED
2020-05-14 14:10:27 +02:00
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
2020-05-23 18:10:10 +02:00
#### ARM / X64 NOT USED THERE
2020-05-10 23:55:40 +02:00
MACHINE_TYPE=`uname -m`
[ ${MACHINE_TYPE:0:3} == 'arm' ] && isARM="YES"
2020-05-23 18:14:44 +02:00
### UPDATE apt cache
sudo apt-get update
2020-06-16 23:00:52 +02:00
### Adding YOU to www-data group
sudo adduser $YOU www-data
2020-05-10 23:55:40 +02:00
##################################
2020-05-23 18:10:10 +02:00
## INSTALL RAINBOW ASCII ;)
2020-05-23 00:06:53 +02:00
[[ ! $(which figlet) ]] && sudo apt install figlet -y
[[ ! $(which lolcat) ]] && sudo apt install lolcat -y
2020-05-23 18:10:10 +02:00
2020-05-14 16:40:34 +02:00
echo '
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2020-05-14 16:40:34 +02:00
______ __ ____ ___
/ ____/___ ____ __ __/ / ____ _/ __ \____ _____/ (_)___
/ / / __ \/ __ \/ / / / / / __ `/ /_/ / __ `/ __ / / __ \
/ /___/ /_/ / /_/ / /_/ / /___/ /_/ / _, _/ /_/ / /_/ / / /_/ /
\____/\____/ .___/\__, /_____/\__,_/_/ |_|\__,_/\__,_/_/\____/
/_/ /____/
2020-05-23 18:10:10 +02:00
Multimedia Layer (https://www.copylaradio.com)
2020-05-18 05:49:04 +02:00
' | lolcat
2020-05-17 23:44:45 +02:00
## MULTIMEDIA
2020-05-15 04:23:47 +02:00
## VIDEO & AUDIO & PLAYLISTS ~/.zen/ DIR
mkdir -p ~/.zen/video
mkdir -p ~/.zen/audio
2020-05-10 23:55:40 +02:00
mkdir -p ~/.zen/playlists
2020-05-23 18:10:10 +02:00
######## YOUTUBE-DL ##########
if [[ ! $(which youtube-dl) ]]; then
2020-05-23 18:14:44 +02:00
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl || err=1
2020-05-23 18:10:10 +02:00
sudo chmod a+rx /usr/local/bin/youtube-dl
sudo chown $YOU /usr/local/bin/youtube-dl
fi
2020-05-23 18:10:10 +02:00
###############################
# MPD/MPC RompR AUDIO LAYER
###############################
if [[ ! $(which mpd) ]]; then
2020-05-27 16:00:44 +02:00
sudo apt-get install libid3-tools mpd mpc lame ffmpeg lsof lltag inotify-tools bc -y || err=1
2020-05-23 18:10:10 +02:00
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
2020-05-10 23:55:40 +02:00
2020-05-13 20:37:04 +02:00
### INSTALL NGINX
2020-05-23 18:10:10 +02:00
echo '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2020-05-14 14:10:27 +02:00
_
____ ____ _(_)___ _ __
/ __ \/ __ `/ / __ \| |/_/
/ / / / /_/ / / / / /> <
/_/ /_/\__, /_/_/ /_/_/|_|
/____/
2020-05-23 18:10:10 +02:00
install
2020-05-18 05:49:04 +02:00
' | lolcat
2020-05-23 18:10:10 +02:00
2020-05-14 01:52:35 +02:00
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
2020-05-10 23:55:40 +02:00
2020-05-15 04:23:47 +02:00
[[ ! $(which nslookup) ]] && sudo apt-get install lolcat dnsutils -y
2020-05-23 18:10:10 +02:00
echo '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2020-05-15 04:23:47 +02:00
__ ___ _ ___
/ |/ /_ __ ____ ____ _____ ___ ___ (_)___/__ \
/ /|_/ / / / / / __ \/ __ `/ __ `__ \/ _ \ / / ___// _/
/ / / / /_/ / / / / / /_/ / / / / / / __/ / (__ )/_/
/_/ /_/\__, / /_/ /_/\__,_/_/ /_/ /_/\___/ /_/____/(_)
/____/
' | lolcat
2020-05-23 18:10:10 +02:00
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])/")
2020-05-15 04:23:47 +02:00
# Ask to the router its name (BOX DNS or system defined)
2020-05-23 18:10:10 +02:00
[[ -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
2020-05-23 18:10:10 +02:00
######################################
### LAUNCHIN OASIS = SSB HTTP interface
######################################
echo '
_
____ ____ ______(_)____
/ __ \/ __ `/ ___/ / ___/
/ /_/ / /_/ (__ ) (__ )
\____/\__,_/____/_/____/
SSB DEMO HTTP interface
' | lolcat
# IN CASE, KILL RUNNING OASIS
2020-06-04 01:48:59 +02:00
isOASIS=$(ps auxf --sort=+utime | grep -w oasis | grep -v -E 'color=auto|grep' | tail -n 1 | awk '{print $2}')
[[ $isOASIS ]] && sudo kill -9 $isOASIS
2020-05-23 18:10:10 +02:00
echo "Starting OASIS with good $NODENAME & network config"
echo "TODO: add to your /etc/rc.local or systemd or initV !!!"
2020-06-04 15:12:55 +02:00
#if [[ ! $isLAN ]]; then
# ### TODO: unlock oasis restrictions!! CANNOT MAKE PRIVATE MESSAGE => Feddless.social CAN add it as module on loveland portal!!)
# oasis --allow-host $NODENAME --host $NODENAME --public 2>&1>/dev/null &
2020-06-04 15:12:55 +02:00
# echo "--public = OASIS STATION IS IN VIEWING MODE ONLY..."
#else
# oasis --allow-host $NODENAME --host $NODENAME 2>&1>/dev/null &
2020-06-04 15:12:55 +02:00
#fi
2020-05-14 02:18:00 +02:00
#sleep 5
2020-05-14 02:10:45 +02:00
2020-05-23 18:10:10 +02:00
echo '
__ ____ _ __________ __
/ / / __ \ | / / ____/ / ____ _____ ____/ /
/ / / / / / | / / __/ / / / __ `/ __ \/ __ /
/ /___/ /_/ /| |/ / /___/ /___/ /_/ / / / / /_/ /
/_____/\____/ |___/_____/_____/\__,_/_/ /_/\__,_/
Portal
' | lolcat
###
2020-05-18 05:49:04 +02:00
echo "INSTALL LOVELand WebSite. Linking to /var/www ..."
2020-05-17 11:56:39 +02:00
if [[ ! -L /var/www/loveland ]]; then
sudo ln -s /home/$YOU/.zen/astroport/www/LOVELand /var/www/loveland
fi
2020-05-17 23:44:45 +02:00
2020-05-18 05:49:04 +02:00
echo "JUKEBOX init"
2020-05-23 18:14:44 +02:00
[[ -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
2020-05-29 02:53:46 +02:00
[[ -d /var/www/loveland/g1barre/img/qrcodes ]] && sudo chmod -R 777 /var/www/loveland/g1barre/img/qrcodes
2020-05-17 11:56:39 +02:00
2020-05-18 05:49:04 +02:00
# CONFIG NGINX - LOVE LAND FRONTAL WEB PAGE
echo "$NODENAME" | figlet -f slant | lolcat
2020-05-18 05:49:04 +02:00
## Write NODENAME to IPFS
echo "$NODENAME" > /home/$YOU/.zen/ipfs/.$IPFSNODEID/G1SSB/_nodename
2020-05-20 23:42:40 +02:00
2020-05-17 23:44:45 +02:00
PHPVERSION=$(ps auxf | grep php-fpm | grep -v -E 'color=auto|grep' | head -n 1 | grep -oP '(?<=\().*(?=\))' | awk -F '/' '{print $4}')
### ASTROPORT STATION LOVELAND PORTAL
2020-05-18 07:01:57 +02:00
sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/loveland.conf
2020-05-23 00:06:53 +02:00
sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/loveland.conf
2020-05-21 21:07:07 +02:00
sudo sed -i "s/_PORT_/10010/g" /tmp/loveland.conf
2020-05-18 07:01:57 +02:00
sudo sed -i "s/_APPLI_//g" /tmp/loveland.conf
sudo cp -f /tmp/loveland.conf /etc/nginx/conf.d/loveland.conf
2020-05-17 23:44:45 +02:00
### GCHANGE G1 Zen
2020-05-18 06:49:21 +02:00
sudo rm -f /etc/nginx/conf.d/gchange.conf
2020-05-18 07:01:57 +02:00
sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/gchange.conf
2020-05-23 00:06:53 +02:00
sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/gchange.conf
2020-05-18 07:01:57 +02:00
sudo sed -i "s/_PORT_/10020/g" /tmp/gchange.conf
sudo sed -i "s/_APPLI_/gchange/g" /tmp/gchange.conf
sudo cp -f /tmp/gchange.conf /etc/nginx/conf.d/gchange.conf
2020-05-17 23:44:45 +02:00
### CESIUM G1 Zen
2020-05-18 07:01:57 +02:00
sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/cesium.conf
2020-05-23 00:06:53 +02:00
sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/cesium.conf
2020-05-18 07:01:57 +02:00
sudo sed -i "s/_PORT_/10030/g" /tmp/cesium.conf
sudo sed -i "s/_APPLI_/cesium/g" /tmp/cesium.conf
sudo cp -f /tmp/cesium.conf /etc/nginx/conf.d/cesium.conf
2020-05-17 23:44:45 +02:00
2020-05-19 22:43:20 +02:00
### 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_/10011/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
### SSB OASIS Zen (PROXY MODE 10040 -> 3000)
if [[ $(which oasis) ]]; then
sudo sed "s/_MY_NODE_NAME_/$NODENAME/g" /home/$YOU/.zen/astroport/www/oasis.conf > /tmp/oasis.conf
sudo sed -i "s/_PORT_/10040/g" /tmp/oasis.conf
2020-05-23 18:10:10 +02:00
sudo sed -i "s/_LHOST_/$NODENAME:3000/g" /tmp/oasis.conf
sudo sed -i "s/_APPLI_//g" /tmp/oasis.conf
sudo cp -f /tmp/oasis.conf /etc/nginx/conf.d/oasis.conf
2020-05-23 18:10:10 +02:00
# TRICK: COULD BE USED TO ADD .htpasswod ACCESS CONTROL AND REMOVE --public
# TODO use "ipfs p2p" to AGREGATE ALL OASIS on ONE (not ALL like G1SMS) ?
# NEED G1PUB to be identified with same MEMBER owner in 'zen/ipfs_OPEN_ports.sh'?
fi
2020-05-19 22:43:20 +02:00
### G1SMS propagation to localhost:10099 / 10097 ("ipfs p2p" forwarded)
2020-05-23 05:02:11 +02:00
if [[ $(which gammu) ]]; then
# DIRECT MODE
sudo sed "s/_PHPVERSION_/$PHPVERSION/g" /home/$YOU/.zen/astroport/www/loveland.conf > /tmp/g1sms.conf
sudo sed -i "s/_MY_NODE_NAME_/$NODENAME/g" /tmp/g1sms.conf
sudo sed -i "s/_PORT_/10099/g" /tmp/g1sms.conf
sudo sed -i "s/_APPLI_/g1sms/g" /tmp/g1sms.conf
sudo cp -f /tmp/g1sms.conf /etc/nginx/conf.d/g1sms.conf
2020-05-23 05:02:11 +02:00
else
# PROXY MODE (10099 -> 10097) ### ipfs p2p PROPAGATION WITH 'zen/ipfs_OPEN_ports.sh'
2020-05-23 17:15:42 +02:00
sudo sed "s/_MY_NODE_NAME_/$NODENAME/g" /home/$YOU/.zen/astroport/www/oasis.conf > /tmp/g1sms_proxy.conf
sudo sed -i "s/_PORT_/10099/g" /tmp/g1sms_proxy.conf
sudo sed -i "s/_LHOST_/127\.0\.0\.1\:10097/g" /tmp/g1sms_proxy.conf
sudo sed -i "s/_APPLI_/g1sms/g" /tmp/g1sms_proxy.conf
sudo cp -f /tmp/g1sms_proxy.conf /etc/nginx/conf.d/g1sms_proxy.conf
2020-05-23 05:02:11 +02:00
fi
2020-05-23 18:14:44 +02:00
##### RESTART NGINX
2020-05-18 06:49:21 +02:00
sudo systemctl restart nginx || err=1
2020-05-17 11:56:39 +02:00
2020-05-10 23:55:40 +02:00
if [[ $err ]]; then
2020-05-14 02:10:45 +02:00
echo -e "${c_red}Installation de LOVELand bizarre??$c_"
echo "PLEASE... POST YOUR ISSUE! https://git.p2p.legal/axiom-team/astroport/issues"
2020-05-10 23:55:40 +02:00
exit 1
else
2020-05-14 02:00:56 +02:00
echo -e "${c_green}LOVE Land a été installé avec succès$c_"
2020-06-04 16:03:50 +02:00
echo -e "LoveLand Portal link http://$NODENAME:10010 (TRY ME)
2020-06-04 16:29:46 +02:00
Add ScuttleButt Astroport PUB Invitation:
${c_green}With Patchwork: "Join a server"$c_
Or with Oasis: http://$NODENAME:3000/settings (dev mode, still buggy)
2020-06-04 16:03:50 +02:00
${c_light}oasis.astroport.com:8008::@UeiA9iqZ0/XTjmYBht230KGr44bsr+Tl5BXSUDFv8vo=.ed25519~jd9Z4y/d/xZCF7bfuSgQSiSGLMeWFhwMosKUFhFxeEY=" $c_
2020-05-10 23:55:40 +02:00
fi
2020-06-04 01:48:59 +02:00
# Open LOVEland in browser
2020-06-04 16:03:50 +02:00
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:10010 $URL:10020 $URL:10030 > /dev/null
2020-06-04 01:48:59 +02:00
2020-05-13 20:37:04 +02:00
} # for script being completely downloaded before run