From e86ca1dc76e28a6830c5d0d396c34e7343f5434f Mon Sep 17 00:00:00 2001 From: nikk gitanes Date: Sun, 29 Jan 2023 02:12:45 +0300 Subject: [PATCH] add MacOS cosole install script --- installTorrServerMac.sh | 169 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100755 installTorrServerMac.sh diff --git a/installTorrServerMac.sh b/installTorrServerMac.sh new file mode 100755 index 0000000..04a5754 --- /dev/null +++ b/installTorrServerMac.sh @@ -0,0 +1,169 @@ +#!/bin/bash +dirInstall="/Users/Shared/TorrServer" +serviceName="ru.yourok.torrserver" + +function checkArch() { + case $(uname -m) in + i386) architecture="386" ;; + i686) architecture="386" ;; + x86_64) architecture="amd64" ;; + aarch64) architecture="arm64" ;; + *) echo "Извините, не поддерживаемая архитектура. Продолжение невозможно" && exit 1;; + esac +} + +function getLatestRelease() { + curl -s "https://api.github.com/repos/YouROK/TorrServer/releases" | + grep -iE '"tag_name":|"version":' | + sed -E 's/.*"([^"]+)".*/\1/' | + head -1 +} + +function cleanup() { + sudo rm -f /Library/LaunchAgents/*torrserver* 1>/dev/null 2>&1 + sudo rm -f /Library/LaunchDaemons/*torrserver* 1>/dev/null 2>&1 + sudo rm -f $HOME/Library/LaunchAgents/*torrserver* 1>/dev/null 2>&1 + runningPid=$(ps -ax|grep -i torr|awk '{print $1}'|head -n1) + sudo kill -9 $runningPid 1>/dev/null 2>&1 +} + +function uninstall() { + echo "" + echo "Директория c TorrServer - ${dirInstall}" + echo "" + echo "Это действие удалит все данные TorrServer включая базу данных торрентов и настройки по указанному выше пути." + echo "" + printf 'Вы уверены что хотите удалить программу? ' + read answer + if [ "$answer" != "${answer#[YyДд]}" ] ; then + cleanup + sudo rm -rf $dirInstall + echo "" + echo "TorrServer удален c вашего Mac" + else + echo "" + echo "OK" + fi +} + +checkArch + +function installTorrServer() { + echo "" + echo "Устанавливаем TorrServer $(getLatestRelease) ..." + echo "" + binName="TorrServer-darwin-${architecture}" + [[ ! -d "$dirInstall" ]] && mkdir -p ${dirInstall} + urlBin="https://github.com/YouROK/TorrServer/releases/download/$(getLatestRelease)/${binName}" + if [[ ! -f "$dirInstall/$binName" ]] | [[ ! -x "$dirInstall/$binName" ]] || [[ $(stat -c%s "$dirInstall/$binName" 2>/dev/null) -eq 0 ]]; then + curl -L --progress-bar -# -o "$dirInstall/$binName" "$urlBin" + chmod a+rx "$dirInstall/$binName" + xattr -r -d com.apple.quarantine "$dirInstall/$binName" + fi + echo "" + echo "Создаем сервис автозагрузки TorrServer $(getLatestRelease) ..." + echo "" + echo "Система запросит ваш пароль администратора" + echo "" + cat << EOF > $dirInstall/$serviceName.plist + + + + + Label + ${serviceName} + ServiceDescription + TorrServer service for MacOS + LaunchOnlyOnce + + RunAtLoad + + ProgramArguments + + ${dirInstall}/TorrServer-darwin-${architecture} + --port + 8090 + --path + ${dirInstall} + --logpath + ${dirInstall}/torrserver.log + --httpauth + + StandardOutPath + ${dirInstall}/torrserver.log + StandardErrorPath + ${dirInstall}/torrserver.log + + +EOF +### + cleanup +### + printf 'Включить авторизацию на сервере? ' + read answer + if [ "$answer" != "${answer#[YyДд]}" ] ;then + isAuth=1 + else + isAuth=0 + fi + if [[ "$isAuth" == 1 ]]; then + echo "" + echo "Вы выбрали установку с авторизацией" + [[ ! -f "$dirInstall/accs.db" ]] && { + echo "" + printf 'Пользователь: ' + read answer + isAuthUser=$answer + echo "" + printf 'Пароль: ' + read answer + isAuthPass=$answer + echo "" + echo "Устанавливаем логин и пароль: $isAuthUser:$isAuthPass" + echo "" + echo -e "{\n \"$isAuthUser\": \"$isAuthPass\"\n}" > $dirInstall/accs.db + } || { + echo "" + echo "Используйте реквизиты из ${dirInstall}/accs.db для входа" + } + else + sed -i '' -e '/httpauth/d' $dirInstall/$serviceName.plist + fi + echo "" + printf 'Автозагрузка для текушего пользователя (1) или всех (2)? ' + read answer + if [ "$answer" != "${answer#[1]}" ] ;then + # user + sysPath="${HOME}/Library/LaunchAgents" + [[ ! -d "$sysPath" ]] && mkdir -p ${sysPath} + cp "$dirInstall/$serviceName.plist" $sysPath + chmod 0644 "$sysPath/$serviceName.plist" + launchctl load -w "$sysPath/$serviceName.plist" + else + # root + sysPath="/Library/LaunchDaemons" + [[ ! -d "$sysPath" ]] && sudo mkdir -p ${sysPath} + sudo cp "$dirInstall/$serviceName.plist" $sysPath + sudo chown root:wheel "$sysPath/$serviceName.plist" + sudo chmod 0644 "$sysPath/$serviceName.plist" + sudo launchctl load -w "$sysPath/$serviceName.plist" + fi + echo "" + echo "Сервис автозагрузки записан в ${sysPath}" + echo "" + echo "TorrServer $(getLatestRelease) для ${architecture} Mac установлен в ${dirInstall}" +} + +while true; do + echo "" + read -p "Хотите установить или обновить TorrServer? Для удаления введите «Удалить» " yn + case $yn in + [YyДд]* ) installTorrServer; break;; + [DdУу]* ) uninstall; break;; + [NnНн]* ) exit;; + * ) echo "Ввведите Да (Yes) Нет (No) или Удалить (Delete).";; + esac +done +echo "" +echo "Have Fun!" +echo ""