#!/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 newvers=$(curl -s https://raw.githubusercontent.com/Novik/ruTorrent/master/js/webui.js | grep -m 1 version: | cut -d \" -f2) oldvers=$(grep -m 1 version: /var/www/rutorrent/js/webui.js | cut -d \" -f2) ruflag=0 rurelease=$(curl -s "https://api.github.com/repos/Novik/ruTorrent/releases/latest" | awk -F '"' '/tag_name/{print $4}') 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 ;; 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 read -p "Do you wish to continue? " answer case $answer in [Yy]* ) return 0 ;; [Nn]* ) return 1 ;; * ) echo "Enter y or n";; esac done } #check user is root or sudo 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' 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 fi if [ $restore_old = 0 ] && ! [ -d $HOME'/rutorrent_old' ]; then echo "No backup available to do a restore" 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 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 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 echo "Done" else exit fi 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 ruflag=0 else exit fi fi 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" fi echo echo 'Installing version '$newvers' of rutorrent' echo 'Your existing rutorrent folder will be moved to '$HOME'/rutorrent_old' echo echo 'If you are not happy with the upgrade you can restore the old version, by rerunning this script' 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 rm -r /var/www/rutorrent/conf >> /dev/null 2>&1 cp -r $HOME/rutorrent_old/conf /var/www/rutorrent/conf >> /dev/null 2>&1 rm -r /var/www/rutorrent/share >> /dev/null 2>&1 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" fi