diff --git a/src/FederationServer/Classes/Configuration.php b/src/FederationServer/Classes/Configuration.php index 21add3d..1130886 100644 --- a/src/FederationServer/Classes/Configuration.php +++ b/src/FederationServer/Classes/Configuration.php @@ -5,9 +5,11 @@ use FederationServer\Classes\Configuration\DatabaseConfiguration; use FederationServer\Classes\Configuration\RedisConfiguration; use FederationServer\Classes\Configuration\FileStorageConfiguration; + use FederationServer\Classes\Configuration\ServerConfiguration; class Configuration { + private static ?ServerConfiguration $serverConfiguration = null; private static ?\ConfigLib\Configuration $configuration = null; private static ?DatabaseConfiguration $databaseConfiguration = null; private static ?RedisConfiguration $redisConfiguration = null; @@ -20,6 +22,9 @@ { self::$configuration = new \ConfigLib\Configuration('federation_server'); + self::$configuration->setDefault('server.name', 'Federation Server'); + self::$configuration->setDefault('server.api_key', Utilities::generateString()); + self::$configuration->setDefault('database.host', '127.0.0.1'); self::$configuration->setDefault('database.port', 3306); self::$configuration->setDefault('database.username', 'root'); @@ -39,6 +44,7 @@ self::$configuration->save(); + self::$serverConfiguration = new ServerConfiguration(self::$configuration->get('server')); self::$databaseConfiguration = new DatabaseConfiguration(self::$configuration->get('database')); self::$redisConfiguration = new RedisConfiguration(self::$configuration->get('redis')); self::$fileStorageConfiguration = new FileStorageConfiguration(self::$configuration->get('file_storage')); @@ -74,6 +80,21 @@ return self::$configuration; } + /** + * Get the server configuration. + * + * @return ServerConfiguration + */ + public static function getServerConfiguration(): ServerConfiguration + { + if(self::$serverConfiguration === null) + { + self::initialize(); + } + + return self::$serverConfiguration; + } + /** * Get the database, Redis, and file storage configurations. * diff --git a/src/FederationServer/Classes/Configuration/ServerConfiguration.php b/src/FederationServer/Classes/Configuration/ServerConfiguration.php new file mode 100644 index 0000000..81a1765 --- /dev/null +++ b/src/FederationServer/Classes/Configuration/ServerConfiguration.php @@ -0,0 +1,40 @@ +name = $config['server.name'] ?? 'Federation Server'; + $this->apiKey = $config['server.api_key'] ?? null; + } + + /** + * Get the name of the server. + * + * @return string The name of the server. + */ + public function getName(): string + { + return $this->name; + } + + /** + * Get the master API key for the server. + * + * @return string|null The API key, or null if not set. + */ + public function getApiKey(): ?string + { + return $this->apiKey; + } + } \ No newline at end of file