aboutsummaryrefslogtreecommitdiff
path: root/lib/Debug.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Debug.php')
-rw-r--r--lib/Debug.php99
1 files changed, 8 insertions, 91 deletions
diff --git a/lib/Debug.php b/lib/Debug.php
index 9210ebc8..f6a8d105 100644
--- a/lib/Debug.php
+++ b/lib/Debug.php
@@ -1,106 +1,23 @@
<?php
-/**
- * This file is part of RSS-Bridge, a PHP project capable of generating RSS and
- * Atom feeds for websites that don't have one.
- *
- * For the full license information, please view the UNLICENSE file distributed
- * with this source code.
- *
- * @package Core
- * @license http://unlicense.org/ UNLICENSE
- * @link https://github.com/rss-bridge/rss-bridge
- */
-
-/**
- * Implements functions for debugging purposes. Debugging can be enabled by
- * placing a file named DEBUG in {@see PATH_ROOT}.
- *
- * The file specifies a whitelist of IP addresses on which debug mode will be
- * enabled. An empty file enables debug mode for everyone (highly discouraged
- * for public servers!). Each line in the file specifies one client in the
- * whitelist. For example:
- *
- * * `192.168.1.72`
- * * `127.0.0.1`
- * * `::1`
- *
- * Notice: If you are running RSS-Bridge on your local machine, you need to add
- * localhost (either `127.0.0.1` for IPv4 or `::1` for IPv6) to your whitelist!
- *
- * Warning: In debug mode your server may display sensitive information! For
- * security reasons it is recommended to whitelist only specific IP addresses.
- */
class Debug
{
/**
- * Indicates if debug mode is enabled.
- *
- * Do not access this property directly!
- * Use {@see Debug::isEnabled()} instead.
- *
- * @var bool
+ * Convenience function for Configuration::getConfig('system', 'enable_debug_mode')
*/
- private static $enabled = false;
-
- /**
- * Indicates if debug mode is secure.
- *
- * Do not access this property directly!
- * Use {@see Debug::isSecure()} instead.
- *
- * @var bool
- */
- private static $secure = false;
-
- /**
- * Returns true if debug mode is enabled
- *
- * If debug mode is enabled, sets `display_errors = 1` and `error_reporting = E_ALL`
- *
- * @return bool True if enabled.
- */
- public static function isEnabled()
+ public static function isEnabled(): bool
{
- static $firstCall = true; // Initialized on first call
-
- if ($firstCall && file_exists(__DIR__ . '/../DEBUG')) {
- $debug_whitelist = trim(file_get_contents(__DIR__ . '/../DEBUG'));
-
- self::$enabled = empty($debug_whitelist) || in_array(
- $_SERVER['REMOTE_ADDR'],
- explode("\n", str_replace("\r", '', $debug_whitelist))
- );
-
- if (self::$enabled) {
- self::$secure = !empty($debug_whitelist);
- }
-
- $firstCall = false; // Skip check on next call
+ $ip = $_SERVER['REMOTE_ADDR'];
+ $enableDebugMode = Configuration::getConfig('system', 'enable_debug_mode');
+ $debugModeWhitelist = Configuration::getConfig('system', 'debug_mode_whitelist') ?: [];
+ if ($enableDebugMode && ($debugModeWhitelist === [] || in_array($ip, $debugModeWhitelist))) {
+ return true;
}
-
- return self::$enabled;
- }
-
- /**
- * Returns true if debug mode is enabled only for specific IP addresses.
- *
- * Notice: The security flag is set by {@see Debug::isEnabled()}. If this
- * function is called before {@see Debug::isEnabled()}, the default value is
- * false!
- *
- * @return bool True if debug mode is secure
- */
- public static function isSecure()
- {
- return self::$secure;
+ return false;
}
public static function log($message)
{
- if (!self::isEnabled()) {
- return;
- }
$e = new \Exception();
$trace = trace_from_exception($e);
// Drop the current frame