Browse Source

Add user config (#653)

Uses the parse_ini_file function to load default settings from the default configuration file 'config.default.ini.php'. Optionally loads custom settings from 'config.ini.php' to replace the default
values.
LogMANOriginal 6 years ago
parent
commit
8ac8e08abf
3 changed files with 66 additions and 10 deletions
  1. 1 0
      .gitignore
  2. 27 0
      config.default.ini.php
  3. 38 10
      index.php

+ 1 - 0
.gitignore

@@ -227,6 +227,7 @@ pip-log.txt
 /cache
 /whitelist.txt
 DEBUG
+config.ini.php
 
 ######################
 ## VisualStudioCode ##

+ 27 - 0
config.default.ini.php

@@ -0,0 +1,27 @@
+; <?php exit; ?> DO NOT REMOVE THIS LINE
+
+; This file contains the default settings for RSS-Bridge. Do not change this
+; file, it will be replaced on the next update of RSS-Bridge! You can specify
+; your own configuration in 'config.ini.php' (copy this file).
+
+[cache]
+
+; Allow users to specify custom timeout for specific requests.
+; true  = enabled
+; false = disabled (default)
+custom_timeout = false
+
+[proxy]
+
+; Sets the proxy url (i.e. "tcp://192.168.0.0:32")
+; ""    = Proxy disabled (default)
+url = ""
+
+; Sets the proxy name that is shown on the bridge instead of the proxy url.
+; ""    = Show proxy url
+name = "Hidden proxy name"
+
+; Allow users to disable proxy usage for specific requests.
+; true  = enabled
+; false = disabled (default)
+by_bridge = false

+ 38 - 10
index.php

@@ -10,18 +10,46 @@ TODO :
 - implement header('X-Cached-Version: '.date(DATE_ATOM, filemtime($cachefile)));
 */
 
-// Defines the minimum required PHP version for RSS-Bridge
-define('PHP_VERSION_REQUIRED', '5.6.0');
+if(!file_exists('config.default.ini.php'))
+	die('The default configuration file "config.default.ini.php" is missing!');
+
+$config = parse_ini_file('config.default.ini.php', true, INI_SCANNER_TYPED);
+
+if(file_exists('config.ini.php')) {
+	// Replace default configuration with custom settings
+	foreach(parse_ini_file('config.ini.php', true, INI_SCANNER_TYPED) as $header => $section) {
+		foreach($section as $key => $value) {
+			// Skip unknown sections and keys
+			if(array_key_exists($header, $config) && array_key_exists($key, $config[$header])) {
+				$config[$header][$key] = $value;
+			}
+		}
+	}
+}
+
+if(!is_string($config['proxy']['url']))
+	die('Parameter [proxy] => "url" is not a valid string! Please check "config.ini.php"!');
+
+if(!empty($config['proxy']['url']))
+	define('PROXY_URL', $config['proxy']['url']);
 
-//define('PROXY_URL', 'tcp://192.168.0.0:28');
-// Set to true if you allow users to disable proxy usage for specific bridges
-define('PROXY_BYBRIDGE', false);
-// Comment this line or keep PROXY_NAME empty to display PROXY_URL instead
-define('PROXY_NAME', 'Hidden Proxy Name');
+if(!is_bool($config['proxy']['by_bridge']))
+	die('Parameter [proxy] => "by_bridge" is not a valid Boolean! Please check "config.ini.php"!');
 
-// Allows the operator to specify custom cache timeouts via '&_cache_timeout=3600'
-// true: enabled, false: disabled (default)
-define('CUSTOM_CACHE_TIMEOUT', false);
+define('PROXY_BYBRIDGE', $config['proxy']['by_bridge']);
+
+if(!is_string($config['proxy']['name']))
+	die('Parameter [proxy] => "name" is not a valid string! Please check "config.ini.php"!');
+
+define('PROXY_NAME', $config['proxy']['name']);
+
+if(!is_bool($config['cache']['custom_timeout']))
+	die('Parameter [cache] => "custom_timeout" is not a valid Boolean! Please check "config.ini.php"!');
+
+define('CUSTOM_CACHE_TIMEOUT', $config['cache']['custom_timeout']);
+
+// Defines the minimum required PHP version for RSS-Bridge
+define('PHP_VERSION_REQUIRED', '5.6.0');
 
 date_default_timezone_set('UTC');
 error_reporting(0);