#!/bin/sh # 获取第一个参数做为目录 ROOT_FOLDER="$1" WEB_FOLDER="" ORG_INDEX_FILE="index.original.html" INDEX_FILE="index.html" TMP_FOLDER="/tmp/tr-web-control" PACK_NAME="src.tar.gz" WEB_HOST="https://github.com/ronggang/twc-release/raw/master/" DOWNLOAD_URL="$WEB_HOST$PACK_NAME" # 安装类型 # 1 安装至当前 Transmission Web 所在目录 # 2 安装至 TRANSMISSION_WEB_HOME 环境变量指定的目录,参考:https://github.com/transmission/transmission/wiki/Environment-Variables#transmission-specific-variables # 使用环境变量时,如果 transmission 不是当前用户运行的,则需要将 TRANSMISSION_WEB_HOME 添加至 /etc/profile 文件,以达到“永久”的目的 # 3 用户指定参数做为目录,如 sh install-tr-control.sh /usr/local/transmission/share/transmission INSTALL_TYPE=-1 # 开始 main() { # 判断临时目录是否存在,不存在则创建 if [ ! -d "$TMP_FOLDER" ]; then mkdir -p "$TMP_FOLDER" fi # 判断 ROOT_FOLDER 是否为一个有效的目录,如果是则表明传递了一个有效路径 if [ -d "$ROOT_FOLDER" ]; then echo "use arg: $ROOT_FOLDER" INSTALL_TYPE=3 WEB_FOLDER="$ROOT_FOLDER/web" else # 查找目录 findWebFolder fi # 安装 install # 清理 clear } # 查找Web目录 findWebFolder() { # 找出web ui 目录 echo "Searching Transmission Web Folder..." # 指定一次当前系统的默认目录 # 用户如知道自己的 Transmission Web 所在的目录,直接修改这个值,以避免搜索所有目录 ROOT_FOLDER="/usr/local/transmission/share/transmission" # Fedora 或 Debian 发行版的默认 ROOT_FOLDER 目录 if [ -f /etc/fedora-release ] || [ -f "/etc/debian_version" ]; then ROOT_FOLDER="/usr/share/transmission" fi # 判断 TRANSMISSION_WEB_HOME 环境变量是否被定义,如果是,直接用这个变量的值 if [ $TRANSMISSION_WEB_HOME ]; then echo "use TRANSMISSION_WEB_HOME: $TRANSMISSION_WEB_HOME" # 判断目录是否存在,如果不存在则创建 https://github.com/ronggang/transmission-web-control/issues/167 if [ ! -d "$TRANSMISSION_WEB_HOME" ]; then mkdir -p "$TRANSMISSION_WEB_HOME" fi INSTALL_TYPE=2 else echo "Looking for folder: $ROOT_FOLDER/web" if [ -d "$ROOT_FOLDER/web" ]; then WEB_FOLDER="$ROOT_FOLDER/web" INSTALL_TYPE=1 echo "Folder found. Using it." else echo "Folder not found. Will search the entire /. This will take a while..." ROOT_FOLDER=`find / -name 'web' -type d 2>/dev/null| grep 'transmission/web' | sed 's/\/web$//g'` if [ -d "$ROOT_FOLDER/web" ]; then WEB_FOLDER="$ROOT_FOLDER/web" INSTALL_TYPE=1 fi fi fi } # 安装 install() { # 如果目录存在,则进行下载和更新动作 if [ $INSTALL_TYPE = 1 -o $INSTALL_TYPE = 3 ]; then # 下载最新的安装包 download echo "Installing..." # 创建web文件夹,从 20171014 之后,打包文件不包含web目录,直接打包为src下所有文件 mkdir web # 解压缩包 tar -xzf "$PACK_NAME" -C "web" # 如果之前没有安装过,则先将原系统的文件改为 if [ ! -f "$WEB_FOLDER/$ORG_INDEX_FILE" -a -f "$WEB_FOLDER/$INDEX_FILE" ]; then mv "$WEB_FOLDER/$INDEX_FILE" "$WEB_FOLDER/$ORG_INDEX_FILE" fi # 复制文件到 cp -r web "$ROOT_FOLDER" # 设置权限 find "$ROOT_FOLDER" -type d -exec chmod o+rx {} \; find "$ROOT_FOLDER" -type f -exec chmod o+r {} \; # 安装完成 installed elif [ $INSTALL_TYPE = 2 ]; then # 下载最新的安装包 download echo "Installing..." # 解压缩包 tar -xzf "$PACK_NAME" -C "$TRANSMISSION_WEB_HOME" # 设置权限 find "$TRANSMISSION_WEB_HOME" -type d -exec chmod o+rx {} \; find "$TRANSMISSION_WEB_HOME" -type f -exec chmod o+r {} \; # 安装完成 installed else echo "##############################################" echo "#" echo "# ERROR : Transmisson WEB UI Folder is missing." echo "#" echo "##############################################" fi } # 下载最新的安装包 download() { cd "$TMP_FOLDER" echo "Downloading Transmission Web Control..." wget "$DOWNLOAD_URL" --no-check-certificate } # 安装完成 installed() { echo "Transmission Web Control Installation completed!" } # 清除工作 clear() { # 删除安装包 rm "$PACK_NAME" # 删除临时目录 rm -rf "$TMP_FOLDER" } # 执行 main