mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-24 22:48:18 +00:00
Update files for new release
This commit is contained in:
@@ -28,7 +28,10 @@ use Exception;
|
||||
use FireflyConfig;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Http\Middleware\IsDemoUser;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\Support\Http\Controllers\GetConfigurationData;
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Contracts\View\Factory;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -37,6 +40,8 @@ use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\View\View;
|
||||
use Monolog\Handler\RotatingFileHandler;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use Psr\Container\NotFoundExceptionInterface;
|
||||
|
||||
/**
|
||||
* Class DebugController
|
||||
@@ -117,86 +122,8 @@ class DebugController extends Controller
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
// basic scope information:
|
||||
$now = now(config('app.timezone'))->format('Y-m-d H:i:s e');
|
||||
$buildNr = '(unknown)';
|
||||
$buildDate = '(unknown)';
|
||||
$baseBuildNr = '(unknown)';
|
||||
$baseBuildDate = '(unknown)';
|
||||
$expectedDBversion = config('firefly.db_version');
|
||||
$foundDBversion = FireflyConfig::get('db_version', 1)->data;
|
||||
try {
|
||||
if (file_exists('/var/www/counter-main.txt')) {
|
||||
$buildNr = trim(file_get_contents('/var/www/counter-main.txt'));
|
||||
}
|
||||
} catch (Exception $e) { // generic catch for open basedir.
|
||||
Log::debug('Could not check counter.');
|
||||
Log::warning($e->getMessage());
|
||||
}
|
||||
try {
|
||||
if (file_exists('/var/www/build-date-main.txt')) {
|
||||
$buildDate = trim(file_get_contents('/var/www/build-date-main.txt'));
|
||||
}
|
||||
} catch (Exception $e) { // generic catch for open basedir.
|
||||
Log::debug('Could not check date.');
|
||||
Log::warning($e->getMessage());
|
||||
}
|
||||
if ('' !== (string)env('BASE_IMAGE_BUILD')) {
|
||||
$baseBuildNr = env('BASE_IMAGE_BUILD');
|
||||
}
|
||||
if ('' !== (string)env('BASE_IMAGE_DATE')) {
|
||||
$baseBuildDate = env('BASE_IMAGE_DATE');
|
||||
}
|
||||
|
||||
$phpVersion = PHP_VERSION;
|
||||
$phpOs = PHP_OS;
|
||||
|
||||
// system information
|
||||
$tz = env('TZ');
|
||||
$appEnv = config('app.env');
|
||||
$appDebug = var_export(config('app.debug'), true);
|
||||
$cacheDriver = config('cache.default');
|
||||
$logChannel = config('logging.default');
|
||||
$appLogLevel = config('logging.level');
|
||||
$maxFileSize = app('steam')->phpBytes(ini_get('upload_max_filesize'));
|
||||
$maxPostSize = app('steam')->phpBytes(ini_get('post_max_size'));
|
||||
$uploadSize = min($maxFileSize, $maxPostSize);
|
||||
$displayErrors = ini_get('display_errors');
|
||||
$errorReporting = $this->errorReporting((int)ini_get('error_reporting'));
|
||||
$interface = PHP_SAPI;
|
||||
$defaultLanguage = (string)config('firefly.default_language');
|
||||
$defaultLocale = (string)config('firefly.default_locale');
|
||||
$bcscale = bcscale();
|
||||
$drivers = implode(', ', DB::availableDrivers());
|
||||
$currentDriver = DB::getDriverName();
|
||||
$trustedProxies = config('firefly.trusted_proxies');
|
||||
|
||||
// user info
|
||||
$loginProvider = config('auth.providers.users.driver');
|
||||
$userGuard = config('auth.defaults.guard');
|
||||
$remoteHeader = $userGuard === 'remote_user_guard' ? config('auth.guard_header') : 'N/A';
|
||||
$remoteMailHeader = $userGuard === 'remote_user_guard' ? config('auth.guard_email') : 'N/A';
|
||||
$userLanguage = app('steam')->getLanguage();
|
||||
$userLocale = app('steam')->getLocale();
|
||||
$userAgent = $request->header('user-agent');
|
||||
$stateful = join(', ', config('sanctum.stateful'));
|
||||
|
||||
|
||||
// expected + found DB version:
|
||||
|
||||
// some new vars.
|
||||
$isDocker = env('IS_DOCKER', false);
|
||||
|
||||
// set languages, see what happens:
|
||||
$original = setlocale(LC_ALL, 0);
|
||||
$localeAttempts = [];
|
||||
$parts = app('steam')->getLocaleArray(app('steam')->getLocale());
|
||||
foreach ($parts as $code) {
|
||||
$code = trim($code);
|
||||
Log::debug(sprintf('Trying to set %s', $code));
|
||||
$localeAttempts[$code] = var_export(setlocale(LC_ALL, $code), true);
|
||||
}
|
||||
setlocale(LC_ALL, $original);
|
||||
$table = $this->generateTable();
|
||||
$now = now(config('app.timezone'))->format('Y-m-d H:i:s');
|
||||
|
||||
// get latest log file:
|
||||
$logger = Log::driver();
|
||||
@@ -213,50 +140,190 @@ class DebugController extends Controller
|
||||
}
|
||||
if ('' !== $logContent) {
|
||||
// last few lines
|
||||
$logContent = 'Truncated from this point <----|' . substr($logContent, -8192);
|
||||
$logContent = 'Truncated from this point <----|' . substr($logContent, -16384);
|
||||
}
|
||||
|
||||
return view(
|
||||
'debug',
|
||||
compact(
|
||||
'phpVersion',
|
||||
'localeAttempts',
|
||||
'expectedDBversion',
|
||||
'foundDBversion',
|
||||
'appEnv',
|
||||
'appDebug',
|
||||
'logChannel',
|
||||
'stateful',
|
||||
'tz',
|
||||
'uploadSize',
|
||||
'appLogLevel',
|
||||
'remoteHeader',
|
||||
'remoteMailHeader',
|
||||
'now',
|
||||
'drivers',
|
||||
'currentDriver',
|
||||
'userGuard',
|
||||
'loginProvider',
|
||||
'buildNr',
|
||||
'buildDate',
|
||||
'baseBuildNr',
|
||||
'baseBuildDate',
|
||||
'bcscale',
|
||||
'userAgent',
|
||||
'displayErrors',
|
||||
'errorReporting',
|
||||
'phpOs',
|
||||
'interface',
|
||||
'logContent',
|
||||
'cacheDriver',
|
||||
'trustedProxies',
|
||||
'userLanguage',
|
||||
'userLocale',
|
||||
'defaultLanguage',
|
||||
'defaultLocale',
|
||||
'isDocker'
|
||||
)
|
||||
);
|
||||
return view('debug', compact('table', 'now', 'logContent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
private function generateTable(): string
|
||||
{
|
||||
// system information:
|
||||
$system = $this->getSystemInformation();
|
||||
$docker = $this->getBuildInfo();
|
||||
$app = $this->getAppInfo();
|
||||
$user = $this->getuserInfo();
|
||||
|
||||
return (string)view('partials.debug-table', compact('system', 'docker', 'app', 'user'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function getSystemInformation(): array
|
||||
{
|
||||
$maxFileSize = app('steam')->phpBytes(ini_get('upload_max_filesize'));
|
||||
$maxPostSize = app('steam')->phpBytes(ini_get('post_max_size'));
|
||||
$drivers = DB::availableDrivers();
|
||||
$currentDriver = DB::getDriverName();
|
||||
return [
|
||||
'db_version' => app('fireflyconfig')->get('db_version', 1)->data,
|
||||
'php_version' => PHP_VERSION,
|
||||
'php_os' => PHP_OS,
|
||||
'interface' => PHP_SAPI,
|
||||
'bcscale' => bcscale(),
|
||||
'display_errors' => ini_get('display_errors'),
|
||||
'error_reporting' => $this->errorReporting((int)ini_get('error_reporting')),
|
||||
'upload_size' => min($maxFileSize, $maxPostSize),
|
||||
'all_drivers' => $drivers,
|
||||
'current_driver' => $currentDriver,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function getBuildInfo(): array
|
||||
{
|
||||
$return = [
|
||||
'is_docker' => env('IS_DOCKER', false),
|
||||
'build' => '(unknown)',
|
||||
'build_date' => '(unknown)',
|
||||
'base_build' => '(unknown)',
|
||||
'base_build_date' => '(unknown)',
|
||||
|
||||
];
|
||||
try {
|
||||
if (file_exists('/var/www/counter-main.txt')) {
|
||||
$return['build'] = trim(file_get_contents('/var/www/counter-main.txt'));
|
||||
}
|
||||
} catch (Exception $e) { // generic catch for open basedir.
|
||||
Log::debug('Could not check build counter, but thats ok.');
|
||||
Log::warning($e->getMessage());
|
||||
}
|
||||
try {
|
||||
if (file_exists('/var/www/build-date-main.txt')) {
|
||||
$return['build_date'] = trim(file_get_contents('/var/www/build-date-main.txt'));
|
||||
}
|
||||
} catch (Exception $e) { // generic catch for open basedir.
|
||||
Log::debug('Could not check build date, but thats ok.');
|
||||
Log::warning($e->getMessage());
|
||||
}
|
||||
if ('' !== (string)env('BASE_IMAGE_BUILD')) {
|
||||
$return['base_build'] = env('BASE_IMAGE_BUILD');
|
||||
}
|
||||
if ('' !== (string)env('BASE_IMAGE_DATE')) {
|
||||
$return['base_build_date'] = env('BASE_IMAGE_DATE');
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function getAppInfo(): array
|
||||
{
|
||||
$userGuard = config('auth.defaults.guard');
|
||||
|
||||
return [
|
||||
'tz' => env('TZ'),
|
||||
'debug' => var_export(config('app.debug'), true),
|
||||
'log_channel' => env('LOG_CHANNEL'),
|
||||
'audit_log_channel' => envNonEmpty('AUDIT_LOG_CHANNEL', '(empty)'),
|
||||
'default_language' => (string)config('firefly.default_language'),
|
||||
'default_locale' => (string)config('firefly.default_locale'),
|
||||
'remote_header' => $userGuard === 'remote_user_guard' ? config('auth.guard_header') : 'N/A',
|
||||
'remote_mail_header' => $userGuard === 'remote_user_guard' ? config('auth.guard_email') : 'N/A',
|
||||
'stateful_domains' => join(', ', config('sanctum.stateful')),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
private function getuserInfo(): array
|
||||
{
|
||||
$userFlags = $this->getUserFlags();
|
||||
|
||||
// user info
|
||||
$userAgent = request()->header('user-agent');
|
||||
|
||||
// set languages, see what happens:
|
||||
$original = setlocale(LC_ALL, 0);
|
||||
$localeAttempts = [];
|
||||
$parts = app('steam')->getLocaleArray(app('steam')->getLocale());
|
||||
foreach ($parts as $code) {
|
||||
$code = trim($code);
|
||||
Log::debug(sprintf('Trying to set %s', $code));
|
||||
$result = setlocale(LC_ALL, $code);
|
||||
$localeAttempts[$code] = $result === $code;
|
||||
}
|
||||
setlocale(LC_ALL, $original);
|
||||
|
||||
return [
|
||||
'user_id' => auth()->user()->id,
|
||||
'user_count' => User::count(),
|
||||
'user_flags' => $userFlags,
|
||||
'user_agent' => $userAgent,
|
||||
'locale_attempts' => $localeAttempts,
|
||||
'locale' => app('steam')->getLocale(),
|
||||
'language' => app('steam')->getLanguage(),
|
||||
'view_range' => app('preferences')->get('viewRange', '1M')->data,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
private function getUserFlags(): string
|
||||
{
|
||||
$flags = [];
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
// has liabilities
|
||||
if ($user->accounts()->accountTypeIn([AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE])->count() > 0) {
|
||||
$flags[] = ':credit_card:';
|
||||
}
|
||||
|
||||
// has piggies
|
||||
if ($user->piggyBanks()->count() > 0) {
|
||||
$flags[] = ':pig:';
|
||||
}
|
||||
|
||||
// has stored reconciliations
|
||||
$type = TransactionType::whereType(TransactionType::RECONCILIATION)->first();
|
||||
if ($user->transactionJournals()->where('transaction_type_id', $type->id)->count()) {
|
||||
$flags[] = ':ledger:';
|
||||
}
|
||||
|
||||
// has used importer?
|
||||
|
||||
// has rules
|
||||
if ($user->rules()->count() > 0) {
|
||||
$flags[] = ':wrench:';
|
||||
}
|
||||
|
||||
// has recurring transactions
|
||||
if ($user->recurrences()->count() > 0) {
|
||||
$flags[] = ':clock130:';
|
||||
}
|
||||
|
||||
// has groups
|
||||
if ($user->objectGroups()->count() > 0) {
|
||||
$flags[] = ':bookmark_tabs:';
|
||||
}
|
||||
|
||||
// uses bills
|
||||
if ($user->bills()->count() > 0) {
|
||||
$flags[] = ':email:';
|
||||
}
|
||||
return join(' ', $flags);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -275,4 +342,5 @@ class DebugController extends Controller
|
||||
|
||||
return redirect(route('home'));
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user