opsdash-app/opsdash/tools/security/run_notes_csrf.sh
2025-12-11 11:38:33 +07:00

30 lines
995 B
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
BASE=${OPSDASH_BASE:-http://localhost:8088}
APP_PATH=${OPSDASH_APP_PATH:-/index.php/apps/opsdash}
NOTES_URL="$BASE$APP_PATH/overview/notes"
OVERVIEW_URL="$BASE$APP_PATH/overview"
USER=${OPSDASH_USER:-admin}
PASS=${OPSDASH_PASS:-admin}
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
. "$SCRIPT_DIR/_token.sh"
echo "[notes-csrf] Using basic auth for API calls"
AUTH=(curl -s -u "$USER:$PASS" -H 'OCS-APIREQUEST: true')
TOKEN=$(fetch_requesttoken "$BASE$APP_PATH" "$USER" "$PASS" || true)
if [ -z "$TOKEN" ]; then
echo "Failed to extract requesttoken from overview HTML" >&2
exit 1
fi
echo "[notes-csrf] Token: ${TOKEN:0:8}..."
PAYLOAD='{"range":"week","offset":0,"content":"Automation note via CSRF script"}'
"${AUTH[@]}" -H 'Content-Type: application/json' -H "requesttoken: $TOKEN" \
-X POST "$NOTES_URL" --data "$PAYLOAD" | jq '.ok'
"${AUTH[@]}" -H "requesttoken: $TOKEN" \
"$NOTES_URL?range=week&offset=0" | jq '.notes.current'