* Do not edit this file unless you're happy to maintain any changes yourself.
*/
+use Illuminate\Support\Facades\Facade;
+use Illuminate\Support\ServiceProvider;
+
return [
// The environment to run BookStack in.
// The number of revisions to keep in the database.
// Once this limit is reached older revisions will be deleted.
// If set to false then a limit will not be enforced.
- 'revision_limit' => env('REVISION_LIMIT', 50),
+ 'revision_limit' => env('REVISION_LIMIT', 100),
// The number of days that content will remain in the recycle bin before
// being considered for auto-removal. It is not a guarantee that content will
// Set to -1 for unlimited recycle bin lifetime.
'recycle_bin_lifetime' => env('RECYCLE_BIN_LIFETIME', 30),
+ // The limit for all uploaded files, including images and attachments in MB.
+ 'upload_limit' => env('FILE_UPLOAD_SIZE_LIMIT', 50),
+
// Allow <script> tags to entered within page content.
// <script> tags are escaped by default.
// Even when overridden the WYSIWYG editor may still escape script content.
'allow_content_scripts' => env('ALLOW_CONTENT_SCRIPTS', false),
+ // Allow server-side fetches to be performed to potentially unknown
+ // and user-provided locations. Primarily used in exports when loading
+ // in externally referenced assets.
+ 'allow_untrusted_server_fetching' => env('ALLOW_UNTRUSTED_SERVER_FETCHING', false),
+
// Override the default behaviour for allowing crawlers to crawl the instance.
// May be ignored if view has be overridden or modified.
// Defaults to null since, if not set, 'app-public' status used instead.
// Space separated if multiple. BookStack host domain is auto-inferred.
'iframe_hosts' => env('ALLOWED_IFRAME_HOSTS', null),
+ // A list of sources/hostnames that can be loaded within iframes within BookStack.
+ // Space separated if multiple. BookStack host domain is auto-inferred.
+ // Can be set to a lone "*" to allow all sources for iframe content (Not advised).
+ // Defaults to a set of common services.
+ // Current host and source for the "DRAWIO" setting will be auto-appended to the sources configured.
+ 'iframe_sources' => env('ALLOWED_IFRAME_SOURCES', 'https://*.draw.io https://*.youtube.com https://*.youtube-nocookie.com https://*.vimeo.com'),
+
+ // A list of the sources/hostnames that can be reached by application SSR calls.
+ // This is used wherever users can provide URLs/hosts in-platform, like for webhooks.
+ // Host-specific functionality (usually controlled via other options) like auth
+ // or user avatars for example, won't use this list.
+ // Space seperated if multiple. Can use '*' as a wildcard.
+ // Values will be compared prefix-matched, case-insensitive, against called SSR urls.
+ // Defaults to allow all hosts.
+ 'ssr_hosts' => env('ALLOWED_SSR_HOSTS', '*'),
+
+ // Alter the precision of IP addresses stored by BookStack.
+ // Integer value between 0 (IP hidden) to 4 (Full IP usage)
+ 'ip_address_precision' => env('IP_ADDRESS_PRECISION', 4),
+
// Application timezone for back-end date functions.
'timezone' => env('APP_TIMEZONE', 'UTC'),
// Default locale to use
+ // A default variant is also stored since Laravel can overwrite
+ // app.locale when dynamically setting the locale in-app.
'locale' => env('APP_LANG', 'en'),
-
- // Locales available
- 'locales' => ['en', 'ar', 'bg', 'bs', 'cs', 'da', 'de', 'de_informal', 'es', 'es_AR', 'fa', 'fr', 'he', 'hu', 'id', 'it', 'ja', 'ko', 'lv', 'nl', 'nb', 'pt', 'pt_BR', 'sk', 'sl', 'sv', 'pl', 'ru', 'th', 'tr', 'uk', 'vi', 'zh_CN', 'zh_TW',],
+ 'default_locale' => env('APP_LANG', 'en'),
// Application Fallback Locale
'fallback_locale' => 'en',
// Faker Locale
'faker_locale' => 'en_GB',
- // Enable right-to-left text control.
- 'rtl' => false,
-
// Auto-detect the locale for public users
// For public users their locale can be guessed by headers sent by their
// browser. This is usually set by users in their browser settings.
// Encryption cipher
'cipher' => 'AES-256-CBC',
- // Application Services Provides
- 'providers' => [
-
- // Laravel Framework Service Providers...
- Illuminate\Auth\AuthServiceProvider::class,
- Illuminate\Broadcasting\BroadcastServiceProvider::class,
- Illuminate\Bus\BusServiceProvider::class,
- Illuminate\Cache\CacheServiceProvider::class,
- Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
- Illuminate\Cookie\CookieServiceProvider::class,
- Illuminate\Database\DatabaseServiceProvider::class,
- Illuminate\Encryption\EncryptionServiceProvider::class,
- Illuminate\Filesystem\FilesystemServiceProvider::class,
- Illuminate\Foundation\Providers\FoundationServiceProvider::class,
- Illuminate\Hashing\HashServiceProvider::class,
- Illuminate\Mail\MailServiceProvider::class,
- Illuminate\Pipeline\PipelineServiceProvider::class,
- Illuminate\Queue\QueueServiceProvider::class,
- Illuminate\Redis\RedisServiceProvider::class,
- Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
- Illuminate\Session\SessionServiceProvider::class,
- Illuminate\Validation\ValidationServiceProvider::class,
- Illuminate\View\ViewServiceProvider::class,
- Illuminate\Notifications\NotificationServiceProvider::class,
- SocialiteProviders\Manager\ServiceProvider::class,
+ // Maintenance Mode Driver
+ 'maintenance' => [
+ 'driver' => 'file',
+ // 'store' => 'redis',
+ ],
+ // Application Service Providers
+ 'providers' => ServiceProvider::defaultProviders()->merge([
// Third party service providers
- Intervention\Image\ImageServiceProvider::class,
- Barryvdh\DomPDF\ServiceProvider::class,
- Barryvdh\Snappy\ServiceProvider::class,
-
- // BookStack replacement service providers (Extends Laravel)
- BookStack\Providers\PaginationServiceProvider::class,
- BookStack\Providers\TranslationServiceProvider::class,
+ SocialiteProviders\Manager\ServiceProvider::class,
// BookStack custom service providers
- BookStack\Providers\AuthServiceProvider::class,
- BookStack\Providers\AppServiceProvider::class,
- BookStack\Providers\BroadcastServiceProvider::class,
- BookStack\Providers\EventServiceProvider::class,
- BookStack\Providers\RouteServiceProvider::class,
- BookStack\Providers\CustomFacadeProvider::class,
- BookStack\Providers\CustomValidationServiceProvider::class,
- ],
-
- /*
- |--------------------------------------------------------------------------
- | Class Aliases
- |--------------------------------------------------------------------------
- |
- | This array of class aliases will be registered when this application
- | is started. However, feel free to register as many as you wish as
- | the aliases are "lazy" loaded so they don't hinder performance.
- |
- */
-
- // Class aliases, Registered on application start
- 'aliases' => [
-
- // Laravel
- 'App' => Illuminate\Support\Facades\App::class,
- 'Arr' => Illuminate\Support\Arr::class,
- 'Artisan' => Illuminate\Support\Facades\Artisan::class,
- 'Auth' => Illuminate\Support\Facades\Auth::class,
- 'Blade' => Illuminate\Support\Facades\Blade::class,
- 'Bus' => Illuminate\Support\Facades\Bus::class,
- 'Cache' => Illuminate\Support\Facades\Cache::class,
- 'Config' => Illuminate\Support\Facades\Config::class,
- 'Cookie' => Illuminate\Support\Facades\Cookie::class,
- 'Crypt' => Illuminate\Support\Facades\Crypt::class,
- 'DB' => Illuminate\Support\Facades\DB::class,
- 'Eloquent' => Illuminate\Database\Eloquent\Model::class,
- 'Event' => Illuminate\Support\Facades\Event::class,
- 'File' => Illuminate\Support\Facades\File::class,
- 'Hash' => Illuminate\Support\Facades\Hash::class,
- 'Input' => Illuminate\Support\Facades\Input::class,
- 'Inspiring' => Illuminate\Foundation\Inspiring::class,
- 'Lang' => Illuminate\Support\Facades\Lang::class,
- 'Log' => Illuminate\Support\Facades\Log::class,
- 'Mail' => Illuminate\Support\Facades\Mail::class,
- 'Notification' => Illuminate\Support\Facades\Notification::class,
- 'Password' => Illuminate\Support\Facades\Password::class,
- 'Queue' => Illuminate\Support\Facades\Queue::class,
- 'Redirect' => Illuminate\Support\Facades\Redirect::class,
- 'Redis' => Illuminate\Support\Facades\Redis::class,
- 'Request' => Illuminate\Support\Facades\Request::class,
- 'Response' => Illuminate\Support\Facades\Response::class,
- 'Route' => Illuminate\Support\Facades\Route::class,
- 'Schema' => Illuminate\Support\Facades\Schema::class,
- 'Session' => Illuminate\Support\Facades\Session::class,
- 'Storage' => Illuminate\Support\Facades\Storage::class,
- 'Str' => Illuminate\Support\Str::class,
- 'URL' => Illuminate\Support\Facades\URL::class,
- 'Validator' => Illuminate\Support\Facades\Validator::class,
- 'View' => Illuminate\Support\Facades\View::class,
- 'Socialite' => Laravel\Socialite\Facades\Socialite::class,
-
- // Third Party
- 'ImageTool' => Intervention\Image\Facades\Image::class,
- 'DomPDF' => Barryvdh\DomPDF\Facade::class,
- 'SnappyPDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
+ BookStack\App\Providers\ThemeServiceProvider::class,
+ BookStack\App\Providers\AppServiceProvider::class,
+ BookStack\App\Providers\AuthServiceProvider::class,
+ BookStack\App\Providers\EventServiceProvider::class,
+ BookStack\App\Providers\RouteServiceProvider::class,
+ BookStack\App\Providers\TranslationServiceProvider::class,
+ BookStack\App\Providers\ValidationRuleServiceProvider::class,
+ BookStack\App\Providers\ViewTweaksServiceProvider::class,
+ ])->toArray(),
+
+ // Class Aliases
+ // This array of class aliases to be registered on application start.
+ 'aliases' => Facade::defaultAliases()->merge([
+ // Laravel Packages
+ 'Socialite' => Laravel\Socialite\Facades\Socialite::class,
// Custom BookStack
- 'Activity' => BookStack\Facades\Activity::class,
- 'Views' => BookStack\Facades\Views::class,
- 'Images' => BookStack\Facades\Images::class,
- 'Permissions' => BookStack\Facades\Permissions::class,
-
- ],
+ 'Activity' => BookStack\Facades\Activity::class,
+ 'Theme' => BookStack\Facades\Theme::class,
+ ])->toArray(),
// Proxy configuration
'proxies' => env('APP_PROXIES', ''),