+
+$gsData = json_decode($_POST['v']);
+if ($gsData === null) {
+ header('HTTP/1.0 400 Bad Request');
+ header('Content-Type: text/plain');
+ echo "POST data invalid\n";
+ exit(1);
+}
+
+if (!isset($gsData->hwid)
+ || !isset($gsData->major)
+ || !isset($gsData->minor)
+ || !isset($gsData->revision)
+ || !isset($gsData->platform)
+) {
+ header('HTTP/1.0 400 Bad Request');
+ header('Content-Type: text/plain');
+ echo "POST data incomplete\n";
+ exit(1);
+}
+
+$gsVersion = $gsData->major . '.' . $gsData->minor . '.' . $gsData->revision;
+
+$requireUpdate = false;
+if (isset($GLOBALS['firmwareVersion'])) {
+ $expectedVersion = $GLOBALS['firmwareVersion'];
+ if ($gsVersion != $expectedVersion) {
+ $requireUpdate = true;
+ }
+} else {
+ $expectedVersion = '0.9.2071';
+ if (version_compare($expectedVersion, $gsVersion, '>')) {
+ $requireUpdate = true;
+ }
+}
+if (!$requireUpdate) {
+ header('HTTP/1.0 200 OK');
+ header('Content-type: application/json');
+ echo '{"available":false}' . "\n";
+ exit(0);
+}
+
+list($major, $minor, $revision) = explode('.', $expectedVersion);
+
+
+$firmwareDir = $rootDir . '/www/firmware/' . $expectedVersion;
+$firmwareFile = $firmwareDir . '/update.img';
+
+if (!file_exists($firmwareFile)) {
+ header('HTTP/1.0 200 OK');
+ header('Content-type: application/json');
+ header('X-Problem: Firmware file missing');
+ echo '{"available":false}' . "\n";
+ exit(0);
+}
+
+$data = [
+ 'available' => true,
+ 'major' => $major,
+ 'minor' => $minor,
+ 'revision' => $revision,
+ 'forced' => false,
+ 'name' => $expectedVersion,
+ 'description' => file_get_contents($firmwareDir . '/changelog.txt'),
+ 'timestamp' => filemtime($firmwareFile),
+ 'url' => 'http://update.gamestickservices.net/firmware/download?version=' . $expectedVersion,
+];
+
+$json = json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
+
+header('HTTP/1.0 200 OK');
+header('Content-Type: application/json');
+echo $json . "\n";