config: Use global constant for config files
The configuration files are currently hard-coded in the configuration classes and error messages. However, the implementation should not rely on specific details like the file name. Instead, the files should be part of the global definition. This commit introduces two global constants for the configuration files - FILE_CONFIG => 'config.ini.php' - FILE_CONFIG_DEFAULT => 'config.default.ini.php'
This commit is contained in:
parent
946a99d334
commit
ccf375e917
4 changed files with 35 additions and 31 deletions
|
@ -16,19 +16,19 @@ class MemcachedCache implements CacheInterface {
|
||||||
$host = Configuration::getConfig(get_called_class(), 'host');
|
$host = Configuration::getConfig(get_called_class(), 'host');
|
||||||
$port = Configuration::getConfig(get_called_class(), 'port');
|
$port = Configuration::getConfig(get_called_class(), 'port');
|
||||||
if (empty($host) && empty($port)) {
|
if (empty($host) && empty($port)) {
|
||||||
returnServerError('Configuration for ' . get_called_class() . ' missing. Please check your config.ini.php');
|
returnServerError('Configuration for ' . get_called_class() . ' missing. Please check your ' . FILE_CONFIG);
|
||||||
} else if (empty($host)) {
|
} else if (empty($host)) {
|
||||||
returnServerError('"host" param is not set for ' . get_called_class() . '. Please check your config.ini.php');
|
returnServerError('"host" param is not set for ' . get_called_class() . '. Please check your ' . FILE_CONFIG);
|
||||||
} else if (empty($port)) {
|
} else if (empty($port)) {
|
||||||
returnServerError('"port" param is not set for ' . get_called_class() . '. Please check your config.ini.php');
|
returnServerError('"port" param is not set for ' . get_called_class() . '. Please check your ' . FILE_CONFIG);
|
||||||
} else if (!ctype_digit($port)) {
|
} else if (!ctype_digit($port)) {
|
||||||
returnServerError('"port" param is invalid for ' . get_called_class() . '. Please check your config.ini.php');
|
returnServerError('"port" param is invalid for ' . get_called_class() . '. Please check your ' . FILE_CONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
$port = intval($port);
|
$port = intval($port);
|
||||||
|
|
||||||
if ($port < 1 || $port > 65535) {
|
if ($port < 1 || $port > 65535) {
|
||||||
returnServerError('"port" param is invalid for ' . get_called_class() . '. Please check your config.ini.php');
|
returnServerError('"port" param is invalid for ' . get_called_class() . '. Please check your ' . FILE_CONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
$conn = new Memcached();
|
$conn = new Memcached();
|
||||||
|
|
|
@ -15,12 +15,12 @@ class SQLiteCache implements CacheInterface {
|
||||||
|
|
||||||
$file = Configuration::getConfig(get_called_class(), 'file');
|
$file = Configuration::getConfig(get_called_class(), 'file');
|
||||||
if (empty($file)) {
|
if (empty($file)) {
|
||||||
die('Configuration for ' . get_called_class() . ' missing. Please check your config.ini.php');
|
die('Configuration for ' . get_called_class() . ' missing. Please check your ' . FILE_CONFIG);
|
||||||
}
|
}
|
||||||
if (dirname($file) == '.') {
|
if (dirname($file) == '.') {
|
||||||
$file = PATH_CACHE . $file;
|
$file = PATH_CACHE . $file;
|
||||||
} elseif (!is_dir(dirname($file))) {
|
} elseif (!is_dir(dirname($file))) {
|
||||||
die('Invalid configuration for ' . get_called_class() . '. Please check your config.ini.php');
|
die('Invalid configuration for ' . get_called_class() . '. Please check your ' . FILE_CONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_file($file)) {
|
if (!is_file($file)) {
|
||||||
|
|
|
@ -114,15 +114,13 @@ final class Configuration {
|
||||||
* Returns an error message and aborts execution if the configuration is invalid.
|
* Returns an error message and aborts execution if the configuration is invalid.
|
||||||
*
|
*
|
||||||
* The RSS-Bridge configuration is split into two files:
|
* The RSS-Bridge configuration is split into two files:
|
||||||
* - `config.default.ini.php`: The default configuration file that ships with
|
* - {@see FILE_CONFIG_DEFAULT} The default configuration file that ships
|
||||||
* every release of RSS-Bridge (do not modify this file!).
|
* with every release of RSS-Bridge (do not modify this file!).
|
||||||
* - `config.ini.php`: The local configuration file that can be modified by
|
* - {@see FILE_CONFIG} The local configuration file that can be modified
|
||||||
* server administrators.
|
* by server administrators.
|
||||||
*
|
*
|
||||||
* The files must be located at {@see PATH_ROOT}
|
* RSS-Bridge will first load {@see FILE_CONFIG_DEFAULT} into memory and then
|
||||||
*
|
* replace parameters with the contents of {@see FILE_CONFIG}. That way new
|
||||||
* RSS-Bridge will first load `config.default.ini.php` into memory and then
|
|
||||||
* replace parameters with the contents of `config.ini.php`. That way new
|
|
||||||
* parameters are automatically initialized with default values and custom
|
* parameters are automatically initialized with default values and custom
|
||||||
* configurations can be reduced to the minimum set of parametes necessary
|
* configurations can be reduced to the minimum set of parametes necessary
|
||||||
* (only the ones that changed).
|
* (only the ones that changed).
|
||||||
|
@ -136,16 +134,16 @@ final class Configuration {
|
||||||
*/
|
*/
|
||||||
public static function loadConfiguration() {
|
public static function loadConfiguration() {
|
||||||
|
|
||||||
if(!file_exists(PATH_ROOT . 'config.default.ini.php'))
|
if(!file_exists(FILE_CONFIG_DEFAULT))
|
||||||
die('The default configuration file "config.default.ini.php" is missing!');
|
die('The default configuration file "' . FILE_CONFIG_DEFAULT . '" is missing!');
|
||||||
|
|
||||||
Configuration::$config = parse_ini_file(PATH_ROOT . 'config.default.ini.php', true, INI_SCANNER_TYPED);
|
Configuration::$config = parse_ini_file(FILE_CONFIG_DEFAULT, true, INI_SCANNER_TYPED);
|
||||||
if(!Configuration::$config)
|
if(!Configuration::$config)
|
||||||
die('Error parsing config.default.ini.php');
|
die('Error parsing ' . FILE_CONFIG_DEFAULT);
|
||||||
|
|
||||||
if(file_exists(PATH_ROOT . 'config.ini.php')) {
|
if(file_exists(FILE_CONFIG)) {
|
||||||
// Replace default configuration with custom settings
|
// Replace default configuration with custom settings
|
||||||
foreach(parse_ini_file(PATH_ROOT . 'config.ini.php', true, INI_SCANNER_TYPED) as $header => $section) {
|
foreach(parse_ini_file(FILE_CONFIG, true, INI_SCANNER_TYPED) as $header => $section) {
|
||||||
foreach($section as $key => $value) {
|
foreach($section as $key => $value) {
|
||||||
// Skip unknown sections and keys
|
// Skip unknown sections and keys
|
||||||
if(array_key_exists($header, Configuration::$config) && array_key_exists($key, Configuration::$config[$header])) {
|
if(array_key_exists($header, Configuration::$config) && array_key_exists($key, Configuration::$config[$header])) {
|
||||||
|
@ -157,12 +155,12 @@ final class Configuration {
|
||||||
|
|
||||||
if(!is_string(self::getConfig('system', 'timezone'))
|
if(!is_string(self::getConfig('system', 'timezone'))
|
||||||
|| !in_array(self::getConfig('system', 'timezone'), timezone_identifiers_list(DateTimeZone::ALL_WITH_BC)))
|
|| !in_array(self::getConfig('system', 'timezone'), timezone_identifiers_list(DateTimeZone::ALL_WITH_BC)))
|
||||||
die('Parameter [system] => "timezone" is invalid! Please check "config.ini.php"!');
|
die('Parameter [system] => "timezone" is invalid! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
date_default_timezone_set(self::getConfig('system', 'timezone'));
|
date_default_timezone_set(self::getConfig('system', 'timezone'));
|
||||||
|
|
||||||
if(!is_string(self::getConfig('proxy', 'url')))
|
if(!is_string(self::getConfig('proxy', 'url')))
|
||||||
die('Parameter [proxy] => "url" is not a valid string! Please check "config.ini.php"!');
|
die('Parameter [proxy] => "url" is not a valid string! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
if(!empty(self::getConfig('proxy', 'url'))) {
|
if(!empty(self::getConfig('proxy', 'url'))) {
|
||||||
/** URL of the proxy server */
|
/** URL of the proxy server */
|
||||||
|
@ -170,38 +168,38 @@ final class Configuration {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!is_bool(self::getConfig('proxy', 'by_bridge')))
|
if(!is_bool(self::getConfig('proxy', 'by_bridge')))
|
||||||
die('Parameter [proxy] => "by_bridge" is not a valid Boolean! Please check "config.ini.php"!');
|
die('Parameter [proxy] => "by_bridge" is not a valid Boolean! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
/** True if proxy usage can be enabled selectively for each bridge */
|
/** True if proxy usage can be enabled selectively for each bridge */
|
||||||
define('PROXY_BYBRIDGE', self::getConfig('proxy', 'by_bridge'));
|
define('PROXY_BYBRIDGE', self::getConfig('proxy', 'by_bridge'));
|
||||||
|
|
||||||
if(!is_string(self::getConfig('proxy', 'name')))
|
if(!is_string(self::getConfig('proxy', 'name')))
|
||||||
die('Parameter [proxy] => "name" is not a valid string! Please check "config.ini.php"!');
|
die('Parameter [proxy] => "name" is not a valid string! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
/** Name of the proxy server */
|
/** Name of the proxy server */
|
||||||
define('PROXY_NAME', self::getConfig('proxy', 'name'));
|
define('PROXY_NAME', self::getConfig('proxy', 'name'));
|
||||||
|
|
||||||
if(!is_string(self::getConfig('cache', 'type')))
|
if(!is_string(self::getConfig('cache', 'type')))
|
||||||
die('Parameter [cache] => "type" is not a valid string! Please check "config.ini.php"!');
|
die('Parameter [cache] => "type" is not a valid string! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
if(!is_bool(self::getConfig('cache', 'custom_timeout')))
|
if(!is_bool(self::getConfig('cache', 'custom_timeout')))
|
||||||
die('Parameter [cache] => "custom_timeout" is not a valid Boolean! Please check "config.ini.php"!');
|
die('Parameter [cache] => "custom_timeout" is not a valid Boolean! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
/** True if the cache timeout can be specified by the user */
|
/** True if the cache timeout can be specified by the user */
|
||||||
define('CUSTOM_CACHE_TIMEOUT', self::getConfig('cache', 'custom_timeout'));
|
define('CUSTOM_CACHE_TIMEOUT', self::getConfig('cache', 'custom_timeout'));
|
||||||
|
|
||||||
if(!is_bool(self::getConfig('authentication', 'enable')))
|
if(!is_bool(self::getConfig('authentication', 'enable')))
|
||||||
die('Parameter [authentication] => "enable" is not a valid Boolean! Please check "config.ini.php"!');
|
die('Parameter [authentication] => "enable" is not a valid Boolean! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
if(!is_string(self::getConfig('authentication', 'username')))
|
if(!is_string(self::getConfig('authentication', 'username')))
|
||||||
die('Parameter [authentication] => "username" is not a valid string! Please check "config.ini.php"!');
|
die('Parameter [authentication] => "username" is not a valid string! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
if(!is_string(self::getConfig('authentication', 'password')))
|
if(!is_string(self::getConfig('authentication', 'password')))
|
||||||
die('Parameter [authentication] => "password" is not a valid string! Please check "config.ini.php"!');
|
die('Parameter [authentication] => "password" is not a valid string! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
if(!empty(self::getConfig('admin', 'email'))
|
if(!empty(self::getConfig('admin', 'email'))
|
||||||
&& !filter_var(self::getConfig('admin', 'email'), FILTER_VALIDATE_EMAIL))
|
&& !filter_var(self::getConfig('admin', 'email'), FILTER_VALIDATE_EMAIL))
|
||||||
die('Parameter [admin] => "email" is not a valid email address! Please check "config.ini.php"!');
|
die('Parameter [admin] => "email" is not a valid email address! Please check ' . FILE_CONFIG);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,12 @@ define('WHITELIST', __DIR__ . '/../whitelist.txt');
|
||||||
/** Path to the default whitelist file */
|
/** Path to the default whitelist file */
|
||||||
define('WHITELIST_DEFAULT', __DIR__ . '/../whitelist.default.txt');
|
define('WHITELIST_DEFAULT', __DIR__ . '/../whitelist.default.txt');
|
||||||
|
|
||||||
|
/** Path to the configuration file */
|
||||||
|
define('FILE_CONFIG', PATH_ROOT . 'config.ini.php');
|
||||||
|
|
||||||
|
/** Path to the default configuration file */
|
||||||
|
define('FILE_CONFIG_DEFAULT', PATH_ROOT . 'config.default.ini.php');
|
||||||
|
|
||||||
/** URL to the RSS-Bridge repository */
|
/** URL to the RSS-Bridge repository */
|
||||||
define('REPOSITORY', 'https://github.com/RSS-Bridge/rss-bridge/');
|
define('REPOSITORY', 'https://github.com/RSS-Bridge/rss-bridge/');
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue