Skip to content

SimpleAPI move from php to python http - #4182

Open
seaspotter wants to merge 8 commits into
openWB:masterfrom
seaspotter:php-to-python-simpleapi
Open

seaspotter wants to merge 8 commits into
openWB:masterfrom
seaspotter:php-to-python-simpleapi

Conversation

@seaspotter

Copy link
Copy Markdown
Collaborator

Warum

PHP2Shell (CVE-2026-109618/109619) betrifft jede von Apache ausführbare .php-Datei. simpleAPI ist die größte PHP-Komponente (~4.400 Zeilen) und die einzige mit dauerhafter Drittanbieter-Nutzung (Home Assistant, node-red, ioBroker) - daher zuerst komplett durch Python ersetzt.

Was

  • Python-HTTP-Server im bereits laufenden simpleAPI_mqtt.py-Daemon (jetzt simpleapi.py), keine neue Dependency
  • Gleiche URL, gleiches Request/Response-Format, gleiche Auth (4-stufig)
  • Alte PHP-Dateien entfernt, Apache leitet auf den neuen Server um
  • get_lastlivevaluesjson entfernt (undokumentiert, ungenutzt)
  • Ein echter Bug gefunden und gefixt: Schreibzugriffe auf instant_charging_limit*/pv_charging_limit* per MQTT-Topic haben eine explizite Ladepunkt-ID ignoriert und immer den niedrigsten Ladepunkt getroffen

Tests

  • Mit echtem Ladepunkt, echter Batterie/PV/Zähler/Verbraucher-Hardware geteset
  • Lesen und Schreiben über eine echte Drittanbieter-Integration (ioBroker) getestet, live über koala bestätigt
  • pytest/flake8 sauber, keine Änderungen an packages/

@kevinwieland

Copy link
Copy Markdown
Contributor

#4162 (reply in thread)

Erstmal gibt es einen php fix.
Komplett anderen Unterbau kann ich aktuell zeitlich nicht bewerten. So oder so sollten wir das nochmal diskutieren.

@seaspotter

Copy link
Copy Markdown
Collaborator Author

#4162 (reply in thread)

Erstmal gibt es einen php fix. Komplett anderen Unterbau kann ich aktuell zeitlich nicht bewerten. So oder so sollten wir das nochmal diskutieren.

Ja okay, aber:

Ein Punkt, der unabhängig von der Sicherheitsfrage für sich steht: die Geschwindigkeit hat sich spürbar verbessert. Die alte PHP-Implementierung hat pro Lese-/Schreibzugriff einen eigenen mosquitto_sub/mosquitto_pub-Prozess gestartet (teils mehrere pro Request bei zusammengesetzten Werten), jeweils mit bis zu 1s Wartezeit - list_components hat dadurch bei mir real ~8s gedauert. Der neue Python-Server läuft im bereits dauerhaft verbundenen simpleAPI-Daemon und bedient Lesezugriffe direkt aus dem Live-Cache, Schreibzugriffe über die schon offene Verbindung - ohne Prozess-Spawning. Hab das auch über eine echte Drittanbieter-Integration (ioBroker) getestet: Schreibzugriffe wie bat_mode/bat_power_reserve oder Änderung der Chargemodes laufen jetzt sofort statt mit Verzögerung bei php.

Das ist nur für die API allein schon ein echter Gamechanger.

@kevinwieland

Copy link
Copy Markdown
Contributor

Was hältst du von PHP fix direkt und Python Unterbau in die nächste Alpha?

@seaspotter

Copy link
Copy Markdown
Collaborator Author

Was hältst du von PHP fix direkt und Python Unterbau in die nächste Alpha?

Völlig okay für mich, ich hab meine Systeme schon alle gepatcht :)
Die simpleAPI hatte halt die meisten Zeilen Code in php, daher hab ich nur die angefasst und nichts anderes und die Geschwindigkeit via python ist halt auch echt nochmal n richtiger Schritt, von daher sollte man defintiv drüber nachdenken.

@kevinwieland

Copy link
Copy Markdown
Contributor

Unbedingt. Sollte dann nur in der Alpha getestet werden um sicherzustellen das es mit allen Anbindungen und so läuft.
Da ist der quick fix mit gepatchtem PHP risikoärmer.

@seaspotter seaspotter added this to the 2.4.0 milestone Oct 24, 2026
@seaspotter seaspotter added the enhancement New feature or request label Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants