From 4773021ff0ee7e21449f868bb96fe1c2e7ea44cd Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 31 Dec 2017 11:38:21 +0100 Subject: [PATCH] Expand debug controller. --- app/Http/Controllers/DebugController.php | 149 +++++++++++++++++++++++ app/Http/Controllers/HomeController.php | 55 --------- 2 files changed, 149 insertions(+), 55 deletions(-) create mode 100644 app/Http/Controllers/DebugController.php diff --git a/app/Http/Controllers/DebugController.php b/app/Http/Controllers/DebugController.php new file mode 100644 index 0000000000..bfb852bce4 --- /dev/null +++ b/app/Http/Controllers/DebugController.php @@ -0,0 +1,149 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Http\Controllers; + +use Carbon\Carbon; +use DB; +use Illuminate\Http\Request; +use Log; +use Monolog\Handler\RotatingFileHandler; + +/** + * Class DebugController + */ +class DebugController extends Controller +{ + + /** + * @param Request $request + * + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function index(Request $request) + { + $search = ['~', '#']; + $replace = ['\~', '# ']; + + $phpVersion = str_replace($search, $replace, PHP_VERSION); + $phpOs = str_replace($search, $replace, php_uname()); + $interface = PHP_SAPI; + $now = Carbon::create()->format('Y-m-d H:i:s e'); + $extensions = join(', ', get_loaded_extensions()); + $drivers = join(', ', DB::availableDrivers()); + $currentDriver = DB::getDriverName(); + $userAgent = $request->header('user-agent'); + $isSandstorm = var_export(env('IS_SANDSTORM', 'unknown'), true); + $isDocker = var_export(env('IS_DOCKER', 'unknown'), true); + $trustedProxies = env('TRUSTED_PROXIES', '(none)'); + $displayErrors = ini_get('display_errors'); + $errorReporting = $this->errorReporting(intval(ini_get('error_reporting'))); + $appEnv = env('APP_ENV', ''); + $appDebug = var_export(env('APP_DEBUG', false), true); + $appLog = env('APP_LOG', ''); + $appLogLevel = env('APP_LOG_LEVEL', ''); + $packages = $this->collectPackages(); + + + // get latest log file: + $logger = Log::getMonolog(); + $handlers = $logger->getHandlers(); + $logContent = ''; + foreach ($handlers as $handler) { + if ($handler instanceof RotatingFileHandler) { + $logFile = $handler->getUrl(); + if (null !== $logFile) { + $logContent = file_get_contents($logFile); + } + } + } + // last few lines + $logContent = 'Truncated from this point <----|' . substr($logContent, -4096); + + return view( + 'debug', + compact( + 'phpVersion', + 'extensions', + 'carbon', + 'appEnv', + 'appDebug', + 'appLog', + 'appLogLevel', + 'now', + 'packages', + 'drivers', + 'currentDriver', + 'userAgent', + 'displayErrors', + 'errorReporting', + 'phpOs', + 'interface', + 'logContent', + 'isDocker', + 'isSandstorm', + 'trustedProxies' + ) + ); + } + + /** + * @param int $value + * + * @return string + */ + protected function errorReporting(int $value): string + { + $array = [ + -1 => 'ALL errors', + ]; + if (isset($array[$value])) { + return $array[$value]; + } + + return strval($value); + } + + /** + * @return array + */ + private function collectPackages(): array + { + $packages = []; + $file = realpath(__DIR__ . '/../../../vendor/composer/installed.json'); + if (!($file === false) && file_exists($file)) { + // file exists! + $content = file_get_contents($file); + $json = json_decode($content, true); + foreach ($json as $package) { + $packages[] + = [ + 'name' => $package['name'], + 'version' => $package['version'], + ]; + } + } + + return $packages; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 32c2c63a24..8ca66dbc80 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -24,7 +24,6 @@ namespace FireflyIII\Http\Controllers; use Artisan; use Carbon\Carbon; -use DB; use Exception; use FireflyIII\Events\RequestedVersionCheckStatus; use FireflyIII\Exceptions\FireflyException; @@ -38,7 +37,6 @@ use Illuminate\Http\Request; use Illuminate\Routing\Route; use Illuminate\Support\Collection; use Log; -use Monolog\Handler\RotatingFileHandler; use Preferences; use Response; use Route as RouteFacade; @@ -98,59 +96,6 @@ class HomeController extends Controller return Response::json(['ok' => 'ok']); } - /** - * @param Request $request - * - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function displayDebug(Request $request) - { - $phpVersion = str_replace('~', '\~', PHP_VERSION); - $phpOs = php_uname(); - $interface = PHP_SAPI; - $now = Carbon::create()->format('Y-m-d H:i:s e'); - $extensions = join(', ', get_loaded_extensions()); - $drivers = join(', ', DB::availableDrivers()); - $currentDriver = DB::getDriverName(); - $userAgent = $request->header('user-agent'); - $isSandstorm = var_export(env('IS_SANDSTORM', 'unknown'), true); - $isDocker = var_export(env('IS_DOCKER', 'unknown'), true); - $trustedProxies = env('TRUSTED_PROXIES', '(none)'); - - // get latest log file: - $logger = Log::getMonolog(); - $handlers = $logger->getHandlers(); - $logContent = ''; - foreach ($handlers as $handler) { - if ($handler instanceof RotatingFileHandler) { - $logFile = $handler->getUrl(); - if (null !== $logFile) { - $logContent = file_get_contents($logFile); - } - } - } - // last few lines - $logContent = 'Truncated from this point <----|' . substr($logContent, -4096); - - return view( - 'debug', - compact( - 'phpVersion', - 'extensions', - 'carbon', - 'now', - 'drivers', - 'currentDriver', - 'userAgent', - 'phpOs', - 'interface', - 'logContent', - 'isDocker', - 'isSandstorm', - 'trustedProxies' - ) - ); - } /** * @throws FireflyException