Compare commits

..
6 Commits
Author SHA1 Message Date
arakasi72 b5f79c2440 Update rtinst 2017-08-10 12:25:50 +01:00
arakasi72 9014d9ef10 Update rtsslcert 2017-06-23 22:24:46 +01:00
arakasi72 f0798b4dc4 Update README.md 2017-06-23 22:04:09 +01:00
arakasi72 6829186ef9 Update README.md 2017-06-23 22:03:27 +01:00
arakasi72 feb4286136 Update rtinst 2017-06-23 21:53:10 +01:00
arakasi72 3970a528dd Create sources1204 2017-06-23 21:40:25 +01:00
17 changed files with 474 additions and 992 deletions
+9 -15
View File
@@ -1,14 +1,15 @@
## rtinst
### Note: Now installs Lets Encrypt SSL certificates
### NOTE: THIS IS RELEASE DEB7UBU12 - Installs rtinst on OS's Ubu12, Ubu13, and Deb7 which are no longer supported in the main rtinst releases
#### 30 Second Guide
Ubuntu and Debian Seedbox Installation
Download and run setup (if logged in directly as root, do not need to use sudo)
Download and run setup (if logged in as root, do not need to use sudo)
sudo bash -c "$(wget --no-check-certificate -qO - https://raw.githubusercontent.com/arakasi72/rtinst/master/rtsetup)"
wget --no-check-certificate https://raw.githubusercontent.com/arakasi72/rtinst/master/rtsetup
sudo bash rtsetup deb7ubu12
and then to run the main script, ([check the options you can use](https://github.com/arakasi72/rtinst/wiki/Guide#21-main-script-options)):
@@ -16,9 +17,7 @@ and then to run the main script, ([check the options you can use](https://github
It takes about 10 minutes to run, depending on your server setup. After you have run the script and everything is working, I suggest a reboot, the script does not automate this reboot, you need to do it manually using the reboot command.
[A detailed installation guide](https://github.com/arakasi72/rtinst/wiki/Installing-rtinst)
[A detailed user guide](https://github.com/arakasi72/rtinst/wiki/Guide)
[A detailed installation guide](https://github.com/arakasi72/rtinst/wiki/Guide)
**IMPORTANT: NOTE THE NEW SSH PORT AND MAKE SURE YOU CAN SSH INTO YOUR SERVER BEFORE CLOSING THE EXISTING SESSION**
@@ -27,16 +26,13 @@ It has been tested with clean installs of:
Ubuntu 12 (unsupported)
Ubuntu 13 (unsupported)
Ubuntu 14 (unsupported)
Ubuntu 15 (unsupported)
Ubuntu 14
Ubuntu 15
Ubuntu 16
Ubuntu 17
Ubuntu 18
Ubuntu 19
Debian 7 "Wheezy" (unsupported)
Debian 8 "Jessie" (unsupported)
Debian 8 "Jessie"
Debian 9 "Stretch"
Debian 10 "Buster"
Services that will be installed and configured are
@@ -48,9 +44,7 @@ Services that will be installed and configured are
6. webmin (optional see section 3.7 in main guide)
[rtinst installation guide](https://github.com/arakasi72/rtinst/wiki/Installing-rtinst)
[Additional information on all the features](https://github.com/arakasi72/rtinst/wiki/Guide)
[A detailed installation guide, and additional information on all the features](https://github.com/arakasi72/rtinst/wiki/Guide)
For older unssuported OS listed above see the [Older OS Installation Guide](https://github.com/arakasi72/rtinst/wiki/Installing-on-Older-OS)
+1 -2
View File
@@ -1,6 +1,5 @@
server {
listen 80;
#server_name <Domain Name>;
root /var/www;
index index.html index.php index.htm;
@@ -36,7 +35,7 @@ server {
server {
listen 443 ssl;
#server_name <Domain Name>;
root /var/www;
index index.html index.php index.htm;
+1 -1
View File
@@ -8,7 +8,7 @@ method.insert = cfg.basedir, private|const|string, (cat,"<user home>/rtorren
method.insert = cfg.watch, private|const|string, (cat,(cfg.basedir),"watch/")
#method.insert = cfg.logs, private|const|string, (cat,(cfg.basedir),"log/")
#method.insert = cfg.logfile, private|const|string, (cat,(cfg.logs),"rtorrent-",(system.time),".log")
#method.insert = cfg.logfile, private|const|string, (cat,(c fg.logs),"rtorrent-",(system.time),".log")
session.path.set = (cat,(cfg.basedir),".session")
directory.default.set = (cat,(cfg.basedir),"download")
-1
View File
@@ -43,7 +43,6 @@ $pathToExternals = array(
"gzip" => '/bin/gzip', // Something like /usr/bin/gzip. If empty, will be found in PATH.
"id" => '/usr/bin/id', // Something like /usr/bin/id. If empty, will be found in PATH.
"stat" => '/usr/bin/stat', // Something like /usr/bin/stat. If empty, will be found in PATH.
"pgrep" => '/usr/bin/pgrep', // Something like /usr/bin/pgrep. If empty, will be found in PATH.
);
$localhosts = array( // list of local interfaces
-4
View File
@@ -100,8 +100,6 @@ enabled = yes
enabled = yes
;; Disabled
[_cloudflare]
enabled = no
[check_port]
enabled = no
[chunks]
@@ -122,7 +120,5 @@ enabled = no
enabled = no
[scheduler]
enabled = no
[spectrogram]
enabled = no
[xmpp]
enabled = no
+56
View File
@@ -0,0 +1,56 @@
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu/ precise main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ precise main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ precise-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ precise-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ precise universe
deb-src http://de.archive.ubuntu.com/ubuntu/ precise universe
deb http://de.archive.ubuntu.com/ubuntu/ precise-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ precise-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ precise multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ precise multiverse
deb http://de.archive.ubuntu.com/ubuntu/ precise-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ precise-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu precise-security main restricted
deb-src http://security.ubuntu.com/ubuntu precise-security main restricted
deb http://security.ubuntu.com/ubuntu precise-security universe
deb-src http://security.ubuntu.com/ubuntu precise-security universe
deb http://security.ubuntu.com/ubuntu precise-security multiverse
deb-src http://security.ubuntu.com/ubuntu precise-security multiverse
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu precise partner
# deb-src http://archive.canonical.com/ubuntu precise partner
## Uncomment the following two lines to add software from Ubuntu's
## 'extras' repository.
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
# deb http://extras.ubuntu.com/ubuntu precise main
# deb-src http://extras.ubuntu.com/ubuntu precise main
+1 -46
View File
@@ -13,38 +13,11 @@ PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin:/sbin
rundir=$(dirname $(readlink -f $0))
branch=$1
# function to ask user for y/n response
ask_user(){
local answer
while true
do
read answer
case $answer in [Yy]* ) return 0 ;;
[Nn]* ) return 1 ;;
* ) echo "Enter y or n";;
esac
done
}
if [ "$(id -u)" != "0" ]; then
echo "Must be run as root, directly or with sudo"
exit 1
fi
# kill apt-daily.service if running
if [[ $(systemctl list-units --all apt-daily.service | fgrep -c apt-daily.service) -gt 0 ]]; then
systemctl stop apt-daily.service > /dev/null 2>&1
systemctl kill --kill-who=all apt-daily.service > /dev/null 2>&1
# wait until `apt-get updated` has been killed
while ! (systemctl list-units --all apt-daily.service | fgrep -q dead)
do
sleep 1;
done
fi
apt-get -qq update
if [ $(dpkg-query -W -f='${Status}' git 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo "Installing git"
apt-get -yqq install git 2>&1 >> /dev/null
@@ -61,19 +34,6 @@ if [ -d /etc/rtinst ] && [ -z $branch ]; then
branch=$(basename "$(git symbolic-ref -q HEAD)")
if [ -z $branch ]; then
branch=$(git describe --tags --exact-match)
if [ ${branch:0:1} = v ]; then
latest=$(basename "$(git ls-remote --tags https://github.com/arakasi72/rtinst.git | grep -o 'refs/tags/v.*' | sort -V | tail -1)")
if [ $branch != $latest ]; then
echo "Updating from $branch to $latest"
branch=$latest
else
echo "Already using the latest version, rtinst $branch"
echo -n "Do you wish to reinstall rtinst y/n? "
if ! ask_user; then
exit
fi
fi
fi
fi
if [ $(git ls-remote --tags --heads https://github.com/arakasi72/rtinst.git $branch | wc -l) -eq 0 ]; then
echo "$branch has been deleted, using latest numbered release instead"
@@ -94,20 +54,15 @@ if [ $(git ls-remote --tags --heads https://github.com/arakasi72/rtinst.git $bra
exit
fi
echo "Installing rtinst $branch"
cd
rm -fr /etc/rtinst
git clone -q https://github.com/arakasi72/rtinst.git /etc/rtinst
cd /etc/rtinst
git checkout $branch > /dev/null 2>&1
git checkout $branch
cd
ln -sf /etc/rtinst/scripts/* /usr/local/bin
ln -sf /etc/rtinst/rtsetup /usr/local/bin
echo "Installation complete"
echo
echo "You can now run rtinst and the additional supporting scripts"
if [ "$rundir" != "/etc/rtinst" ]; then
rm -f $rundir/rtsetup
fi
+8 -26
View File
@@ -287,13 +287,11 @@ if ! [ -d "$home/rtorrent/watch" ]; then
mkdir $home/rtorrent/watch
fi
if [ -z "$webpass" ] && [ -z $(grep -s $user $passfile) ]; then
if [ -z "$webpass" ]; then
webpass=$(genpasswd)
fi
if [ ! -z "$webpass" ]; then
htpasswd -b $passfile $user $webpass
fi
htpasswd -b $passfile $user $webpass
cp -f /etc/rtinst/conf/rtorrent.rc $home/.rtorrent.rc
@@ -323,6 +321,7 @@ unzip -o autodl-irssi.zip >> /dev/null 2>&1
rm autodl-irssi.zip
cp autodl-irssi.pl autorun/
mkdir -p $home/.autodl
touch $home/.autodl/autodl.cfg && touch $home/.autodl/autodl2.cfg
echo "<?php" > /var/www/rutorrent/conf/users/$user/plugins/autodl-irssi/conf.php
echo >> /var/www/rutorrent/conf/users/$user/plugins/autodl-irssi/conf.php
@@ -332,25 +331,13 @@ echo >> /var/www/rutorrent/conf/users/$user/plugins/autodl-irssi/conf.php
echo "?>" >> /var/www/rutorrent/conf/users/$user/plugins/autodl-irssi/conf.php
cd $home/.autodl
if [ -f "autodl.cfg" ]; then
if (grep -sq gui-server-port autodl.cfg) && (grep -sq gui-server-password autodl.cfg); then
sed -i "/gui-server-port/ c\gui-server-port = $adlport" autodl.cfg
sed -i "/gui-server-password/ c\gui-server-password = $adlpass" autodl.cfg
else
sed -i '/gui-server-port/ d' autodl.cfg
sed -i '/gui-server-password/ d' autodl.cfg
echo >> autodl.cfg
sed -i "1s/^/[options]\ngui-server-port = $adlport\ngui-server-password = $adlpass\n/" autodl.cfg
fi
else
echo "[options]" > autodl.cfg
echo "gui-server-port = $adlport" >> autodl.cfg
echo "gui-server-password = $adlpass" >> autodl.cfg
fi
echo "[options]" > autodl2.cfg
echo "gui-server-port = $adlport" >> autodl2.cfg
echo "gui-server-password = $adlpass" >> autodl2.cfg
chown -R $user:$user $home
chown -R www-data:www-data /var/www/rutorrent
chmod -R 755 /var/www/rutorrent
if [ -z "$(crontab -u $user -l | grep "$cronline1")" ]; then
(crontab -u $user -l; echo "$cronline1" ) | crontab -u $user -
@@ -384,7 +371,6 @@ echo
### WRITE RTINST.INFO ###
###############################
echo > $home/rtinst.info
if groups $user | grep -q -E ' sshuser(\s|$)' || groups $user | grep -q -E ' sudo(\s|$)'; then
echo "$user has SSH access on port $sshport" | tee -a $home/rtinst.info
echo
@@ -396,11 +382,7 @@ echo "https downloads can be accessed at https://$serverip/download/$user" | tee
echo
fi
echo "rutorrent can be accessed at https://$serverip/rutorrent" | tee -a $home/rtinst.info
if [ -z $webpass ]; then
echo "rutorrent password has not been changed" | tee -a $home/rtinst.info
else
echo "rutorrent password set to $webpass" | tee -a $home/rtinst.info
fi
echo "rutorrent password set to $webpass" | tee -a $home/rtinst.info
echo "to change rutorrent password enter: rtpass" | tee -a $home/rtinst.info
echo
echo "The above info is stored at $home/rtinst.info"
+6 -8
View File
@@ -16,17 +16,16 @@ select_task(){
while true
do
read answer
case $answer in [1] ) rtsetup && return 0 ;;
case $answer in [1] ) rtgetscripts && return 0 ;;
[2] ) rtadduser && return 0 ;;
[3] ) rtremove && return 0 ;;
[4] ) rtdload $rtdaction && return 0 ;;
[5] ) rtupdate && return 0 ;;
[6] ) rutupgrade && return 0 ;;
[7] ) rtwebmin && return 0 ;;
[8] ) rtletsencrypt && return 0 ;;
[9] ) rtsslcert && return 0 ;;
[8] ) rtsslcert && return 0 ;;
[Qq] ) exit ;;
* ) echo "Enter 1-9 (q to quit)";;
* ) echo "Enter 1-8 (q to quit)";;
esac
done
}
@@ -47,15 +46,14 @@ clear
echo "For more information go to:"
echo "https://github.com/arakasi72/rtinst/blob/master/README.md"
echo "Select from the following options:"
echo "1.) rtsetup - update the rtinst scripts"
echo "1.) rtgetscripts - update the rtinst scripts"
echo "2.) rtadduser - add new user"
echo "3.) rtremove - delete a user"
echo "4.) rtdload $rtdaction - $rtdaction https downloads"
echo "4.) rtdload $rtdaction - $rtdaction http downloads"
echo "5.) rtupdate - up/down-grade rtorent/libtorrent"
echo "6.) rutupgrade - upgrade to latest version of RuTorrent"
echo "7.) rtwebmin - install webmin"
echo "8.) rtletsencrypt - install Lets Encypt ssl certificate"
echo "9.) rtsslcert - generate new self signed ssl certificate"
echo "8.) rtsslcert - generate new self signed ssl certificate"
echo "Enter option or q to quit"
select_task
+66
View File
@@ -0,0 +1,66 @@
#!/bin/bash
######################################################################
#
# Copyright (c) 2015 arakasi72 (https://github.com/arakasi72)
#
# --> Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
#
######################################################################
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin:/sbin
if [ "$(id -u)" != "0" ]; then
echo "Must be run as root, directly or with sudo"
exit 1
fi
if [ ! -d /etc/rtinst ]; then
git clone https://github.com/arakasi72/rtinst.git /etc/rtinst
fi
cd /etc/rtinst
branch=$(basename "$(git symbolic-ref -q HEAD)")
# if branch is empty then it is a tag
if [ -z $branch ]; then
branch=$(git describe --tags --exact-match)
if [ ${branch:0:1} = v ]; then
git fetch origin
latest=$(git tag | sort -V | grep ^v | tail -1)
if [ $branch = $latest ]; then
echo "Already using the latest release: $branch"
exit
fi
# update to latest release
echo "rtinst updating from $branch to $latest"
cd
rm -fr /etc/rtinst
git clone -q https://github.com/arakasi72/rtinst.git /etc/rtinst
cd /etc/rtinst
git checkout -q $latest
branch=$(git describe --tags --exact-match)
echo "rtinst $branch installed"
cd
ln -sf /etc/rtinst/scripts/* /usr/local/bin
ln -sf /etc/rtinst/rtsetup /usr/local/bin
exit
else
echo "$branch is not a branch, or a numbered release"
echo "Run rtsetup if you want to switch to another build"
exit
fi
fi
if [ $(git ls-remote --heads https://github.com/arakasi72/rtinst.git $branch | wc -l) -eq 0 ]; then
echo "$branch no longer appears to exist"
echo "run rtsetup to reset branch"
else
git fetch --all
git reset --hard origin/$branch 2>&1 >> /dev/null
git pull origin $branch
ln -sf /etc/rtinst/scripts/* /usr/local/bin
ln -sf /etc/rtinst/rtsetup /usr/local/bin
fi
+231 -436
View File
@@ -14,17 +14,11 @@
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin:/sbin
# if left blank will install latest version of rtorrent, or set to a specific release E.G. '0.9.6' to install that release
rtorrentrel='0.9.6'
#url's of the major components
rt_url="http://rtorrent.net/downloads/"
xmlrpc_url="https://svn.code.sf.net/p/xmlrpc-c/code/advanced/"
xmlrpc_url_alt="https://github.com/mirror/xmlrpc-c"
ru_url="https://github.com/Novik/ruTorrent/"
adl_url="https://github.com/autodl-community/"
libtorrentrel='0.13.6'
rtorrentloc='http://rtorrent.net/downloads/rtorrent-'$rtorrentrel'.tar.gz'
libtorrentloc='http://rtorrent.net/downloads/libtorrent-'$libtorrentrel'.tar.gz'
xmlrpcloc='https://svn.code.sf.net/p/xmlrpc-c/code/stable'
if [ $(dpkg-query -W -f='${Status}' lsb-release 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo "Installing lsb-release"
@@ -38,82 +32,45 @@ relno=$(lsb_release -sr | cut -d. -f1)
if [ "$relno" = "16" ] || [ "$relno" = "17" ] || [ "$relno" = "9" ]; then
phpver=php7.0
phploc=/etc/php/7.0
libcver=libcurl3
fi
if [ $(lsb_release -sr) = "17.10" ]; then
phpver=php7.1
phploc=/etc/php/7.1
libcver=libcurl3
fi
if [ "$relno" = "18" ] || [ "$relno" = "19" ]; then
phpver=php7.2
phploc=/etc/php/7.2
libcver=libcurl4
fi
if [ "$relno" = "10" ]; then
phpver=php7.3
phploc=/etc/php/7.3
libcver=libcurl4
fi
serveripa=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
serveripb=$(wget -qO- ipecho.net/plain)
if [ "$serveripa" = "$serveripb" ]; then
serverip=$serveripa
geoipver=php-geoip
else
echo "Select the IP address to use:"
echo "1.) "$serveripa
echo "2.) "$serveripb
while true
do
read answer
case $answer in [1] ) serverip=$serveripa && break ;;
[2] ) serverip=$serveripb && break ;;
* ) echo "Enter 1 or 2";;
esac
done
phpver=php5
phploc=/etc/php5
geoipver=php5-geoip
fi
echo "IP set to "$serverip
export logfile="/dev/null"
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
webpass=''
cronline1="@reboot sleep 10; /usr/local/bin/rtcheck irssi rtorrent"
cronline2="*/10 * * * * /usr/local/bin/rtcheck irssi rtorrent"
dlflag=1
portdefault=1
skip_rt=1
logfile="/dev/null"
install_rt=0
sshport=''
rudevflag=1
rurelease=master
passfile='/etc/nginx/.htpasswd'
package_list="sudo nano autoconf build-essential ca-certificates comerr-dev curl dtach htop irssi libcppunit-dev $libcver libncurses5-dev libterm-readline-gnu-perl libsigc++-2.0-dev libperl-dev libtool libxml2-dev ncurses-base ncurses-term ntp patch pkg-config $phpver-fpm $phpver $phpver-cli $phpver-dev $phpver-curl php-geoip $phpver-xmlrpc $phpver-xml python-scgi screen subversion texinfo unzip zlib1g-dev libcurl4-openssl-dev mediainfo software-properties-common aptitude $phpver-json nginx-full apache2-utils git libarchive-zip-perl libnet-ssleay-perl libhtml-parser-perl libxml-libxml-perl libjson-perl libjson-xs-perl libxml-libxslt-perl libjson-rpc-perl libarchive-zip-perl"
package_list="sudo nano autoconf build-essential ca-certificates comerr-dev curl cfv dtach htop irssi libcloog-ppl-dev libcppunit-dev libcurl3 libncurses5-dev libterm-readline-gnu-perl libsigc++-2.0-dev libperl-dev libtool libxml2-dev ncurses-base ncurses-term ntp patch pkg-config $phpver-fpm $phpver $phpver-cli $phpver-dev $phpver-curl $geoipver $phpver-mcrypt $phpver-xmlrpc python-scgi screen subversion texinfo unzip zlib1g-dev libcurl4-openssl-dev mediainfo python-software-properties software-properties-common aptitude $phpver-json nginx-full apache2-utils git libarchive-zip-perl libnet-ssleay-perl libhtml-parser-perl libxml-libxml-perl libjson-perl libjson-xs-perl libxml-libxslt-perl libjson-rpc-perl libarchive-zip-perl"
Install_list=""
unixpass=""
passflag=0
forceyes=1
selfsign=1
rut_add_users=1
###############################
### FUNCTIONS ###
###############################
#function to check if a web site is reachable
check_url() {
if [[ `wget -S --spider $1 2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then return 0; else return 1; fi
}
# checks if an application is installed
installed() {
hash $1 2>/dev/null
#exit on error function
error_exit() {
echo "Error: $1"
echo "This is most likely a network error, if your network is working, then it is likely a temporary issue with the relevant file server"
echo "Run 'bash rtinst.sh -l' for detailed output to rtinst.log"
echo "Once issue is resolved the script can be run again to complete installation"
if ! [ -z "$sshport" ]; then
echo "SSH Port was set before script was stopped to $sshport"
echo "make sure you can login before closing this session"
fi
exit 1
}
#function to check if string is valid format for an ip address
@@ -140,25 +97,6 @@ local genln=$1
tr -dc A-Za-z0-9 < /dev/urandom | head -c ${genln} | xargs
}
#function executed if the script finishes early
early_exit() {
echo "Installation is incomplete. Run rtinst again to complete"
echo
if hash rtorrent >> /dev/null 2>&1; then
rt_current=$(rtorrent -h | grep -om 1 "[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}")
echo "rtorrent $rt_current installed"
else
echo "rtorrent was not installed"
fi
echo
echo "FTP Port set to $ftpport"
echo
echo "IMPORTANT - SSH Port has been set to: $sshport"
echo "IMPORTANT - SSH Port has been set to: $sshport"
echo "IMPORTANT - SSH Port has been set to: $sshport"
exit 1
}
#function to set a user input password
set_pass() {
local localpass
@@ -256,18 +194,17 @@ if [ "$(id -u)" != "0" ]; then
fi
# determine system
if ([ "$osname" = "Ubuntu" ] && [ $relno -ge 16 ]) || ([ "$osname" = "Debian" ] && [ $relno -ge 9 ]) || ([ "$osname" = "Raspbian" ] && [ $relno -ge 9 ]); then
if ([ "$osname" = "Ubuntu" ] && [ $relno -ge 12 ] && [ $relno -le 17 ]) || ([ "$osname" = "Debian" ] && [ $relno -ge 7 ] && [ $relno -le 9 ]) || ([ "$osname" = "Raspbian" ] && [ $relno -ge 7 ] && [ $relno -le 8 ]); then
echo $fullrel
else
echo $fullrel
echo "Only Ubuntu release 16 and later, and Debian and Raspbian release 9 and later, are supported"
echo "Only Ubuntu releases 12 to 17, and Debian and Raspbian releases 7 to 9, are supported"
echo "Your system does not appear to be supported"
echo "Check https://github.com/arakasi72/rtinst/wiki/Installing-on-Older-OS to see if it is supported by an earlier rtinst release"
exit
fi
# get options
OPTS=$(getopt -n "$0" -o dltrmysu:p:w: --long "dload,log,ssh-default,rutorrent-stable,rutorrent-master,force-yes,self-signed,user:,password:,webpass:" -- "$@")
OPTS=$(getopt -n "$0" -o dltryu:p:w: --long "dload,log,ssh-default,rutorrent-stable,force-yes,user:,password:,webpass:" -- "$@")
eval set -- "$OPTS"
@@ -277,9 +214,7 @@ while true; do
-l | --log ) logfile="$HOME/rtinst.log"; shift ;;
-t | --ssh-default ) portdefault=0; shift;;
-r | --rutorrent-stable ) rudevflag=1; shift;;
-m | --rutorrent-master ) rudevflag=0; shift;;
-y | --force-yes ) forceyes=0; shift;;
-s | --self-signed ) selfsign=0; shift;;
-u | --user ) user="$2"; shift; shift;;
-p | --password ) unixpass="$2"; shift; shift;;
-w | --webpass ) webpass="$2"; shift; shift;;
@@ -294,54 +229,13 @@ if [ $# -gt 0 ]; then
exit 1
fi
# check required web repos are accessible
os_repo=0
major_repo=0
sed -i "s/\/debian\s/\/debian\/ /g" /etc/apt/sources.list
echo
echo "Checking the web sites we will need are accessible"
echo "Checking $osname mirrors"
for i in $(cat /etc/apt/sources.list | grep "^deb http" | cut -d' ' -f2 | uniq ); do
echo -n $i": "
check_url $i && echo "OK" || { echo "FAIL"; os_repo=1; }
done
echo
echo "Checking major 3rd party components"
echo -n "Rtorrent: "; check_url $rt_url && echo "OK" || { echo "FAIL"; major_repo=1; }
echo -n "xmlrpc-c: "; check_url $xmlrpc_url && echo "OK" || xmlrpc_repo=1
if [[ $xmlrpc_repo = 1 ]]; then
xmlrpc_url=$xmlrpc_url_alt
check_url $xmlrpc_url && echo "OK" || { echo "FAIL"; major_repo=1; }
fi
echo -n "RuTorrent: ";check_url $ru_url && echo "OK" || { echo "FAIL"; major_repo=1; }
echo -n "Autodl-irssi: "; check_url $adl_url && echo "OK" || { echo "FAIL"; major_repo=1; }
if [ $os_repo = 1 ]; then
echo "Some of your $osname mirrors are down, try again later"
exit 1
fi
if [ $major_repo = 1 ]; then
echo "Some of the repositories we need are not currently available."
echo "We will continue for now, but may not be able to finish"
echo "You can rerun rtinst later to complete the installation if needed"
fi
echo
# check IP Address
[ $forceyes = 1 ] && enter_ip
echo "Your server's IP is set to $serverip"
export serverip
# Determine domain name using server ip address
export serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
if [ -z "$serverdn" ]; then
echo "Unable to determine domain"
else
@@ -349,21 +243,22 @@ else
fi
#check rtorrent installation
if installed rtorrent; then
rt_current=$(rtorrent -h | grep -om 1 "[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}")
if hash rtorrent >> /dev/null 2>&1; then
rtorrent_current=$(rtorrent -h | grep -m 1 'version')
rtorrent_current=${rtorrent_current#*version }
if [ $forceyes = 1 ]; then
echo "rtorrent $rt_current has been detected."
echo "rtorrent $rtorrent_current has been detected."
echo -n "Do you wish to skip rtorrent compilation? "
if ask_user; then
skip_rt=0
install_rt=1
echo "rtorrent installation will be skipped."
else
skip_rt=1
install_rt=0
echo "rtorrent will be re-installed"
fi
else
skip_rt=0
echo "rtorrent $rt_current has been detected."
install_rt=1
echo "rtorrent $rtorrent_current has been detected."
echo "rtorrent installation will be skipped."
fi
fi
@@ -374,7 +269,7 @@ fi
# set and prepare user
if [ -z "$user" ]; then
if [ "$SUDO_USER" = "root" ] || [ -z "$SUDO_USER" ]; then
if [ -z "$SUDO_USER" ]; then
echo "Enter the name of the user to install to"
echo "This will be your primary user"
echo "It can be an existing user or a new user"
@@ -405,7 +300,7 @@ else
adduser --gecos "" $user
else
adduser --gecos "" $user --disabled-password
echo "$user:$unixpass" | chpasswd
echo "$user:$unixpass" | sudo chpasswd
fi
fi
@@ -413,57 +308,14 @@ home=$(eval echo "~$user")
#set password for rutorrent
if [ -z "$webpass" ] && [ $forceyes = 0 ]; then
if [ -z $(grep -s $user $passfile) ]; then
webpass=$(genpasswd)
passflag=1
else
passflag=2
fi
webpass=$(genpasswd)
passflag=1
fi
if [ -z "$webpass" ] && [ $passflag != 2 ]; then
if [ ! -z $(grep -s $user $passfile) ]; then
echo "There is an existing RuTorrent password for $user"
echo -n "Use existing password y/n ? "
if ask_user; then
passflag=2
fi
fi
if [ $passflag != 2 ]; then
echo "Set Password for RuTorrent web client"
webpass=$(set_pass)
passflag=$?
fi
fi
rut_user_list=$(ls /var/www/rutorrent/conf/users 2>/dev/null | sed "s/$user//g")
for rut_user in $rut_user_list; do
if ! id -u $rut_user >/dev/null 2>&1; then
rut_user_list=$(echo $rut_user_list | sed "s/$rut_user//g")
fi
done
if [ -z "$rut_user_list" ]; then
echo "No additional users to add"
else
echo "These users have been detected:"
for rut_user in $rut_user_list; do
echo $rut_user
done
if [ $forceyes = 0 ]; then
echo "Users will be added"
rut_add_users=0
else
echo -n "Add them to rutorrent y/n ? "
if ask_user; then
rut_add_users=0
fi
fi
if [ -z "$webpass" ]; then
echo "Set Password for RuTorrent web client"
webpass=$(set_pass)
passflag=$?
fi
#Interaction ended message
@@ -472,28 +324,23 @@ echo "No more user input required, you can complete unattended"
echo "It will take approx 10 minutes for the script to complete"
echo
# kill apt-daily.service if running
if [[ $(systemctl list-units --all apt-daily.service | fgrep -c apt-daily.service) -gt 0 ]]; then
systemctl stop apt-daily.service >> $logfile 2>&1
systemctl kill --kill-who=all apt-daily.service >> $logfile 2>&1
# wait until `apt-get updated` has been killed
while ! (systemctl list-units --all apt-daily.service | fgrep -q dead)
do
sleep 1;
done
#update amd upgrade system
if [ "$fullrel" = "Ubuntu 12.04.5 LTS" ]; then
cp /etc/apt/sources.list /etc/apt/sources.list.bak
cp -f /etc/rtinst/conf/sources1204 /etc/apt/sources.list
fi
#update amd upgrade system
echo "Updating package lists" | tee $logfile
apt-get -qq update | tee -a $logfile
apt-get update 2>&1 >>$logfile | tee -a $logfile
if ! [ $? = 0 ]; then
error_exit "Problem updating packages."
fi
echo "Upgrading packages" | tee -a $logfile
export DEBIAN_FRONTEND=noninteractive
apt-get -qq upgrade >> $logfile 2>&1
apt-get -y upgrade 2>&1 >>$logfile | tee -a $logfile
if ! [ $? = 0 ]; then
echo "Problem upgrading packages. Run 'apt-get upgrade' successfully and rerun the script" && exit
error_exit "Problem upgrading packages."
fi
apt-get clean && apt-get autoclean >> $logfile 2>&1
@@ -511,31 +358,20 @@ for package_name in $package_list
fi
done
test -z "$install_list" || apt-get -qq install $install_list >> $logfile 2>&1
if ! [ $? = 0 ]; then
echo "Problem installing packages. Check log and rerun once it is resolved" && exit
fi
if [[ $phpver =~ php7.[0-9] ]]; then
apt-get -qq install $phpver-mbstring >> $logfile 2>&1
fi
test -z "$install_list" || apt-get -y install $install_list 2>&1 >>$logfile | tee -a $logfile
#install unrar package
if [ $osname = "Debian" ] && ! installed unrar; then
if [ $osname = "Debian" ] && ! hash unrar >> /dev/null 2>&1; then
echo "Installing rar/unrar"
cd $home
attempts=0
until [ -d rar ] || [ $attempts -gt 5 ]
do
attempts=$(( $attempts + 1 ))
attempts=$(( $attempts + 1 ))
if [ "$(uname -m)" = "x86_64" ]; then
wget http://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz >> $logfile 2>&1
tar xvzf rarlinux-x64-5.5.0.tar.gz >> $logfile 2>&1
rm rarlinux-x64-5.5.0.tar.gz
curl -s --connect-timeout 10 http://www.rarlab.com/rar/rarlinux-x64-5.4.0.tar.gz | tar xz 2>/dev/null
elif [ "$(uname -m)" = "x86_32" ]; then
wget http://www.rarlab.com/rar/rarlinux-5.5.0.tar.gz >> $logfile 2>&1
tar xvzf rarlinux-5.5.0.tar.gz >> $logfile 2>&1
rm rarlinux-5.5.0.tar.gz
curl -s --connect-timeout 10 http://www.rarlab.com/rar/rarlinux-5.4.0.tar.gz | tar xz 2>/dev/null
fi
done
if [ -d rar ]; then
@@ -544,10 +380,10 @@ if [ $osname = "Debian" ] && ! installed unrar; then
rm -r $home/rar
fi
elif [ $osname = "Ubuntu" ]; then
apt-get -qq install unrar >> $logfile 2>&1
apt-get -y install unrar >> $logfile 2>&1
fi
if installed unrar; then
if hash unrar >> /dev/null 2>&1; then
echo "rar/unrar installed"
else
echo "rar/unrar install failed"
@@ -556,7 +392,18 @@ fi
#install ffmpeg
if ! [ $osname = "Raspbian" ] && [ $(dpkg-query -W -f='${Status}' "ffmpeg" 2>/dev/null | grep -c "ok installed") = 0 ]; then
echo "Installing ffmpeg"
apt-get -qq install ffmpeg >> $logfile 2>&1
if [ $relno = 14 ]; then
apt-add-repository -y ppa:mc3man/trusty-media >> $logfile 2>&1 || error_exit "Problem adding to repository from - https://launchpad.net/~mc3man/+archive/ubuntu/ppa"
apt-get update >> $logfile 2>&1 || error_exit "problem updating package lists"
apt-get -y install ffmpeg >> $logfile 2>&1
elif [ $relno = 8 ]; then
grep "deb http://www.deb-multimedia.org jessie main" /etc/apt/sources.list >> /dev/null || echo "deb http://www.deb-multimedia.org jessie main" >> /etc/apt/sources.list
apt-get update >> $logfile 2>&1 || error_exit "problem updating package lists"
apt-get -y --force-yes install deb-multimedia-keyring >> $logfile 2>&1
apt-get -y --force-yes install ffmpeg >> $logfile 2>&1
else
apt-get -y install ffmpeg >> $logfile 2>&1
fi
fi
echo "Completed installation of required packages "
@@ -597,7 +444,6 @@ sed -i "/^\(\s\|#\)*X11Forwarding /c\X11Forwarding no" /etc/ssh/sshd_config
sed -i '/^\s*PermitRootLogin/ c\PermitRootLogin no' /etc/ssh/sshd_config
sed -i '/^\s*PasswordAuthentication no/ c\#PasswordAuthentication no' /etc/ssh/sshd_config
echo >> /etc/ssh/sshd_config
grep -Pq "^[#\s]*UsePAM" /etc/ssh/sshd_config && sed -i '/^\(\s\|#\)*UsePAM/ c\UsePAM yes' /etc/ssh/sshd_config || echo "UsePAM yes" >> /etc/ssh/sshd_config
grep -Pq "^[#\s]*UseDNS" /etc/ssh/sshd_config && sed -i '/^\(\s\|#\)*UseDNS/ c\UseDNS no' /etc/ssh/sshd_config || echo "UseDNS no" >> /etc/ssh/sshd_config
@@ -625,15 +471,7 @@ echo "SSH port set to $sshport"
### SSL CERTIFICATES ###
###############################
# calls the script rtsslcert to generate the ssl certificated for vsftpd and nginx
if rtletsencrypt ; then
leflag=0
echo "Lets Encrypt Certificates installed"
else
rtsslcert -d
leflag=1
echo "Self signed certificats installed"
fi
rtsslcert -d $serverip
###############################
### INSTALL FTP ###
@@ -643,7 +481,19 @@ ftpport=$(random 41005 48995)
if [ $(dpkg-query -W -f='${Status}' "vsftpd" 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo "Installing vsftpd" | tee -a $logfile
apt-get -y install vsftpd >> $logfile 2>&1
if [ $relno = 12 ]; then
add-apt-repository -y ppa:thefrontiergroup/vsftpd >> $logfile 2>&1
apt-get update >> $logfile 2>&1
apt-get -y install vsftpd >> $logfile 2>&1
elif [ $relno = 7 ]; then
echo "deb http://ftp.cyconet.org/debian wheezy-updates main non-free contrib" >> /etc/apt/sources.list.d/wheezy-updates.cyconet2.list
aptitude update >> $logfile 2>&1 || error_exit "problem updating package lists"
aptitude -o Aptitude::Cmdline::ignore-trust-violations=true -y install -t wheezy-updates debian-cyconet-archive-keyring vsftpd >> $logfile 2>&1 || error_exit "Unable to download vsftpd"
else
apt-get -y install vsftpd >> $logfile 2>&1
fi
fi
sed -i '/^\(\s\|#\)*anonymous_enable/ c\anonymous_enable=NO' /etc/vsftpd.conf
@@ -658,12 +508,6 @@ sed -i 's/^\s*listen_ipv6/#listen_ipv6/g' /etc/vsftpd.conf
grep ^listen_port /etc/vsftpd.conf > /dev/null || echo "listen_port=$ftpport" >> /etc/vsftpd.conf
if [[ $LANG =~ .*[Uu][Tt][Ff]-?8.* ]]; then
grep -Pq "utf8_filesystem=" /etc/vsftpd.conf && sed -i '/^\(\s\|#\)*utf8_filesystem=/ c\utf8_filesystem=YES' /etc/vsftpd.conf || echo "utf8_filesystem=YES" >> /etc/vsftpd.conf
fi
grep -Pq "use_sendfile=" /etc/vsftpd.conf && sed -i '/^\(\s\|#\)*use_sendfile=/ c\use_sendfile=NO' /etc/vsftpd.conf || echo "use_sendfile=NO" >> /etc/vsftpd.conf
grep -Pq "^\s*ssl_enable" /etc/vsftpd.conf && sed -i '/^\s*ssl_enable/ c\ssl_enable=YES' /etc/vsftpd.conf || echo "ssl_enable=YES" >> /etc/vsftpd.conf
grep -Pq "^\s*chroot_local_user" /etc/vsftpd.conf && sed -i '/^\s*chroot_local_user/ c\chroot_local_user=YES' /etc/vsftpd.conf || echo "chroot_local_user=YES" >> /etc/vsftpd.conf
grep -Pq "^\s*allow_writeable_chroot" /etc/vsftpd.conf && sed -i '/^\s*allow_writeable_chroot/ c\allow_writeable_chroot=YES' /etc/vsftpd.conf || echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf
@@ -676,109 +520,58 @@ grep -Pq "^\s*ssl_tlsv1" /etc/vsftpd.conf && sed -i '/^\s*ssl_tlsv1/ c\ssl_tlsv
grep -Pq "^\s*require_ssl_reuse" /etc/vsftpd.conf && sed -i '/^\s*require_ssl_reuse/ c\require_ssl_reuse=NO' /etc/vsftpd.conf || echo "require_ssl_reuse=NO" >> /etc/vsftpd.conf
grep -Pq "^\s*ssl_ciphers" /etc/vsftpd.conf && sed -i '/^\s*ssl_ciphers/ c\ssl_ciphers=HIGH' /etc/vsftpd.conf || echo "ssl_ciphers=HIGH" >> /etc/vsftpd.conf
if [ $leflag = 0 ]; then
sed -i "/^\(\s\|#\)*rsa_cert_file/ c\rsa_cert_file=/etc/letsencrypt/live/$serverdn/fullchain.pem" /etc/vsftpd.conf
sed -i "/^\(\s\|#\)*rsa_private_key_file/ c\rsa_private_key_file=/etc/letsencrypt/live/$serverdn/privkey.pem" /etc/vsftpd.conf
fi
service vsftpd restart 1>> $logfile
ftpport=$(grep 'listen_port=' /etc/vsftpd.conf | sed 's/[^0-9]*//g')
echo "FTP port set to $ftpport"
###############################
### INSTALL NGINX ###
###############################
cd $home
if [ -f "/etc/apache2/ports.conf" ]; then
echo "Detected apache2. Changing apache2 port to 81 in /etc/apache2/ports.conf" | tee -a $logfile
sed -i "s/Listen 80/Listen 81/g" /etc/apache2/ports.conf
service apache2 stop >> $logfile 2>&1
fi
echo "Installing nginx" | tee -a $logfile
if [ $passflag != 2 ]; then
if [ -f $passfile ]; then
htpasswd -b $passfile $user $webpass >> $logfile 2>&1
else
htpasswd -c -b $passfile $user $webpass >> $logfile 2>&1
fi
fi
chown www-data:www-data $passfile
chmod 640 $passfile
sed -i "s/user www-data;/user www-data www-data;/g" /etc/nginx/nginx.conf
sed -i "s/worker_processes 4;/worker_processes 1;/g" /etc/nginx/nginx.conf
sed -i "s/pid \/run\/nginx\.pid;/pid \/var\/run\/nginx\.pid;/g" /etc/nginx/nginx.conf
sed -i "s/# server_tokens off;/server_tokens off;/g" /etc/nginx/nginx.conf
sed -i "s/access_log \/var\/log\/nginx\/access\.log;/access_log off;/g" /etc/nginx/nginx.conf
sed -i "s/error\.log;/error\.log crit;/g" /etc/nginx/nginx.conf
grep client_max_body_size /etc/nginx/nginx.conf > /dev/null 2>&1 || sed -i "/server_tokens off;/ a\ client_max_body_size 40m;\n" /etc/nginx/nginx.conf
sed -i "/upload_max_filesize/ c\upload_max_filesize = 40M" $phploc/fpm/php.ini
sed -i '/^;\?listen.owner/ c\listen.owner = www-data' $phploc/fpm/pool.d/www.conf
sed -i '/^;\?listen.group/ c\listen.group = www-data' $phploc/fpm/pool.d/www.conf
sed -i '/^;\?listen.mode/ c\listen.mode = 0660' $phploc/fpm/pool.d/www.conf
mkdir -p /var/www
if [ -d "/usr/share/nginx/www" ]; then
cp /usr/share/nginx/www/* /var/www
elif [ -d "/usr/share/nginx/html" ]; then
cp /usr/share/nginx/html/* /var/www
fi
mv -n /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
cp -f /etc/rtinst/conf/nginxsite /etc/nginx/sites-available/default
cp -f /etc/rtinst/conf/nginxsitedl /etc/nginx/sites-available/dload-loc
echo "location ~ \.php$ {" > /etc/nginx/conf.d/php
echo " fastcgi_split_path_info ^(.+\.php)(/.+)$;" >> /etc/nginx/conf.d/php
if [ "$phpver" = "php5" ]; then
echo " fastcgi_pass unix:/var/run/php5-fpm.sock;" >> /etc/nginx/conf.d/php
else
echo " fastcgi_pass unix:/var/run/php/$phpver-fpm.sock;" >> /etc/nginx/conf.d/php
fi
echo " fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;" >> /etc/nginx/conf.d/php
echo " fastcgi_index index.php;" >> /etc/nginx/conf.d/php
echo " include fastcgi_params;" >> /etc/nginx/conf.d/php
echo "}" >> /etc/nginx/conf.d/php
echo "location ~* \.(jpg|jpeg|gif|css|png|js|woff|ttf|svg|eot)$ {" > /etc/nginx/conf.d/cache
echo " expires 30d;" >> /etc/nginx/conf.d/cache
echo "}" >> /etc/nginx/conf.d/cache
if [ $leflag = 0 ]; then
sed -i "/^\(\s\|#\)*server_name/ c\ server_name $serverdn;" /etc/nginx/sites-available/default
sed -i "/ssl_certificate / c\ ssl_certificate /etc/letsencrypt/live/$serverdn/fullchain.pem;" /etc/nginx/sites-available/default
sed -i "/ssl_certificate_key / c\ ssl_certificate_key /etc/letsencrypt/live/$serverdn/privkey.pem;" /etc/nginx/sites-available/default
fi
service nginx restart && service $phpver-fpm restart
if [ $dlflag = 0 ]; then
rtdload enable
fi
###############################
### INSTALL RTORRENT ###
###############################
if [ $skip_rt = 1 ]; then
if [ -z $rtorrentrel ]; then
rtorrentrel='latest'
if [ $install_rt = 0 ]; then
cd $home
mkdir -p source
cd source
echo "Downloading rtorrent source files" | tee -a $logfile
rm -rf xmlrpc libtorrent-$libtorrentrel rtorrent-$rtorrentrel
svn co $xmlrpcloc xmlrpc >> $logfile 2>&1 || error_exit "Unable to download xmlrpc source files from https://svn.code.sf.net/p/xmlrpc-c/code/stable"
if [ $relno -eq 9 ]; then
git clone -q -b feature-bind --single-branch https://github.com/rakshasa/libtorrent.git libtorrent-$libtorrentrel
git clone -q -b feature-bind --single-branch https://github.com/rakshasa/rtorrent.git rtorrent-$rtorrentrel
else
curl -# $libtorrentloc | tar xz >> $logfile 2>&1 || error_exit "Unable to download libtorrent source files from http://libtorrent.rakshasa.no/downloads"
curl -# $rtorrentloc | tar xz >> $logfile 2>&1 || error_exit "Unable to download rtorrent source files from http://libtorrent.rakshasa.no/downloads"
fi
export home
# call the script rtupdate to install lib/rtorrent
rtupdate $rtorrentrel || early_exit
export -n home
cd xmlrpc
echo "Installing xmlrpc" | tee -a $logfile
./configure --prefix=/usr --disable-cplusplus >> $logfile 2>&1
make >> $logfile 2>&1
make install >> $logfile 2>&1
cd ../libtorrent-$libtorrentrel
echo "Installing libtorrent" | tee -a $logfile
./autogen.sh >> $logfile 2>&1
if [ $osname = "Raspbian" ]; then
./configure --prefix=/usr --disable-instrumentation >> $logfile 2>&1
else
./configure --prefix=/usr >> $logfile 2>&1
fi
make -j2 >> $logfile 2>&1
make install >> $logfile 2>&1
cd ../rtorrent-$rtorrentrel
echo "Installing rtorrent" | tee -a $logfile
./autogen.sh >> $logfile 2>&1
./configure --prefix=/usr --with-xmlrpc-c >> $logfile 2>&1
make -j2 >> $logfile 2>&1
make install >> $logfile 2>&1
ldconfig >> $logfile 2>&1
else
echo "skiping rtorrent installation" | tee -a $logfile
echo "skiping rtorrent installation" | tee -a $logfile
fi
echo "Configuring rtorrent" | tee -a $logfile
@@ -799,21 +592,24 @@ sed -i "s/<user name>/$user/g" $home/.rtorrent.rc
mkdir -p /var/www
cd /var/www
echo -n "RuTorrent: "; check_url $ru_url && echo "OK" || { echo "FAIL"; early_exit; }
if [ -d "/var/www/rutorrent" ]; then
rm -r /var/www/rutorrent
fi
if [ $rudevflag = 1 ]; then
rurelease=$(git ls-remote -t https://github.com/Novik/ruTorrent v\* | cut -d/ -f3 | sort -V | tail -1)
fi
echo "Installing Rutorrent ($rurelease)" | tee -a $logfile
wget -q https://github.com/Novik/ruTorrent/archive/$rurelease.tar.gz | tee -a $logfile
tar -xzf $rurelease.tar.gz
mv $(tar -tzf $rurelease.tar.gz | head -1) rutorrent
rm $rurelease.tar.gz
if [ $rudevflag = 1 ]; then
echo "Installing Rutorrent (stable)" | tee -a $logfile
wget --no-check-certificate https://bintray.com/artifact/download/novik65/generic/rutorrent-3.6.tar.gz >> $logfile 2>&1 || error_exit "Unable to download rutorrent files from https://bintray.com/artifact/download/novik65/generic/rutorrent-3.6.tar.gz"
wget --no-check-certificate https://bintray.com/artifact/download/novik65/generic/plugins-3.6.tar.gz >> $logfile 2>&1 || error_exit "Unable to download rutorrent plugin files from https://bintray.com/artifact/download/novik65/generic/plugins-3.6.tar.gz"
tar -xzf rutorrent-3.6.tar.gz
tar -xzf plugins-3.6.tar.gz
rm rutorrent-3.6.tar.gz
rm plugins-3.6.tar.gz
rm -r rutorrent/plugins
mv plugins rutorrent
else
echo "Installing Rutorrent (latest build)" | tee -a $logfile
git clone https://github.com/Novik/ruTorrent.git rutorrent >> $logfile 2>&1
fi
echo "Configuring Rutorrent" | tee -a $logfile
rm rutorrent/conf/config.php
@@ -839,6 +635,73 @@ if [ $osname = "Raspbian" ]; then
echo 'enabled = no' >> /var/www/rutorrent/conf/plugins.ini
fi
###############################
### INSTALL NGINX ###
###############################
cd $home
if [ -f "/etc/apache2/ports.conf" ]; then
echo "Detected apache2. Changing apache2 port to 81 in /etc/apache2/ports.conf" | tee -a $logfile
sed -i "s/Listen 80/Listen 81/g" /etc/apache2/ports.conf
service apache2 stop >> $logfile 2>&1
fi
echo "Installing nginx" | tee -a $logfile
htpasswd -c -b $passfile $user $webpass >> $logfile 2>&1
chown www-data:www-data $passfile
chmod 640 $passfile
sed -i "s/user www-data;/user www-data www-data;/g" /etc/nginx/nginx.conf
sed -i "s/worker_processes 4;/worker_processes 1;/g" /etc/nginx/nginx.conf
sed -i "s/pid \/run\/nginx\.pid;/pid \/var\/run\/nginx\.pid;/g" /etc/nginx/nginx.conf
sed -i "s/# server_tokens off;/server_tokens off;/g" /etc/nginx/nginx.conf
sed -i "s/access_log \/var\/log\/nginx\/access\.log;/access_log off;/g" /etc/nginx/nginx.conf
sed -i "s/error\.log;/error\.log crit;/g" /etc/nginx/nginx.conf
grep client_max_body_size /etc/nginx/nginx.conf > /dev/null 2>&1 || sed -i "/server_tokens off;/ a\ client_max_body_size 40m;\n" /etc/nginx/nginx.conf
sed -i "/upload_max_filesize/ c\upload_max_filesize = 40M" $phploc/fpm/php.ini
sed -i '/^;\?listen.owner/ c\listen.owner = www-data' $phploc/fpm/pool.d/www.conf
sed -i '/^;\?listen.group/ c\listen.group = www-data' $phploc/fpm/pool.d/www.conf
sed -i '/^;\?listen.mode/ c\listen.mode = 0660' $phploc/fpm/pool.d/www.conf
if [ -d "/usr/share/nginx/www" ]; then
cp /usr/share/nginx/www/* /var/www
elif [ -d "/usr/share/nginx/html" ]; then
cp /usr/share/nginx/html/* /var/www
fi
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.old
cp -f /etc/rtinst/conf/nginxsite /etc/nginx/sites-available/default
cp -f /etc/rtinst/conf/nginxsitedl /etc/nginx/sites-available/dload-loc
echo "location ~ \.php$ {" > /etc/nginx/conf.d/php
echo " fastcgi_split_path_info ^(.+\.php)(/.+)$;" >> /etc/nginx/conf.d/php
if [ $relno = 12 ]; then
echo " fastcgi_pass 127.0.0.1:9000;" >> /etc/nginx/conf.d/php
elif [ "$phpver" = "php7.0" ]; then
echo " fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;" >> /etc/nginx/conf.d/php
else
echo " fastcgi_pass unix:/var/run/php5-fpm.sock;" >> /etc/nginx/conf.d/php
fi
echo " fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;" >> /etc/nginx/conf.d/php
echo " fastcgi_index index.php;" >> /etc/nginx/conf.d/php
echo " include fastcgi_params;" >> /etc/nginx/conf.d/php
echo "}" >> /etc/nginx/conf.d/php
echo "location ~* \.(jpg|jpeg|gif|css|png|js|woff|ttf|svg|eot)$ {" > /etc/nginx/conf.d/cache
echo " expires 30d;" >> /etc/nginx/conf.d/cache
echo "}" >> /etc/nginx/conf.d/cache
service nginx restart && service $phpver-fpm restart
if [ $dlflag = 0 ]; then
rtdload enable
fi
###############################
### INSTALL AUTODL-IRSSI ###
###############################
@@ -850,13 +713,14 @@ adlpass=$(genpasswd $(random 12 16))
mkdir -p $home/.irssi/scripts/autorun
cd $home/.irssi/scripts
curl -sL http://git.io/vlcND | grep -Po '(?<="browser_download_url": ")(.*-v[\d.]+.zip)' | xargs wget --quiet -O autodl-irssi.zip
unzip -qq -o autodl-irssi.zip | tee -a $logfile
unzip -o autodl-irssi.zip >> $logfile 2>&1
rm autodl-irssi.zip
cp autodl-irssi.pl autorun/
mkdir -p $home/.autodl
touch $home/.autodl/autodl.cfg && touch $home/.autodl/autodl2.cfg
cd /var/www/rutorrent/plugins
git clone -q https://github.com/autodl-community/autodl-rutorrent.git autodl-irssi | tee -a $home/rtinst.info
git clone https://github.com/autodl-community/autodl-rutorrent.git autodl-irssi >> $logfile 2>&1 || error_exit "Unable to download autodl plugin files from https://github.com/autodl-community/autodl-irssi"
mkdir /var/www/rutorrent/conf/users/$user/plugins/autodl-irssi
@@ -870,23 +734,9 @@ echo >> /var/www/rutorrent/conf/users/$user/plugins/autodl-irssi/conf.php
echo "?>" >> /var/www/rutorrent/conf/users/$user/plugins/autodl-irssi/conf.php
cd $home/.autodl
rm -f autodl2.cfg
if [ -f "autodl.cfg" ]; then
if (grep -sq gui-server-port autodl.cfg) && (grep -sq gui-server-password autodl.cfg); then
sed -i "/gui-server-port/ c\gui-server-port = $adlport" autodl.cfg
sed -i "/gui-server-password/ c\gui-server-password = $adlpass" autodl.cfg
else
sed -i '/gui-server-port/ d' autodl.cfg
sed -i '/gui-server-password/ d' autodl.cfg
echo >> autodl.cfg
sed -i "1s/^/[options]\ngui-server-port = $adlport\ngui-server-password = $adlpass\n/" autodl.cfg
fi
else
echo "[options]" > autodl.cfg
echo "gui-server-port = $adlport" >> autodl.cfg
echo "gui-server-password = $adlpass" >> autodl.cfg
fi
echo "[options]" > autodl2.cfg
echo "gui-server-port = $adlport" >> autodl2.cfg
echo "gui-server-password = $adlpass" >> autodl2.cfg
###############################
### FINAL TASKS ###
@@ -895,12 +745,9 @@ fi
# set permissions
echo "Setting permissions, Starting services" | tee -a $logfile
chown -R www-data:www-data /var/www
chmod -R 755 /var/www/rutorrent
chown -R $user:$user $home
if [ $dlflag = 0 ]; then
find $home -type d -print0 | xargs -0 chmod 755
fi
cd $home
#allows users to change their rutorrent passwords
@@ -921,89 +768,37 @@ if [ -z "$(crontab -u $user -l | grep "\*/10 \* \* \* \* /usr/local/bin/rtcheck
(crontab -u $user -l; echo "$cronline2" ) | crontab -u $user - >> $logfile 2>&1
fi
# add aditional users if any
if [ $rut_add_users = 0 ]; then
for rut_user in $rut_user_list; do
echo "Adding $rut_user"
rtadduser -n -u $rut_user >> $logfile 2>&1
done
fi
###############################
### WRITE RTINST.INFO ###
###############################
ftp_current=$(apt-cache policy vsftpd | grep -o Installed.* | cut -d ' ' -f2)
rt_current=$(rtorrent -h | grep -om 1 "[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}")
ru_current=$(grep -m 1 version: /var/www/rutorrent/js/webui.js | cut -d \" -f2)
echo
echo "crontab entries made. rtorrent and irssi will start on boot for $user"
echo
echo "Summary of Installation (Important Information, please read" | tee $home/rtinst.info
echo "ftp client should be set to explicit ftp over tls using port $ftpport" | tee $home/rtinst.info
echo
if [ $dlflag = 0 ]; then
find $home -type d -print0 | xargs -0 chmod 755
fi
echo "If enabled, access https downloads at https://$serverip/download/$user" | tee -a $home/rtinst.info
echo
echo "rutorrent can be accessed at https://$serverip/rutorrent" | tee -a $home/rtinst.info
echo | tee $home/rtinst.info
echo "SSH Configured" | tee -a $home/rtinst.info
echo " SSH port set to $sshport" | tee -a $home/rtinst.info
echo " root login directly from SSH disabled"
echo " login with $user and switch to root using: sudo su"
echo | tee -a $home/rtinst.info
echo "FTP Server" | tee -a $home/rtinst.info
if installed vsftpd; then
echo " vsftpd $ftp_current installed" | tee -a $home/rtinst.info
echo " ftp port set to $ftpport" | tee -a $home/rtinst.info
echo " ftp client should be set to explicit ftp over tls using port $ftpport" | tee -a $home/rtinst.info
if [ $passflag = 1 ]; then
echo "rutorrent password set to $webpass" | tee -a $home/rtinst.info
else
echo " vsftpd is not installed" | tee -a $home/rtinst.info
echo "rutorrent password as set by user" | tee -a $home/rtinst.info
fi
echo | tee -a $home/rtinst.info
echo "rtorrent torrent client" | tee -a $home/rtinst.info
if installed rtorrent; then
echo " rtorrent $rt_current installed" | tee -a $home/rtinst.info
echo " crontab entries made. rtorrent and irssi will start on boot for $user" | tee -a $home/rtinst.info
else
echo " rtorrent was not installed" | tee -a $home/rtinst.info
fi
echo | tee -a $home/rtinst.info
echo "RuTorrent Web GUI" | tee -a $home/rtinst.info
if [ -z $ru_current ]; then
echo " RuTorrent was not installed" | tee -a $home/rtinst.info
else
echo " RuTorrent $ru_current installed" | tee -a $home/rtinst.info
echo " rutorrent can be accessed at https://$serverdn/rutorrent" | tee -a $home/rtinst.info
if [ $passflag = 1 ]; then
echo " rutorrent password set to $webpass" | tee -a $home/rtinst.info
elif [ $passflag = 2 ]; then
echo " rutorrent password has not been changed" | tee -a $home/rtinst.info
else
echo " rutorrent password as set by user" | tee -a $home/rtinst.info
fi
echo " to change rutorrent password enter: rtpass" | tee -a $home/rtinst.info
echo | tee -a $home/rtinst.info
echo " If enabled, access https downloads at https://$serverdn/download/$user" | tee -a $home/rtinst.info
fi
echo | tee -a $home/rtinst.info
echo "IMPORTANT: SSH Port set to $sshport" | tee -a $home/rtinst.info
echo "IMPORTANT: SSH Port set to $sshport"
echo "IMPORTANT: SSH Port set to $sshport"
echo "Please ensure you can login BEFORE closing this session"
echo "to change rutorrent password enter: rtpass" | tee -a $home/rtinst.info
echo
echo "IMPORTANT: SSH Port set to $sshport - Ensure you can login before closing this session"
echo "ssh port changed to $sshport" | tee -a $home/rtinst.info > /dev/null
echo
echo "The above information is stored in rtinst.info in your home directory."
echo "To see contents enter: cat $home/rtinst.info"
echo
echo "To install webmin enter: sudo rtwebmin"
echo
echo "SCROLL UP IF NEEDED TO READ ALL THE SUMMARY INFO"
echo "PLEASE REBOOT YOUR SYSTEM ONCE YOU HAVE NOTED THE ABOVE INFORMATION"
echo | tee -a $home/rtinst.info
echo "Thank You for choosing rtinst" | tee -a $home/rtinst.info
echo
chown $user rtinst.info
-109
View File
@@ -1,109 +0,0 @@
#!/bin/bash
#########################################################################################
#
# Copyright (c) 2015 arakasi72 (https://github.com/arakasi72)
#
# --> Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
#
#########################################################################################
headless=0
osname=$(lsb_release -si)
[ -z $logfile ] && logfile="/dev/null"
if [ -z $serverip ]; then
headless=1
fi
#check it is being run as root
if [ "$(id -u)" != "0" ]; then
echo "Must be run from root or using sudo" && exit 1
fi
if [ $headless = 1 ]; then
serveripa=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
serveripb=$(wget -qO- ipecho.net/plain)
if [ "$serveripa" = "$serveripb" ]; then
serverip=$serveripa
else
echo "Select the IP address to use:"
echo "1.) "$serveripa
echo "2.) "$serveripb
while true
do
read answer
case $answer in [1] ) serverip=$serveripa && break ;;
[2] ) serverip=$serveripb && break ;;
* ) echo "Enter 1 or 2";;
esac
done
fi
serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
fi
echo "IP: $serverip"
echo "DN: $serverdn"
if [ -z $serverdn ]; then
echo "Unable to determine domain name cannot setup Lets Encypt"
exit 1
fi
#Installing Certbot
if [ $(dpkg-query -W -f='${Status}' "certbot" 2>/dev/null | grep -c "ok installed") = 0 ]; then
echo "Installing certbot"
if [ "$osname" = "Ubuntu" ]; then
apt-get -q update >> $logfile 2>&1
add-apt-repository -y universe >> $logfile 2>&1
add-apt-repository -y ppa:certbot/certbot >> $logfile 2>&1
apt-get -q update >> $logfile 2>&1
apt-get install -y certbot python-certbot-nginx >> $logfile 2>&1
else
grep "^deb http\:\/\/deb\.debian\.org\/debian stretch-backports main" /etc/apt/sources.list > /dev/null || echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list
apt-get -q update >> $logfile 2>&1
apt-get install -y certbot python-certbot-nginx -t stretch-backports >> $logfile 2>&1
fi
else
echo "certbot already installed"
fi
if [ $(dpkg-query -W -f='${Status}' "certbot" 2>/dev/null | grep -c "ok installed") = 0 ]; then
echo "Install Failed"
exit 1
fi
#Generating Certificates
certbot -q --nginx --register-unsafely-without-email --agree-tos certonly -d $serverdn >> $logfile 2>&1
if [ $? = 1 ]; then
echo "unable to generate certificates"
exit 1
fi
echo "Certificates Generated"
if [ $headless = 0 ]; then
exit 0
fi
if [ -d "/etc/letsencrypt/live/$serverdn" ]; then
echo "Replacing certificates in nginx and vsftpd"
sed -i "/^\(\s\|#\)*server_name/ c\ server_name $serverdn;" /etc/nginx/sites-available/default
sed -i "/ssl_certificate / c\ ssl_certificate /etc/letsencrypt/live/$serverdn/fullchain.pem;" /etc/nginx/sites-available/default
sed -i "/ssl_certificate_key / c\ ssl_certificate_key /etc/letsencrypt/live/$serverdn/privkey.pem;" /etc/nginx/sites-available/default
service nginx restart
sed -i "/^\(\s\|#\)*rsa_cert_file/ c\rsa_cert_file=/etc/letsencrypt/live/$serverdn/fullchain.pem" /etc/vsftpd.conf
sed -i "/^\(\s\|#\)*rsa_private_key_file/ c\rsa_private_key_file=/etc/letsencrypt/live/$serverdn/privkey.pem" /etc/vsftpd.conf
service vsftpd restart
fi
+14 -29
View File
@@ -8,9 +8,9 @@
#
#########################################################################################
forceyes=1
headless=1
selfsign=1
#function to check if string is valid format for an ip address
valid_ip()
@@ -53,13 +53,13 @@ echo ": done"
if [ -f /etc/vsftpd.conf ]; then
sed -i '/^\(\s\|#\)*rsa_private_key_file/ c\rsa_private_key_file=\/etc\/ssl\/private\/ruweb\.key' /etc/vsftpd.conf
sed -i '/^\(\s\|#\)*rsa_cert_file/ c\rsa_cert_file=\/etc\/ssl\/ruweb\.crt' /etc/vsftpd.conf
service vsftpd restart >/dev/null 2>&1
service vsftpd restart
fi
if [ -f /etc/nginx/sites-available/default ]; then
sed -i '/ssl_certificate / c\ ssl_certificate \/etc\/ssl\/ruweb\.crt;' /etc/nginx/sites-available/default
sed -i '/ssl_certificate_key/ c\ ssl_certificate_key \/etc\/ssl\/private\/ruweb\.key;' /etc/nginx/sites-available/default
service nginx restart >/dev/null 2>&1
service nginx restart
fi
}
@@ -71,13 +71,12 @@ fi
# options -y and -d take away the user interaction so can be called from another script
# option -y will force the creation of new certificates
# option -d will not unless it determines they are needed
while getopts ":yds" optname
while getopts ":yd" optname
do
case $optname in
"y" ) forceyes=0 ;;
"d" ) headless=0 ;;
"s" ) selfsign=0 ;;
* ) echo "-y, -d, and -s only options allowed" && exit ;;
* ) echo "-y or -d only options allowed" && exit ;;
esac
done
@@ -88,33 +87,19 @@ if [ $forceyes = 0 ] && [ $headless = 0 ]; then
exit
fi
if [ $# -gt 0 ]; then
echo "No arguments allowed"
if [ $# -gt 1 ]; then
echo "Only one argument allowed"
exit
fi
serverip=$1
if [ -z $serverip ]; then
serveripa=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
serveripb=$(wget -qO- ipecho.net/plain)
if [ "$serveripa" = "$serveripb" ]; then
serverip=$serveripa
else
echo "Select the IP address to use:"
echo "1.) "$serveripa
echo "2.) "$serveripb
while true
do
read answer
case $answer in [1] ) serverip=$serveripa && break ;;
[2] ) serverip=$serveripb && break ;;
* ) echo "Enter 1 or 2";;
esac
done
fi
echo "IP set to "$serverip
echo
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
elif ! valid_ip $serverip; then
echo "$serverip is not a valid IP address"
serverip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
echo "will use $serverip instead"
fi
serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
+55 -181
View File
@@ -10,59 +10,17 @@
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin:/sbin
osname=$(lsb_release -si)
relno=$(lsb_release -sr | cut -d. -f1)
sourcedir='http://rtorrent.net/downloads/'
RTFILE=/usr/local/bin/rt
xmlrpc_url='https://svn.code.sf.net/p/xmlrpc-c/code/advanced/'
xmlrpcloc='svn://svn.code.sf.net/p/xmlrpc-c/code/advanced/'
duoversion="0.13.2/0.9.2 0.13.3/0.9.3 0.13.4/0.9.4 0.13.5/0.9.5 0.13.6/0.9.6"
OSNAME=$(cat /etc/issue.net | cut -d' ' -f1)
xmlrpc_url_alt='https://github.com/mirror/xmlrpc-c'
xmlrpcloc_alt='https://github.com/mirror/xmlrpc-c/trunk/advanced'
rtdevrel=1
if [ $(lsb_release -sr) = 17.10 ]; then
rtdevrel=0
fi
if ([ "$osname" = "Debian" ] || [ "$osname" = "Raspbian" ] && [ $relno -ge 9 ]) || ([ "$osname" = "Ubuntu" ] && [ $relno -ge 18 ]); then
rtdevrel=0
fi
listsize=6
duoversion=''
passed_rtvers=$1
[ -z $logfile ] && logfile="/dev/null"
# get a list of the most recent releases
rt_releases=$(wget -q -O - $sourcedir | grep -o "rtorrent-[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}\.tar.gz" | sort -uV | tail -$listsize | grep -o "[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}")
# extract the release numbers from the list of most recent releases
for rtversion in $rt_releases
do
libversion=$(echo $rtversion | awk -F. -v OFS=. '{$2='$(( $(echo $rtversion | cut -d. -f2) + 4 ))'; print }')
duoversion="$duoversion $libversion/$rtversion"
done
# get the most recent release version number
latest_duo=$(echo $duoversion | rev | cut -d' ' -f1 | rev)
latest_libvers=$(echo $latest_duo | cut -d/ -f1)
latest_rtvers=$(echo $latest_duo | cut -d/ -f2)
# checks if an application is installed
installed() {
hash $1 2>/dev/null
}
#function to check if a web site is reachable
check_url() {
if [[ `wget -S --spider $1 2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then return 0; else return 1; fi
}
# function to create a list of versions to install
list_version() {
local verschoice
ask_version() {
while [ -z "$verschoice" ]
do
echo "Please select libtorrent/rtorrent version."
@@ -75,16 +33,16 @@ do
done
}
ask_user(){
local answer
confirm_answer() {
while true
do
read answer
case $answer in [Yy]* ) return 0 ;;
[Nn]* ) return 1 ;;
* ) echo "Enter y or n";;
esac
done
do
read -p "Sure you wish to install libtorrent-"$libvers" and rtorrent-"$rtvers"?" answer
case $answer in [Yy]* ) return 0 ;;
[Nn]* ) exit ;;
* ) echo "Enter y or n";;
esac
done
}
if [ "$(id -u)" != "0" ]; then
@@ -92,153 +50,69 @@ if [ "$(id -u)" != "0" ]; then
exit 1
fi
# Check the libtorrent/rtorrent and xmlrpc sites are available
xmlrpc_repo=0
rt_repo=0
echo
echo "Checking File Repositories"
echo -n "xmlrpc-c: "; check_url $xmlrpc_url && echo "OK" || xmlrpc_repo=1
if [[ $xmlrpc_repo = 1 ]]; then
xmlrpc_url=$xmlrpc_url_alt
xmlrpcloc=$xmlrpcloc_alt
check_url $xmlrpc_url && { echo "OK"; xmlrpc_repo=0; } || { echo "FAIL"; xmlrpc_repo=1; }
fi
echo -n "rtorrent: "; check_url $sourcedir && echo "OK" || { echo "FAIL"; rt_repo=1; }
if [ $rt_repo = 1 ]; then
echo "The libtorrent/rtorrent file repositoy is offline"
echo "Try again later, you can check if the following address is online in your browser:"
echo $sourcedir
if ( installed rtorrent ); then
rtorrent_current=$(rtorrent -h | grep -m 1 'version')
rtorrent_current=${rtorrent_current#*version }
echo "rtorrent $rtorrent_current detected"
echo
else
echo "rtorrent NOT installed"
echo "This script is for upgrading/downgrading only, not for initial install"
exit 1
fi
if [ $xmlrpc_repo = 1 ]; then
if [ -d /usr/include/xmlrpc-c ]; then
echo "xmlrpc repository is off line, but looks like it has already beed installed."
echo "We will try and install rtorrent"
else
echo "The xmlrpc-c file repositoy is offline"
echo "Try again later, you can check if the following address is online in your browser:"
echo $xmlrpcloc
exit 1
fi
fi
if [ -z $passed_rtvers ]; then
if ( installed rtorrent ); then
rt_current=$(rtorrent -h | grep -om 1 "[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}")
echo "rtorrent $rt_current detected"
else
echo "rtorrent NOT installed"
echo "This script is for upgrading/downgrading only, not for initial install"
exit 1
fi
# checks if the OS is debian 9, and forces the version to 0.9.7 of it is
if [ $rtdevrel = 0 ]; then
echo "For Debian 9, and Ubuntu 17.10 and later, recommend libtorrent-0.13.7/rtorrent-0.9.7 or later"
fi
list_version
echo "Install libtorrent-$libvers and rtorrent-$rtvers"
echo "Your rtorrent config, torrents, and data will not be lost or changed"
echo -n "Continue? "
if ! ask_user; then
exit
fi
else
if [ "$passed_rtvers" = "latest" ] || [ $(wget -q -O - $sourcedir | grep -o "rtorrent-$passed_rtvers.tar.gz" | wc -l) -eq 0 ]; then
if [ "$passed_rtvers" != "latest" ]; then
echo " Could not find $passed_rtvers so using latest version instead"
fi
libvers=$latest_libvers
rtvers=$latest_rtvers
else
libvers=$(echo $passed_rtvers | awk -F. -v OFS=. '{$2='$(( $(echo $rtversion | cut -d. -f2) + 4 ))'; print }')
rtvers=$passed_rtvers
fi
# checks if the OS is debian 9, and forces the version to 0.9.7 of it is
if [ $rtdevrel = 0 ]; then
libvers='0.13.8'
rtvers='0.9.8'
echo "Debian 9, and Ubuntu 17.10 and later, are only supported by libtorrent-0.13.7/rtorrent-0.9.7 or later"
fi
fi
if [ -z "$home" ]; then
home=$HOME
fi
ask_version
confirm_answer
echo
echo "Installing libtorrent-$libvers/rtorrent-$rtvers"
echo "Installing $libvers/$rtvers"
cd $home
cd $HOME
if [ -d source ]; then
cd source
else
mkdir source && cd source
fi
rm -rf xmlrpc libtorrent* rtorrent*
rm -r -f libtorrent* rtorrent*
echo "Fetching source files"
curl -# http://rtorrent.net/downloads/libtorrent-$libvers.tar.gz | tar xz
curl -# http://rtorrent.net/downloads/rtorrent-$rtvers.tar.gz | tar xz
#if [ $rtdevrel = 0 ]; then
# git clone -q -b feature-bind --single-branch https://github.com/rakshasa/libtorrent.git libtorrent-$libvers
# git clone -q -b feature-bind --single-branch https://github.com/rakshasa/rtorrent.git rtorrent-$rtvers
#else
curl -# http://rtorrent.net/downloads/libtorrent-$libvers.tar.gz | tar xz
curl -# http://rtorrent.net/downloads/rtorrent-$rtvers.tar.gz | tar xz
#fi
if [ $xmlrpc_repo = 0 ]; then
svn co $xmlrpcloc xmlrpc >> $logfile 2>&1
cd xmlrpc
echo "Installing xmlrpc" | tee -a $logfile
./configure --prefix=/usr --disable-cplusplus >> $logfile 2>&1
make -j$(nproc) >> $logfile 2>&1
make -s install >> $logfile 2>&1
cd ..
echo "Compiling libtorrent"
cd $HOME/source/libtorrent-$libvers
./autogen.sh >> /dev/null 2>&1
if [ "$OSNAME" = "Raspbian" ]; then
./configure --prefix=/usr --disable-instrumentation >> /dev/null 2>&1
else
./configure --prefix=/usr >> /dev/null 2>&1
fi
make -j2 >> /dev/null 2>&1
make install >> /dev/null 2>&1
cd libtorrent-$libvers
echo "Installing libtorrent" | tee -a $logfile
./autogen.sh >> $logfile 2>&1
if [ $osname = "Raspbian" ]; then
./configure --prefix=/usr --disable-instrumentation >> $logfile 2>&1
else
./configure --prefix=/usr >> $logfile 2>&1
fi
make -j$(nproc) >> $logfile 2>&1
make -s install >> $logfile 2>&1
echo "Compiling rtorrent"
cd $HOME/source/rtorrent-$rtvers
./autogen.sh >> /dev/null 2>&1
./configure --prefix=/usr --with-xmlrpc-c >> /dev/null 2>&1
make -j2 >> /dev/null 2>&1
make install >> /dev/null 2>&1
ldconfig
cd ../rtorrent-$rtvers
echo "Installing rtorrent" | tee -a $logfile
./autogen.sh >> $logfile 2>&1
./configure --prefix=/usr --with-xmlrpc-c --enable-ipv6 >> $logfile 2>&1
make -j$(nproc) >> $logfile 2>&1
make -s install >> $logfile 2>&1
ldconfig >> $logfile 2>&1
cd /var/www/rutorrent/conf/users
user_list=*
echo "$libvers/$rtvers installed"
echo
if [ -d /var/www/rutorrent/conf/users ]; then
cd /var/www/rutorrent/conf/users
user_list=*
for user in $user_list; do
for user in $user_list
do
if [ ! "$user" = '*' ]; then
echo "Restarting rtorrent for $user"
su $user -c 'rt restart >> /dev/null 2>&1'
fi
done
echo
fi
cd $HOME
echo
echo "$libvers/$rtvers installed"
echo
echo "Your .rtorrent.rc file, and download, watch, and .session directories have not been altered in any way"
-57
View File
@@ -1,57 +0,0 @@
#!/bin/bash
######################################################################
#
# Copyright (c) 2015 arakasi72 (https://github.com/arakasi72)
#
# --> Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
#
######################################################################
sourcedir='http://rtorrent.net/downloads/'
rt_latest=$(wget -q -O - $sourcedir | grep -o "rtorrent-[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}" | sort -uV | tail -1 | grep -o "[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}")
ru_latest=$(curl -s https://raw.githubusercontent.com/Novik/ruTorrent/master/js/webui.js | grep -m 1 version: | cut -d \" -f2)
# checks if an application is installed
installed() {
hash $1 2>/dev/null
}
if ( installed rtorrent ); then
rt_current=$(rtorrent -h | grep -om 1 "[0-9]\{1,2\}\.[0-9]\{1,2\}\.[0-9]\{1,2\}")
echo "rtorrent installed: $rt_current"
echo "rtorrent available: $rt_latest"
else
echo "rtorrent: not installed"
fi
echo
if [ -d /var/www/rutorrent ]; then
ru_current=$(grep -m 1 version: /var/www/rutorrent/js/webui.js | cut -d \" -f2)
echo "RuTorrent installed: $ru_current"
echo "RuTorrent available: $ru_latest"
else
echo "RuTorrent: not installed"
fi
echo
echo "rtinst"
cd /etc/rtinst
branch=$(basename "$(git symbolic-ref -q HEAD)")
if [ -z $branch ]; then
branch=$(git describe --tags --exact-match)
echo "Current Release: rtinst $branch"
if [ ${branch:0:1} = v ]; then
latest=$(basename "$(git ls-remote --tags https://github.com/arakasi72/rtinst.git | grep -o 'refs/tags/v.*' | sort -V | tail -1)")
if [ $branch = $latest ]; then
echo "This is the latest release"
else
echo "Use rtsetup to update to rtinst $latest"
fi
fi
else
echo "Current Branch: $branch"
echo "Use rtsetup to update branch"
fi
+2 -2
View File
@@ -20,8 +20,8 @@ if [ $(dpkg-query -W -f='${Status}' webmin 2>/dev/null | grep -c "ok installed")
echo "Installing Webmin"
echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list
wget -qO - http://www.webmin.com/jcameron-key.asc | apt-key add -
apt-get -qq update
apt-get -qq install webmin
apt-get update >> /dev/null 2>&1
apt-get -y install webmin >> /dev/null 2>&1
else
echo 'Webmin is already installed'
fi
+24 -75
View File
@@ -14,45 +14,19 @@ newvers=$(curl -s https://raw.githubusercontent.com/Novik/ruTorrent/master/js/we
oldvers=$(grep -m 1 version: /var/www/rutorrent/js/webui.js | cut -d \" -f2)
ruflag=0
rurelease=$(git ls-remote -t https://github.com/Novik/ruTorrent v\* | cut -d/ -f3 | sort -V | tail -1)
force_yes=1
restore_old=1
install_master=1
ask_restore() {
if [ $force_yes = 0 ]; then
return $restore_old
else
while true
do
echo "1. Restore rutorrent_old"
echo "2. Upgrade to latest version"
read -p "Select 1 or 2: " answer
case $answer in [1]* ) return 0 ;;
[2]* ) return 1 ;;
ask_option() {
while true
do
echo "1. Restore rutorrent_old"
echo "2. Upgrade to latest version"
read -p "Select 1 or 2: " answer
case $answer in [1]* ) return 0 ;;
[2]* ) return 1 ;;
esac
done
fi
}
ask_version() {
if [ $force_yes = 0 ]; then
return $install_master
else
echo "Choose which build to install, (if you are not sure select 1)"
while true
do
echo "1. Use the latest stable release"
echo "2. Use the most recent master build"
read -p "Select 1 or 2: " answer
case $answer in [1]* ) return 1 ;;
[2]* ) return 0 ;;
esac
done
fi
}
check_user() {
while true
do
@@ -69,21 +43,6 @@ if [ "$(id -u)" != "0" ]; then
echo "Must be run from root or using sudo" && exit 1
fi
# get options
OPTS=$(getopt -n "$0" -o myo --long "rutorrent-master,force-yes,restore-old" -- "$@")
eval set -- "$OPTS"
while true; do
case "$1" in
-m | --rutorrent-master ) install_master=0; shift;;
-y | --force-yes ) force_yes=0; shift;;
-o | --restore-old ) restore_old=0; shift;;
-- ) shift; break ;;
* ) break ;;
esac
done
#check rutorrent folder exists
if ! [ -d '/var/www/rutorrent' ]; then
echo 'Could not find /var/www/rutorrent, exiting script'
@@ -91,33 +50,31 @@ exit
fi
#check versions
echo "Installed version: "$oldvers
echo " Latest version: "$newvers
if [ -d $HOME'/rutorrent_old' ]; then
echo
echo "A previous backup is available to restore"
echo
if [ '$newvers' = '$oldvers' ]; then
echo "You have the latest version: "$newvers
else
echo "Installed version: "$oldvers
echo " Latest version: "$newvers
fi
if [ $restore_old = 0 ] && ! [ -d $HOME'/rutorrent_old' ]; then
echo "No backup available to do a restore"
if ! ( check_user ); then
exit
fi
#check to see if rutorrent_old exists, offer restore or upgrade options
if [ -d $HOME'/rutorrent_old' ];then
echo 'Detected '$HOME'/rutorrent_old'
if ( ask_restore ); then
if ( ask_option ); then
echo "Restoring Old version of rutorrent"
echo "WARNING: The current rutorrent will be overwitten by older backup"
ruflag=1
if [ $force_yes = 0 ] || ( check_user ); then
if ( check_user ); then
echo "Restoring"
rm -r /var/www/rutorrent
mv -f $HOME/rutorrent_old /var/www/rutorrent
echo "Setting permissions, Starting services"
chown -R www-data:www-data /var/www
chmod -R 755 /var/www/rutorrent
echo "Done"
else
exit
@@ -125,8 +82,8 @@ echo 'Detected '$HOME'/rutorrent_old'
else
echo "Rutorrent will be upgraded"
echo "WARNING: rutorrent_old will be deleted"
echo "If you wish to retain this older version you should exit this script, and rename or move it"
if [ $force_yes = 0 ] || ( check_user ); then
echo "If you wish to retain this older version you should exit this script, and rename or move it"
if ( check_user ); then
ruflag=0
else
exit
@@ -136,13 +93,9 @@ fi
if [ $ruflag = 0 ]; then
if ( ask_version ); then
rurelease=master
fi
if [ -d $HOME'/rutorrent_old' ]; then
rm -r $HOME/rutorrent_old
echo "rutorrent_old has been deleted"
echo "rutorrent_old has been deleted"
fi
echo
@@ -153,13 +106,10 @@ if [ $ruflag = 0 ]; then
echo
mv -f /var/www/rutorrent $HOME/rutorrent_old
echo "Installing Rutorrent ($rurelease)"
wget -q https://github.com/Novik/ruTorrent/archive/$rurelease.tar.gz
tar -xzf $rurelease.tar.gz
mv -f $(tar -tzf $rurelease.tar.gz | head -1) /var/www/rutorrent
rm $rurelease.tar.gz
git clone -q https://github.com/autodl-community/autodl-rutorrent.git /var/www/rutorrent/plugins/autodl-irssi
echo "Installing Rutorrent "$newvers
git clone https://github.com/Novik/ruTorrent.git /var/www/rutorrent >> /dev/null 2>&1
git clone https://github.com/autodl-community/autodl-rutorrent.git /var/www/rutorrent/plugins/autodl-irssi >> /dev/null 2>&1
rm -r /var/www/rutorrent/conf >> /dev/null 2>&1
cp -r $HOME/rutorrent_old/conf /var/www/rutorrent/conf >> /dev/null 2>&1
@@ -167,6 +117,5 @@ if [ $ruflag = 0 ]; then
cp -r $HOME/rutorrent_old/share /var/www/rutorrent/share >> /dev/null 2>&1
echo "Setting permissions, Starting services"
chown -R www-data:www-data /var/www
echo
echo "Installation of RuTorrent complete"
chmod -R 755 /var/www/rutorrent
fi