just format

This commit is contained in:
nikk gitanes
2023-01-29 02:18:52 +03:00
parent e86ca1dc76
commit 91c7adef14

View File

@@ -3,166 +3,167 @@ dirInstall="/Users/Shared/TorrServer"
serviceName="ru.yourok.torrserver" serviceName="ru.yourok.torrserver"
function checkArch() { function checkArch() {
case $(uname -m) in case $(uname -m) in
i386) architecture="386" ;; i386) architecture="386" ;;
i686) architecture="386" ;; i686) architecture="386" ;;
x86_64) architecture="amd64" ;; x86_64) architecture="amd64" ;;
aarch64) architecture="arm64" ;; aarch64) architecture="arm64" ;;
*) echo "Извините, не поддерживаемая архитектура. Продолжение невозможно" && exit 1;; *) echo "Извините, не поддерживаемая архитектура. Продолжение невозможно" && exit 1;;
esac esac
} }
function getLatestRelease() { function getLatestRelease() {
curl -s "https://api.github.com/repos/YouROK/TorrServer/releases" | curl -s "https://api.github.com/repos/YouROK/TorrServer/releases" |
grep -iE '"tag_name":|"version":' | grep -iE '"tag_name":|"version":' |
sed -E 's/.*"([^"]+)".*/\1/' | sed -E 's/.*"([^"]+)".*/\1/' |
head -1 head -1
} }
function cleanup() { function cleanup() {
sudo rm -f /Library/LaunchAgents/*torrserver* 1>/dev/null 2>&1 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 /Library/LaunchDaemons/*torrserver* 1>/dev/null 2>&1
sudo rm -f $HOME/Library/LaunchAgents/*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 rm -f $HOME/Library/LaunchDaemons/*torrserver* 1>/dev/null 2>&1
sudo kill -9 $runningPid 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() { function uninstall() {
echo "" echo ""
echo "Директория c TorrServer - ${dirInstall}" echo "Директория c TorrServer - ${dirInstall}"
echo "" echo ""
echo "Это действие удалит все данные TorrServer включая базу данных торрентов и настройки по указанному выше пути." echo "Это действие удалит все данные TorrServer включая базу данных торрентов и настройки по указанному выше пути."
echo "" echo ""
printf 'Вы уверены что хотите удалить программу? ' printf 'Вы уверены что хотите удалить программу? '
read answer read answer
if [ "$answer" != "${answer#[YyДд]}" ] ; then if [ "$answer" != "${answer#[YyДд]}" ] ; then
cleanup cleanup
sudo rm -rf $dirInstall sudo rm -rf $dirInstall
echo "" echo ""
echo "TorrServer удален c вашего Mac" echo "TorrServer удален c вашего Mac"
else else
echo "" echo ""
echo "OK" echo "OK"
fi fi
} }
checkArch checkArch
function installTorrServer() { function installTorrServer() {
echo "" echo ""
echo "Устанавливаем TorrServer $(getLatestRelease) ..." echo "Устанавливаем TorrServer $(getLatestRelease) ..."
echo "" echo ""
binName="TorrServer-darwin-${architecture}" binName="TorrServer-darwin-${architecture}"
[[ ! -d "$dirInstall" ]] && mkdir -p ${dirInstall} [[ ! -d "$dirInstall" ]] && mkdir -p ${dirInstall}
urlBin="https://github.com/YouROK/TorrServer/releases/download/$(getLatestRelease)/${binName}" 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 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" curl -L --progress-bar -# -o "$dirInstall/$binName" "$urlBin"
chmod a+rx "$dirInstall/$binName" chmod a+rx "$dirInstall/$binName"
xattr -r -d com.apple.quarantine "$dirInstall/$binName" xattr -r -d com.apple.quarantine "$dirInstall/$binName"
fi fi
echo "" echo ""
echo "Создаем сервис автозагрузки TorrServer $(getLatestRelease) ..." echo "Создаем сервис автозагрузки TorrServer $(getLatestRelease) ..."
echo "" echo ""
echo "Система запросит ваш пароль администратора" echo "Система запросит ваш пароль администратора"
echo "" echo ""
cat << EOF > $dirInstall/$serviceName.plist cat << EOF > $dirInstall/$serviceName.plist
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>Label</key> <key>Label</key>
<string>${serviceName}</string> <string>${serviceName}</string>
<key>ServiceDescription</key> <key>ServiceDescription</key>
<string>TorrServer service for MacOS</string> <string>TorrServer service for MacOS</string>
<key>LaunchOnlyOnce</key> <key>LaunchOnlyOnce</key>
<true/> <true/>
<key>RunAtLoad</key> <key>RunAtLoad</key>
<true/> <true/>
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>${dirInstall}/TorrServer-darwin-${architecture}</string> <string>${dirInstall}/TorrServer-darwin-${architecture}</string>
<string>--port</string> <string>--port</string>
<string>8090</string> <string>8090</string>
<string>--path</string> <string>--path</string>
<string>${dirInstall}</string> <string>${dirInstall}</string>
<string>--logpath</string> <string>--logpath</string>
<string>${dirInstall}/torrserver.log</string> <string>${dirInstall}/torrserver.log</string>
<string>--httpauth</string> <string>--httpauth</string>
</array> </array>
<key>StandardOutPath</key> <key>StandardOutPath</key>
<string>${dirInstall}/torrserver.log</string> <string>${dirInstall}/torrserver.log</string>
<key>StandardErrorPath</key> <key>StandardErrorPath</key>
<string>${dirInstall}/torrserver.log</string> <string>${dirInstall}/torrserver.log</string>
</dict> </dict>
</plist> </plist>
EOF EOF
### ###
cleanup cleanup
### ###
printf 'Включить авторизацию на сервере? ' printf 'Включить авторизацию на сервере? '
read answer read answer
if [ "$answer" != "${answer#[YyДд]}" ] ;then if [ "$answer" != "${answer#[YyДд]}" ] ;then
isAuth=1 isAuth=1
else else
isAuth=0 isAuth=0
fi fi
if [[ "$isAuth" == 1 ]]; then if [[ "$isAuth" == 1 ]]; then
echo "" echo ""
echo "Вы выбрали установку с авторизацией" echo "Вы выбрали установку с авторизацией"
[[ ! -f "$dirInstall/accs.db" ]] && { [[ ! -f "$dirInstall/accs.db" ]] && {
echo "" echo ""
printf 'Пользователь: ' printf 'Пользователь: '
read answer read answer
isAuthUser=$answer isAuthUser=$answer
echo "" echo ""
printf 'Пароль: ' printf 'Пароль: '
read answer read answer
isAuthPass=$answer isAuthPass=$answer
echo "" echo ""
echo "Устанавливаем логин и пароль: $isAuthUser:$isAuthPass" echo "Устанавливаем логин и пароль: $isAuthUser:$isAuthPass"
echo "" echo ""
echo -e "{\n \"$isAuthUser\": \"$isAuthPass\"\n}" > $dirInstall/accs.db echo -e "{\n \"$isAuthUser\": \"$isAuthPass\"\n}" > $dirInstall/accs.db
} || { } || {
echo "" echo ""
echo "Используйте реквизиты из ${dirInstall}/accs.db для входа" echo "Используйте реквизиты из ${dirInstall}/accs.db для входа"
} }
else else
sed -i '' -e '/httpauth/d' $dirInstall/$serviceName.plist sed -i '' -e '/httpauth/d' $dirInstall/$serviceName.plist
fi fi
echo "" echo ""
printf 'Автозагрузка для текушего пользователя (1) или всех (2)? ' printf 'Автозагрузка для текушего пользователя (1) или всех (2)? '
read answer read answer
if [ "$answer" != "${answer#[1]}" ] ;then if [ "$answer" != "${answer#[1]}" ] ;then
# user # user
sysPath="${HOME}/Library/LaunchAgents" sysPath="${HOME}/Library/LaunchAgents"
[[ ! -d "$sysPath" ]] && mkdir -p ${sysPath} [[ ! -d "$sysPath" ]] && mkdir -p ${sysPath}
cp "$dirInstall/$serviceName.plist" $sysPath cp "$dirInstall/$serviceName.plist" $sysPath
chmod 0644 "$sysPath/$serviceName.plist" chmod 0644 "$sysPath/$serviceName.plist"
launchctl load -w "$sysPath/$serviceName.plist" launchctl load -w "$sysPath/$serviceName.plist"
else else
# root # root
sysPath="/Library/LaunchDaemons" sysPath="/Library/LaunchDaemons"
[[ ! -d "$sysPath" ]] && sudo mkdir -p ${sysPath} [[ ! -d "$sysPath" ]] && sudo mkdir -p ${sysPath}
sudo cp "$dirInstall/$serviceName.plist" $sysPath sudo cp "$dirInstall/$serviceName.plist" $sysPath
sudo chown root:wheel "$sysPath/$serviceName.plist" sudo chown root:wheel "$sysPath/$serviceName.plist"
sudo chmod 0644 "$sysPath/$serviceName.plist" sudo chmod 0644 "$sysPath/$serviceName.plist"
sudo launchctl load -w "$sysPath/$serviceName.plist" sudo launchctl load -w "$sysPath/$serviceName.plist"
fi fi
echo "" echo ""
echo "Сервис автозагрузки записан в ${sysPath}" echo "Сервис автозагрузки записан в ${sysPath}"
echo "" echo ""
echo "TorrServer $(getLatestRelease) для ${architecture} Mac установлен в ${dirInstall}" echo "TorrServer $(getLatestRelease) для ${architecture} Mac установлен в ${dirInstall}"
} }
while true; do while true; do
echo "" echo ""
read -p "Хотите установить или обновить TorrServer? Для удаления введите «Удалить» " yn read -p "Хотите установить или обновить TorrServer? Для удаления введите «Удалить» " yn
case $yn in case $yn in
[YyДд]* ) installTorrServer; break;; [YyДд]* ) installTorrServer; break;;
[DdУу]* ) uninstall; break;; [DdУу]* ) uninstall; break;;
[NnНн]* ) exit;; [NnНн]* ) exit;;
* ) echo "Ввведите Да (Yes) Нет (No) или Удалить (Delete).";; * ) echo "Ввведите Да (Yes) Нет (No) или Удалить (Delete).";;
esac esac
done done
echo "" echo ""
echo "Have Fun!" echo "Have Fun!"