ChokZul
27. Dezember 2020 um 22:45
1
Hallo alle,
habe heute den ganzen Tag versucht Konfigurationsdaten per http POST an dieses nette Teil zu senden… bisher leider ohne Erfolg.
Laut API geht es mit diesem Befehl hier:
Erlaubt zudem über HTTP POST das Setzen von Geräteeinstellungen.
/config
Gibt die aktuellen Geräteeinstellungen als JSON-Objekt zurück mit dem folgenden Aufbau:
{
"content": "**verschlüsselt(Gerätekonfiguration in JSON)**"
}
Als Beispiel ist nur was in Python gegeben… wüßte nicht wie ich das in php packen kann
# Anfrage formulieren und Daten senden
connection.request("POST","/config","request="+encodeMessage('{"Rejection": "50Hz"}'),headers)
contents = connection.getresponse()
connection.close()
Dies ist der Inhalt der geschrickt werden soll ‚{„Rejection“: „50Hz“}‘ als Beispiel incl. der geschweiften Klammern
Könnte mir da jmd weiterhelfen ?
tobiasr
27. Dezember 2020 um 22:52
2
// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://192.168.169.170/config');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_payload);
$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
Wie natürlich die Verschlüsselung des Payloads funktioniert, weiß ich nicht.
ChokZul
27. Dezember 2020 um 23:01
3
danke schon mal, supi
Verschlüsselung des Payloads hab ich glaube schon vorliegen.
Werde berichten
ChokZul
30. Dezember 2020 um 00:20
4
Hallo tobiasr,
so funktioniert es jetzt:
// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();
$headers = array();
$headers[] = 'Content-type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'request='.$data);
$output = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
Vielen Dank nochmals…
tobiasr
30. Dezember 2020 um 10:00
5
Wie hast du das mit der Verschlüsselung gelöst?
mit dieser Funktion wird verschlüsselt:
function encrypt($msgb64,$password)
{
$airqpass = $password;
if (strlen($airqpass) < 32) {
for ($i = strlen($airqpass); $i < 32; $i++) {
$airqpass = $airqpass . '0';
}
} else {
if (strlen($airqpass) > 32) {
$airqpass = substr($airqpass,0,32);
}
}
$key = utf8_encode($airqpass);
$iv = substr(openssl_random_pseudo_bytes(32),0,16);
$encrypted = openssl_encrypt($msgb64, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $encrypted);
}