WebOrbiton
v1.0.0.0

StocketBase

51 lines · 1.1 KB
  1. <?php
  2. ​
  3. declare(strict_types=1);
  4. ​
  5. require_once __DIR__ . '/includes/config.php';
  6. require_once __DIR__ . '/includes/database.php';
  7. require_once __DIR__ . '/includes/updater.php';
  8. ​
  9. $isCli = PHP_SAPI === 'cli';
  10. ​
  11. if (!$isCli) {
  12. header('Content-Type: text/plain; charset=utf-8');
  13. header('Cache-Control: no-store');
  14. header('X-Robots-Tag: noindex, nofollow');
  15. }
  16. ​
  17. if (!Config::isInstalled()) {
  18. if (!$isCli) {
  19. http_response_code(503);
  20. }
  21. echo "[error] StocketBase is not installed.\n";
  22. exit(1);
  23. }
  24. ​
  25. $db = Database::site();
  26. ​
  27. if (!$isCli) {
  28. $auto = Updater::autoSettings($db);
  29. $token = (string) ($_GET['token'] ?? '');
  30. ​
  31. if (!$auto['enabled'] || $auto['token'] === '' || $token === '' || !hash_equals($auto['token'], $token)) {
  32. http_response_code(403);
  33. echo "Forbidden\n";
  34. exit;
  35. }
  36. ​
  37. ignore_user_abort(true);
  38. }
  39. ​
  40. set_time_limit(300);
  41. ​
  42. $result = Updater::runAutomatic($db);
  43. ​
  44. if (!$isCli && $result['status'] === 'error') {
  45. http_response_code(500);
  46. }
  47. ​
  48. echo '[' . $result['status'] . '] ' . $result['message'] . "\n";
  49. ​
  50. exit($result['status'] === 'error' ? 1 : 0);
  51. ​