Files

131 lines
5.0 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -euo pipefail
# Этот скрипт делает 3 основные вещи:
# 1. Устанавливает каталоги загрузки и завершения по умолчанию на /downloads/incomplete и /downloads/complete соответственно.
# 2. Настраивает ini-файл, чтобы приложения *arr могли автоматически настраивать SABnzbd.
# 3. Перезапускает все установленные приложения *arr, чтобы можно было выполнить автоконфигурацию.
# Перед запуском мастера установки мы можем добавить категории по умолчанию в ini-файл приложения SABnzbd, не беспокоясь о сохранении пользовательских изменений.
# 1. Добавьте имя контейнера SABnzbd в host_whitelist в ini-файле приложения SABnzbd:
# host_whitelist = <все, что здесь установлено по умолчанию>, sabnzbd_web_1
# 2. Добавьте категории по умолчанию в INI-файл приложения SABnzbd для каждого приложения arr.
APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")"
SABNZBD_CONF_FILE="${APP_DATA_DIR}/data/config/sabnzbd.ini"
# Подождите до 30 секунд, пока файл sabnzbd.conf появится.
echo "Waiting up to 30 seconds for sabnzbd.ini file to exist..."
for attempt in $(seq 1 300); do
if [[ -f "${SABNZBD_CONF_FILE}" ]]; then
echo "sabnzbd.ini file exists"
break
fi
sleep 0.1
done
if [[ ! -f "${SABNZBD_CONF_FILE}" ]]; then
echo "sabnzbd.ini was never created. Something is likely wrong with the SABnzbd app."
exit
fi
# подождите 5 секунд, чтобы убедиться, что файл полностью записан службой SABnzbd.
echo "Waiting 5 seconds for sabnzbd.ini file to be fully written..."
sleep 5
# остановить службу SABnzbd
echo "Stopping SABnzbd..."
"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" stop web
# Перезаписать каталоги загрузки
echo "Overwriting download_dir and complete_dir in sabnzbd.ini"
sed -i 's/download_dir = Downloads\/incomplete/download_dir = \/downloads\/incomplete/' "${SABNZBD_CONF_FILE}"
sed -i 's/complete_dir = Downloads\/complete/complete_dir = \/downloads\/complete/' "${SABNZBD_CONF_FILE}"
# Добавьте имя контейнера SABnzbd в host_whitelist в ini-файле приложения SABnzbd.
echo "Adding SABnzbd container name to host_whitelist in sabnzbd.ini"
if grep -q '^host_whitelist =' "${SABNZBD_CONF_FILE}"; then
sed -i 's/^host_whitelist = \(.*\)/host_whitelist = \1 sabnzbd_web_1,/' "${SABNZBD_CONF_FILE}"
else
sed -i '/^\[misc\]/a host_whitelist = sabnzbd_web_1,' "${SABNZBD_CONF_FILE}"
fi
# Добавьте категории в ini-файл приложения SABnzbd.
# Мы делаем это, потому что приложения *arr требуют, чтобы точные имена категорий присутствовали в ini-файле приложения SABnzbd для автоматической настройки SABnzbd.
categories_content=$(cat << 'EOF'
[categories]
[[*]]
name = *
order = 0
pp = 3
script = None
dir =
newzbin =
priority = 0
[[movies]]
name = movies
order = 0
pp =
script = Default
dir = /downloads/movies
newzbin = movies
priority = 0
[[prowlarr-fallback]]
name = prowlarr-fallback
order = 0
pp =
script = Default
dir = /downloads
newzbin =
priority = -100
[[books]]
name = books
order = 0
pp =
script = Default
dir = /downloads/books
newzbin = books
priority = -100
[[shows]]
name = shows
order = 0
pp =
script = Default
dir = /downloads/shows
newzbin = shows
priority = 0
[[music]]
name = music
order = 0
pp =
script = Default
dir = /downloads/music
newzbin = music
priority = 0
EOF
)
# Добавьте категории в ini-файл
echo "$categories_content" >> "$SABNZBD_CONF_FILE"
echo "Appended [categories] section with subheaders to $SABNZBD_CONF_FILE"
# Запустите службу SABnzbd.
echo "Starting SABnzbd..."
"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" start web
# Перезапустите приложения *arr, чтобы запустить автоматическую настройку.
apps=("radarr" "sonarr" "lidarr" "readarr" "prowlarr")
installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed)
for app in "${apps[@]}"; do
if echo "$installed_apps" | grep --quiet "$app"; then
# Мы не блокируем скрипт при перезапуске приложений, поскольку хотим перезапускать все приложения параллельно.
# AND нам нужно, чтобы SABnzbd отображался в списке установленных приложений при перезапуске приложений.
"${DFWEBOS_ROOT}/scripts/app" restart "$app" &
fi
done