Matrix_Get-Token_Toolbox/README.md

4.1 KiB
Raw Permalink Blame History

🔑 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:

sudo apt update && sudo apt install curl grep -y

🔧 Installation & Verwendung

  1. Erstelle die Datei auf deinem System:
    micro get-token.sh
    
  2. Kopiere den Code des Skripts hinein und speichere die Datei.
  3. Mach das Skript ausführbar:
    chmod +x get-token.sh
    
  4. 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! 🚀🤖