diff --git a/ajax/carEG.php b/ajax/carEG.php index 65f70b5..6214812 100644 --- a/ajax/carEG.php +++ b/ajax/carEG.php @@ -16,35 +16,48 @@ if (checkLogin()) { } $close = 1; } else if (isset($_POST["evMode"])) { - if ($_POST["fte"] > 100) - $_POST["fte"] = 100; - else if ($_POST["fte"] < 1) - $_POST["fte"] = 1; + // Eingaben pruefen, bevor sie in die Kommandozeile gehen. ftt kam bisher + // ungeprueft aus dem Formular und liess sich mit "12:00; befehl" zum + // Anhaengen beliebiger Shell-Befehle missbrauchen. + $fte = intval($_POST["fte"]); + if ($fte > 100) + $fte = 100; + else if ($fte < 1) + $fte = 1; + $fte = $fte * 140; - if ($_POST["evAmp"] > 16) - $_POST["evAmp"] = 16; - if ($_POST["evAmp"] < 6) - $_POST["evAmp"] = 6; - $_POST["fte"] = $_POST["fte"] * 140; + $evAmp = intval($_POST["evAmp"]); + if ($evAmp > 16) + $evAmp = 16; + if ($evAmp < 6) + $evAmp = 6; + + // Das Formularfeld ist ein , liefert also HH:MM. + // Alles andere gilt als "keine Ladeplanung" und faellt in den else-Zweig. + $ftt = ""; + if (isset($_POST["ftt"]) && preg_match('/^([01][0-9]|2[0-3]):[0-5][0-9]$/', $_POST["ftt"])) { + $ftt = $_POST["ftt"]; + } + $setTime = gmdate("Y-m-d\TH:i:s", time()) . ".000"; if ($_POST["evMode"] == "eco") { $close = 1; - if ($_POST["ftt"] && $_POST["fte"] > 0) { - exec("python wattpilot.py -eco -time " . $_POST["ftt"] . " -energy " . $_POST["fte"] . " -maxCurr " . $_POST["evAmp"] . " -setTime " . gmdate("Y-m-d\TH:i:s", time()) . ".000 2>&1", $output, $return_var); + if ($ftt !== "" && $fte > 0) { + exec("python wattpilot.py -eco -time " . escapeshellarg($ftt) . " -energy " . $fte . " -maxCurr " . $evAmp . " -setTime " . escapeshellarg($setTime) . " 2>&1", $output, $return_var); } else { exec("/bin/python wattpilot.py -e 2>&1", $output, $return_var); } } else if ($_POST["evMode"] == "default") { $close = 1; - if ($_POST["ftt"] && $_POST["fte"] > 0) { - exec("python wattpilot.py -default -time " . $_POST["ftt"] . " -energy " . $_POST["fte"] . " -maxCurr " . $_POST["evAmp"] . " -setTime " . gmdate("Y-m-d\TH:i:s", time()) . ".000 2>&1", $output, $return_var); + if ($ftt !== "" && $fte > 0) { + exec("python wattpilot.py -default -time " . escapeshellarg($ftt) . " -energy " . $fte . " -maxCurr " . $evAmp . " -setTime " . escapeshellarg($setTime) . " 2>&1", $output, $return_var); } else { exec("python wattpilot.py -d 2>&1", $output, $return_var); } } else if ($_POST["evMode"] == "NextTrip") { $close = 1; - if ($_POST["ftt"] && $_POST["fte"] > 0) { - exec("python wattpilot.py -trip -time " . $_POST["ftt"] . " -energy " . $_POST["fte"] . " -maxCurr " . $_POST["evAmp"] . " -setTime " . gmdate("Y-m-d\TH:i:s", time()) . ".000 2>&1", $output, $return_var); + if ($ftt !== "" && $fte > 0) { + exec("python wattpilot.py -trip -time " . escapeshellarg($ftt) . " -energy " . $fte . " -maxCurr " . $evAmp . " -setTime " . escapeshellarg($setTime) . " 2>&1", $output, $return_var); } else { exec("python wattpilot.py -t 2>&1", $output, $return_var); }