#!/bin/bash Version=2.8 XService=YES function print_centered { [[ $# == 0 ]] && return 1 declare -i TERM_COLS="$(tput cols)" declare -i str_len="${#1}" [[ $str_len -ge $TERM_COLS ]] && { echo "$1"; return 0; } declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))" [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" " filler="" for (( i = 0; i < filler_len; i++ )); do filler="${filler}${ch}" done printf "%s%s%s" "$filler" "$1" "$filler" [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}" printf "\n" return 0 } # function to set terminal title function set-title() { if [[ -z "$ORIG" ]]; then ORIG=$PS1 fi TITLE="\[\e]2;$*\a\]" PS1=${ORIG}${TITLE} } function intro_ { print_centered "$(tput setaf 165)" print_centered " _____ __ "; print_centered " / ___/__ ____/ / ___ _______ _"; print_centered "/ (_ / -_) __/ _ \/ -_) __/ _ \`/"; print_centered "\___/\__/_/ /_.__/\__/_/ \_,_/ "; print_centered " "; echo -n "$(tput sgr0)" print_centered "Gerbera UPNP installation script v$Version" echo "" sleep 3 } function update_ { echo -e "$(tput setaf 10)\nUpdate/install packages:$(tput sgr0)" sudo apt-get update sudo apt-get install uuid-dev libsqlite3-dev libmysqlclient-dev libmagic-dev libexif-dev libcurl4-openssl-dev libspdlog-dev libpugixml-dev -y sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev libavresample-dev libswscale-dev libswresample-dev libpostproc-dev -y sudo apt-get install libebml-dev ffmpeg ffmpegthumbnailer libffmpegthumbnailer-dev imagemagick fmtools libfmt-dev libmatroska-dev -y echo -e "" } function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; } function cmake_ { pids="" ./tools/_cmake.sh & pids="$pids $!" wait $pids } function build_ { echo -e "$(tput setaf 10)\nBuild Gerbera:$(tput sgr0)" cd ~/Build_Cube/options if [ ! -d gerbera ] then #git clone https://github.com/gerbera/gerbera.git wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/gerbera-1.12.1.tar.xz tar xvfJ gerbera-1.12.1.tar.xz mv gerbera-1.12.1 gerbera rm xvfJ gerbera-1.12.1.tar.xz fi cd ~/Build_Cube/options/gerbera/scripts sudo ./install-pupnp.sh sudo ldconfig cd ~/Build_Cube/options/gerbera/scripts sudo ./install-fmt.sh cd ~/Build_Cube/options/gerbera/scripts sudo ./install-spdlog.sh cd ~/Build_Cube/options/gerbera/scripts sudo ./install-duktape.sh #cd ~/Build_Cube/options/gerbera/scripts #sudo ./install-lastfm.sh cd ~/Build_Cube/options/gerbera/scripts sudo ./install-pugixml.sh cd ~/Build_Cube/options/gerbera/scripts sudo ./install-taglib.sh echo -e "" sudo ldconfig cd ~/Build_Cube/options/gerbera mkdir build cd build cmake .. -DWITH_MAGIC=1 -DWITH_CURL=1 -DWITH_JS=1 -DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_FFMPEGTHUMBNAILER=1 -DWITH_EXIF=1 -DWITH_LASTFM=0 -DWITH_MYSQL=0 make -j6 sudo make install cd ~ #sudo rm -r ~/Build_Cube/options/gerbera/ wget -c http://folivier.homelinux.org/cube/pack/gerbera.tar.xz tar xvfJ gerbera.tar.xz rm gerbera.tar.xz echo -e "\n\e[97mEnd of process...\e[0m" } function service_ { cd /home/wareck if [ -f gerbera.service ];then rm gerbera.service;fi cat <<'EOF'>> gerbera.service #!/bin/sh ### BEGIN INIT INFO # Provides: gerbera # Required-Start: networking # Default-Start: 3 4 5 # Default-Stop: 0 6 ### END INIT INFO device=$(ip -br l | awk '$1 !~ "lo|vir|wl" { print $1}') case "$1" in start) if pgrep -x "gerbera" > /dev/null then sudo killall -9 gerbera | true fi sleep 1 su wareck -c "screen -dmS gerbera /usr/local/bin/gerbera -e $device -p 49152" ;; stop) if pgrep -x "gerbera" > /dev/null then sudo killall -9 gerbera | true fi ;; restart) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/gerbera.service {start|restart|stop}" exit 1 ;; esac exit 0 EOF chmod +x gerbera.service sudo cp /home/wareck/gerbera.service /etc/init.d/ sudo update-rc.d gerbera.service defaults sudo rm /home/wareck/gerbera.service sudo rm /lib/systemd/system/gerbera.service echo "Done" } intro_ update_ cmake_ build_ echo -e "$(tput setaf 10)\nService optional :$(tput sgr0)" if [ $XService = "YES" ] then service_ fi #while true; do #read -p "Do you want to install service (y/n) ? " yn # #case $yn in # [Yy] ) service_ ; # exit 1;; # [Nn] ) echo exiting...; # exit;; # * ) echo invalid response; # exit 1;; #esac #done echo -e "\n\e[97mEnd of process...\e[0m"