#!/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