You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.9 KiB
PHP

<?php
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* This file sets up important stuff like loading settings, database, libraries, and dependencies.
* It's intended to be the first thing a script runs before responding to a request.
*/
ob_start(); // allow sending headers after content
// Unicode, solves almost all stupid encoding problems
header('Content-Type: text/html; charset=utf-8');
// Strip PHP version
header('X-Powered-By: PHP');
// Security
header('X-Content-Type-Options: nosniff');
header('X-XSS-Protection: 1; mode=block');
header('X-Frame-Options: "DENY"');
header('Referrer-Policy: "no-referrer, strict-origin-when-cross-origin"');
header("Access-Control-Allow-Origin: *");
//
// Composer
require __DIR__ . '/vendor/autoload.php';
// Settings
require __DIR__ . '/env.php';
// Load in other code
$libs = glob(__DIR__ . "/lib/*.lib.php");
foreach ($libs as $lib) {
require_once $lib;
}
unset($libs, $lib);
// Set timezone
if (envhas("timezone")) {
date_default_timezone_set(env("timezone", "UTC"));
}
// Initialize database driver
use Medoo\Medoo;
$database;
try {
$database = new Medoo(env("database", []));
} catch (Exception $ex) {
if (env("require_database")) {
http_response_code(500);
Logger::log("Database error: $ex");
exit("Database error.");
}
}
$memcacheconfig = env("memcached", [
"enable" => false,
"server" => "127.0.0.1",
"port" => 11211,
"prefix" => "apiserver"
]);
$memcache = new MemcacheDriver($memcacheconfig["enable"], $memcacheconfig["server"], $memcacheconfig["port"], $memcacheconfig["prefix"]);
unset($memcacheconfig);
if (env("debugmode", false)) {
error_reporting(E_ALL);
ini_set('display_errors', 'On');
} else {
error_reporting(0);
ini_set('display_errors', 'Off');
}