From 8223e98f0dfde2791e1abc49e4adb27411e89de1 Mon Sep 17 00:00:00 2001 From: christian Date: Thu, 4 Jun 2026 16:29:04 +0200 Subject: [PATCH] Update am 04.06.2026 16:29 --- README.md | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4df0e4e..c2b9bd2 100644 --- a/README.md +++ b/README.md @@ -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! 🚀🤖 \ No newline at end of file