Initial
This commit is contained in:
78
matrix_prune-messages.v1.sh
Normal file
78
matrix_prune-messages.v1.sh
Normal file
@@ -0,0 +1,78 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user