Matrix_Get-Token_Toolbox/README.md

104 lines
No EOL
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔑 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.1.1` *(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! 🚀🤖