131 lines
5.0 KiB
Bash
Executable File
131 lines
5.0 KiB
Bash
Executable File
#!/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 |