Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # [QuickBox Installation Script]
- #
- # GitHub: https://lab.quickbox.io/QuickBox/QuickBox
- # Author: QuickBox.IO
- # URL: https://plaza.quickbox.io
- #
- # QuickBox Copyright (C) 2016 QuickBox.io
- # Licensed under GNU General Public License v3.0 GPL-3 (in short)
- #
- # You may copy, distribute and modify the software as long as you track
- # changes/dates in source files. Any modifications to our software
- # including (via compiler) GPL-licensed code must also be made available
- # under the GPL along with build & install instructions.
- #
- #################################################################################
- #Script Console Colors
- black=$(tput setaf 0); red=$(tput setaf 1); green=$(tput setaf 2); yellow=$(tput setaf 3);
- blue=$(tput setaf 4); magenta=$(tput setaf 5); cyan=$(tput setaf 6); white=$(tput setaf 7);
- on_red=$(tput setab 1); on_green=$(tput setab 2); on_yellow=$(tput setab 3); on_blue=$(tput setab 4);
- on_magenta=$(tput setab 5); on_cyan=$(tput setab 6); on_white=$(tput setab 7); bold=$(tput bold);
- dim=$(tput dim); underline=$(tput smul); reset_underline=$(tput rmul); standout=$(tput smso);
- reset_standout=$(tput rmso); normal=$(tput sgr0); alert=${white}${on_red}; title=${standout};
- sub_title=${bold}${yellow}; repo_title=${black}${on_green}; message_title=${white}${on_magenta}
- #################################################################################
- function _string() { perl -le 'print map {(a..z,A..Z,0..9)[rand 62] } 0..pop' 15 ; }
- #################################################################################
- function _bashrc() {
- cp ${local_setup}templates/bashrc.template /root/.bashrc
- profile="/root/.profile"
- if [ ! -f $profile ]; then
- cp ${local_setup}templates/profile.template /root/.profile
- fi
- }
- # intro function (1)
- function _intro() {
- DISTRO=$(lsb_release -is)
- RELEASE=$(lsb_release -rs)
- CODENAME=$(lsb_release -cs)
- SETNAME=$(lsb_release -rc)
- echo
- echo
- echo "[${repo_title}QuickBox${normal}] ${title} QuickBox Seedbox Installation ${normal} "
- echo
- echo " ${title} Heads Up! ${normal} "
- echo " ${message_title} QuickBox works with the following ${normal} "
- echo " ${message_title} Ubuntu 15.10 | 16.04 | 16.10 ${normal} "
- echo " ${message_title} Devuan 8 ${normal} "
- echo
- echo
- echo "${green}Checking distribution ...${normal}"
- if [ ! -x /usr/bin/lsb_release ]; then
- echo "It looks like you are running $DISTRO, which is not supported by QuickBox."
- echo "Exiting..."
- exit 1
- fi
- echo "$(lsb_release -a)"
- echo
- if [[ ! "$DISTRO" =~ ("Ubuntu"|"Devuan") ]]; then
- echo "$DISTRO: ${alert} It looks like you are running $DISTRO, which is not supported by QuickBox ${normal} "
- echo 'Exiting...'
- exit 1
- elif [[ ! "$CODENAME" =~ ("yakkety"|"xenial"|"wily"|"jessie") ]]; then
- echo "Oh drats! You do not appear to be running a supported $DISTRO release."
- echo "${bold}$SETNAME${normal}"
- echo 'Exiting...'
- exit 1
- fi
- }
- # check if root function (2)
- function _checkroot() {
- if [[ $EUID != 0 ]]; then
- echo 'This script must be run with root privileges.'
- echo 'Exiting...'
- exit 1
- fi
- echo "${green}Congrats! You're running as root. Let's continue${normal} ... "
- echo
- }
- function _checkkernel() {
- grsec=$(uname -a | grep -i grs)
- if [[ -n $grsec ]]; then
- echo -e "Your server is currently running with kernel version: $(uname -r)"
- echo -e "Kernels with ${bold}grsec${normal} are not supported"
- echo -ne "${bold}${yellow}Would you like QuickBox to install the distribution kernel?${normal} (Default: ${green}${bold}Y${normal}) "; read input
- case $input in
- [yY] | [yY][Ee][Ss] | "" ) kernel=yes; echo "Your distribution's default kernel will be installed. A reboot will be ${bold}required${normal}." ;;
- [nN] | [nN][Oo] ) echo "Installer will not continue. Exiting ... "; exit 0 ;;
- *) kernel=yes; echo "Your distribution's default kernel will be installed. A reboot will be ${bold}required${normal}." ;;
- esac
- if [[ $kernel == yes ]]; then
- if [[ $DISTRO == Ubuntu ]]; then
- apt-get install -q -y linux-image-generic >>"${OUTTO}" 2>&1
- elif [[ $DISTRO == Devuan ]]; then
- arch=$(uname -m)
- if [[ $arch =~ ("i686"|"i386") ]]; then
- apt-get install -q -y linux-image-686 >>"${OUTTO}" 2>&1
- elif [[ $arch == x86_64 ]]; then
- apt-get install -q -y linux-image-amd64 >>"${OUTTO}" 2>&1
- fi
- fi
- mv /etc/grub.d/06_OVHkernel /etc/grub.d/25_OVHkernel
- update-grub >>"${OUTTO}" 2>&1
- fi
- fi
- }
- # check if create log function (3)
- function _logcheck() {
- echo -ne "${bold}${yellow}Do you wish to write to a log file?${normal} (Default: ${green}${bold}Y${normal}) "; read input
- case $input in
- [yY] | [yY][Ee][Ss] | "" ) OUTTO="/root/quickbox.$PPID.log";echo "${bold}Output is being sent to /root/quickbox.${magenta}$PPID${normal}${bold}.log${normal}" ;;
- [nN] | [nN][Oo] ) OUTTO="/dev/null 2>&1";echo "${cyan}NO output will be logged${normal}" ;;
- *) OUTTO="/root/quickbox.$PPID.log";echo "${bold}Output is being sent to /root/quickbox.${magenta}$PPID${normal}${bold}.log${normal}" ;;
- esac
- if [[ ! -d /root/tmp ]]; then
- sed -i 's/noexec,//g' /etc/fstab
- mount -o remount /tmp >>"${OUTTO}" 2>&1
- fi
- }
- # setting system hostname function (7)
- function _hostname() {
- echo -ne "Please enter a hostname for this server (${bold}Hit ${standout}${green}ENTER${normal} to make no changes${normal}): " ; read input
- if [[ -z $input ]]; then
- echo "No hostname supplied, no changes made!!"
- else
- hostname ${input}
- echo "${input}">/etc/hostname
- echo "Hostname set to ${input}"
- fi
- echo
- }
- ################################################################################
- # RESERVED FOR LETS ENCRYPT SSL INSTALL FUNCTION #
- ################################################################################
- function _askquota() {
- echo -ne "${bold}${yellow}Do you wish to use user quotas?${normal} (Default: ${green}${bold}Y${normal}) "; read input
- case $input in
- [yY] | [yY][Ee][Ss] | "" ) quota="yes";echo "${bold}Quotas will be installed${normal}" ;;
- [nN] | [nN][Oo] ) quota="no";echo "${cyan}Quotas will not be installed${normal}" ;;
- *) quota="yes";echo "${bold}Quotas will be installed${normal}" ;;
- esac
- }
- function _ask10g() {
- echo -ne "${bold}${yellow}Is this a 10 gigabit server?${normal} (Default: ${green}${bold}N${normal}) "; read input
- case $input in
- [yY] | [yY][Ee][Ss] ) if [[ -d /install ]]; then cd /; else mkdir /install; fi;touch /install/.10g.lock;echo "${bold}The devs are officially jealous${normal}" ;;
- [nN] | [nN][Oo] | "" ) echo "${cyan}Who can afford that stuff anyway?${normal}" ;;
- *) echo "${cyan}Who can afford that stuff anyway?${normal}" ;;
- esac
- }
- # primary partition question
- function _askpartition() {
- if [[ $quota == yes ]]; then
- echo
- echo "##################################################################################"
- echo "#${bold} By default the QuickBox script will initiate a build using ${green}/${normal} ${bold}as the${normal}"
- echo "#${bold} primary partition for mounting quotas.${normal}"
- echo "#"
- echo "#${bold} Some providers, such as OVH and SYS force ${green}/home${normal} ${bold}as the primary mount ${normal}"
- echo "#${bold} on their server setups. So if you have an OVH or SYS server and have not"
- echo "#${bold} modified your partitions, it is safe to choose option ${yellow}2)${normal} ${bold}below.${normal}"
- echo "#"
- echo "#${bold} If you are not sure:${normal}"
- echo "#${bold} I have listed out your current partitions below. Your mountpoint will be"
- echo "#${bold} listed as ${green}/home${normal} ${bold}or ${green}/${normal}${bold}. ${normal}"
- echo "#"
- echo "#${bold} Typically, the partition with the most space assigned is your default.${normal}"
- echo "##################################################################################"
- echo
- lsblk
- echo
- echo -e "${bold}${yellow}1)${normal} / - ${green}root mount${normal}"
- echo -e "${bold}${yellow}2)${normal} /home - ${green}home mount${normal}"
- echo -ne "${bold}${yellow}What is your mount point for user quotas?${normal} (Default ${green}1${normal}): "; read version
- case $version in
- 1 | "") primaryroot=root ;;
- 2) primaryroot=home ;;
- *) primaryroot=root ;;
- esac
- echo "Using ${green}$primaryroot mount${normal} for quotas"
- echo
- fi
- }
- function _askcontinue() {
- echo
- echo "Press ${standout}${green}ENTER${normal} when you're ready to begin or ${standout}${red}Ctrl+Z${normal} to cancel" ;read input
- echo
- }
- # This function blocks an insecure port 1900 that may lead to
- # DDoS masked attacks. Only remove this function if you absolutely
- # need port 1900. In most cases, this is a junk port.
- function _ssdpblock() {
- iptables -I INPUT 1 -p udp -m udp --dport 1900 -j DROP
- }
- # setting locale function (6)
- function _locale() {
- echo 'LANGUAGE="en_US.UTF-8"' >> /etc/default/locale
- echo 'LC_ALL="en_US.UTF-8"' >> /etc/default/locale
- echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
- if [[ -e /usr/sbin/locale-gen ]]; then locale-gen >>"${OUTTO}" 2>&1
- else
- apt-get -y update >>"${OUTTO}" 2>&1
- apt-get install locales -y >>"${OUTTO}" 2>&1
- locale-gen >>"${OUTTO}" 2>&1
- export LANG="en_US.UTF-8"
- export LC_ALL="en_US.UTF-8"
- export LANGUAGE="en_US.UTF-8"
- fi
- }
- function _askservices() {
- DISTRO=$(lsb_release -is)
- RELEASE=$(lsb_release -rs)
- CODENAME=$(lsb_release -cs)
- SETNAME=$(lsb_release -rc)
- echo "You are running $DISTRO $CODENAME"
- echo "This distribution has support for systemd services. "
- echo "Would you like to enable? (recommended) (Default: ${green}${bold}Y${normal})"; read input
- case $input in
- [yY] | [yY][Ee][Ss] | "" ) cron="no";echo "${bold}Using systemd for process management${normal}" ;;
- [nN] | [nN][Oo] ) cron="yes";echo "${cyan}Cron will manage your processes${normal}" ;;
- *) cron="no";echo "${bold}Using systemd for process management${normal}" ;;
- esac
- echo
- }
- # ask what rtorrent version (8)
- function _askrtorrent() {
- echo -e "1) rtorrent ${green}0.9.6${normal}"
- echo -e "2) rtorrent ${green}0.9.4${normal}"
- echo -e "3) rtorrent ${green}0.9.3${normal}"
- echo -ne "${bold}${yellow}What version of rtorrent do you want?${normal} (Default ${green}1${normal}): "; read version
- case $version in
- 1 | "") RTVERSION=0.9.6;LTORRENT=0.13.6 ;;
- 2) RTVERSION=0.9.4;LTORRENT=0.13.4 ;;
- 3) RTVERSION=0.9.3;LTORRENT=0.13.3 ;;
- *) RTVERSION=0.9.6;LTORRENT=0.13.6 ;;
- esac
- echo "We will be using rtorrent-${green}$RTVERSION${normal}/libtorrent-${green}$LTORRENT${normal}"
- echo
- }
- # ask deluge version (if wanted) (8.1)
- function _askdeluge() {
- echo -e "1) Deluge ${green}repo${normal} (fastest)"
- echo -e "2) Deluge with ${green}libtorrent 1.0.9 (stable)${normal}"
- echo -e "3) Deluge with ${green}libtorrent 1.1.1 (dev)${normal}"
- echo -e "4) Do not install Deluge"
- echo -ne "${bold}${yellow}What version of Deluge do you want?${normal} (Default ${green}1${normal}): "; read version
- case $version in
- 1 | "") DELUGE=REPO ;;
- 2) DELUGE=1.0.9 ;;
- 3) DELUGE=1.1.1 ;;
- 4) DELUGE=NO ;;
- *) DELUGE=REPO ;;
- esac
- echo "We will be using Deluge with Libtorrent ${DELUGE}"
- echo
- }
- # adduser function (9)
- function _adduser() {
- theshell="/bin/bash";
- echo "${bold}${yellow}Add a Master Account user to sudoers${normal}";
- echo -n "Username: "; read user
- username=$(echo "$user"|sed 's/.*/\L&/')
- useradd "${username}" -m -G www-data -s "${theshell}"
- echo -n "Password: (hit enter to generate a password) "; read 'password'
- if [[ ! -z "${password}" ]]; then
- echo "setting password to ${password}"
- passwd=${password}
- echo "${username}:${passwd}" | chpasswd >>"${OUTTO}" 2>&1
- (echo -n "${username}:${REALM}:" && echo -n "${username}:${REALM}:${passwd}" | md5sum | awk '{print $1}' ) >> "${HTPASSWD}"
- else
- echo "setting password to ${genpass}"
- passwd=${genpass}
- echo "${username}:${passwd}" | chpasswd >>"${OUTTO}" 2>&1
- (echo -n "${username}:${REALM}:" && echo -n "${username}:${REALM}:${passwd}" | md5sum | awk '{print $1}' ) >> "${HTPASSWD}"
- fi
- printf "${username}:${passwd}" > /root/"$username".info.db
- echo
- }
- # install ffmpeg question (10)
- function _askffmpeg() {
- echo -ne "${bold}${yellow}Would you like to install ffmpeg? (Used for screenshots)${normal} [${green}y${normal}]es or [n]o: "; read responce
- case $responce in
- [yY] | [yY][Ee][Ss] | "" ) ffmpeg=yes ;;
- [nN] | [nN][Oo] ) ffmpeg=no ;;
- *) ffmpeg=yes ;;
- esac
- echo
- }
- # ban public trackers [iptables option] (11)
- function _denyhosts() {
- echo -ne "${bold}${yellow}Block Public Trackers?${normal}: [${green}y${normal}]es or [n]o: "; read responce
- case $responce in
- [yY] | [yY][Ee][Ss] | "")
- echo "[ ${red}- Blocking public trackers -${normal} ]"
- cp ${local_setup}templates/trackers.template /etc/trackers
- cp ${local_setup}templates/denypublic.template /etc/cron.daily/denypublic
- chmod +x /etc/cron.daily/denypublic
- cat ${local_setup}templates/hostsTrackers.template >> /etc/hosts
- ;;
- [nN] | [nN][Oo] ) echo "[ ${green}+ Allowing public trackers +${normal} ]"
- ;;
- esac
- }
- # package and repo addition (silently add php7) _add respo sources_ (12)
- function _repos() {
- apt-get install -y software-properties-common >>"${OUTTO}" 2>&1
- apt-get -y install lsb-release sudo >>"${OUTTO}" 2>&1
- if [[ $DISTRO == Ubuntu ]]; then
- LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php -y >>"${OUTTO}" 2>&1;
- fi
- if [[ $DISTRO == Devuan ]]; then
- echo "deb http://packages.dotdeb.org $(lsb_release -sc) all" > /etc/apt/sources.list.d/dotdeb-php7-$(lsb_release -sc).list
- echo "deb-src http://packages.dotdeb.org $(lsb_release -sc) all" >> /etc/apt/sources.list.d/dotdeb-php7-$(lsb_release -sc).list
- wget -q https://www.dotdeb.org/dotdeb.gpg
- sudo apt-key add dotdeb.gpg >> /dev/null 2>&1
- fi
- }
- # package and repo addition (13) _update and upgrade_
- function _updates() {
- if [[ $DISTRO == Devuan ]]; then
- cp ${local_setup}templates/apt.sources/devuan.template /etc/apt/sources.list
- sed -i "s/RELEASE/${CODENAME}/g" /etc/apt/sources.list
- apt-get --yes --force-yes update >>"${OUTTO}" 2>&1
- yes '' | apt-get install --force-yes build-essential debian-archive-keyring devuan-keyring \
- python-software-properties >>"${OUTTO}" 2>&1
- apt-get --yes --force-yes install deb-multimedia-keyring >>"${OUTTO}" 2>&1
- else
- cp ${local_setup}templates/apt.sources/ubuntu.template /etc/apt/sources.list
- sed -i "s/RELEASE/${CODENAME}/g" /etc/apt/sources.list
- apt-get -y update >>"${OUTTO}" 2>&1
- apt-get -y -f install build-essential debian-archive-keyring devuan-keyring \
- python-software-properties >>"${OUTTO}" 2>&1
- #apt-get -y -f --allow-unauthenticated install deb-multimedia-keyring >>"${OUTTO}" 2>&1
- fi
- if [[ $DISTRO == Devuan ]]; then
- export DEBIAN_FRONTEND=noninteractive
- yes '' | apt-get update >>"${OUTTO}" 2>&1
- apt-get -y purge samba samba-common >>"${OUTTO}" 2>&1
- yes '' | apt-get upgrade >>"${OUTTO}" 2>&1
- else
- export DEBIAN_FRONTEND=noninteractive
- apt-get -y update >>"${OUTTO}" 2>&1
- apt-get -y purge samba samba-common >>"${OUTTO}" 2>&1
- apt-get -y upgrade >>"${OUTTO}" 2>&1
- fi
- if [[ -e /etc/ssh/sshd_config ]]; then
- echo "Port 4747" /etc/ssh/sshd_config >> /dev/null 2>&1
- sed -i 's/Port 22/Port 4747/g' /etc/ssh/sshd_config
- #sed -i 's/SendEnv LANG LC_*/#SendEnv LANG LC_*/g' /etc/ssh/ssh_config
- #sed -i 's/AcceptEnv LANG LC_*/#AcceptEnv LANG LC_*/g' /etc/ssh/sshd_config
- service ssh restart >>"${OUTTO}" 2>&1
- fi
- # Create the service lock file directory
- if [[ -d /install ]]; then cd /; else mkdir /install; fi
- if [[ -d /root/tmp ]]; then cd && rm -r tmp; fi
- }
- # package and repo addition (14) _install softwares and packages_
- function _depends() {
- if [[ $DISTRO == Devuan ]]; then
- yes '' | apt-get install --force-yes fail2ban bc ed sudo screen zip irssi unzip nano bwm-ng htop iotop \
- dos2unix subversion dstat automake make mktorrent libtool libcppunit-dev libssl-dev \
- pkg-config libxml2-dev libcurl3 libcurl4-openssl-dev libsigc++-2.0-dev \
- apache2-utils autoconf cron curl libapache2-mod-fastcgi libapache2-mod-geoip \
- libxslt-dev libncurses5-dev yasm pcregrep apache2 php-net-socket libapache2-mod-php7.0 \
- php7.0-dev php7.0-geoip libgeoip-dev php7.0 php7.0-fpm php7.0-mbstring php7.0-mysql \
- php7.0-curl php7.0-memcached memcached php7.0-gd php7.0-json php7.0-mcrypt php7.0-opcache \
- php7.0-xml python3-lxml python-lxml fontconfig comerr-dev ca-certificates libfontconfig1-dev \
- libdbd-mysql-perl libdbi-perl libfontconfig1 rar unrar mediainfo ifstat \
- ttf-mscorefonts-installer checkinstall dtach cfv libarchive-zip-perl \
- libnet-ssleay-perl openjdk-8-jre-headless openjdk-8-jre openjdk-8-jdk libxslt1-dev \
- libxslt1.1 libxml2 libffi-dev python-pip python-dev libhtml-parser-perl libxml-libxml-perl \
- libjson-perl libjson-xs-perl libxml-libxslt-perl libapache2-mod-scgi \
- vnstat vnstati openvpn >>"${OUTTO}" 2>&1
- elif [[ $DISTRO == Ubuntu ]]; then
- apt-get -y -f --allow-unauthenticated install build-essential debian-archive-keyring fail2ban bc sudo \
- screen zip irssi unzip nano bwm-ng htop iotop git \
- dos2unix subversion dstat automake make mktorrent libtool libcppunit-dev libssl-dev \
- pkg-config libxml2-dev libcurl3 libcurl4-openssl-dev libsigc++-2.0-dev \
- apache2-utils autoconf cron curl libapache2-mod-fastcgi libapache2-mod-geoip \
- libxslt-dev libncurses5-dev yasm pcregrep apache2 php-net-socket \
- libdbd-mysql-perl libdbi-perl php7.0 php7.0-fpm php7.0-mbstring php7.0-mysql \
- php7.0-curl php-memcached memcached php7.0-gd php7.0-json php7.0-mcrypt php7.0-opcache \
- php7.0-xml php7.0-zip fontconfig comerr-dev ca-certificates libfontconfig1-dev \
- php7.0-geoip libfontconfig1 rar unrar mediainfo ifstat libapache2-mod-php7.0 \
- python3-lxml python-lxml ttf-mscorefonts-installer checkinstall dtach cfv libarchive-zip-perl \
- libnet-ssleay-perl openjdk-8-jre-headless openjdk-8-jre openjdk-8-jdk libxslt1-dev \
- libxslt1.1 libxml2 libffi-dev python-pip python-dev libhtml-parser-perl libxml-libxml-perl \
- libjson-perl libjson-xs-perl libxml-libxslt-perl libapache2-mod-scgi \
- vnstat vnstati openvpn >>"${OUTTO}" 2>&1
- fi
- }
- function _syscommands() {
- mkdir -p /usr/local/bin/quickbox
- cp -r ${local_packages}/. /usr/local/bin/quickbox
- dos2unix $(find /usr/local/bin/quickbox -type f) >>"${OUTTO}" 2>&1;
- chmod +x $(find /usr/local/bin/quickbox -type f) >>"${OUTTO}" 2>&1;
- cp /usr/local/bin/quickbox/system/reload /usr/bin/reload
- }
- function _skel() {
- if [[ -d /etc/skel ]]; then rm -r /etc/skel;fi
- mkdir /etc/skel
- cp -r ${local_setup}templates/skel/. /etc/skel
- tar xzf ${local_setup}sources/rarlinux-x64-5.3.0.tar.gz -C ./
- cp ./rar/*rar /usr/bin
- cp ./rar/*rar /usr/sbin
- rm -rf rarlinux*.tar.gz
- rm -rf ./rar
- wget -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
- gunzip GeoLiteCity.dat.gz>>"${OUTTO}" 2>&1
- mkdir -p /usr/share/GeoIP>>"${OUTTO}" 2>&1
- rm -rf GeoLiteCity.dat.gz
- mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat>>"${OUTTO}" 2>&1
- (echo y;echo o conf prerequisites_policy follow;echo o conf commit)>/dev/null 2>&1|cpan Digest::SHA1 >>"${OUTTO}" 2>&1
- (echo y;echo o conf prerequisites_policy follow;echo o conf commit)>/dev/null 2>&1|cpan Digest::SHA >>"${OUTTO}" 2>&1
- if [[ $DELUGE != NO ]]; then
- mkdir -p /etc/skel/.config/deluge/plugins/
- cd /etc/skel/.config/deluge/plugins/
- wget -q https://github.com/ratanakvlun/deluge-ltconfig/releases/download/v0.2.5.0/ltConfig-0.2.5.0-py2.7.egg
- fi
- }
- function _qmount() {
- # Setup mount points for Quotas
- if [[ $quota == yes ]]; then
- if [[ $DISTRO == Ubuntu ]]; then
- if [[ ${primaryroot} == "root" ]]; then
- sed -ie '/\/ / s/defaults/usrjquota=aquota.user,jqfmt=vfsv1,defaults/' /etc/fstab
- sed -i 's/errors=remount-ro/usrjquota=aquota.user,jqfmt=vfsv1,errors=remount-ro/g' /etc/fstab
- apt-get install -y linux-image-extra-virtual quota >>"${OUTTO}" 2>&1
- mount -o remount / || mount -o remount /home >>"${OUTTO}" 2>&1
- quotacheck -auMF vfsv1 >>"${OUTTO}" 2>&1
- quotaon -uv / >>"${OUTTO}" 2>&1
- service quota start >>"${OUTTO}" 2>&1
- else
- sed -ie '/\/home/ s/defaults/usrjquota=aquota.user,jqfmt=vfsv1,defaults/' /etc/fstab
- sed -i 's/errors=remount-ro/usrjquota=aquota.user,jqfmt=vfsv1,errors=remount-ro/g' /etc/fstab
- apt-get install -y linux-image-extra-virtual quota >>"${OUTTO}" 2>&1
- mount -o remount /home >>"${OUTTO}" 2>&1
- quotacheck -auMF vfsv1 >>"${OUTTO}" 2>&1
- quotaon -uv /home >>"${OUTTO}" 2>&1
- service quota start >>"${OUTTO}" 2>&1
- fi
- elif [[ $DISTRO == Devuan ]]; then
- if [[ ${primaryroot} == "root" ]]; then
- sed -ie '/\/ / s/defaults/usrjquota=aquota.user,jqfmt=vfsv1,defaults/' /etc/fstab
- sed -i 's/errors=remount-ro/usrjquota=aquota.user,jqfmt=vfsv1,errors=remount-ro/g' /etc/fstab
- apt-get install -y quota >>"${OUTTO}" 2>&1
- mount -o remount / || mount -o remount /home >>"${OUTTO}" 2>&1
- quotacheck -auMF vfsv1 >>"${OUTTO}" 2>&1
- quotaon -uv / >>"${OUTTO}" 2>&1
- service quota start >>"${OUTTO}" 2>&1
- else
- sed -ie '/\/home/ s/defaults/usrjquota=aquota.user,jqfmt=vfsv1,defaults/' /etc/fstab
- sed -i 's/errors=remount-ro/usrjquota=aquota.user,jqfmt=vfsv1,errors=remount-ro/g' /etc/fstab
- apt-get install -y quota >>"${OUTTO}" 2>&1
- mount -o remount /home >>"${OUTTO}" 2>&1
- quotacheck -auMF vfsv1 >>"${OUTTO}" 2>&1
- quotaon -uv /home >>"${OUTTO}" 2>&1
- service quota start >>"${OUTTO}" 2>&1
- fi
- fi
- touch /install/.quota.lock
- fi
- }
- function _lshell() {
- # Setup LShell configuration file
- apt-get -y install lshell >> /dev/null 2>&1
- cp ${local_setup}templates/lshell.conf.template /etc/lshell.conf
- }
- # build function for ffmpeg (17)
- function _ffmpeg() {
- if [[ ${ffmpeg} == "yes" ]]; then
- MAXCPUS=$(echo "$(nproc) / 2"|bc)
- if [[ $DISTRO == Ubuntu ]]; then
- apt-get -y install x265 >>"${OUTTO}" 2>&1
- elif [[ $DISTRO == Devuan ]]; then
- apt-get -y install -t jessie-backports x265 >>"${OUTTO}" 2>&1
- fi
- mkdir /root/tmp
- cd /root/tmp
- if [[ -d /root/tmp/ffmpeg ]]; then rm -rf ffmpeg;fi
- git clone --depth 1 https://github.com/FFmpeg/FFmpeg.git ffmpeg >>"${OUTTO}" 2>&1
- git clone git://github.com/yasm/yasm.git ffmpeg/yasm >>"${OUTTO}" 2>&1
- git clone https://github.com/yixia/x264.git ffmpeg/x264 >>"${OUTTO}" 2>&1
- ############################################################################
- ## x265 needs to be manually compiled - there is no non-interactive option.
- #git clone https://github.com/videolan/x265.git ffmpeg/x265 >>"${OUTTO}" 2>&1
- ############################################################################
- ####---- Github Mirror source ----####
- #git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg >>"${OUTTO}" 2>&1
- ############################################################################
- cd ffmpeg/yasm
- ./autogen.sh >>"${OUTTO}" 2>&1
- ./configure >>"${OUTTO}" 2>&1
- make >>"${OUTTO}" 2>&1
- make install >>"${OUTTO}" 2>&1
- cd ../x264
- ./configure --enable-static --enable-shared >>"${OUTTO}" 2>&1
- make >>"${OUTTO}" 2>&1
- make install >>"${OUTTO}" 2>&1
- ldconfig >>"${OUTTO}" 2>&1
- ############################################################################
- ## x265 needs to be manually compiled - there is no non-interactive option.
- #cd ../x265/build/linux
- #./make-Makefiles.bash >>"${OUTTO}" 2>&1
- #make >>"${OUTTO}" 2>&1
- #make install >>"${OUTTO}" 2>&1
- #ldconfig >>"${OUTTO}" 2>&1
- ############################################################################
- cd /root/tmp/ffmpeg
- export FC_CONFIG_DIR=/etc/fonts
- export FC_CONFIG_FILE=/etc/fonts/fonts.conf
- ./configure --enable-libfreetype --enable-filter=drawtext --enable-fontconfig --disable-asm --enable-libx264 --enable-gpl >>"${OUTTO}" 2>&1
- make -j${MAXCPUS} >>"${OUTTO}" 2>&1
- make install >>"${OUTTO}" 2>&1
- cp /usr/local/bin/ffmpeg /usr/bin >>"${OUTTO}" 2>&1
- cp /usr/local/bin/ffprobe /usr/bin >>"${OUTTO}" 2>&1
- rm -rf /root/tmp/ffmpeg >>"${OUTTO}" 2>&1
- fi
- }
- # function to enable sudo for www-data function (18)
- function _apachesudo() {
- rm /etc/sudoers
- cp ${local_setup}templates/sudoers.template /etc/sudoers
- #if [[ $sudoers == "yes" ]]; then
- awk -v username=${username} '/^root/ && !x {print username " ALL=(ALL:ALL) NOPASSWD: ALL"; x=1} 1' /etc/sudoers > /tmp/sudoers;mv /tmp/sudoers /etc
- echo -n "${username}" > /etc/apache2/master.txt
- #fi
- cd
- }
- # xmlrpc-c function (19)
- function _xmlrpc() {
- if [[ -d /root/tmp ]]; then rm -r tmp;fi
- mkdir /root/tmp && cd /root/tmp
- if [[ -d /root/tmp/xmlrpc-c ]]; then rm -rf xmlrpc-c;fi
- cp -r ${local_setup}sources/xmlrpc-c_1-33-12/ .
- cd xmlrpc-c_1-33-12
- chmod +x configure
- ./configure --prefix=/usr --disable-cplusplus >>"${OUTTO}" 2>&1
- make >>"${OUTTO}" 2>&1
- chmod +x install-sh
- make install >>"${OUTTO}" 2>&1
- }
- # libtorent function (20)
- function _libtorrent() {
- if [[ -d /root/tmp ]]; then rm -r tmp;fi
- mkdir /root/tmp && cd /root/tmp
- MAXCPUS=$(echo "$(nproc) / 2"|bc)
- rm -rf xmlrpc-c >>"${OUTTO}" 2>&1
- if [[ -e /root/tmp/libtorrent-${LTORRENT}.tar.gz ]]; then rm -rf libtorrent-${LTORRENT}.tar.gz;fi
- cp ${local_setup}sources/libtorrent-${LTORRENT}.tar.gz .
- tar -xzvf libtorrent-${LTORRENT}.tar.gz >>"${OUTTO}" 2>&1
- cd libtorrent-${LTORRENT}
- ./autogen.sh >>"${OUTTO}" 2>&1
- ./configure --prefix=/usr >>"${OUTTO}" 2>&1
- make -j${MAXCPUS} >>"${OUTTO}" 2>&1
- make install >>"${OUTTO}" 2>&1
- }
- # rtorrent function (21)
- function _rtorrent() {
- if [[ -d /root/tmp ]]; then rm -r tmp;fi
- mkdir /root/tmp && cd /root/tmp
- MAXCPUS=$(echo "$(nproc) / 2"|bc)
- rm -rf libtorrent-${LTORRENT}* >>"${OUTTO}" 2>&1
- if [[ -e /root/tmp/libtorrent-${LTORRENT}.tar.gz ]]; then rm -rf libtorrent-${LTORRENT}.tar.gz;fi
- cp ${local_setup}sources/rtorrent-${RTVERSION}.tar.gz .
- tar -xzvf rtorrent-${RTVERSION}.tar.gz >>"${OUTTO}" 2>&1
- cd rtorrent-${RTVERSION}
- ./autogen.sh >>"${OUTTO}" 2>&1
- ./configure --prefix=/usr --with-xmlrpc-c >>"${OUTTO}" 2>&1
- make -j${MAXCPUS} >>"${OUTTO}" 2>&1
- make install >>"${OUTTO}" 2>&1
- cd /root/tmp
- ldconfig >>"${OUTTO}" 2>&1
- rm -rf /root/tmp/rtorrent-${RTVERSION}* >>"${OUTTO}" 2>&1
- touch /install/.rtorrent.lock
- }
- # deluge function (xx)
- function _deluge() {
- if [[ $DELUGE == REPO ]]; then
- apt-get -q -y update >>"${OUTTO}" 2>&1
- apt-get -q -y install deluged deluge-web >>"${OUTTO}" 2>&1
- systemctl stop deluged
- update-rc.d deluged remove
- rm /etc/init.d/deluged
- elif [[ $DELUGE == 1.0.9 ]] || [[ $DELUGE == 1.1.1 ]]; then
- if [[ $DELUGE == 1.0.9 ]]; then
- LTRC=RC_1_0
- elif [[ $DELUGE == 1.1.1 ]]; then
- LTRC=RC_1_1
- fi
- apt-get -qy update >/dev/null 2>&1
- LIST='build-essential checkinstall libboost-system-dev libboost-python-dev libssl-dev libgeoip-dev libboost-chrono-dev libboost-random-dev
- python python-twisted python-openssl python-setuptools intltool python-xdg python-chardet geoip-database python-notify python-pygame
- python-glade2 librsvg2-common xdg-utils python-mako'
- for depend in $LIST; do
- apt-get -qq -y install $depend >>"${OUTTO}" 2>&1
- done
- git clone -b ${LTRC} https://github.com/arvidn/libtorrent.git >>"${OUTTO}" 2>&1
- git clone -b 1.3-stable git://deluge-torrent.org/deluge.git >>"${OUTTO}" 2>&1
- cd libtorrent
- ./autotool.sh >>"${OUTTO}" 2>&1
- ./configure --enable-python-binding --with-lib-geoip --with-libiconv >>"${OUTTO}" 2>&1 >>"${OUTTO}" 2>&1
- make -j$(nproc) >>"${OUTTO}" 2>&1
- checkinstall -y --pkgversion=${DELUGE} >>"${OUTTO}" 2>&1
- ldconfig
- cd ..
- cd deluge
- python setup.py build >>"${OUTTO}" 2>&1
- python setup.py install --install-layout=deb >>"${OUTTO}" 2>&1
- python setup.py install_data >>"${OUTTO}" 2>&1
- cd ..
- rm -r {deluge,libtorrent}
- fi
- if [[ $DELUGE != NO ]]; then
- n=$RANDOM
- DPORT=$((n%59000+10024))
- DWSALT=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
- DWP=$(python ${local_packages}/system/deluge.Userpass.py ${passwd} ${DWSALT})
- DUDID=$(python ${local_packages}/system/deluge.addHost.py)
- # -- Secondary awk command -- #
- #DPORT=$(awk -v min=59000 -v max=69024 'BEGIN{srand(); print int(min+rand()*(max-min+1))}')
- DWPORT=$(shuf -i 10001-11000 -n 1)
- mkdir -p /home/${username}/.config/deluge/plugins
- if [[ ! -f /home/${username}/.config/deluge/plugins/ltConfig-0.2.5.0-py2.7.egg ]]; then
- cd /home/${username}/.config/deluge/plugins/
- wget -q https://github.com/ratanakvlun/deluge-ltconfig/releases/download/v0.2.5.0/ltConfig-0.2.5.0-py2.7.egg
- fi
- chmod 755 /home/${username}/.config
- chmod 755 /home/${username}/.config/deluge
- cp ${local_setup}templates/core.conf.template /home/${username}/.config/deluge/core.conf
- cp ${local_setup}templates/web.conf.template /home/${username}/.config/deluge/web.conf
- cp ${local_setup}templates/hostlist.conf.1.2.template /home/${username}/.config/deluge/hostlist.conf.1.2
- sed -i "s/USERNAME/${username}/g" /home/${username}/.config/deluge/core.conf
- sed -i "s/DPORT/${DPORT}/g" /home/${username}/.config/deluge/core.conf
- sed -i "s/XX/${ip}/g" /home/${username}/.config/deluge/core.conf
- sed -i "s/DWPORT/${DWPORT}/g" /home/${username}/.config/deluge/web.conf
- sed -i "s/DWSALT/${DWSALT}/g" /home/${username}/.config/deluge/web.conf
- sed -i "s/DWP/${DWP}/g" /home/${username}/.config/deluge/web.conf
- sed -i "s/DUDID/${DUDID}/g" /home/${username}/.config/deluge/hostlist.conf.1.2
- sed -i "s/DPORT/${DPORT}/g" /home/${username}/.config/deluge/hostlist.conf.1.2
- sed -i "s/USERNAME/${username}/g" /home/${username}/.config/deluge/hostlist.conf.1.2
- sed -i "s/PASSWD/${passwd}/g" /home/${username}/.config/deluge/hostlist.conf.1.2
- echo "${username}:${passwd}:10" > /home/${username}/.config/deluge/auth
- chmod 600 /home/${username}/.config/deluge/auth
- chown -R ${username}.${username} /home/${username}/.config/
- mkdir /home/${username}/dwatch
- chown ${username}: /home/${username}/dwatch
- mkdir -p /home/${username}/torrents/deluge
- chown ${username}: /home/${username}/torrents/deluge
- touch /install/.deluge.lock
- fi
- }
- # scgi enable function (22-nixed)
- # function _scgi() { ln -s /etc/apache2/mods-available/scgi.load /etc/apache2/mods-enabled/scgi.load >>"${OUTTO}" 2>&1 ; }
- # function to install rutorrent (22)
- function _rutorrent() {
- cd /srv
- if [[ -d /srv/rutorrent ]]; then rm -rf rutorrent;fi
- mkdir rutorrent
- cp -r ${local_rutorrent}/. rutorrent
- }
- function _rutorrent-plugins() {
- cd /srv/rutorrent
- if [[ -d /srv/rutorrent/plugins ]]; then rm -rf plugins;fi
- mkdir plugins
- cp -R ${local_rplugins}/. plugins
- }
- # function to install dashboard (23)
- function _dashboard() {
- cd && mkdir -p /srv/rutorrent/home
- cp -r ${local_dashboard}/. /srv/rutorrent/home
- touch /srv/rutorrent/home/db/output.log
- }
- # function to configure apache (24)
- function _apacheconf() {
- cp ${local_setup}templates/aliases-seedbox.conf.template /etc/apache2/sites-enabled/aliases-seedbox.conf
- sed -i "s/USERNAME/${username}/g" /etc/apache2/sites-enabled/aliases-seedbox.conf
- a2enmod auth_digest >>"${OUTTO}" 2>&1
- a2enmod ssl >>"${OUTTO}" 2>&1
- a2enmod scgi >>"${OUTTO}" 2>&1
- a2enmod rewrite >>"${OUTTO}" 2>&1
- mv /etc/apache2/sites-enabled/000-default.conf /etc/apache2/ >>"${OUTTO}" 2>&1
- cp ${local_setup}templates/default-ssl.conf.template /etc/apache2/sites-enabled/default-ssl.conf
- sed -i "s/USERNAME/${username}/g" /etc/apache2/sites-enabled/default-ssl.conf
- sed -i "s/\"REALM\"/\"${REALM}\"/g" /etc/apache2/sites-enabled/default-ssl.conf
- sed -i "s/HTPASSWD/\/etc\/htpasswd/g" /etc/apache2/sites-enabled/default-ssl.conf
- sed -i "s/PORT/${PORT}/g" /etc/apache2/sites-enabled/default-ssl.conf
- cp ${local_setup}templates/fileshare.conf.template /etc/apache2/sites-enabled/fileshare.conf
- sed -i.bak -e "s/post_max_size = 8M/post_max_size = 64M/" \
- -e "s/upload_max_filesize = 2M/upload_max_filesize = 92M/" \
- -e "s/expose_php = On/expose_php = Off/" \
- -e "s/128M/768M/" \
- -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" \
- -e "s/;opcache.enable=0/opcache.enable=1/" \
- -e "s/;opcache.memory_consumption=64/opcache.memory_consumption=128/" \
- -e "s/;opcache.max_accelerated_files=2000/opcache.max_accelerated_files=4000/" \
- -e "s/;opcache.revalidate_freq=2/opcache.revalidate_freq=240/" /etc/php/7.0/fpm/php.ini
- sed -i.bak -e "s/post_max_size = 8M/post_max_size = 64M/" \
- -e "s/upload_max_filesize = 2M/upload_max_filesize = 92M/" \
- -e "s/expose_php = On/expose_php = Off/" \
- -e "s/memory_limit = 128M/memory_limit = 768M/" \
- -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" \
- -e "s/;opcache.enable=0/opcache.enable=1/" \
- -e "s/;opcache.memory_consumption=64/opcache.memory_consumption=128/" \
- -e "s/;opcache.max_accelerated_files=2000/opcache.max_accelerated_files=4000/" \
- -e "s/;opcache.revalidate_freq=2/opcache.revalidate_freq=240/" /etc/php/7.0/apache2/php.ini
- # ensure opcache module is activated
- phpenmod -v 7.0 opcache >>"${OUTTO}" 2>&1
- # these modules are purely experimental
- #a2enmod proxy_fcgi >>"${OUTTO}" 2>&1
- #a2dismod mpm_prefork >>"${OUTTO}" 2>&1
- #a2enmod mpm_worker >>"${OUTTO}" 2>&1
- # ensure fastcgi module is activated
- a2enmod actions >>"${OUTTO}" 2>&1
- a2enmod fastcgi >>"${OUTTO}" 2>&1
- a2enmod proxy_fcgi setenvif >>"${OUTTO}" 2>&1
- a2enconf php7.0-fpm >>"${OUTTO}" 2>&1
- #sed -i 's/memory_limit = 128M/memory_limit = 768M/g' /etc/php/7.0/apache2/php.ini
- }
- # function to configure first user config (25)
- function _rconf() {
- cp ${local_setup}templates/rtorrent.rc.template /home/${username}/.rtorrent.rc
- mkdir -p /home/${username}/torrents/rtorrent
- chown -R ${username}: /home/${username}/torrents
- sed -i "s/USERNAME/${username}/g" /home/${username}/.rtorrent.rc
- sed -i "s/XXX/${PORT}/g" /home/${username}/.rtorrent.rc
- sed -i "s/YYY/${PORTEND}/g" /home/${username}/.rtorrent.rc
- if [[ -f /install/.10g.lock ]]; then
- sed -i "s/hrottle.max_peers.normal.set = 100/hrottle.max_peers.normal.set = 300/g" /home/${username}/.rtorrent.rc
- sed -i "s/throttle.max_uploads.global.set = 100/throttle.max_uploads.global.set = 300/g" /home/${username}/.rtorrent.rc
- fi
- }
- # function to set proper diskspace plugin (26)
- function _plugins() {
- cd "${rutorrent}plugins/"
- if [[ ${primaryroot} == "root" ]]; then
- rm -r ${rutorrent}plugins/diskspaceh
- else
- rm -r ${rutorrent}plugins/diskspace
- fi
- cp /srv/rutorrent/home/fileshare/.htaccess /srv/rutorrent/plugins/fileshare/
- cd /srv/rutorrent/home/fileshare/
- rm -rf share.php
- ln -s ../../plugins/fileshare/share.php
- cp ${local_setup}templates/rutorrent/plugins/fileshare/conf.php.template /srv/rutorrent/plugins/fileshare/conf.php
- sed -i 's/homeDirectory/topDirectory/g' /srv/rutorrent/plugins/filemanager/flm.class.php
- sed -i 's/homeDirectory/topDirectory/g' /srv/rutorrent/plugins/filemanager/settings.js.php
- sed -i 's/showhidden: true,/showhidden: false,/g' "${rutorrent}plugins/filemanager/init.js"
- chown -R www-data.www-data "${rutorrent}"
- cd ${rutorrent}plugins/theme/themes/
- git clone https://lab.quickbox.io/Swizards/club-Swizards club-Swizards >>"${OUTTO}" 2>&1
- chown -R www-data:www-data club-Swizards
- cd ${rutorrent}plugins
- perl -pi -e "s/\$defaultTheme \= \"\"\;/\$defaultTheme \= \"club-Swizards\"\;/g" ${rutorrent}plugins/theme/conf.php
- rm -rf ${rutorrent}plugins/tracklabels/labels/nlb.png
- # Needed for fileupload
- # wget http://ftp.nl.debian.org/debian/pool/main/p/plowshare/plowshare4_2.1.3-1_all.deb -O plowshare4.deb >>"${OUTTO}" 2>&1
- # wget http://ftp.nl.debian.org/debian/pool/main/p/plowshare/plowshare_2.1.3-1_all.deb -O plowshare.deb >>"${OUTTO}" 2>&1
- apt-get -y install plowshare >>"${OUTTO}" 2>&1
- dpkg -i plowshare*.deb >>"${OUTTO}" 2>&1
- rm -rf plowshare*.deb >>"${OUTTO}" 2>&1
- cd /root
- mkdir -p /root/bin
- git clone https://github.com/mcrapet/plowshare.git ~/.plowshare-source >>"${OUTTO}" 2>&1
- cd ~/.plowshare-source >>"${OUTTO}" 2>&1
- make install PREFIX=$HOME >>"${OUTTO}" 2>&1
- cd && rm -rf .plowshare-source >>"${OUTTO}" 2>&1
- apt-get -f install >>"${OUTTO}" 2>&1
- mkdir -p /srv/rutorrent/conf/users/"${username}"/plugins/fileupload/
- chmod 775 /srv/rutorrent/plugins/fileupload/scripts/upload
- cp /srv/rutorrent/plugins/fileupload/conf.php /srv/rutorrent/conf/users/"${username}"/plugins/fileupload/conf.php
- chown -R www-data: /srv/rutorrent/conf/users/"${username}"
- # Set proper permissions to filemanager so it may execute commands
- find /srv/rutorrent/plugins/filemanager/scripts -type f -exec chmod 755 {} \;
- }
- # function autodl to install autodl irssi scripts (27)
- function _autodl() {
- mkdir -p "/home/${username}/.irssi/scripts/autorun/" >>"${OUTTO}" 2>&1
- cd "/home/${username}/.irssi/scripts/"
- wget -qO autodl-irssi.zip https://github.com/autodl-community/autodl-irssi/releases/download/community-v1.62/autodl-irssi-community-v1.62.zip
- unzip -o autodl-irssi.zip >>"${OUTTO}" 2>&1
- rm autodl-irssi.zip
- cp autodl-irssi.pl autorun/
- mkdir -p "/home/${username}/.autodl" >>"${OUTTO}" 2>&1
- touch "/home/${username}/.autodl/autodl.cfg"
- chown ${username}: /home/${username}/.autodl/autodl.cfg
- touch /install/.autodlirssi.lock
- cat >"/home/${username}/.autodl/autodl2.cfg"<<ADC
- [options]
- gui-server-port = ${AUTODLPORT}
- gui-server-password = ${AUTODLPASSWORD}
- ADC
- chown -R "${username}.${username}" "/home/${username}/.irssi/"
- chown -R "${username}.${username}" "/home/${username}"
- }
- # function to make dirs for first user (28)
- function _makedirs() {
- #mkdir /home/"${username}"/{torrents,.sessions,watch} >>"${OUTTO}" 2>&1
- cp -r /etc/skel/. /home/"${username}"
- chown -r "${username}".www-data /home/"${username}" >>"${OUTTO}" 2>&1 #/{torrents,.sessions,watch,.rtorrent.rc} >>"${OUTTO}" 2>&1
- usermod -a -G www-data "${username}" >>"${OUTTO}" 2>&1
- usermod -a -G "${username}" www-data >>"${OUTTO}" 2>&1
- }
- # function to make crontab .statup file (29)
- #function _cronfile() {
- # cp ${local_setup}templates/startup.template /home/${username}/.startup
- # chmod 775 /home/${username}/.startup
- # if [[ $DELUGE != NO ]]; then
- # sed -i 's/DELUGEWEB_CLIENT=no/DELUGEWEB_CLIENT=yes/g' /home/${username}/.startup
- # sed -i 's/DELUGED_CLIENT=no/DELUGED_CLIENT=yes/g' /home/${username}/.startup
- #fi
- #}
- # function to configure first user config.php (30)
- function _ruconf() {
- mkdir -p ${rutorrent}conf/users/${username}/
- cp ${local_setup}templates/rutorrent.users.config.template ${rutorrent}conf/users/${username}/config.php
- chown -R www-data.www-data "${rutorrent}conf/users/" >>"${OUTTO}" 2>&1
- if [[ ${primaryroot} == "root" ]]; then
- sed -i "/diskuser/c\$diskuser = \"\/\";" /srv/rutorrent/conf/users/${username}/config.php
- else
- sed -i "/diskuser/c\$diskuser = \"\/home\";" /srv/rutorrent/conf/users/${username}/config.php
- fi
- sed -i "/quotaUser/c\$quotaUser = \"${username}\";" /srv/rutorrent/conf/users/${username}/config.php
- sed -i "s/USERNAME/${username}/g" /srv/rutorrent/conf/users/${username}/config.php
- sed -i "s/XXX/${PORT}/g" /srv/rutorrent/conf/users/${username}/config.php
- sed -i "s/YYY/${AUTODLPORT}/g" /srv/rutorrent/conf/users/${username}/config.php
- sed -i "s/ZZZ/\"${AUTODLPASSWORD}\"/g" /srv/rutorrent/conf/users/${username}/config.php
- }
- # function to install pure-ftpd (31)
- function _installftpd() {
- apt-get purge -y vsftpd pure-ftpd >>"${OUTTO}" 2>&1
- apt-get autoremove >>"${OUTTO}" 2>&1
- apt-get install -y vsftpd >>"${OUTTO}" 2>&1
- }
- # function to configure pure-ftpd (32)
- function _ftpdconfig() {
- cp ${local_setup}templates/openssl.cnf.template /root/.openssl.cnf
- openssl req -config /root/.openssl.cnf -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem >/dev/null 2>&1
- cp ${local_setup}templates/vsftpd.conf.template /etc/vsftpd.conf
- echo "" > /etc/vsftpd.chroot_list
- }
- # The following function makes necessary changes to Network and TZ settings needed for
- # the proper functionality of the QuickBox Dashboard.
- function _quickstats() {
- # Dynamically adjust to use the servers active network adapter
- printf "${IFACE}" > /srv/rutorrent/home/db/interface.txt
- printf "${username}" > /srv/rutorrent/home/db/master.txt
- # Use server timezone
- cd /usr/share/zoneinfo
- find * -type f -exec sh -c "diff -q /etc/localtime '{}' > /dev/null && echo {}" \; > ~/tz.txt
- cd ~
- LOCALE=en_GB.UTF-8
- LANG=lang_en
- sed -i "s/LOCALE/${locale}/g" /srv/rutorrent/home/inc/localize.php
- sed -i "s/LANG/${lang}/g" /srv/rutorrent/home/inc/localize.php
- #echo " date_default_timezone_set('$(cat tz.txt)');" >> /srv/rutorrent/home/widgets/config.php
- #echo "" >> /srv/rutorrent/home/widgets/config.php
- #echo "?>" >> /srv/rutorrent/home/widgets/config.php
- if [[ ${primaryroot} == "home" ]]; then
- cd /srv/rutorrent/home/widgets && rm disk_data.php
- mv disk_datah.php disk_data.php
- chown -R www-data:www-data /srv/rutorrent/home/widgets
- else
- rm /srv/rutorrent/home/widgets/disk_datah.php
- fi
- }
- function _quickconsole() {
- PUBLICIP=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
- cat >/etc/profile<<EOF
- echo " Welcome Back !"
- echo " * Dashboard: https://${PUBLICIP}"
- echo " * Support: https://plaza.quickbox.io"
- echo " * Roadmap: https://quickbox.io/roadmap"
- echo " * Donate: https://quickbox.io/donate"
- echo ""
- EOF
- apt-get -y install shellinabox >>"${OUTTO}" 2>&1;
- cp ${local_setup}templates/sysd/shellinabox.template /etc/systemd/system/shellinabox.service
- cp ${local_setup}templates/quickconsole/00_QuickConsole.css.template /etc/shellinabox/options-enabled/00_QuickConsole.css
- cp ${local_setup}templates/web-console.conf.template /etc/apache2/sites-enabled/${username}.console.conf
- sed -i "s/PUBLICIP/${PUBLICIP}/g" /etc/apache2/sites-enabled/${username}.console.conf
- sed -i "s/USER/${username}/g" /etc/apache2/sites-enabled/${username}.console.conf
- chmod +x /etc/shellinabox/options-enabled/00_QuickConsole.css
- chmod 777 /etc/shellinabox/options-enabled/00_QuickConsole.css
- systemctl enable shellinabox.service >/dev/null 2>&1
- systemctl stop shellinabox.service >/dev/null 2>&1
- systemctl daemon-reload >/dev/null 2>&1
- systemctl start shellinabox.service >/dev/null 2>&1
- }
- # seedbox boot for first user (35)
- function _boot() {
- #if [[ $cron == yes ]]; then
- # touch /install/.cron.lock
- # command1="*/1 * * * * /home/${username}/.startup >/dev/null 2>&1"
- # cat <(fgrep -iv "${command1}" <(sh -c 'sudo -u ${username} crontab -l' >/dev/null 2>&1)) <(echo "${command1}") | sudo -u ${username} crontab -
- #elif [[ $cron == no ]]; then
- cp ${local_setup}templates/sysd/rtorrent.template /etc/systemd/system/rtorrent@.service >/dev/null 2>&1
- cp ${local_setup}templates/sysd/autodlirssi.template /etc/systemd/system/irssi@.service >/dev/null 2>&1
- cp ${local_setup}templates/sysd/deluged.template /etc/systemd/system/deluged@.service >/dev/null 2>&1
- cp ${local_setup}templates/sysd/deluge-web.template /etc/systemd/system/deluge-web@.service >/dev/null 2>&1
- systemctl enable {rtorrent,irssi,deluged,deluge-web}@${username} >/dev/null 2>&1
- systemctl start {rtorrent,irssi,deluged,deluge-web}@${username} >/dev/null 2>&1
- #fi
- echo "*/1 * * * * root bash /usr/local/bin/quickbox/system/set_interface" > /etc/cron.d/set_interface
- }
- # function to set permissions on first user (36)
- function _perms() {
- chown -R ${username}.${username} /home/${username}/ >>"${OUTTO}" 2>&1
- sudo -u ${username} chmod 755 /home/${username}/ >>"${OUTTO}" 2>&1
- chmod +x /etc/cron.daily/denypublic >/dev/null 2>&1
- chmod 777 /home/${username}/.sessions >/dev/null 2>&1
- chown -R chown -R www-data:www-data /srv/rutorrent/home >/dev/null 2>&1
- }
- ################################################################################
- # //BEGIN UNUSED FUNCTIONS//
- ################################################################################
- # ask for bash or lshell function ()
- # Heads Up: lshell is disabled for the initial user on install as your first user
- # should not be limited in shell. Additional created users are automagically
- # added to a limited shell environment.
- function _askshell() {
- #echo -ne "${yellow}Set user shell to lshell?${normal} (Default: ${red}N${normal}): "; read responce
- #case $responce in
- # [yY] | [yY][Ee][Ss] ) theshell="/usr/bin/lshell" ;;
- # [nN] | [nN][Oo] | "" ) theshell="/bin/bash" ;;
- # *) theshell="yes" ;;
- #esac
- echo -ne "${bold}${yellow}Add user to /etc/sudoers${normal} [${green}y${normal}]es or [n]o: "; read answer
- case $answer in
- [yY] | [yY][Ee][Ss] | "" ) sudoers="yes" ;;
- [nN] | [nN][Oo] ) sudoers="no" ;;
- *) sudoers="yes" ;;
- esac
- }
- # function to create ssl cert for pure-ftpd ()
- function _pureftpcert() {
- /bin/true
- }
- ################################################################################
- # //END UNUSED FUNCTIONS//
- ################################################################################
- # function to show finished data (37)
- function _finished() {
- ip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
- echo
- echo
- echo -e " ${black}${on_green} [quickbox] Seedbox & GUI Installation Completed ${normal} "
- echo -e " ${standout} INSTALLATION COMPLETED in ${FIN}/min ${normal} "
- echo;echo
- echo " Valid Commands: "
- echo ' -------------------'
- echo
- echo -e " ${green}createSeedboxUser${normal} - creates a shelled seedbox user"
- echo -e " ${green}deleteSeedboxUser${normal} - deletes a created seedbox user and their directories"
- echo -e " ${green}changeUserpass${normal} - change users SSH/FTP/ruTorrent password"
- echo -e " ${green}setdisk${normal} - set your disk quota for any given user"
- echo -e " ${green}showspace${normal} - shows the amount of space used by all users on the server"
- echo -e " ${green}reload${normal} - restarts your seedbox services, i.e; rtorrent & irssi"
- echo -e " ${green}upgradeBTSync${normal} - upgrades btsync when new version is available"
- echo -e " ${green}upgradePlex${normal} - upgrades Plex when new version is available"
- echo;echo;echo
- echo '################################################################################################'
- echo "# Seedbox can be found at https://${username}:${passwd}@${ip} "
- echo "# ${cyan}(Also works for FTP:5757/SSH:4747)${normal}"
- echo "# If you need to restart rtorrent/irssi, you can type 'reload'"
- echo "# https://${username}:${passwd}@${ip} (Also works for FTP:5757/SSH:4747)" > ${username}.info
- echo "# Reloading: ${green}sshd${normal}, ${green}apache${normal}, ${green}memcached${normal}, ${green}php7.0${normal}, ${green}vsftpd${normal} and ${green}fail2ban${normal}"
- echo '################################################################################################'
- echo
- cat >/root/information.info<<EOF
- Seedbox can be found at https://${username}:${passwd}@${ip} (Also works for FTP:5757/SSH:4747)
- If you need to restart rtorrent/irssi, you can type 'reload'
- https://${username}:${passwd}@${ip} (Also works for FTP:5757/SSH:4747)
- EOF
- rm -rf "$0" >>"${OUTTO}" 2>&1
- for i in ssh apache2 php7.0-fpm vsftpd fail2ban quota memcached cron; do
- service $i restart >>"${OUTTO}" 2>&1
- systemctl enable $i >>"${OUTTO}" 2>&1
- done
- rm -rf /root/tmp/
- echo -ne " Do you wish to reboot (recommended!): (Default ${green}Y${normal})"; read reboot
- case $reboot in
- [yY] | [yY][Ee][Ss] | "") reboot ;;
- [nN] | [nN][Oo] ) echo " ${cyan}Skipping reboot${normal} ... " ;;
- esac
- }
- clear
- spinner() {
- local pid=$1
- local delay=0.25
- local spinstr='|/-\'
- while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
- local temp=${spinstr#?}
- printf " [${bold}${yellow}%c${normal}] " "$spinstr"
- local spinstr=$temp${spinstr%"$temp"}
- sleep $delay
- printf "\b\b\b\b\b\b"
- done
- printf " \b\b\b\b"
- echo -ne "${OK}"
- }
- local_setup=/root/QuickBox/setup/
- local_packages=/root/QuickBox/packages/
- local_rutorrent=/root/QuickBox/rutorrent/
- local_rplugins=/root/QuickBox/rtplugins/
- local_dashboard=/root/QuickBox/dashboard/
- IFACE=$(ip link show|grep -i broadcast|grep -m1 UP|cut -d: -f 2|cut -d@ -f 1|sed -e 's/ //g');
- HOSTNAME1=$(hostname -s);
- PORT=$(shuf -i 2000-61000 -n 1)
- PORTEND=$((${PORT} + 1500))
- while [[ "$(netstat -ln | grep ':'"$PORT"'' | grep -c 'LISTEN')" -eq "1" ]]; do PORT="$(shuf -i 2000-61000 -n 1)"; done
- RPORT=$(shuf -i 2000-61000 -n 1)
- while [[ "$(netstat -ln | grep ':'"$RPORT"'' | grep -c 'LISTEN')" -eq "1" ]]; do RPORT="$(shuf -i 2000-61000 -n 1)"; done
- S=$(date +%s)
- OK=$(echo -e "[ ${bold}${green}DONE${normal} ]")
- genpass=$(_string)
- HTPASSWD="/etc/htpasswd"
- rutorrent="/srv/rutorrent/"
- REALM="rutorrent"
- AUTODLPASSWORD=$(_string)
- AUTODLPORT=$(shuf -i 2000-61000 -n 1)
- ip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
- BTSYNCIP=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
- export DEBIAN_FRONTEND=noninteractive
- cd
- # QuickBox STRUCTURE
- _bashrc
- _intro
- _checkroot
- _logcheck
- _checkkernel
- _hostname
- _askquota
- _askcontinue
- _ssdpblock
- _locale
- clear
- #_askservices
- _askpartition
- _ask10g
- _askrtorrent
- _askdeluge
- _adduser
- _askffmpeg
- _denyhosts
- echo
- echo ""
- echo "${bold}${magenta}QuickBox will now install, this may take between${normal}"
- echo "${bold}${magenta}10 and 45 minutes depending on your systems specs${normal}"
- echo ""
- echo -n "Pulling QuickBox Ecosystem ... ";_repos & spinner $!;echo
- echo -n "Updating system ... ";_updates & spinner $!;echo
- echo -n "Installing all needed dependencies ... ";_depends & spinner $!;echo
- echo -n "Setting up system executables ... ";_syscommands & spinner $!;echo
- echo -n "Building required user directories ... ";_skel & spinner $!;echo
- if [[ ${quota} == "yes" ]]; then
- echo -n "Setting up quotas for ${green}/($primaryroot)${normal} mount ... ";_qmount & spinner $!;echo
- fi
- echo -n "Setting up Limited Shell environment ... ";_lshell & spinner $!;echo
- if [[ ${ffmpeg} == "yes" ]]; then
- echo -n "Building ffmpeg from source for screenshots ... ";_ffmpeg & spinner $!;echo
- fi
- _apachesudo
- echo -n "Installing xmlrpc-c-${green}1.33.12${normal} ... ";_xmlrpc & spinner $!;echo
- echo -n "Installing libtorrent-${green}$LTORRENT${normal} ... ";_libtorrent & spinner $!;echo
- echo -n "Installing rtorrent-${green}$RTVERSION${normal} ... ";_rtorrent & spinner $!;echo
- echo -n "Installing rutorrent into /srv ... ";_rutorrent & spinner $!;echo
- echo -n "Installing rutorrent plugins ... ";_rutorrent-plugins & spinner $!;echo
- echo -n "Installing deluge ... ";_deluge & spinner $!;echo
- echo -n "Installing quickbox dashboard ... ";_dashboard & spinner $!;echo
- echo -n "Setting up seedbox.conf for apache ... ";_apacheconf & spinner $!;echo
- echo -n "Installing .rtorrent.rc for ${username} ... ";_rconf & spinner $!;echo
- echo -n "Adjusting fileupload & filemanager plugins ... ";_plugins & spinner $!;echo
- echo -n "Installing autodl-irssi ... ";_autodl & spinner $!;echo
- echo -n "Making ${username} directory structure ... ";_makedirs & spinner $!;echo
- echo -n "Writing ${username} rutorrent config.php file ... ";_ruconf & spinner $!;echo
- echo -n "Installing vsftpd ... ";_installftpd & spinner $!;echo
- echo -n "Setting up vsftpd ... ";_ftpdconfig & spinner $!;echo
- _quickstats;
- _quickconsole;
- echo -n "Setting irssi/rtorrent to start on boot ... ";_boot & spinner $!;echo;
- echo -n "Setting permissions on ${username} ... ";_perms & spinner $!;echo;
- cd
- E=$(date +%s)
- DIFF=$(echo "$E" - "$S"|bc)
- FIN=$(echo "$DIFF" / 60|bc)
- clear
- _finished
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement