jetzt kommen die daten wieder durch, wie das Grafana Dashboard zeigt.
ich zitiere den entscheidenden teil der antwort von christian/in-berlin.de:
Am 03.06.19 um 21:35 schrieb Christian Seitz:
…
Wir haben allow_url_fopen aus bekannten
Sicherheitsgruenden per Default aus.
einfacher für mich als per curl (weil ich dann nichts umschreiben muss),
wäre es, wenn ihr mir für den einen server, unseren telemetrieserver
(https://swarm.hiveeyes.org/api/), eine erlaubnis schalten würdet.
Software die allow_url_fopen zwingend benoetigt kann ich mir heute eigentlich
nicht mehr vorstellen.
hintergrund: bis märz 2018 hat es genau so funktioniert, allerdings mit
der alten php-version. dann hab ich die bienenwaage abgestellt, weil
alle bienen tot waren. irgendwann später 2018 habt ihr mir danna auf
meine bitte hin wegen wordpress und/oder piwik/matomo auf die aktuellere
php-version umgestellt. leider finde ich den mailverkehr nicht mehr, um
genau zu rekonstruieren, wie wir das damals diskutiert hatten mit der
erlaubnis für diese url-abfrage durch php. oder hattet ihr früher diese
standardeinstellung so nicht? ich kann mich nicht erinnern.
allow_url_fopen ist seit 2006 deaktiviert, siehe auch unser Newsartikel von
damals: IN-Berlin - erweitere Sicherheit auf dem User-Webserver
Auch bei vielen anderen Providern ist da deaktiviert, da es ueber
Sicherheitsluecken ausgenutzt sehr oft zum Nachladen von Schadcode genutzt wird.
…
Meine PHP-Zeit ist lange her, aber mit Hilfe von Google habe ich gerade mal
terkin-hhtp.php geaendert. Die alte Version liegt als terkin-hhtp.php.orig
daneben. Kannst Du bitte mal pruefen, ob das mit dem Curl-Aufruf funktioniert
und sinnvolle Daten auf der anderen Seite ankommen?
die änderung in der terkin-http.php betreffen die funktion transmit:
function transmit($data) {
/*
* Submit telemetry data using HTTP POST request
* Serialization: x-www-form-urlencoded
*/
$payload = http_build_query($data);
$curl = curl_init ();
curl_setopt ($curl, CURLOPT_HTTPHEADER, array (
'Content-type: application/x-www-form-urlencoded'
));
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_POST, 1);
curl_setopt ($curl, CURLOPT_POSTFIELDS, $payload);
curl_setopt ($curl, CURLOPT_URL, $this->uri);
$result = curl_exec ($curl);
if ($result === FALSE) {
error_log("Could not submit telemetry data to '$uri', payload='$payload'");
}
curl_close ($curl);
return $result;
hier nochmal die links zur neuen terkin-http.php (mit curl) und zur alten terkin-http.php (ohne curl).