= 8192) { // Max length, probably even longer, definitely no data we want http_response_code(413); // "Payload too large" exit; } $xp = new XmlParser(); $load_ok = $xp->loadXmlFromString($input_xml); if (!$load_ok) { // XML could not be parsed - invalid or no XML http_response_code(406); // "Not acceptable" exit; } if (!$xp->validateGOTU()) { // No root node or root node isn't , so no update XML http_response_code(412); // "Precondition failed" exit; } // ### At this point we can be relatively sure to have the XML we want echo "Input length is " . strlen($input_xml) . " Bytes." . PHP_EOL; #echo $input_xml . PHP_EOL; // Write backup copy (for maybe re-parsing later) $bkup_dir = __DIR__ . '/data/'; if (!is_dir($bkup_dir)) { mkdir($bkup_dir); } $bkup_filename = $bkup_dir . sprintf('%f-%04x.xml', microtime(true), rand(0, 65535)); file_put_contents($bkup_filename, $input_xml); // Parse XML into database $g = GotuObject::fromXmlParser($xp); if ($g->tv) { $sqlw = new SQLiteWriter(); $result = $sqlw->addGotu($g); if ($result !== false) { $config = parse_ini_file(__DIR__ . '/config.ini'); $type = 'FULL'; if ($g->fv) { $type = 'OTA (from ' . $g->fv . ')'; } $data = array( 'content' => 'New ' . $type . ' update for ' . $g->curef . ' found: ' . $g->tv, ); $options = array( 'http' => array( 'header' => "Content-Type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data), ), ); $ctx = stream_context_create($options); $notify_ok = file_get_contents($config['NOTIFY_WEBHOOK'], false, $ctx); } // I don't care if we can use the data or not. Maybe we can use it later (backup copy). } exit; } require_once 'index_main.php';