52 lines
1.6 KiB
Bash
Executable file
52 lines
1.6 KiB
Bash
Executable file
#!/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
|