78 lines
2.6 KiB
Bash
78 lines
2.6 KiB
Bash
#!/bin/bash
|
|
# Autor: Patrick Asmus
|
|
# Web: https://www.techniverse.net
|
|
# Git-Reposit.: https://git.techniverse.net/Backups/backup_matrixsynapse
|
|
# Cron: 0 23 * * * bash /home/scripts/default/matrix_prune-messages.v1.sh >/dev/null 2>&1
|
|
# Version: 1.0
|
|
# Datum: 26.03.2025
|
|
# Modifikation: Initial
|
|
#####################################################
|
|
|
|
# 🔐 Token
|
|
TOKEN=""
|
|
|
|
# 📄 Log-Datei
|
|
LOGFILE="/var/log/matrix_prune.log"
|
|
|
|
# 🗂️ Räume nach Aufbewahrungsdauer
|
|
ROOMS_7DAYS=(
|
|
"!gHtY78vXsQwErTyUiO:matrixdomain.com" # System Alerts & Monitoring
|
|
"!zXc12vBnMaSdFgHjKl:matrixdomain.com" # DevOps Deployment Notifications
|
|
"!lPo98AsDfGhJkLmNqW:matrixdomain.com" # GitLab CI/CD Build Updates
|
|
"!xYu78vCzBnMqwErTyU:matrixdomain.com" # Webhook Events (external services)
|
|
)
|
|
|
|
ROOMS_30DAYS=(
|
|
"!nMki87HgFdSaQwErTy:matrixdomain.com" # Company Announcements
|
|
"!vCxZrTuBnMwEyUiOpL:matrixdomain.com" # Community Chat (public)
|
|
"!aSdFgHjKlQwErTyUiO:matrixdomain.com" # Uptime & Status Reports
|
|
)
|
|
|
|
# ⏱️ Timestamps
|
|
TS_7DAYS=$(date --date='7 days ago' +%s000)
|
|
TS_30DAYS=$(date --date='30 days ago' +%s000)
|
|
DATE_NOW=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
# 🧩 Funktion: Prüfen & loggen
|
|
log_response() {
|
|
local room_id=$1
|
|
local days=$2
|
|
local response=$3
|
|
local status="unbekannt"
|
|
|
|
if command -v jq >/dev/null 2>&1; then
|
|
purge_id=$(echo "$response" | jq -r '.purge_id // empty')
|
|
error=$(echo "$response" | jq -r '.error // empty')
|
|
else
|
|
purge_id=$(echo "$response" | grep -o '"purge_id":"[^"]*"' | cut -d'"' -f4)
|
|
error=$(echo "$response" | grep -o '"error":"[^"]*"' | cut -d'"' -f4)
|
|
fi
|
|
|
|
if [[ -n "$purge_id" ]]; then
|
|
status="✅ purge gestartet (purge_id: $purge_id)"
|
|
elif [[ -n "$error" ]]; then
|
|
status="⚠️ $error"
|
|
else
|
|
status="⚠️ Unbekannte Antwort: $response"
|
|
fi
|
|
|
|
echo "[$DATE_NOW] [$days Tage] $room_id → $status" >> "$LOGFILE"
|
|
}
|
|
|
|
# 🔁 Räume mit 7 Tagen
|
|
for ROOM_ID in "${ROOMS_7DAYS[@]}"; do
|
|
RESPONSE=$(curl -s -X POST "http://localhost:8008/_synapse/admin/v1/purge_history/$ROOM_ID" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"purge_up_to_ts\": $TS_7DAYS}")
|
|
log_response "$ROOM_ID" "7" "$RESPONSE"
|
|
done
|
|
|
|
# 🔁 Räume mit 30 Tagen
|
|
for ROOM_ID in "${ROOMS_30DAYS[@]}"; do
|
|
RESPONSE=$(curl -s -X POST "http://localhost:8008/_synapse/admin/v1/purge_history/$ROOM_ID" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"purge_up_to_ts\": $TS_30DAYS}")
|
|
log_response "$ROOM_ID" "30" "$RESPONSE"
|
|
done |