Seite 1 von 1

[Solved] Syntax für Zugriff mit authorisierung

Verfasst: 26.11.2020, 21:00
von Black
Ich krampfe grade mit der Syntax für den autorisierten Zugriff von aussen auf die remoteApi..

bei normalen Nutzernamen und PassWord ist alles ok, generelle syntax ist auch kein problem.

http://NutzerName:Passwort@IPderCCU:8181/black.exe.........

soweit alles schick

nun habe das Passwort Sonderzeichen bzw deutsche Umlaute...
klappt so nicht.

wie muss dieser Part denn dann Codiert sein ?

Thnx, Black

Re: Syntax für Zugriff mit authorisierung

Verfasst: 26.11.2020, 21:16
von Fonzo
Black hat geschrieben:
26.11.2020, 21:00
wie muss dieser Part denn dann Codiert sein ?
Ganz normal URL codiert nach RFC 3986, urlencode

Re: Syntax für Zugriff mit authorisierung

Verfasst: 27.11.2020, 09:30
von Black
sollte url encodiert sein, ja... hatte ich natürlich auch probiert mit 2 verschiedenen programmen, um eigenen Dämelfehler auszuschliessen.

könnte das mal einer gegenchecken ?

In Nutzernamen oder Passwort ein zeichen reinsetzen, welches nicht zum präferierten Zeichensatz gehört (Alles was nicht ['A'..'Z','a'..'z','0','1'..'9','-','_','~','.'] ist.

Dann CCU authorisierung an

lässt dich dann mit einem beliebigen externen programm, wo diese daten auch eingegeben sind, auf die remoteApi bzw den xmlrpc prozess zugreifen ?

Black

Re: Syntax für Zugriff mit authorisierung

Verfasst: 27.11.2020, 19:06
von Fonzo
Black hat geschrieben:
27.11.2020, 09:30
Dann CCU authorisierung an

lässt dich dann mit einem beliebigen externen programm, wo diese daten auch eingegeben sind, auf die remoteApi bzw den xmlrpc prozess zugreifen ?
Also bei mir funktioniert das einwandfrei.

Code: Alles auswählen

function GetHomematicVariable($ip, $varname, $auth, $user = '', $password = '')
{
  $req="Write(dom.GetObject(\"$varname\").Variable());";
  $ch=curl_init("http://$ip:8181/tclrega.exe");
  if($auth)
  {
      	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
	curl_setopt($ch, CURLOPT_USERPWD, "$user:$password");
  }
  curl_setopt($ch,CURLOPT_POST,true);
  curl_setopt($ch,CURLOPT_POSTFIELDS,$req);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  $ret=curl_exec($ch);
  curl_close($ch);
  // Remove the xml trailer, if present
  $ret=preg_replace("_<xml><exec>.*</xml>_","",$ret);
  return $ret;
}

$user = 'homematicuser';
$password = '!geheim';
$ip = '192.168.55.106'; // CCU3 IP


$value = GetHomematicVariable($ip,"Uhrzeit", true, $user, $password);
var_dump($value);

Der Weg wie Du das nutzten willst
http://NutzerName:Passwort@IPderCCU:8181/black.exe
macht nur rein von der Sicherheit keinen Sinn. Man brauchst kein Passwort mit Sonderzeichen zu setzten, wenn Du anschließend das Passwort innerhalb der URL unverschlüsselt übergibst, das dann jeder der will mitlesen kann. Die Übergabe des Benutzernamens und des Passworts sollte zumindest im Header erfolgen und nach Möglichkeit per https.

Re: Syntax für Zugriff mit authorisierung

Verfasst: 27.11.2020, 19:55
von Black
da ich ohne curl arbeite wühle ich in einer Tiefe rum, wo direkt in den Classen via Addheader noch die Header manuell zusammensetzt werden müssen.
Im header ging es mit den Sonderzeichen, es brauchte dann aber noch die passsende unit zum Codieren, weil URLencode isses im Header nicht mit.

Damit solved...