#!/bin/bash # --- EINGABE: SERVER-DATEN --- read -p "Matrix-Domain [http://matrix-client.matrix.org]: " DOMAIN DOMAIN=${DOMAIN:-http://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":"[^"]*' | cut -d'"' -f4) 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