diff --git a/app/Mcp.php b/app/Mcp.php index 19c0ea8..2999220 100644 --- a/app/Mcp.php +++ b/app/Mcp.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Mcp; use PDO; +use Exception; class Mcp implements ConnectionProvider { @@ -41,8 +42,19 @@ class Mcp implements ConnectionProvider public function __construct($basedir) { $this->templateDir = $basedir.DIRECTORY_SEPARATOR.'templates'; - require $basedir.DIRECTORY_SEPARATOR.'config.php'; - $this->config = $RUNTIME; + $this->config = array(); + try { + $config = parse_ini_file($basedir.DIRECTORY_SEPARATOR.'config.ini', true); + foreach ($config['general'] as $key => $val) { + $this->config[$key] = $val; + } + unset($config['general']); + $this->config = array_merge($config, $this->config); + } catch (Exception $e) { + error_log('Could not load config, aborting. Error: '.$e->getMessage()); + http_response_code(500); + exit(); + } } public function db(): PDO diff --git a/app/page/Register.php b/app/page/Register.php index d0986b6..a70df4a 100644 --- a/app/page/Register.php +++ b/app/page/Register.php @@ -67,7 +67,7 @@ class Register extends RequestHandler $email = trim($_POST['email']); $avatar = null; - if (isset($this->app->config('default-avatar')[$_POST['avatar']]['UUID'])) { + if (isset($this->app->config('default-avatar')[$_POST['avatar']])) { $avatar = trim($_POST['avatar']); } else { $this->displayPage("Der gewählte Standardavatar existiert nicht."); diff --git a/config.example.ini b/config.example.ini new file mode 100644 index 0000000..12fdf28 --- /dev/null +++ b/config.example.ini @@ -0,0 +1,38 @@ +[general] +; Domain, unter der das MCP erreichbar ist +domain = example.com +; Mindestlänge des Passworts, wird bei Registrierung und Änderung überprüft +password-min-length = 8 +; URL der Nutzungsbedingungen des Grids +tos-url = https://example.com/tos.html +; Name und UUID eines oder mehrerer Standardavatare +default-avatar[Twinster Kid] = 0817c915-293a-4041-b5a4-c7c53666bcc6 +; Liste von Domains, deren E-Mail-Adressen als nicht für Password-Reset-Mails nutzbar zu behandeln sind +reset-blocked-domains[] = example.com +reset-blocked-domains[] = invalid.net +; Art der Einschränkung des Aufrufs von Cronjobs: key (API-Key benötigt) oder none (keine Einschränkung) +cron-restriction = key +; API-Key, der zum erfolgreichen Aufruf von Cronjobs übermittelt werden muss. +cron-key = changeme + +; Host, Name und Zugangsdaten zur MySQL-Datenbank. Muss mit der Datenbank der Robust-Instanz übereinstimmen. +[mysql] +host = localhost +db = Robust +user = OpenSim +password = secret + +; Zugangsdaten zum Mailserver +[smtp] +host = smtp.example.com +port = 465 +address = noreply@example.com +; Name, der neben der Absenderadresse stehen soll +name = MyGrid Support +password = secret + +; Daten des Grids, die u.a. auf der Welcome-Page angezeigt werden +[grid] +name = OpenSim +main-news = Yet another OpenSim Grid. +homeurl = http://...:8002 \ No newline at end of file diff --git a/config.example.php b/config.example.php deleted file mode 100644 index 6506b6e..0000000 --- a/config.example.php +++ /dev/null @@ -1,29 +0,0 @@ -