mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-18 21:16:10 +05:00
add rootless service
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
username="torrserver" # system user to add || root
|
||||||
dirInstall="/opt/torrserver" # путь установки torrserver
|
dirInstall="/opt/torrserver" # путь установки torrserver
|
||||||
serviceName="torrserver" # имя службы: systemctl status torrserver.service
|
serviceName="torrserver" # имя службы: systemctl status torrserver.service
|
||||||
scriptname=$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")
|
scriptname=$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")
|
||||||
@@ -13,6 +14,43 @@ function isRoot() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addUser() {
|
||||||
|
if isRoot; then
|
||||||
|
[[ $username == "root" ]] && return 0
|
||||||
|
egrep "^$username" /etc/passwd >/dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
[[ $lang == "en" ]] && echo " - $username user exists!" || echo " - пользователь $username найден!"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
useradd --home-dir "$dirInstall" --create-home --shell /bin/false -c "TorrServer" "$username"
|
||||||
|
[ $? -eq 0 ] && {
|
||||||
|
chmod 755 "$dirInstall"
|
||||||
|
[[ $lang == "en" ]] && echo " - User $username has been added to system!" || echo " - пользователь $username добавлен!"
|
||||||
|
} || {
|
||||||
|
[[ $lang == "en" ]] && echo " - Failed to add $username user!" || echo " - не удалось добавить пользователя $username!"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function delUser() {
|
||||||
|
if isRoot; then
|
||||||
|
[[ $username == "root" ]] && return 0
|
||||||
|
egrep "^$username" /etc/passwd >/dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
userdel --remove "$username" 2>/dev/null # --force
|
||||||
|
[ $? -eq 0 ] && {
|
||||||
|
[[ $lang == "en" ]] && echo " - User $username has been removed from system!" || echo " - Пользователь $username удален!"
|
||||||
|
} || {
|
||||||
|
[[ $lang == "en" ]] && echo " - Failed to remove $username user!" || echo " - не удалось удалить пользователя $username!"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
[[ $lang == "en" ]] && echo " - $username - no such user!" || echo " - пользователь $username не найден!"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function checkRunning() {
|
function checkRunning() {
|
||||||
runningPid=$(ps -ax|grep -i torrserver|grep -v grep|grep -v "$scriptname"|awk '{print $1}')
|
runningPid=$(ps -ax|grep -i torrserver|grep -v grep|grep -v "$scriptname"|awk '{print $1}')
|
||||||
echo $runningPid
|
echo $runningPid
|
||||||
@@ -29,6 +67,8 @@ function getIP() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function uninstall() {
|
function uninstall() {
|
||||||
|
checkArch
|
||||||
|
checkInstalled
|
||||||
[[ $lang == "en" ]] && {
|
[[ $lang == "en" ]] && {
|
||||||
echo ""
|
echo ""
|
||||||
echo " TorrServer install dir - ${dirInstall}"
|
echo " TorrServer install dir - ${dirInstall}"
|
||||||
@@ -46,8 +86,7 @@ function uninstall() {
|
|||||||
if [ "$answer_del" != "${answer_del#[YyДд]}" ]; then
|
if [ "$answer_del" != "${answer_del#[YyДд]}" ]; then
|
||||||
cleanup
|
cleanup
|
||||||
cleanAll
|
cleanAll
|
||||||
echo ""
|
[[ $lang == "en" ]] && echo " - TorrServer uninstalled!" || echo " - TorrServer удален из системы!"
|
||||||
[[ $lang == "en" ]] && echo " TorrServer deleted!" || echo " TorrServer удален!"
|
|
||||||
echo ""
|
echo ""
|
||||||
else
|
else
|
||||||
echo ""
|
echo ""
|
||||||
@@ -58,11 +97,13 @@ function cleanup() {
|
|||||||
systemctl stop $serviceName 2>/dev/null
|
systemctl stop $serviceName 2>/dev/null
|
||||||
systemctl disable $serviceName 2>/dev/null
|
systemctl disable $serviceName 2>/dev/null
|
||||||
rm -rf /usr/local/lib/systemd/system/$serviceName.service $dirInstall 2>/dev/null
|
rm -rf /usr/local/lib/systemd/system/$serviceName.service $dirInstall 2>/dev/null
|
||||||
|
delUser
|
||||||
}
|
}
|
||||||
|
|
||||||
function cleanAll() { # guess other installs
|
function cleanAll() { # guess other installs
|
||||||
systemctl stop torr torrserver 2>/dev/null
|
systemctl stop torr torrserver 2>/dev/null
|
||||||
systemctl disable torr torrserver 2>/dev/null
|
systemctl disable torr torrserver 2>/dev/null
|
||||||
|
rm -rf /home/torrserver 2>/dev/null
|
||||||
rm -rf /usr/local/torr 2>/dev/null
|
rm -rf /usr/local/torr 2>/dev/null
|
||||||
rm -rf /opt/torr{,*} 2>/dev/null
|
rm -rf /opt/torr{,*} 2>/dev/null
|
||||||
rm -f /{,etc,usr/local/lib}/systemd/system/tor{,r,rserver}.service 2>/dev/null
|
rm -f /{,etc,usr/local/lib}/systemd/system/tor{,r,rserver}.service 2>/dev/null
|
||||||
@@ -222,8 +263,8 @@ function installTorrServer() {
|
|||||||
After = network.target
|
After = network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
User = root
|
User = $username
|
||||||
Group = root
|
Group = $username
|
||||||
Type = simple
|
Type = simple
|
||||||
NonBlocking = true
|
NonBlocking = true
|
||||||
EnvironmentFile = $dirInstall/$serviceName.config
|
EnvironmentFile = $dirInstall/$serviceName.config
|
||||||
@@ -309,7 +350,8 @@ EOF
|
|||||||
|
|
||||||
[[ $lang == "en" ]] && echo " Starting TorrServer…" || echo " Запускаем службу TorrServer…"
|
[[ $lang == "en" ]] && echo " Starting TorrServer…" || echo " Запускаем службу TorrServer…"
|
||||||
systemctl daemon-reload 2>/dev/null
|
systemctl daemon-reload 2>/dev/null
|
||||||
systemctl enable --now $serviceName.service 2>/dev/null
|
systemctl enable $serviceName.service 2>/dev/null # enable --now
|
||||||
|
systemctl restart $serviceName.service 2>/dev/null
|
||||||
getIP
|
getIP
|
||||||
[[ $lang == "en" ]] && {
|
[[ $lang == "en" ]] && {
|
||||||
echo ""
|
echo ""
|
||||||
@@ -331,6 +373,9 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
function checkInstalled() {
|
function checkInstalled() {
|
||||||
|
if ! addUser; then
|
||||||
|
username="root"
|
||||||
|
fi
|
||||||
binName="TorrServer-linux-${architecture}"
|
binName="TorrServer-linux-${architecture}"
|
||||||
if [[ -f "$dirInstall/$binName" ]] || [[ $(stat -c%s "$dirInstall/$binName" 2>/dev/null) -ne 0 ]]; then
|
if [[ -f "$dirInstall/$binName" ]] || [[ $(stat -c%s "$dirInstall/$binName" 2>/dev/null) -ne 0 ]]; then
|
||||||
[[ $lang == "en" ]] && echo " - TorrServer found in $dirInstall" || echo " - TorrServer найден в директории $dirInstall"
|
[[ $lang == "en" ]] && echo " - TorrServer found in $dirInstall" || echo " - TorrServer найден в директории $dirInstall"
|
||||||
@@ -351,12 +396,12 @@ function checkInstalledVersion() {
|
|||||||
else
|
else
|
||||||
[[ $lang == "en" ]] && {
|
[[ $lang == "en" ]] && {
|
||||||
echo " - TorrServer update found!"
|
echo " - TorrServer update found!"
|
||||||
echo " installed: \"$($dirInstall/$binName --version 2>/dev/null | awk '{print $2}')\""
|
echo " installed: \"$($dirInstall/$binName --version 2>/dev/null | awk '{print $2}')\""
|
||||||
echo " available: \"$(getLatestRelease)\""
|
echo " available: \"$(getLatestRelease)\""
|
||||||
} || {
|
} || {
|
||||||
echo " - Доступно обновление сервера"
|
echo " - Доступно обновление сервера"
|
||||||
echo " установлен: \"$($dirInstall/$binName --version 2>/dev/null | awk '{print $2}')\""
|
echo " установлен: \"$($dirInstall/$binName --version 2>/dev/null | awk '{print $2}')\""
|
||||||
echo " обновление: \"$(getLatestRelease)\""
|
echo " обновление: \"$(getLatestRelease)\""
|
||||||
}
|
}
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -424,7 +469,7 @@ case $1 in
|
|||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
-r|--remove|remove)
|
-r|--remove|remove)
|
||||||
cleanup
|
uninstall
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
-h|--help|help)
|
-h|--help|help)
|
||||||
|
|||||||
Reference in New Issue
Block a user