| .gitignore | ||
| get-token.sh | ||
| README.md | ||
🔑 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ürcurl, 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_FORBIDDENbei 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:
sudo apt update && sudo apt install curl grep -y
🔧 Installation & Verwendung
- Erstelle die Datei auf deinem System:
micro get-token.sh - Kopiere den Code des Skripts hinein und speichere die Datei.
- Mach das Skript ausführbar:
chmod +x get-token.sh - Starte den Token-Generator:
./get-token.sh
📝 Das aktuelle Skript (get-token.sh)
#!/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! 🚀🤖