IP-Symcon - JSON RPC Schnittstelle

…habe noch mal etwas anderes probiert…
Wenn der Wohnwagen neben dem Haus steht bucht der Raspberry Pi sich in mein WLAN ein und hat damit eine „interne“ IP, ansonsten ist der „normale“ Weg ein LTE-Router.
Vom Browser funktionieren beide Variante was Webfront und Konsole angeht.
Aus dem Skript heraus funktioniert aber weder die DynDNS Anbindung über LTE, noch die direkte IP über das WLAN.

@Nall-chan : Das " fehlt nur hier im Forum (Copy/Paste/Edit-Fehler :wink: ), aber danke für den Hinweis

Noch jemand eine Idee woran es scheitern könnte?

Joachim

Unabhängig davon warum es nicht geht.
Du willst das extern nur über HTTPS über Symcon Connect benutzen und nicht über http. Sonst sind deine Zugangsdaten lesbar.
Wie gesagt, so wie oben nur ohne das urlencode beim Benutzer, geht es bei mir.
Tippfehler beim Benutzer/Passwort?
Michael

.Hallo Michael,

wenn den erstellten String so in den Browser kopiere, dann funktioniert es, von daher gehe ich davon aus dass die Zugangsdaten korrekt sind…

Da http schon nicht funktioniert habe ich mich bisher noch nicht um https gekümmert. Die Fehlermeldung lautet dann:

Warning: file_get_contents(): SSL: Erfolg in /usr/share/symcon/scripts/__rpc.inc.php on line 89

Warning: file_get_contents(): Failed to enable crypto in /usr/share/symcon/scripts/__rpc.inc.php on line 89
Warning: file_get_contents(https://MeineDomain:3777/api/): failed to open stream: operation failed in /usr/share/symcon/scripts/__rpc.inc.php on line 89
Server Problem: Unable to connect

Joachim

Dann ist da auch ein gültiges Zertifikat.
also https://<irgendwas>.ipmacgic.de/api/

Einfach https auf 3777 geht nicht. Der Port 3777 ist unverschlüsselt :wink:

$URL = "192.168.xxx.yyy";
$User = "myname@domain.com";
$Pass = urlencode('MeinPasswort');
try {
    $rpc = new JSONRPC('http://'.$User.':'.$Pass.'@'.$URL.':3777/api/');
    echo $rpc->IPS_GetKernelDir();
} catch (JSONRPCException $e) {
    echo 'RPC Problem: ',  $e->getMessage(), "\n";
} catch (Exception $e) {
    echo 'Server Problem: ',  $e->getMessage(), "\n";
}

Ausgabe:

/var/lib/symcon/

Connect:

$URL = "xxxxxxxxxxxxxxxxxxxxxxxx.ipmagic.de";
$User = "myname@domain.com";
$Pass = urlencode('MeinPasswort');
try {
    $rpc = new JSONRPC('https://'.$User.':'.$Pass.'@'.$URL.'/api/');
    echo $rpc->IPS_GetKernelDir();
} catch (JSONRPCException $e) {
    echo 'RPC Problem: ',  $e->getMessage(), "\n";
} catch (Exception $e) {
    echo 'Server Problem: ',  $e->getMessage(), "\n";
}

Michael
PS: Browser zählen nicht… die maskieren oder verändern die URL einfach intern…

Das ist ein Verbindungsproblem. Da tauschen wir definitiv noch keiner Benutzer/Passwort aus :slight_smile:

paresy

Hallo Michael und Paresy,

vielen Dank für Eure Antworten!

Beschränken wir uns also zunächst einmal auf den Zugriff über das interne Netz und http Ein positive Rückmeldung von Sys_Ping zeigt mir das der Raspberry Pi erreichbar ist, warum kommt dann aus der Funkion ein „Unable to connect“?
Warum funktioniert dann ein „http://InterneIP:3777/console/“ aus dem Browser heraus? Auch der Zugriff per SSH auf den Raspberry Pi funktioniert doch einwandfrei?

Ich verstehe es nicht…

Joachim

Das ist nur das Ende, der eigentliche Fehler steht da auch:

Also Zugangsdaten falsch :wink:
Hast du beim passwort auch das urlencode mal weg gelassen?!
Michael

Ggf. auch mal einen ersten Test mit dem Passwort 123 machen, um irgendein merkwürdiges Sonderzeichen auszuschließen.

Ich kann mich erinnern - vor langer langer Zeit - hatte ich mal fürs Webfront auch ein PW mit einem Sonderzeichen (weiß leider nicht mehr welches - könnte Dollar gewesen sein) gesetzt und dann kam ich einfach nicht rein :frowning:

Also mal was einfaches propieren :slight_smile:

Gruß Heiko

PS: ich such mal in meinen Mails - kann mich erinnern das ich es gemeldet hatte!

Hallo Leute,

vielen Dank für die Unterstützung!
Tatsächlich hatte ich ein „#“ im Passwort. Im Zielsystem geändert, IP-Symcon neu gestartet - läuft sowohl über die interne IP als auch auch über DynDNS - aber beides eben über http.

Vielleicht sollte man in der Dokumentation auf dieses Hinweisen?

Wie auch immer: Michel schrieb oben etwas das ich ein Zertifikat bei Symcon einrichten lassen müsste. Funktioniert das dann nur über die MagicIP oder auch über mein DynDNS-Zugang? An wen muss man sich wenden um das in die Wege zu leiten?

Joachim

Für Connect muss du nichts machen.
Nur eine Subskriptionen haben und es aktivieren.
Michael

Sorry wenn ich da noch mal nachfragen muss…
Der Zugang wäre in diesem Fall und in der Richtung über DynDNS. Muss ich dort dann etwas machen?

Joachim

Sorry, verstehe den Satz nicht.
DynDNS allein bringt dir erstmal nix.
Dann brauchst du noch einen Domainnamen, ein dazugehöriges Zertifikat (z.b. Let’s encrypt) und einen Nameserver der die Domain auf deine DynDNS verweist.
Außerdem noch die Port Weiterleitung im Router/NAT.
Da ist der Connect Dienst definitiv die einfacherer Variante.
Michael

…das hatte ich befürchtet…

Connect gibt es ja nur einmal pro Lizenz, eine zweite Lizenz erscheint mir in diesem Fall nicht angemessen, der andere von Dir skizzierte Weg liest sich sehr kompliziert…

Bei DynDNS habe ich ja quasi eine Domain, mit Let’s Encrypt habe ich mal experimentiert aber irgendwann aufgegeben…

Um es mal in der Praxis auszuprobieren reicht aber erst einmal der Zugriff über das interne Netzwerk (Ziel steht ja die meiste Zeit des Jahres auf dem Grundstück) und http.

Joachim

Für die bekommst du aber kein gültiges Zertifikat.
Michael

Naja. Wenn die SSL (bzw. besser TLS) Implementierung korrekt ist, kann ich (über ‚versteckte‘) Zusatzparameter auch das eine spezielle Zertifikat angeben, auf das geprüft werden soll. Laufzeit entsprechend wählen, dass man es nicht dauernd tauschen muss.

Die Implementierung ist halt in PHP.
Müsste man die __rpc.inc.php patchen und das bei jedem Symcon Update. Will man das?
Dann doch lieber automatisch das Zertifikat erneuern lassen. Gibt ja für eigentlich jedes OS Tools dafür, inklusive konvertieren und Dienste neu starten.
Michael

Die Frage war mir klar, Joachim hat eine Lizenz und 2 x Symcon (ich vermute WOMO und Haus).
Da würde ich auch über VPN koppeln wollen, denn es ich ja ein Eigenheim. was ab und an 2 Standorte hat. :innocent:

Muss auch mal probieren.

VPN war doch gar nicht Thema :rofl:
Das würde natürlich funktionieren → Ist dann ja wie ein interner Zugriff.
Michael

War klar, würde aber besser gehen, als dyndns. :innocent:
Und das sollte Joachim helfen.