diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..de00edc --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +SLSKD_URL="http://localhost:5030" +SLSKD_USER="slskd" +SLSKD_PASS="slskd" +GOTIFY_URL="https://notify.example.com" +GOTIFY_TOKEN="" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env diff --git a/README.md b/README.md index d838f2c..5d552f4 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,11 @@ Uploads are intentionally **not** counted as activity — they're what you're tr sudo chmod +x /opt/arr/slskd/scripts/auto-disconnect.sh ``` -2. Edit the configuration variables at the top of the script (`SLSKD_URL`, `SLSKD_USER`, `SLSKD_PASS`, `CONTAINER_NAME`, etc.) +2. Create a `.env` file from the example: + ```bash + sudo cp .env.example /opt/arr/slskd/scripts/.env + sudo nano /opt/arr/slskd/scripts/.env + ``` 3. Add a cron job (as root): ```bash @@ -40,23 +44,16 @@ Uploads are intentionally **not** counted as activity — they're what you're tr ## Configuration -Variables at the top of the script: +The script loads a `.env` file from its own directory. See `.env.example` for all available options. | Variable | Default | Description | |----------|---------|-------------| | `SLSKD_URL` | `http://localhost:5030` | slskd API base URL | | `SLSKD_USER` | `slskd` | slskd web UI username | | `SLSKD_PASS` | `slskd` | slskd web UI password | -| `CONTAINER_NAME` | `slskd` | Docker container name | -| `LOG_CHECK_MIN` | `5` | How far back to check docker logs (minutes) | -| `LOG_MAX_LINES` | `500` | Max log file lines before truncation | - -Environment variable overrides: - -| Variable | Default | Description | -|----------|---------|-------------| | `SLSKD_IDLE_TIMEOUT` | `30` | Minutes of inactivity before disconnect | -| `SLSKD_GOTIFY_TOKEN` | *(empty)* | Gotify app token for push notifications | +| `GOTIFY_URL` | *(empty)* | Gotify server URL for push notifications | +| `GOTIFY_TOKEN` | *(empty)* | Gotify app token for push notifications | ## Logs diff --git a/auto-disconnect.sh b/auto-disconnect.sh index 9d8f77f..e0131d2 100644 --- a/auto-disconnect.sh +++ b/auto-disconnect.sh @@ -16,21 +16,29 @@ set -euo pipefail +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" + +# Load .env if present +if [ -f "$SCRIPT_DIR/.env" ]; then + set -a + source "$SCRIPT_DIR/.env" + set +a +fi + # --- Configuration --- -SLSKD_URL="http://localhost:5030" -SLSKD_USER="slskd" -SLSKD_PASS="slskd" +SLSKD_URL="${SLSKD_URL:-http://localhost:5030}" +SLSKD_USER="${SLSKD_USER:-slskd}" +SLSKD_PASS="${SLSKD_PASS:-slskd}" IDLE_TIMEOUT_MIN="${SLSKD_IDLE_TIMEOUT:-30}" LOG_CHECK_MIN=5 CONTAINER_NAME="slskd" -SCRIPT_DIR="/opt/arr/slskd/scripts" STATE_FILE="$SCRIPT_DIR/.last_active" LOG_FILE="$SCRIPT_DIR/auto-disconnect.log" LOG_MAX_LINES=500 -GOTIFY_URL="https://notify.thecozycat.net" -GOTIFY_TOKEN="${SLSKD_GOTIFY_TOKEN:-}" +GOTIFY_URL="${GOTIFY_URL:-}" +GOTIFY_TOKEN="${GOTIFY_TOKEN:-}" # --- Functions --- @@ -105,7 +113,7 @@ seconds_since_active() { notify() { local msg="$1" - if [ -n "$GOTIFY_TOKEN" ]; then + if [ -n "$GOTIFY_TOKEN" ] && [ -n "$GOTIFY_URL" ]; then curl -sf --max-time 10 "$GOTIFY_URL/message" -X POST \ -H "X-Gotify-Key: $GOTIFY_TOKEN" \ -F "title=slskd" \