Update am 04.06.2026 16:29

This commit is contained in:
christian 2026-06-04 16:29:04 +02:00
parent fc2a7b2ce0
commit 8223e98f0d

105
README.md
View file

@ -1 +1,104 @@
# Matrix_Get-Token_Toolbox # 🔑 Matrix Get-Token Toolbox (`get-token.sh`)
Ein interaktives, universelles Bash-Skript zum Generieren von dauerhaften, langlebigen API-Access-Tokens (Sitzungs-Tokens) für deinen **Matrix-Server** (z. B. Conduit).
Dieses Skript ist vollkommen flexibel: Es funktioniert sowohl im **lokalen Netzwerk (Heimnetz/WLAN)** als auch **von unterwegs (öffentliches Internet)** und bietet intelligente Standardwerte für dein Setup.
## 🚀 Features
- **Universell & Dynamisch:** Fragt Domain, IP, Benutzername und Passwort interaktiv ab.
- **Intelligente Standardwerte:** Bei Drücken der `Enter`-Taste werden automatisch deine vorkonfigurierten Heimnetz-Daten ausgewählt.
- **Hybrid-Netzwerk-Modus (Drinnen & Draußen):** - *Zuhause:* Nutzt eine `--resolve`-Regel für `curl`, um NAT-Loopback-Sperren deines Routers zu umgehen.
- *Unterwegs:* Lässt die IP-Auflösung einfach weg und funkt direkt sicher über das Internet.
- **Fehler-Debugging:** Zeigt dir exakte Server-Rückmeldungen (wie `M_FORBIDDEN` bei falschem Passwort) anstatt stumm abzustürzen.
- **Kugelsicheres JSON:** Verhindert durch clevere Maskierung (`'"$VARIABLE"'`), dass Sonderzeichen im Passwort die JSON-Struktur zerstören.
## 🛠️ Voraussetzungen
Das Skript benötigt lediglich `curl` und `grep`:
```bash
sudo apt update && sudo apt install curl grep -y
```
## 🔧 Installation & Verwendung
1. Erstelle die Datei auf deinem System:
```bash
micro get-token.sh
```
2. Kopiere den Code des Skripts hinein und speichere die Datei.
3. Mach das Skript ausführbar:
```bash
chmod +x get-token.sh
```
4. Starte den Token-Generator:
```bash
./get-token.sh
```
## 📝 Das aktuelle Skript (`get-token.sh`)
```bash
#!/bin/bash
# --- EINGABE: SERVER-DATEN ---
read -p "Matrix-Domain [https://matrix-client.matrix.org]: " DOMAIN
DOMAIN=${DOMAIN:-matrix-client.matrix.org}
# Wenn du unterwegs bist, drücke hier einfach direkt Enter (leer lassen)
read -p "Lokale Server-IP (Leer lassen, wenn du unterwegs bist!): " SERVER_IP
# --- EINGABE: BENUTZER-DATEN ---
read -p "Matrix-Benutzername: " USERNAME
read -s -p "Matrix-Passwort: " PASSWORD
echo ""
echo "Verbinde mit Matrix-Server https://$DOMAIN ..."
# --- RESOLVE LOGIK PRÜFEN ---
# Wenn eine IP eingegeben wurde, nutzen wir --resolve. Wenn nicht, fragen wir direkt das Internet ab.
if [ -n "$SERVER_IP" ]; then
# Wichtig: Nur die reine IP eintragen (z.B. 192.168.10.118), ohne Port (:6167)!
RESOLVE_PARAM="--resolve ${DOMAIN}:443:${SERVER_IP}"
else
RESOLVE_PARAM=""
fi
# --- API-ABRUF ---
RESPONSE=$(curl -k -s -X POST $RESOLVE_PARAM "https://${DOMAIN}/_matrix/client/v3/login" -H "Content-Type: application/json" -d '{
"type": "m.login.password",
"identifier": { "type": "m.id.user", "user": "'"$USERNAME"'" },
"password": "'"$PASSWORD"'"
}')
# --- TOKEN EXTRAKTION ---
TOKEN=$(echo "$RESPONSE" | grep -o '"access_token":"[^"]*' | grep -o '[^0-9a-zA-Z]*$' | grep -o '[^"]*$')
if [ -n "$TOKEN" ]; then
echo "✅ Login für @${USERNAME} auf ${DOMAIN} erfolgreich!"
echo "Dein Token lautet:"
echo "$TOKEN"
else
echo "❌ Fehler beim Login für @${USERNAME}!"
echo "Antwort vom Server war:"
if [ -z "$RESPONSE" ]; then
echo "[Keine Antwort vom Server Internetverbindung, IP oder Portfreigabe prüfen]"
else
echo "$RESPONSE"
fi
fi
```
## 💡 Richtig ausfüllen (Spickzettel)
| Szenario | Matrix-Domain | Lokale Server-IP |
| :--- | :--- | :--- |
| **Im Heimnetz (WLAN/Keller)** | `Enter` drücken *(Nutzt Standard)* | `192.168.10.118` *(Reine Matrix-IP, kein Port!)* |
| **Von unterwegs (Mobiles Netz)** | `Enter` drücken *(Nutzt Standard)* | `Enter` drücken *(Leer lassen!)* |
> ⚠️ **Achtung Verwechslungsgefahr:** Trag bei der lokalen IP niemals den Port deiner Element-Web-App (`:6167`) ein! Das Skript muss direkt mit der Backend-IP deines Conduit-Servers sprechen.
---
🌟 **Hinweis:** Dieses Skript wurde mit viel Herzblut, terminaler Leidenschaft und der tatkräftigen Unterstützung von **Gemini** geschmiedet. Mögen deine Skripte niemals wieder ein `M_UNKNOWN_TOKEN` werfen! 🚀🤖