|
69 | 69 | chmod 600 "$CREDS_FILE" |
70 | 70 | } |
71 | 71 |
|
| 72 | +set_env_key() { |
| 73 | + local key="$1" |
| 74 | + local value="$2" |
| 75 | + local file="$3" |
| 76 | + local safe_value |
| 77 | + |
| 78 | + if [[ ! -f "$file" ]]; then |
| 79 | + return 1 |
| 80 | + fi |
| 81 | + |
| 82 | + safe_value="${value//\\/\\\\}" |
| 83 | + safe_value="${safe_value//&/\\&}" |
| 84 | + |
| 85 | + if grep -q "^${key}=" "$file"; then |
| 86 | + sed -i '' "s|^${key}=.*|${key}=${safe_value}|" "$file" |
| 87 | + else |
| 88 | + printf '\n%s=%s\n' "$key" "$value" >> "$file" |
| 89 | + fi |
| 90 | +} |
| 91 | + |
| 92 | +wire_recyclarr_keys() { |
| 93 | + local recyclarr_cfg="$MEDIA_DIR/config/recyclarr/recyclarr.yml" |
| 94 | + local tmp |
| 95 | + |
| 96 | + if [[ ! -f "$recyclarr_cfg" ]]; then |
| 97 | + warn "Recyclarr config not found at $recyclarr_cfg (skipping key injection)" |
| 98 | + return 0 |
| 99 | + fi |
| 100 | + |
| 101 | + tmp="$(mktemp)" |
| 102 | + awk -v sonarr_key="$SONARR_KEY" -v radarr_key="$RADARR_KEY" ' |
| 103 | + /^sonarr:/ {section="sonarr"} |
| 104 | + /^radarr:/ {section="radarr"} |
| 105 | + { |
| 106 | + if (section=="sonarr" && $0 ~ /^[[:space:]]+api_key:[[:space:]]*/) { |
| 107 | + print " api_key: " sonarr_key |
| 108 | + next |
| 109 | + } |
| 110 | + if (section=="radarr" && $0 ~ /^[[:space:]]+api_key:[[:space:]]*/) { |
| 111 | + print " api_key: " radarr_key |
| 112 | + next |
| 113 | + } |
| 114 | + print |
| 115 | + } |
| 116 | + ' "$recyclarr_cfg" > "$tmp" |
| 117 | + mv "$tmp" "$recyclarr_cfg" |
| 118 | + log "Recyclarr API keys written to $recyclarr_cfg" |
| 119 | +} |
| 120 | + |
| 121 | +wire_unpackerr_keys() { |
| 122 | + local env_file="$SCRIPT_DIR/.env" |
| 123 | + local unpackerr_state |
| 124 | + |
| 125 | + if ! set_env_key "UN_SONARR_0_API_KEY" "$SONARR_KEY" "$env_file"; then |
| 126 | + warn "Could not update UN_SONARR_0_API_KEY in $env_file" |
| 127 | + return 0 |
| 128 | + fi |
| 129 | + if ! set_env_key "UN_RADARR_0_API_KEY" "$RADARR_KEY" "$env_file"; then |
| 130 | + warn "Could not update UN_RADARR_0_API_KEY in $env_file" |
| 131 | + return 0 |
| 132 | + fi |
| 133 | + log "Unpackerr API keys updated in .env" |
| 134 | + |
| 135 | + unpackerr_state=$(docker inspect -f '{{.State.Status}}' unpackerr 2>/dev/null || true) |
| 136 | + if [[ "$unpackerr_state" == "running" || "$unpackerr_state" == "created" || "$unpackerr_state" == "restarting" ]]; then |
| 137 | + if docker compose restart unpackerr >/dev/null 2>&1; then |
| 138 | + log "Unpackerr restarted to apply new API keys" |
| 139 | + else |
| 140 | + warn "Unpackerr restart failed; run 'docker compose restart unpackerr' manually" |
| 141 | + fi |
| 142 | + else |
| 143 | + warn "Unpackerr container not found/running; start stack then run 'docker compose restart unpackerr'" |
| 144 | + fi |
| 145 | +} |
| 146 | + |
72 | 147 | api_post_json() { |
73 | 148 | local label="$1" |
74 | 149 | local url="$2" |
@@ -176,6 +251,11 @@ PROWLARR_KEY=$(get_api_key "prowlarr") |
176 | 251 | log "Prowlarr API key: ${PROWLARR_KEY:0:8}..." |
177 | 252 | echo "" |
178 | 253 |
|
| 254 | +echo -e "${CYAN}[*] Wiring advanced configs...${NC}" |
| 255 | +wire_recyclarr_keys |
| 256 | +wire_unpackerr_keys |
| 257 | +echo "" |
| 258 | + |
179 | 259 | # 3. Configure qBittorrent |
180 | 260 | echo -e "${CYAN}[3/6] Configuring qBittorrent...${NC}" |
181 | 261 | echo "" |
@@ -324,9 +404,9 @@ echo " Sonarr API Key: $SONARR_KEY" |
324 | 404 | echo " Prowlarr API Key: $PROWLARR_KEY" |
325 | 405 | echo " Saved credentials: $CREDS_FILE" |
326 | 406 | echo "" |
327 | | -echo -e " ${YELLOW}Save these!${NC} You'll need the API keys for:" |
328 | | -echo " - configs/recyclarr.yml (copy to $MEDIA_DIR/config/recyclarr/)" |
329 | | -echo " - .env (UN_SONARR_0_API_KEY and UN_RADARR_0_API_KEY for Unpackerr)" |
| 407 | +echo -e " ${YELLOW}Auto-wired:${NC} Recyclarr + Unpackerr API keys" |
| 408 | +echo " Remaining manual keys:" |
| 409 | +echo " - $MEDIA_DIR/config/kometa/config.yml (PLEX_TOKEN, TMDB API key)" |
330 | 410 | echo "" |
331 | 411 | echo " Seerr: http://localhost:5055" |
332 | 412 | echo " Plex: http://localhost:32400/web" |
|
0 commit comments