├── .editorconfig ├── .gitattributes ├── .gitignore ├── .gitpod.Dockerfile ├── .gitpod.yml ├── .lando.yml ├── .vscode └── launch.json ├── README.md ├── composer.json ├── composer.lock ├── config └── sync │ └── .htaccess └── web ├── .csslintrc ├── .eslintignore ├── .eslintrc.json ├── .ht.router.php ├── .htaccess ├── INSTALL.txt ├── README.md ├── autoload.php ├── example.gitignore ├── index.php ├── modules └── README.txt ├── profiles └── README.txt ├── robots.txt ├── sites ├── README.txt ├── default │ ├── default.services.yml │ ├── default.settings.php │ ├── settings.lando.php │ └── settings.php ├── development.services.yml ├── example.settings.local.php └── example.sites.php ├── themes └── README.txt ├── update.php └── web.config /.editorconfig: -------------------------------------------------------------------------------- 1 | # Drupal editor configuration normalization 2 | # @see http://editorconfig.org/ 3 | 4 | # This is the top-most .editorconfig file; do not search in parent directories. 5 | root = true 6 | 7 | # All files. 8 | [*] 9 | end_of_line = LF 10 | indent_style = space 11 | indent_size = 2 12 | charset = utf-8 13 | trim_trailing_whitespace = true 14 | insert_final_newline = true 15 | 16 | [composer.{json,lock}] 17 | indent_size = 4 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Drupal git normalization 2 | # @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html 3 | # @see https://www.drupal.org/node/1542048 4 | 5 | # Normally these settings would be done with macro attributes for improved 6 | # readability and easier maintenance. However macros can only be defined at the 7 | # repository root directory. Drupal avoids making any assumptions about where it 8 | # is installed. 9 | 10 | # Define text file attributes. 11 | # - Treat them as text. 12 | # - Ensure no CRLF line-endings, neither on checkout nor on checkin. 13 | # - Detect whitespace errors. 14 | # - Exposed by default in `git diff --color` on the CLI. 15 | # - Validate with `git diff --check`. 16 | # - Deny applying with `git apply --whitespace=error-all`. 17 | # - Fix automatically with `git apply --whitespace=fix`. 18 | 19 | *.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 20 | *.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 21 | *.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 22 | *.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php 23 | *.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html 24 | *.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php 25 | *.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php 26 | *.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 27 | *.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 28 | *.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 29 | *.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 30 | *.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 31 | *.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php 32 | *.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php 33 | *.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 34 | *.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php 35 | *.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 36 | *.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php 37 | *.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 38 | *.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 39 | *.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php 40 | *.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 41 | *.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 42 | *.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 43 | *.yml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 44 | 45 | # Define binary file attributes. 46 | # - Do not treat them as text. 47 | # - Include binary diff in patches instead of "binary files differ." 48 | *.eot -text diff 49 | *.exe -text diff 50 | *.gif -text diff 51 | *.gz -text diff 52 | *.ico -text diff 53 | *.jpeg -text diff 54 | *.jpg -text diff 55 | *.otf -text diff 56 | *.phar -text diff 57 | *.png -text diff 58 | *.svgz -text diff 59 | *.ttf -text diff 60 | *.woff -text diff 61 | *.woff2 -text diff 62 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore directories generated by Composer 2 | /drush/contrib/ 3 | /vendor/ 4 | /console/ 5 | /web/core/ 6 | /web/modules/contrib/ 7 | /web/themes/contrib/ 8 | /web/profiles/contrib/ 9 | /web/libraries/* 10 | 11 | # Ignore Drupal's file directory 12 | /web/sites/*/files/ 13 | /web/sites/default/settings.local.php 14 | 15 | # Ignore phpunit temp files 16 | /.phpunit.result.cache 17 | /web/sites/simpletest/ 18 | 19 | # Ignore files generated by PhpStorm 20 | /.idea/ 21 | 22 | # Ignore database dumps 23 | /*.sql 24 | /*.sql.gz 25 | -------------------------------------------------------------------------------- /.gitpod.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gitpod/workspace-full 2 | # Make runc's proc mount work again https://github.com/gitpod-io/gitpod/issues/5124#issuecomment-897048987 3 | RUN curl -o olderrunc -L https://github.com/opencontainers/runc/releases/download/v1.0.0-rc93/runc.amd64 && chmod 755 olderrunc 4 | RUN sudo rm /usr/bin/runc && sudo cp olderrunc /usr/bin/runc 5 | RUN sudo apt-get -qq update && sudo apt-get install -y zsh && sudo chsh -s $(which zsh) 6 | RUN sh -c "$(curl -fsSL https://starship.rs/install.sh)" -- --yes && echo 'eval "$(starship init zsh)"' > .zshrc 7 | RUN curl -OL https://github.com/lando/lando/releases/download/v3.4.2/lando-x64-v3.4.2.deb && sudo dpkg -i --ignore-depends docker-ce,iptables lando-x64-v3.4.2.deb && rm -rf lando-x64-v3.4.2.deb 8 | RUN mkdir -p ~/.lando && echo "proxy: 'ON'\nproxyHttpPort: '8080'\nproxyHttpsPort: '4443'\nbindAddress: '0.0.0.0'\nproxyBindAddress: '0.0.0.0'" > ~/.lando/config.yml 9 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: 2 | file: .gitpod.Dockerfile 3 | 4 | tasks: 5 | - name: Drupal start 6 | init: | 7 | lando start 8 | lando composer install 9 | lando drush si -y --account-pass=admin --site-name='gitpod_lando' demo_umami 10 | gp preview $(gp url $(lando info --format=json | jq -r ".[0].urls[1]" | sed -e 's#http://localhost:\(\)#\1#')) 11 | 12 | vscode: 13 | extensions: 14 | - felixfbecker.php-debug 15 | - dbaeumer.vscode-eslint 16 | - eamodio.gitlens 17 | - EditorConfig.EditorConfig 18 | - esbenp.prettier-vscode 19 | - stylelint.vscode-stylelint 20 | - tombonnike.vscode-status-bar-format-toggle 21 | - usernamehw.errorlens 22 | - mblode.twig-language 23 | - skippednote.vs-code-drupal 24 | -------------------------------------------------------------------------------- /.lando.yml: -------------------------------------------------------------------------------- 1 | name: gitpod-lando 2 | recipe: drupal9 3 | config: 4 | webroot: web 5 | xdebug: true 6 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Listen for Xdebug", 9 | "type": "php", 10 | "request": "launch", 11 | "port": 9003, 12 | "pathMappings": { 13 | "/app": "${workspaceFolder}" 14 | } 15 | }, 16 | { 17 | "name": "Launch currently open script", 18 | "type": "php", 19 | "request": "launch", 20 | "program": "${file}", 21 | "cwd": "${fileDirname}", 22 | "port": 0, 23 | "runtimeArgs": [ 24 | "-dxdebug.start_with_request=yes" 25 | ], 26 | "env": { 27 | "XDEBUG_MODE": "debug,develop", 28 | "XDEBUG_CONFIG": "client_port=${port}" 29 | } 30 | }, 31 | { 32 | "name": "Launch Built-in web server", 33 | "type": "php", 34 | "request": "launch", 35 | "runtimeArgs": [ 36 | "-dxdebug.mode=debug", 37 | "-dxdebug.start_with_request=yes", 38 | "-S", 39 | "localhost:0" 40 | ], 41 | "program": "", 42 | "cwd": "${workspaceRoot}", 43 | "port": 9003, 44 | "serverReadyAction": { 45 | "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started", 46 | "uriFormat": "http://localhost:%s", 47 | "action": "openExternally" 48 | } 49 | } 50 | ] 51 | } 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/skippednote/gitpod-lando) 2 | 3 | # Gitpod Lando 4 | 5 | Click that button 6 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "drupal/recommended-project", 3 | "description": "Project template for Drupal 9 projects with a relocated document root", 4 | "type": "project", 5 | "license": "GPL-2.0-or-later", 6 | "homepage": "https://www.drupal.org/project/drupal", 7 | "support": { 8 | "docs": "https://www.drupal.org/docs/user_guide/en/index.html", 9 | "chat": "https://www.drupal.org/node/314178" 10 | }, 11 | "repositories": [ 12 | { 13 | "type": "composer", 14 | "url": "https://packages.drupal.org/8" 15 | } 16 | ], 17 | "require": { 18 | "composer/installers": "^1.9", 19 | "drupal/core-composer-scaffold": "^9.2", 20 | "drupal/core-project-message": "^9.2", 21 | "drupal/core-recommended": "^9.2", 22 | "drush/drush": "^10.5" 23 | }, 24 | "conflict": { 25 | "drupal/drupal": "*" 26 | }, 27 | "minimum-stability": "stable", 28 | "prefer-stable": true, 29 | "config": { 30 | "sort-packages": true 31 | }, 32 | "extra": { 33 | "drupal-scaffold": { 34 | "locations": { 35 | "web-root": "web/" 36 | } 37 | }, 38 | "installer-paths": { 39 | "web/core": [ 40 | "type:drupal-core" 41 | ], 42 | "web/libraries/{$name}": [ 43 | "type:drupal-library" 44 | ], 45 | "web/modules/contrib/{$name}": [ 46 | "type:drupal-module" 47 | ], 48 | "web/profiles/contrib/{$name}": [ 49 | "type:drupal-profile" 50 | ], 51 | "web/themes/contrib/{$name}": [ 52 | "type:drupal-theme" 53 | ], 54 | "drush/Commands/contrib/{$name}": [ 55 | "type:drupal-drush" 56 | ], 57 | "web/modules/custom/{$name}": [ 58 | "type:drupal-custom-module" 59 | ], 60 | "web/profiles/custom/{$name}": [ 61 | "type:drupal-custom-profile" 62 | ], 63 | "web/themes/custom/{$name}": [ 64 | "type:drupal-custom-theme" 65 | ] 66 | }, 67 | "drupal-core-project-message": { 68 | "include-keys": [ 69 | "homepage", 70 | "support" 71 | ], 72 | "post-create-project-cmd-message": [ 73 | " ", 74 | " Congratulations, you’ve installed the Drupal codebase ", 75 | " from the drupal/recommended-project template! ", 76 | " ", 77 | "", 78 | "Next steps:", 79 | " * Install the site: https://www.drupal.org/docs/8/install", 80 | " * Read the user guide: https://www.drupal.org/docs/user_guide/en/index.html", 81 | " * Get support: https://www.drupal.org/support", 82 | " * Get involved with the Drupal community:", 83 | " https://www.drupal.org/getting-involved", 84 | " * Remove the plugin that prints this message:", 85 | " composer remove drupal/core-project-message" 86 | ] 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /config/sync/.htaccess: -------------------------------------------------------------------------------- 1 | # Deny all requests from Apache 2.4+. 2 | 3 | Require all denied 4 | 5 | 6 | # Deny all requests from Apache 2.0-2.2. 7 | 8 | Deny from all 9 | 10 | 11 | # Turn off all options we don't need. 12 | Options -Indexes -ExecCGI -Includes -MultiViews 13 | 14 | # Set the catch-all handler to prevent scripts from being executed. 15 | SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 16 | 17 | # Override the handler again if we're run later in the evaluation list. 18 | SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 19 | 20 | 21 | # If we know how to do it safely, disable the PHP engine entirely. 22 | 23 | php_flag engine off 24 | -------------------------------------------------------------------------------- /web/.csslintrc: -------------------------------------------------------------------------------- 1 | --errors=box-model, 2 | display-property-grouping, 3 | duplicate-background-images, 4 | duplicate-properties, 5 | empty-rules, 6 | ids, 7 | import, 8 | important, 9 | known-properties, 10 | outline-none, 11 | overqualified-elements, 12 | qualified-headings, 13 | shorthand, 14 | star-property-hack, 15 | text-indent, 16 | underscore-property-hack, 17 | unique-headings, 18 | unqualified-attributes, 19 | vendor-prefix, 20 | zero-units 21 | --ignore=adjoining-classes, 22 | box-sizing, 23 | bulletproof-font-face, 24 | compatible-vendor-prefixes, 25 | errors, 26 | fallback-colors, 27 | floats, 28 | font-faces, 29 | font-sizes, 30 | gradients, 31 | import-ie-limit, 32 | order-alphabetical, 33 | regex-selectors, 34 | rules-count, 35 | selector-max, 36 | selector-max-approaching, 37 | selector-newline, 38 | universal-selector 39 | --exclude-list=core/assets, 40 | vendor 41 | -------------------------------------------------------------------------------- /web/.eslintignore: -------------------------------------------------------------------------------- 1 | core/**/* 2 | vendor/**/* 3 | sites/**/files/**/* 4 | libraries/**/* 5 | sites/**/libraries/**/* 6 | profiles/**/libraries/**/* 7 | **/js_test_files/**/* 8 | **/node_modules/**/* 9 | -------------------------------------------------------------------------------- /web/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./core/.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /web/.ht.router.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | Require all denied 9 | 10 | 11 | Order allow,deny 12 | 13 | 14 | 15 | # Don't show directory listings for URLs which map to a directory. 16 | Options -Indexes 17 | 18 | # Set the default handler. 19 | DirectoryIndex index.php index.html index.htm 20 | 21 | # Add correct encoding for SVGZ. 22 | AddType image/svg+xml svg svgz 23 | AddEncoding gzip svgz 24 | 25 | # Most of the following PHP settings cannot be changed at runtime. See 26 | # sites/default/default.settings.php and 27 | # Drupal\Core\DrupalKernel::bootEnvironment() for settings that can be 28 | # changed at runtime. 29 | 30 | # PHP 7, Apache 1 and 2. 31 | 32 | php_value assert.active 0 33 | 34 | 35 | # Requires mod_expires to be enabled. 36 | 37 | # Enable expirations. 38 | ExpiresActive On 39 | 40 | # Cache all files for 2 weeks after access (A). 41 | ExpiresDefault A1209600 42 | 43 | 44 | # Do not allow PHP scripts to be cached unless they explicitly send cache 45 | # headers themselves. Otherwise all scripts would have to overwrite the 46 | # headers set by mod_expires if they want another caching behavior. This may 47 | # fail if an error occurs early in the bootstrap process, and it may cause 48 | # problems if a non-Drupal PHP file is installed in a subdirectory. 49 | ExpiresActive Off 50 | 51 | 52 | 53 | # Set a fallback resource if mod_rewrite is not enabled. This allows Drupal to 54 | # work without clean URLs. This requires Apache version >= 2.2.16. If Drupal is 55 | # not accessed by the top level URL (i.e.: http://example.com/drupal/ instead of 56 | # http://example.com/), the path to index.php will need to be adjusted. 57 | 58 | FallbackResource /index.php 59 | 60 | 61 | # Various rewrite rules. 62 | 63 | RewriteEngine on 64 | 65 | # Set "protossl" to "s" if we were accessed via https://. This is used later 66 | # if you enable "www." stripping or enforcement, in order to ensure that 67 | # you don't bounce between http and https. 68 | RewriteRule ^ - [E=protossl] 69 | RewriteCond %{HTTPS} on 70 | RewriteRule ^ - [E=protossl:s] 71 | 72 | # Make sure Authorization HTTP header is available to PHP 73 | # even when running as CGI or FastCGI. 74 | RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 75 | 76 | # Block access to "hidden" directories whose names begin with a period. This 77 | # includes directories used by version control systems such as Subversion or 78 | # Git to store control files. Files whose names begin with a period, as well 79 | # as the control files used by CVS, are protected by the FilesMatch directive 80 | # above. 81 | # 82 | # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is 83 | # not possible to block access to entire directories from .htaccess because 84 | # is not allowed here. 85 | # 86 | # If you do not have mod_rewrite installed, you should remove these 87 | # directories from your webroot or otherwise protect them from being 88 | # downloaded. 89 | RewriteRule "/\.|^\.(?!well-known/)" - [F] 90 | 91 | # If your site can be accessed both with and without the 'www.' prefix, you 92 | # can use one of the following settings to redirect users to your preferred 93 | # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: 94 | # 95 | # To redirect all users to access the site WITH the 'www.' prefix, 96 | # (http://example.com/foo will be redirected to http://www.example.com/foo) 97 | # uncomment the following: 98 | # RewriteCond %{HTTP_HOST} . 99 | # RewriteCond %{HTTP_HOST} !^www\. [NC] 100 | # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 101 | # 102 | # To redirect all users to access the site WITHOUT the 'www.' prefix, 103 | # (http://www.example.com/foo will be redirected to http://example.com/foo) 104 | # uncomment the following: 105 | # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 106 | # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] 107 | 108 | # Modify the RewriteBase if you are using Drupal in a subdirectory or in a 109 | # VirtualDocumentRoot and the rewrite rules are not working properly. 110 | # For example if your site is at http://example.com/drupal uncomment and 111 | # modify the following line: 112 | # RewriteBase /drupal 113 | # 114 | # If your site is running in a VirtualDocumentRoot at http://example.com/, 115 | # uncomment the following line: 116 | # RewriteBase / 117 | 118 | # Redirect common PHP files to their new locations. 119 | RewriteCond %{REQUEST_URI} ^(.*)?/(install\.php) [OR] 120 | RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild\.php) 121 | RewriteCond %{REQUEST_URI} !core 122 | RewriteRule ^ %1/core/%2 [L,QSA,R=301] 123 | 124 | # Rewrite install.php during installation to see if mod_rewrite is working 125 | RewriteRule ^core/install\.php core/install.php?rewrite=ok [QSA,L] 126 | 127 | # Pass all requests not referring directly to files in the filesystem to 128 | # index.php. 129 | RewriteCond %{REQUEST_FILENAME} !-f 130 | RewriteCond %{REQUEST_FILENAME} !-d 131 | RewriteCond %{REQUEST_URI} !=/favicon.ico 132 | RewriteRule ^ index.php [L] 133 | 134 | # For security reasons, deny access to other PHP files on public sites. 135 | # Note: The following URI conditions are not anchored at the start (^), 136 | # because Drupal may be located in a subdirectory. To further improve 137 | # security, you can replace '!/' with '!^/'. 138 | # Allow access to PHP files in /core (like authorize.php or install.php): 139 | RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$ 140 | # Allow access to test-specific PHP files: 141 | RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?\.php 142 | # Allow access to Statistics module's custom front controller. 143 | # Copy and adapt this rule to directly execute PHP files in contributed or 144 | # custom modules or to run another PHP application in the same directory. 145 | RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics\.php$ 146 | # Deny access to any other PHP files that do not match the rules above. 147 | # Specifically, disallow autoload.php from being served directly. 148 | RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F] 149 | 150 | # Rules to correctly serve gzip compressed CSS and JS files. 151 | # Requires both mod_rewrite and mod_headers to be enabled. 152 | 153 | # Serve gzip compressed CSS files if they exist and the client accepts gzip. 154 | RewriteCond %{HTTP:Accept-encoding} gzip 155 | RewriteCond %{REQUEST_FILENAME}\.gz -s 156 | RewriteRule ^(.*)\.css $1\.css\.gz [QSA] 157 | 158 | # Serve gzip compressed JS files if they exist and the client accepts gzip. 159 | RewriteCond %{HTTP:Accept-encoding} gzip 160 | RewriteCond %{REQUEST_FILENAME}\.gz -s 161 | RewriteRule ^(.*)\.js $1\.js\.gz [QSA] 162 | 163 | # Serve correct content types, and prevent double compression. 164 | RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1] 165 | RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1,E=no-brotli:1] 166 | 167 | 168 | # Serve correct encoding type. 169 | Header set Content-Encoding gzip 170 | # Force proxies to cache gzipped & non-gzipped css/js files separately. 171 | Header append Vary Accept-Encoding 172 | 173 | 174 | 175 | 176 | # Various header fixes. 177 | 178 | # Disable content sniffing, since it's an attack vector. 179 | Header always set X-Content-Type-Options nosniff 180 | # Disable Proxy header, since it's an attack vector. 181 | RequestHeader unset Proxy 182 | 183 | -------------------------------------------------------------------------------- /web/INSTALL.txt: -------------------------------------------------------------------------------- 1 | 2 | Please read core/INSTALL.txt for detailed installation instructions for your 3 | Drupal website. 4 | -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | Drupal Logo 2 | 3 | Drupal is an open source content management platform supporting a variety of 4 | websites ranging from personal weblogs to large community-driven websites. For 5 | more information, visit the Drupal website, [Drupal.org][Drupal.org], and join 6 | the [Drupal community][Drupal community]. 7 | 8 | ## Contributing 9 | 10 | Drupal is developed on [Drupal.org][Drupal.org], the home of the international 11 | Drupal community since 2001! 12 | 13 | [Drupal.org][Drupal.org] hosts Drupal's [GitLab repository][GitLab repository], 14 | its [issue queue][issue queue], and its [documentation][documentation]. Before 15 | you start working on code, be sure to search the [issue queue][issue queue] and 16 | create an issue if your aren't able to find an existing issue. 17 | 18 | Every issue on Drupal.org automatically creates a new community-accessible fork 19 | that you can contribute to. Learn more about the code contribution process on 20 | the [Issue forks & merge requests page][issue forks]. 21 | 22 | ## Usage 23 | 24 | For a brief introduction, see [USAGE.txt](/core/USAGE.txt). You can also find 25 | guides, API references, and more by visiting Drupal's [documentation 26 | page][documentation]. 27 | 28 | You can quickly extend Drupal's core feature set by installing any of its 29 | [thousands of free and open source modules][modules]. With Drupal and its 30 | module ecosystem, you can often build most or all of what your project needs 31 | before writing a single line of code. 32 | 33 | ## Changelog 34 | 35 | Drupal keeps detailed [change records][changelog]. You can search Drupal's 36 | changes for a record of every notable breaking change and new feature since 37 | 2011. 38 | 39 | ## Security 40 | 41 | For a list of security announcements, see the [Security advisories 42 | page][Security advisories] (available as [an RSS feed][security RSS]). This 43 | page also describes how to subscribe to these announcements via email. 44 | 45 | For information about the Drupal security process, or to find out how to report 46 | a potential security issue to the Drupal security team, see the [Security team 47 | page][security team]. 48 | 49 | ## Need a helping hand? 50 | 51 | Visit the [Support page][support] or browse [over a thousand Drupal 52 | providers][service providers] offering design, strategy, development, and 53 | hosting services. 54 | 55 | ## Legal matters 56 | 57 | Know your rights when using Drupal by reading Drupal core's 58 | [license](/core/LICENSE.txt). 59 | 60 | Learn about the [Drupal trademark and logo policy here][trademark]. 61 | 62 | [Drupal.org]: https://www.drupal.org 63 | [Drupal community]: https://www.drupal.org/community 64 | [GitLab repository]: https://git.drupalcode.org/project/drupal 65 | [issue queue]: https://www.drupal.org/project/issues/drupal 66 | [issue forks]: https://www.drupal.org/drupalorg/docs/gitlab-integration/issue-forks-merge-requests 67 | [documentation]: https://www.drupal.org/documentation 68 | [changelog]: https://www.drupal.org/list-changes/drupal 69 | [modules]: https://www.drupal.org/project/project_module 70 | [security advisories]: https://www.drupal.org/security 71 | [security RSS]: https://www.drupal.org/security/rss.xml 72 | [security team]: https://www.drupal.org/drupal-security-team 73 | [service providers]: https://www.drupal.org/drupal-services 74 | [support]: https://www.drupal.org/support 75 | [trademark]: https://www.drupal.com/trademark 76 | -------------------------------------------------------------------------------- /web/autoload.php: -------------------------------------------------------------------------------- 1 | handle($request); 20 | $response->send(); 21 | 22 | $kernel->terminate($request, $response); 23 | -------------------------------------------------------------------------------- /web/modules/README.txt: -------------------------------------------------------------------------------- 1 | Modules extend your site functionality beyond Drupal core. 2 | 3 | WHAT TO PLACE IN THIS DIRECTORY? 4 | -------------------------------- 5 | 6 | Placing downloaded and custom modules in this directory separates downloaded and 7 | custom modules from Drupal core's modules. This allows Drupal core to be updated 8 | without overwriting these files. 9 | 10 | DOWNLOAD ADDITIONAL MODULES 11 | --------------------------- 12 | 13 | Contributed modules from the Drupal community may be downloaded at 14 | https://www.drupal.org/project/project_module. 15 | 16 | ORGANIZING MODULES IN THIS DIRECTORY 17 | ------------------------------------ 18 | 19 | You may create subdirectories in this directory, to organize your added modules, 20 | without breaking the site. Some common subdirectories include "contrib" for 21 | contributed modules, and "custom" for custom modules. Note that if you move a 22 | module to a subdirectory after it has been enabled, you may need to clear the 23 | Drupal cache so it can be found. 24 | 25 | There are number of directories that are ignored when looking for modules. These 26 | are 'src', 'lib', 'vendor', 'assets', 'css', 'files', 'images', 'js', 'misc', 27 | 'templates', 'includes', 'fixtures' and 'Drupal'. 28 | 29 | MULTISITE CONFIGURATION 30 | ----------------------- 31 | 32 | In multisite configurations, modules found in this directory are available to 33 | all sites. You may also put modules in the sites/all/modules directory, and the 34 | versions in sites/all/modules will take precedence over versions of the same 35 | module that are here. Alternatively, the sites/your_site_name/modules directory 36 | pattern may be used to restrict modules to a specific site instance. 37 | 38 | MORE INFORMATION 39 | ---------------- 40 | 41 | Refer to the “Developing for Drupal” section of the README.txt in the Drupal 42 | root directory for further information on extending Drupal with custom modules. 43 | -------------------------------------------------------------------------------- /web/profiles/README.txt: -------------------------------------------------------------------------------- 1 | Installation profiles define additional steps that run after the base 2 | installation of Drupal is completed. They may also offer additional 3 | functionality and change the behavior of the site. 4 | 5 | WHAT TO PLACE IN THIS DIRECTORY? 6 | -------------------------------- 7 | 8 | Place downloaded and custom installation profiles in this directory. 9 | Note that installation profiles are generally provided as part of a Drupal 10 | distribution. 11 | 12 | DOWNLOAD ADDITIONAL DISTRIBUTIONS 13 | --------------------------------- 14 | 15 | Contributed distributions from the Drupal community may be downloaded at 16 | https://www.drupal.org/project/project_distribution. 17 | 18 | MULTISITE CONFIGURATION 19 | ----------------------- 20 | 21 | In multisite configurations, installation profiles found in this directory are 22 | available to all sites during their initial site installation. 23 | 24 | MORE INFORMATION 25 | ---------------- 26 | 27 | Refer to the "Installation profiles" section of the README.txt in the Drupal 28 | root directory for further information on extending Drupal with custom profiles. 29 | -------------------------------------------------------------------------------- /web/robots.txt: -------------------------------------------------------------------------------- 1 | # 2 | # robots.txt 3 | # 4 | # This file is to prevent the crawling and indexing of certain parts 5 | # of your site by web crawlers and spiders run by sites like Yahoo! 6 | # and Google. By telling these "robots" where not to go on your site, 7 | # you save bandwidth and server resources. 8 | # 9 | # This file will be ignored unless it is at the root of your host: 10 | # Used: http://example.com/robots.txt 11 | # Ignored: http://example.com/site/robots.txt 12 | # 13 | # For more information about the robots.txt standard, see: 14 | # http://www.robotstxt.org/robotstxt.html 15 | 16 | User-agent: * 17 | # CSS, JS, Images 18 | Allow: /core/*.css$ 19 | Allow: /core/*.css? 20 | Allow: /core/*.js$ 21 | Allow: /core/*.js? 22 | Allow: /core/*.gif 23 | Allow: /core/*.jpg 24 | Allow: /core/*.jpeg 25 | Allow: /core/*.png 26 | Allow: /core/*.svg 27 | Allow: /profiles/*.css$ 28 | Allow: /profiles/*.css? 29 | Allow: /profiles/*.js$ 30 | Allow: /profiles/*.js? 31 | Allow: /profiles/*.gif 32 | Allow: /profiles/*.jpg 33 | Allow: /profiles/*.jpeg 34 | Allow: /profiles/*.png 35 | Allow: /profiles/*.svg 36 | # Directories 37 | Disallow: /core/ 38 | Disallow: /profiles/ 39 | # Files 40 | Disallow: /README.txt 41 | Disallow: /web.config 42 | # Paths (clean URLs) 43 | Disallow: /admin/ 44 | Disallow: /comment/reply/ 45 | Disallow: /filter/tips 46 | Disallow: /node/add/ 47 | Disallow: /search/ 48 | Disallow: /user/register 49 | Disallow: /user/password 50 | Disallow: /user/login 51 | Disallow: /user/logout 52 | # Paths (no clean URLs) 53 | Disallow: /index.php/admin/ 54 | Disallow: /index.php/comment/reply/ 55 | Disallow: /index.php/filter/tips 56 | Disallow: /index.php/node/add/ 57 | Disallow: /index.php/search/ 58 | Disallow: /index.php/user/password 59 | Disallow: /index.php/user/register 60 | Disallow: /index.php/user/login 61 | Disallow: /index.php/user/logout 62 | -------------------------------------------------------------------------------- /web/sites/README.txt: -------------------------------------------------------------------------------- 1 | This directory structure contains the settings and configuration files specific 2 | to your site or sites and is an integral part of multisite configurations. 3 | 4 | It is now recommended to place your custom and downloaded extensions in the 5 | /modules, /themes, and /profiles directories located in the Drupal root. The 6 | sites/all/ subdirectory structure, which was recommended in previous versions 7 | of Drupal, is still supported. 8 | 9 | See core/INSTALL.txt for information about single-site installation or 10 | multisite configuration. 11 | -------------------------------------------------------------------------------- /web/sites/default/default.services.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | session.storage.options: 3 | # Default ini options for sessions. 4 | # 5 | # Some distributions of Linux (most notably Debian) ship their PHP 6 | # installations with garbage collection (gc) disabled. Since Drupal depends 7 | # on PHP's garbage collection for clearing sessions, ensure that garbage 8 | # collection occurs by using the most common settings. 9 | # @default 1 10 | gc_probability: 1 11 | # @default 100 12 | gc_divisor: 100 13 | # 14 | # Set session lifetime (in seconds), i.e. the time from the user's last 15 | # visit to the active session may be deleted by the session garbage 16 | # collector. When a session is deleted, authenticated users are logged out, 17 | # and the contents of the user's $_SESSION variable is discarded. 18 | # @default 200000 19 | gc_maxlifetime: 200000 20 | # 21 | # Set session cookie lifetime (in seconds), i.e. the time from the session 22 | # is created to the cookie expires, i.e. when the browser is expected to 23 | # discard the cookie. The value 0 means "until the browser is closed". 24 | # @default 2000000 25 | cookie_lifetime: 2000000 26 | # 27 | # Drupal automatically generates a unique session cookie name based on the 28 | # full domain name used to access the site. This mechanism is sufficient 29 | # for most use-cases, including multi-site deployments. However, if it is 30 | # desired that a session can be reused across different subdomains, the 31 | # cookie domain needs to be set to the shared base domain. Doing so assures 32 | # that users remain logged in as they cross between various subdomains. 33 | # To maximize compatibility and normalize the behavior across user agents, 34 | # the cookie domain should start with a dot. 35 | # 36 | # @default none 37 | # cookie_domain: '.example.com' 38 | # 39 | # Set the session ID string length. The length can be between 22 to 256. The 40 | # PHP recommended value is 48. See 41 | # https://www.php.net/manual/session.security.ini.php for more information. 42 | # This value should be kept in sync with 43 | # \Drupal\Core\Session\SessionConfiguration::__construct() 44 | # @default 48 45 | sid_length: 48 46 | # 47 | # Set the number of bits in encoded session ID character. The possible 48 | # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", 49 | # ","). The PHP recommended value is 6. See 50 | # https://www.php.net/manual/session.security.ini.php for more information. 51 | # This value should be kept in sync with 52 | # \Drupal\Core\Session\SessionConfiguration::__construct() 53 | # @default 6 54 | sid_bits_per_character: 6 55 | twig.config: 56 | # Twig debugging: 57 | # 58 | # When debugging is enabled: 59 | # - The markup of each Twig template is surrounded by HTML comments that 60 | # contain theming information, such as template file name suggestions. 61 | # - Note that this debugging markup will cause automated tests that directly 62 | # check rendered HTML to fail. When running automated tests, 'debug' 63 | # should be set to FALSE. 64 | # - The dump() function can be used in Twig templates to output information 65 | # about template variables. 66 | # - Twig templates are automatically recompiled whenever the source code 67 | # changes (see auto_reload below). 68 | # 69 | # For more information about debugging Twig templates, see 70 | # https://www.drupal.org/node/1906392. 71 | # 72 | # Not recommended in production environments 73 | # @default false 74 | debug: false 75 | # Twig auto-reload: 76 | # 77 | # Automatically recompile Twig templates whenever the source code changes. 78 | # If you don't provide a value for auto_reload, it will be determined 79 | # based on the value of debug. 80 | # 81 | # Not recommended in production environments 82 | # @default null 83 | auto_reload: null 84 | # Twig cache: 85 | # 86 | # By default, Twig templates will be compiled and stored in the filesystem 87 | # to increase performance. Disabling the Twig cache will recompile the 88 | # templates from source each time they are used. In most cases the 89 | # auto_reload setting above should be enabled rather than disabling the 90 | # Twig cache. 91 | # 92 | # Not recommended in production environments 93 | # @default true 94 | cache: true 95 | renderer.config: 96 | # Renderer required cache contexts: 97 | # 98 | # The Renderer will automatically associate these cache contexts with every 99 | # render array, hence varying every render array by these cache contexts. 100 | # 101 | # @default ['languages:language_interface', 'theme', 'user.permissions'] 102 | required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] 103 | # Renderer automatic placeholdering conditions: 104 | # 105 | # Drupal allows portions of the page to be automatically deferred when 106 | # rendering to improve cache performance. That is especially helpful for 107 | # cache contexts that vary widely, such as the active user. On some sites 108 | # those may be different, however, such as sites with only a handful of 109 | # users. If you know what the high-cardinality cache contexts are for your 110 | # site, specify those here. If you're not sure, the defaults are fairly safe 111 | # in general. 112 | # 113 | # For more information about rendering optimizations see 114 | # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing 115 | auto_placeholder_conditions: 116 | # Max-age at or below which caching is not considered worthwhile. 117 | # 118 | # Disable by setting to -1. 119 | # 120 | # @default 0 121 | max-age: 0 122 | # Cache contexts with a high cardinality. 123 | # 124 | # Disable by setting to []. 125 | # 126 | # @default ['session', 'user'] 127 | contexts: ['session', 'user'] 128 | # Tags with a high invalidation frequency. 129 | # 130 | # Disable by setting to []. 131 | # 132 | # @default [] 133 | tags: [] 134 | # Cacheability debugging: 135 | # 136 | # Responses with cacheability metadata (CacheableResponseInterface instances) 137 | # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age 138 | # headers. 139 | # 140 | # For more information about debugging cacheable responses, see 141 | # https://www.drupal.org/developing/api/8/response/cacheable-response-interface 142 | # 143 | # Not recommended in production environments 144 | # @default false 145 | http.response.debug_cacheability_headers: false 146 | factory.keyvalue: {} 147 | # Default key/value storage service to use. 148 | # @default keyvalue.database 149 | # default: keyvalue.database 150 | # Collection-specific overrides. 151 | # state: keyvalue.database 152 | factory.keyvalue.expirable: {} 153 | # Default key/value expirable storage service to use. 154 | # @default keyvalue.database.expirable 155 | # default: keyvalue.database.expirable 156 | # Allowed protocols for URL generation. 157 | filter_protocols: 158 | - http 159 | - https 160 | - ftp 161 | - news 162 | - nntp 163 | - tel 164 | - telnet 165 | - mailto 166 | - irc 167 | - ssh 168 | - sftp 169 | - webcal 170 | - rtsp 171 | 172 | # Configure Cross-Site HTTP requests (CORS). 173 | # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS 174 | # for more information about the topic in general. 175 | # Note: By default the configuration is disabled. 176 | cors.config: 177 | enabled: false 178 | # Specify allowed headers, like 'x-allowed-header'. 179 | allowedHeaders: [] 180 | # Specify allowed request methods, specify ['*'] to allow all possible ones. 181 | allowedMethods: [] 182 | # Configure requests allowed from specific origins. 183 | allowedOrigins: ['*'] 184 | # Sets the Access-Control-Expose-Headers header. 185 | exposedHeaders: false 186 | # Sets the Access-Control-Max-Age header. 187 | maxAge: false 188 | # Sets the Access-Control-Allow-Credentials header. 189 | supportsCredentials: false 190 | -------------------------------------------------------------------------------- /web/sites/default/default.settings.php: -------------------------------------------------------------------------------- 1 | 'databasename', 81 | * 'username' => 'sqlusername', 82 | * 'password' => 'sqlpassword', 83 | * 'host' => 'localhost', 84 | * 'port' => '3306', 85 | * 'driver' => 'mysql', 86 | * 'prefix' => '', 87 | * 'collation' => 'utf8mb4_general_ci', 88 | * ]; 89 | * @endcode 90 | */ 91 | $databases = []; 92 | 93 | /** 94 | * Customizing database settings. 95 | * 96 | * Many of the values of the $databases array can be customized for your 97 | * particular database system. Refer to the sample in the section above as a 98 | * starting point. 99 | * 100 | * The "driver" property indicates what Drupal database driver the 101 | * connection should use. This is usually the same as the name of the 102 | * database type, such as mysql or sqlite, but not always. The other 103 | * properties will vary depending on the driver. For SQLite, you must 104 | * specify a database file name in a directory that is writable by the 105 | * webserver. For most other drivers, you must specify a 106 | * username, password, host, and database name. 107 | * 108 | * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers 109 | * can be provided by contributed or custom modules. To use a contributed or 110 | * custom driver, the "namespace" property must be set to the namespace of the 111 | * driver. The code in this namespace must be autoloadable prior to connecting 112 | * to the database, and therefore, prior to when module root namespaces are 113 | * added to the autoloader. To add the driver's namespace to the autoloader, 114 | * set the "autoload" property to the PSR-4 base directory of the driver's 115 | * namespace. This is optional for projects managed with Composer if the 116 | * driver's namespace is in Composer's autoloader. 117 | * 118 | * For each database, you may optionally specify multiple "target" databases. 119 | * A target database allows Drupal to try to send certain queries to a 120 | * different database if it can but fall back to the default connection if not. 121 | * That is useful for primary/replica replication, as Drupal may try to connect 122 | * to a replica server when appropriate and if one is not available will simply 123 | * fall back to the single primary server (The terms primary/replica are 124 | * traditionally referred to as master/slave in database server documentation). 125 | * 126 | * The general format for the $databases array is as follows: 127 | * @code 128 | * $databases['default']['default'] = $info_array; 129 | * $databases['default']['replica'][] = $info_array; 130 | * $databases['default']['replica'][] = $info_array; 131 | * $databases['extra']['default'] = $info_array; 132 | * @endcode 133 | * 134 | * In the above example, $info_array is an array of settings described above. 135 | * The first line sets a "default" database that has one primary database 136 | * (the second level default). The second and third lines create an array 137 | * of potential replica databases. Drupal will select one at random for a given 138 | * request as needed. The fourth line creates a new database with a name of 139 | * "extra". 140 | * 141 | * You can optionally set prefixes for some or all database table names 142 | * by using the 'prefix' setting. If a prefix is specified, the table 143 | * name will be prepended with its value. Be sure to use valid database 144 | * characters only, usually alphanumeric and underscore. If no prefixes 145 | * are desired, leave it as an empty string ''. 146 | * 147 | * To have all database names prefixed, set 'prefix' as a string: 148 | * @code 149 | * 'prefix' => 'main_', 150 | * @endcode 151 | * 152 | * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in 153 | * Drupal 9.0. After that, only a single prefix for all tables will be 154 | * supported. 155 | * 156 | * To provide prefixes for specific tables, set 'prefix' as an array. 157 | * The array's keys are the table names and the values are the prefixes. 158 | * The 'default' element is mandatory and holds the prefix for any tables 159 | * not specified elsewhere in the array. Example: 160 | * @code 161 | * 'prefix' => [ 162 | * 'default' => 'main_', 163 | * 'users' => 'shared_', 164 | * 'sessions' => 'shared_', 165 | * 'role' => 'shared_', 166 | * 'authmap' => 'shared_', 167 | * ], 168 | * @endcode 169 | * You can also use a reference to a schema/database as a prefix. This may be 170 | * useful if your Drupal installation exists in a schema that is not the default 171 | * or you want to access several databases from the same code base at the same 172 | * time. 173 | * Example: 174 | * @code 175 | * 'prefix' => [ 176 | * 'default' => 'main.', 177 | * 'users' => 'shared.', 178 | * 'sessions' => 'shared.', 179 | * 'role' => 'shared.', 180 | * 'authmap' => 'shared.', 181 | * ]; 182 | * @endcode 183 | * NOTE: MySQL and SQLite's definition of a schema is a database. 184 | * 185 | * Advanced users can add or override initial commands to execute when 186 | * connecting to the database server, as well as PDO connection settings. For 187 | * example, to enable MySQL SELECT queries to exceed the max_join_size system 188 | * variable, and to reduce the database connection timeout to 5 seconds: 189 | * @code 190 | * $databases['default']['default'] = [ 191 | * 'init_commands' => [ 192 | * 'big_selects' => 'SET SQL_BIG_SELECTS=1', 193 | * ], 194 | * 'pdo' => [ 195 | * PDO::ATTR_TIMEOUT => 5, 196 | * ], 197 | * ]; 198 | * @endcode 199 | * 200 | * WARNING: The above defaults are designed for database portability. Changing 201 | * them may cause unexpected behavior, including potential data loss. See 202 | * https://www.drupal.org/developing/api/database/configuration for more 203 | * information on these defaults and the potential issues. 204 | * 205 | * More details can be found in the constructor methods for each driver: 206 | * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() 207 | * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() 208 | * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() 209 | * 210 | * Sample Database configuration format for PostgreSQL (pgsql): 211 | * @code 212 | * $databases['default']['default'] = [ 213 | * 'driver' => 'pgsql', 214 | * 'database' => 'databasename', 215 | * 'username' => 'sqlusername', 216 | * 'password' => 'sqlpassword', 217 | * 'host' => 'localhost', 218 | * 'prefix' => '', 219 | * ]; 220 | * @endcode 221 | * 222 | * Sample Database configuration format for SQLite (sqlite): 223 | * @code 224 | * $databases['default']['default'] = [ 225 | * 'driver' => 'sqlite', 226 | * 'database' => '/path/to/databasefilename', 227 | * ]; 228 | * @endcode 229 | * 230 | * Sample Database configuration format for a driver in a contributed module: 231 | * @code 232 | * $databases['default']['default'] = [ 233 | * 'driver' => 'my_driver', 234 | * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', 235 | * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', 236 | * 'database' => 'databasename', 237 | * 'username' => 'sqlusername', 238 | * 'password' => 'sqlpassword', 239 | * 'host' => 'localhost', 240 | * 'prefix' => '', 241 | * ]; 242 | * @endcode 243 | */ 244 | 245 | /** 246 | * Location of the site configuration files. 247 | * 248 | * The $settings['config_sync_directory'] specifies the location of file system 249 | * directory used for syncing configuration data. On install, the directory is 250 | * created. This is used for configuration imports. 251 | * 252 | * The default location for this directory is inside a randomly-named 253 | * directory in the public files path. The setting below allows you to set 254 | * its location. 255 | */ 256 | # $settings['config_sync_directory'] = '/directory/outside/webroot'; 257 | 258 | /** 259 | * Settings: 260 | * 261 | * $settings contains environment-specific configuration, such as the files 262 | * directory and reverse proxy address, and temporary configuration, such as 263 | * security overrides. 264 | * 265 | * @see \Drupal\Core\Site\Settings::get() 266 | */ 267 | 268 | /** 269 | * Salt for one-time login links, cancel links, form tokens, etc. 270 | * 271 | * This variable will be set to a random value by the installer. All one-time 272 | * login links will be invalidated if the value is changed. Note that if your 273 | * site is deployed on a cluster of web servers, you must ensure that this 274 | * variable has the same value on each server. 275 | * 276 | * For enhanced security, you may set this variable to the contents of a file 277 | * outside your document root; you should also ensure that this file is not 278 | * stored with backups of your database. 279 | * 280 | * Example: 281 | * @code 282 | * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); 283 | * @endcode 284 | */ 285 | $settings['hash_salt'] = ''; 286 | 287 | /** 288 | * Deployment identifier. 289 | * 290 | * Drupal's dependency injection container will be automatically invalidated and 291 | * rebuilt when the Drupal core version changes. When updating contributed or 292 | * custom code that changes the container, changing this identifier will also 293 | * allow the container to be invalidated as soon as code is deployed. 294 | */ 295 | # $settings['deployment_identifier'] = \Drupal::VERSION; 296 | 297 | /** 298 | * Access control for update.php script. 299 | * 300 | * If you are updating your Drupal installation using the update.php script but 301 | * are not logged in using either an account with the "Administer software 302 | * updates" permission or the site maintenance account (the account that was 303 | * created during installation), you will need to modify the access check 304 | * statement below. Change the FALSE to a TRUE to disable the access check. 305 | * After finishing the upgrade, be sure to open this file again and change the 306 | * TRUE back to a FALSE! 307 | */ 308 | $settings['update_free_access'] = FALSE; 309 | 310 | /** 311 | * Fallback to HTTP for Update Manager and for fetching security advisories. 312 | * 313 | * If your site fails to connect to updates.drupal.org over HTTPS (either when 314 | * fetching data on available updates, or when fetching the feed of critical 315 | * security announcements), you may uncomment this setting and set it to TRUE to 316 | * allow an insecure fallback to HTTP. Note that doing so will open your site up 317 | * to a potential man-in-the-middle attack. You should instead attempt to 318 | * resolve the issues before enabling this option. 319 | * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl 320 | * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack 321 | * @see \Drupal\update\UpdateFetcher 322 | * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher 323 | */ 324 | # $settings['update_fetch_with_http_fallback'] = TRUE; 325 | 326 | /** 327 | * External access proxy settings: 328 | * 329 | * If your site must access the Internet via a web proxy then you can enter the 330 | * proxy settings here. Set the full URL of the proxy, including the port, in 331 | * variables: 332 | * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP 333 | * requests. 334 | * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS 335 | * requests. 336 | * You can pass in the user name and password for basic authentication in the 337 | * URLs in these settings. 338 | * 339 | * You can also define an array of host names that can be accessed directly, 340 | * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. 341 | */ 342 | # $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; 343 | # $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; 344 | # $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; 345 | 346 | /** 347 | * Reverse Proxy Configuration: 348 | * 349 | * Reverse proxy servers are often used to enhance the performance 350 | * of heavily visited sites and may also provide other site caching, 351 | * security, or encryption benefits. In an environment where Drupal 352 | * is behind a reverse proxy, the real IP address of the client should 353 | * be determined such that the correct client IP address is available 354 | * to Drupal's logging, statistics, and access management systems. In 355 | * the most simple scenario, the proxy server will add an 356 | * X-Forwarded-For header to the request that contains the client IP 357 | * address. However, HTTP headers are vulnerable to spoofing, where a 358 | * malicious client could bypass restrictions by setting the 359 | * X-Forwarded-For header directly. Therefore, Drupal's proxy 360 | * configuration requires the IP addresses of all remote proxies to be 361 | * specified in $settings['reverse_proxy_addresses'] to work correctly. 362 | * 363 | * Enable this setting to get Drupal to determine the client IP from the 364 | * X-Forwarded-For header. If you are unsure about this setting, do not have a 365 | * reverse proxy, or Drupal operates in a shared hosting environment, this 366 | * setting should remain commented out. 367 | * 368 | * In order for this setting to be used you must specify every possible 369 | * reverse proxy IP address in $settings['reverse_proxy_addresses']. 370 | * If a complete list of reverse proxies is not available in your 371 | * environment (for example, if you use a CDN) you may set the 372 | * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. 373 | * Be aware, however, that it is likely that this would allow IP 374 | * address spoofing unless more advanced precautions are taken. 375 | */ 376 | # $settings['reverse_proxy'] = TRUE; 377 | 378 | /** 379 | * Specify every reverse proxy IP address in your environment. 380 | * This setting is required if $settings['reverse_proxy'] is TRUE. 381 | */ 382 | # $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; 383 | 384 | /** 385 | * Reverse proxy trusted headers. 386 | * 387 | * Sets which headers to trust from your reverse proxy. 388 | * 389 | * Common values are: 390 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR 391 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST 392 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT 393 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 394 | * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 395 | * 396 | * Note the default value of 397 | * @code 398 | * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 399 | * @endcode 400 | * is not secure by default. The value should be set to only the specific 401 | * headers the reverse proxy uses. For example: 402 | * @code 403 | * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 404 | * @endcode 405 | * This would trust the following headers: 406 | * - X_FORWARDED_FOR 407 | * - X_FORWARDED_HOST 408 | * - X_FORWARDED_PROTO 409 | * - X_FORWARDED_PORT 410 | * 411 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR 412 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST 413 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT 414 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 415 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 416 | * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies 417 | */ 418 | # $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; 419 | 420 | 421 | /** 422 | * Page caching: 423 | * 424 | * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page 425 | * views. This tells a HTTP proxy that it may return a page from its local 426 | * cache without contacting the web server, if the user sends the same Cookie 427 | * header as the user who originally requested the cached page. Without "Vary: 428 | * Cookie", authenticated users would also be served the anonymous page from 429 | * the cache. If the site has mostly anonymous users except a few known 430 | * editors/administrators, the Vary header can be omitted. This allows for 431 | * better caching in HTTP proxies (including reverse proxies), i.e. even if 432 | * clients send different cookies, they still get content served from the cache. 433 | * However, authenticated users should access the site directly (i.e. not use an 434 | * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid 435 | * getting cached pages from the proxy. 436 | */ 437 | # $settings['omit_vary_cookie'] = TRUE; 438 | 439 | 440 | /** 441 | * Cache TTL for client error (4xx) responses. 442 | * 443 | * Items cached per-URL tend to result in a large number of cache items, and 444 | * this can be problematic on 404 pages which by their nature are unbounded. A 445 | * fixed TTL can be set for these items, defaulting to one hour, so that cache 446 | * backends which do not support LRU can purge older entries. To disable caching 447 | * of client error responses set the value to 0. Currently applies only to 448 | * page_cache module. 449 | */ 450 | # $settings['cache_ttl_4xx'] = 3600; 451 | 452 | /** 453 | * Expiration of cached forms. 454 | * 455 | * Drupal's Form API stores details of forms in a cache and these entries are 456 | * kept for at least 6 hours by default. Expired entries are cleared by cron. 457 | * 458 | * @see \Drupal\Core\Form\FormCache::setCache() 459 | */ 460 | # $settings['form_cache_expiration'] = 21600; 461 | 462 | /** 463 | * Class Loader. 464 | * 465 | * If the APCu extension is detected, the classloader will be optimized to use 466 | * it. Set to FALSE to disable this. 467 | * 468 | * @see https://getcomposer.org/doc/articles/autoloader-optimization.md 469 | */ 470 | # $settings['class_loader_auto_detect'] = FALSE; 471 | 472 | /** 473 | * Authorized file system operations: 474 | * 475 | * The Update Manager module included with Drupal provides a mechanism for 476 | * site administrators to securely install missing updates for the site 477 | * directly through the web user interface. On securely-configured servers, 478 | * the Update manager will require the administrator to provide SSH or FTP 479 | * credentials before allowing the installation to proceed; this allows the 480 | * site to update the new files as the user who owns all the Drupal files, 481 | * instead of as the user the webserver is running as. On servers where the 482 | * webserver user is itself the owner of the Drupal files, the administrator 483 | * will not be prompted for SSH or FTP credentials (note that these server 484 | * setups are common on shared hosting, but are inherently insecure). 485 | * 486 | * Some sites might wish to disable the above functionality, and only update 487 | * the code directly via SSH or FTP themselves. This setting completely 488 | * disables all functionality related to these authorized file operations. 489 | * 490 | * @see https://www.drupal.org/node/244924 491 | * 492 | * Remove the leading hash signs to disable. 493 | */ 494 | # $settings['allow_authorize_operations'] = FALSE; 495 | 496 | /** 497 | * Default mode for directories and files written by Drupal. 498 | * 499 | * Value should be in PHP Octal Notation, with leading zero. 500 | */ 501 | # $settings['file_chmod_directory'] = 0775; 502 | # $settings['file_chmod_file'] = 0664; 503 | 504 | /** 505 | * Public file base URL: 506 | * 507 | * An alternative base URL to be used for serving public files. This must 508 | * include any leading directory path. 509 | * 510 | * A different value from the domain used by Drupal to be used for accessing 511 | * public files. This can be used for a simple CDN integration, or to improve 512 | * security by serving user-uploaded files from a different domain or subdomain 513 | * pointing to the same server. Do not include a trailing slash. 514 | */ 515 | # $settings['file_public_base_url'] = 'http://downloads.example.com/files'; 516 | 517 | /** 518 | * Public file path: 519 | * 520 | * A local file system path where public files will be stored. This directory 521 | * must exist and be writable by Drupal. This directory must be relative to 522 | * the Drupal installation directory and be accessible over the web. 523 | */ 524 | # $settings['file_public_path'] = 'sites/default/files'; 525 | 526 | /** 527 | * Private file path: 528 | * 529 | * A local file system path where private files will be stored. This directory 530 | * must be absolute, outside of the Drupal installation directory and not 531 | * accessible over the web. 532 | * 533 | * Note: Caches need to be cleared when this value is changed to make the 534 | * private:// stream wrapper available to the system. 535 | * 536 | * See https://www.drupal.org/documentation/modules/file for more information 537 | * about securing private files. 538 | */ 539 | # $settings['file_private_path'] = ''; 540 | 541 | /** 542 | * Temporary file path: 543 | * 544 | * A local file system path where temporary files will be stored. This directory 545 | * must be absolute, outside of the Drupal installation directory and not 546 | * accessible over the web. 547 | * 548 | * If this is not set, the default for the operating system will be used. 549 | * 550 | * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() 551 | */ 552 | # $settings['file_temp_path'] = '/tmp'; 553 | 554 | /** 555 | * Session write interval: 556 | * 557 | * Set the minimum interval between each session write to database. 558 | * For performance reasons it defaults to 180. 559 | */ 560 | # $settings['session_write_interval'] = 180; 561 | 562 | /** 563 | * String overrides: 564 | * 565 | * To override specific strings on your site with or without enabling the Locale 566 | * module, add an entry to this list. This functionality allows you to change 567 | * a small number of your site's default English language interface strings. 568 | * 569 | * Remove the leading hash signs to enable. 570 | * 571 | * The "en" part of the variable name, is dynamic and can be any langcode of 572 | * any added language. (eg locale_custom_strings_de for german). 573 | */ 574 | # $settings['locale_custom_strings_en'][''] = [ 575 | # 'forum' => 'Discussion board', 576 | # '@count min' => '@count minutes', 577 | # ]; 578 | 579 | /** 580 | * A custom theme for the offline page: 581 | * 582 | * This applies when the site is explicitly set to maintenance mode through the 583 | * administration page or when the database is inactive due to an error. 584 | * The template file should also be copied into the theme. It is located inside 585 | * 'core/modules/system/templates/maintenance-page.html.twig'. 586 | * 587 | * Note: This setting does not apply to installation and update pages. 588 | */ 589 | # $settings['maintenance_theme'] = 'bartik'; 590 | 591 | /** 592 | * PHP settings: 593 | * 594 | * To see what PHP settings are possible, including whether they can be set at 595 | * runtime (by using ini_set()), read the PHP documentation: 596 | * http://php.net/manual/ini.list.php 597 | * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime 598 | * settings and the .htaccess file for non-runtime settings. 599 | * Settings defined there should not be duplicated here so as to avoid conflict 600 | * issues. 601 | */ 602 | 603 | /** 604 | * If you encounter a situation where users post a large amount of text, and 605 | * the result is stripped out upon viewing but can still be edited, Drupal's 606 | * output filter may not have sufficient memory to process it. If you 607 | * experience this issue, you may wish to uncomment the following two lines 608 | * and increase the limits of these variables. For more information, see 609 | * http://php.net/manual/pcre.configuration.php. 610 | */ 611 | # ini_set('pcre.backtrack_limit', 200000); 612 | # ini_set('pcre.recursion_limit', 200000); 613 | 614 | /** 615 | * Add Permissions-Policy header to disable Google FLoC. 616 | * 617 | * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header 618 | * to disable Google's Federated Learning of Cohorts feature, introduced in 619 | * Chrome 89. 620 | * 621 | * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more 622 | * information about FLoC. 623 | * 624 | * If you don't wish to disable FLoC in Chrome, you can set this value 625 | * to FALSE. 626 | */ 627 | # $settings['block_interest_cohort'] = TRUE; 628 | 629 | /** 630 | * Configuration overrides. 631 | * 632 | * To globally override specific configuration values for this site, 633 | * set them here. You usually don't need to use this feature. This is 634 | * useful in a configuration file for a vhost or directory, rather than 635 | * the default settings.php. 636 | * 637 | * Note that any values you provide in these variable overrides will not be 638 | * viewable from the Drupal administration interface. The administration 639 | * interface displays the values stored in configuration so that you can stage 640 | * changes to other environments that don't have the overrides. 641 | * 642 | * There are particular configuration values that are risky to override. For 643 | * example, overriding the list of installed modules in 'core.extension' is not 644 | * supported as module install or uninstall has not occurred. Other examples 645 | * include field storage configuration, because it has effects on database 646 | * structure, and 'core.menu.static_menu_link_overrides' since this is cached in 647 | * a way that is not config override aware. Also, note that changing 648 | * configuration values in settings.php will not fire any of the configuration 649 | * change events. 650 | */ 651 | # $config['system.site']['name'] = 'My Drupal site'; 652 | # $config['user.settings']['anonymous'] = 'Visitor'; 653 | 654 | /** 655 | * Fast 404 pages: 656 | * 657 | * Drupal can generate fully themed 404 pages. However, some of these responses 658 | * are for images or other resource files that are not displayed to the user. 659 | * This can waste bandwidth, and also generate server load. 660 | * 661 | * The options below return a simple, fast 404 page for URLs matching a 662 | * specific pattern: 663 | * - $config['system.performance']['fast_404']['exclude_paths']: A regular 664 | * expression to match paths to exclude, such as images generated by image 665 | * styles, or dynamically-resized images. The default pattern provided below 666 | * also excludes the private file system. If you need to add more paths, you 667 | * can add '|path' to the expression. 668 | * - $config['system.performance']['fast_404']['paths']: A regular expression to 669 | * match paths that should return a simple 404 page, rather than the fully 670 | * themed 404 page. If you don't have any aliases ending in htm or html you 671 | * can add '|s?html?' to the expression. 672 | * - $config['system.performance']['fast_404']['html']: The html to return for 673 | * simple 404 pages. 674 | * 675 | * Remove the leading hash signs if you would like to alter this functionality. 676 | */ 677 | # $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; 678 | # $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; 679 | # $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

The requested URL "@path" was not found on this server.

'; 680 | 681 | /** 682 | * Load services definition file. 683 | */ 684 | $settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; 685 | 686 | /** 687 | * Override the default service container class. 688 | * 689 | * This is useful for example to trace the service container for performance 690 | * tracking purposes, for testing a service container with an error condition or 691 | * to test a service container that throws an exception. 692 | */ 693 | # $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; 694 | 695 | /** 696 | * Override the default yaml parser class. 697 | * 698 | * Provide a fully qualified class name here if you would like to provide an 699 | * alternate implementation YAML parser. The class must implement the 700 | * \Drupal\Component\Serialization\SerializationInterface interface. 701 | */ 702 | # $settings['yaml_parser_class'] = NULL; 703 | 704 | /** 705 | * Trusted host configuration. 706 | * 707 | * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host 708 | * header spoofing. 709 | * 710 | * To enable the trusted host mechanism, you enable your allowable hosts 711 | * in $settings['trusted_host_patterns']. This should be an array of regular 712 | * expression patterns, without delimiters, representing the hosts you would 713 | * like to allow. 714 | * 715 | * For example: 716 | * @code 717 | * $settings['trusted_host_patterns'] = [ 718 | * '^www\.example\.com$', 719 | * ]; 720 | * @endcode 721 | * will allow the site to only run from www.example.com. 722 | * 723 | * If you are running multisite, or if you are running your site from 724 | * different domain names (eg, you don't redirect http://www.example.com to 725 | * http://example.com), you should specify all of the host patterns that are 726 | * allowed by your site. 727 | * 728 | * For example: 729 | * @code 730 | * $settings['trusted_host_patterns'] = [ 731 | * '^example\.com$', 732 | * '^.+\.example\.com$', 733 | * '^example\.org$', 734 | * '^.+\.example\.org$', 735 | * ]; 736 | * @endcode 737 | * will allow the site to run off of all variants of example.com and 738 | * example.org, with all subdomains included. 739 | */ 740 | 741 | /** 742 | * The default list of directories that will be ignored by Drupal's file API. 743 | * 744 | * By default ignore node_modules and bower_components folders to avoid issues 745 | * with common frontend tools and recursive scanning of directories looking for 746 | * extensions. 747 | * 748 | * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() 749 | * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() 750 | */ 751 | $settings['file_scan_ignore_directories'] = [ 752 | 'node_modules', 753 | 'bower_components', 754 | ]; 755 | 756 | /** 757 | * The default number of entities to update in a batch process. 758 | * 759 | * This is used by update and post-update functions that need to go through and 760 | * change all the entities on a site, so it is useful to increase this number 761 | * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a 762 | * larger number of entities to be processed in a single batch run. 763 | */ 764 | $settings['entity_update_batch_size'] = 50; 765 | 766 | /** 767 | * Entity update backup. 768 | * 769 | * This is used to inform the entity storage handler that the backup tables as 770 | * well as the original entity type and field storage definitions should be 771 | * retained after a successful entity update process. 772 | */ 773 | $settings['entity_update_backup'] = TRUE; 774 | 775 | /** 776 | * Node migration type. 777 | * 778 | * This is used to force the migration system to use the classic node migrations 779 | * instead of the default complete node migrations. The migration system will 780 | * use the classic node migration only if there are existing migrate_map tables 781 | * for the classic node migrations and they contain data. These tables may not 782 | * exist if you are developing custom migrations and do not want to use the 783 | * complete node migrations. Set this to TRUE to force the use of the classic 784 | * node migrations. 785 | */ 786 | $settings['migrate_node_migrate_type_classic'] = FALSE; 787 | 788 | /** 789 | * Load local development override configuration, if available. 790 | * 791 | * Create a settings.local.php file to override variables on secondary (staging, 792 | * development, etc.) installations of this site. 793 | * 794 | * Typical uses of settings.local.php include: 795 | * - Disabling caching. 796 | * - Disabling JavaScript/CSS compression. 797 | * - Rerouting outgoing emails. 798 | * 799 | * Keep this code block at the end of this file to take full effect. 800 | */ 801 | # 802 | # if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { 803 | # include $app_root . '/' . $site_path . '/settings.local.php'; 804 | # } 805 | -------------------------------------------------------------------------------- /web/sites/default/settings.lando.php: -------------------------------------------------------------------------------- 1 | 'mysql', 8 | 'database' => $lando_info['database']['creds']['database'], 9 | 'username' => $lando_info['database']['creds']['user'], 10 | 'password' => $lando_info['database']['creds']['password'], 11 | 'host' => $lando_info['database']['internal_connection']['host'], 12 | 'port' => $lando_info['database']['internal_connection']['port'], 13 | ]; 14 | 15 | $settings['hash_salt'] = md5(getenv('LANDO_HOST_IP')); 16 | } 17 | -------------------------------------------------------------------------------- /web/sites/default/settings.php: -------------------------------------------------------------------------------- 1 | 'databasename', 81 | * 'username' => 'sqlusername', 82 | * 'password' => 'sqlpassword', 83 | * 'host' => 'localhost', 84 | * 'port' => '3306', 85 | * 'driver' => 'mysql', 86 | * 'prefix' => '', 87 | * 'collation' => 'utf8mb4_general_ci', 88 | * ]; 89 | * @endcode 90 | */ 91 | $databases = []; 92 | 93 | /** 94 | * Customizing database settings. 95 | * 96 | * Many of the values of the $databases array can be customized for your 97 | * particular database system. Refer to the sample in the section above as a 98 | * starting point. 99 | * 100 | * The "driver" property indicates what Drupal database driver the 101 | * connection should use. This is usually the same as the name of the 102 | * database type, such as mysql or sqlite, but not always. The other 103 | * properties will vary depending on the driver. For SQLite, you must 104 | * specify a database file name in a directory that is writable by the 105 | * webserver. For most other drivers, you must specify a 106 | * username, password, host, and database name. 107 | * 108 | * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers 109 | * can be provided by contributed or custom modules. To use a contributed or 110 | * custom driver, the "namespace" property must be set to the namespace of the 111 | * driver. The code in this namespace must be autoloadable prior to connecting 112 | * to the database, and therefore, prior to when module root namespaces are 113 | * added to the autoloader. To add the driver's namespace to the autoloader, 114 | * set the "autoload" property to the PSR-4 base directory of the driver's 115 | * namespace. This is optional for projects managed with Composer if the 116 | * driver's namespace is in Composer's autoloader. 117 | * 118 | * For each database, you may optionally specify multiple "target" databases. 119 | * A target database allows Drupal to try to send certain queries to a 120 | * different database if it can but fall back to the default connection if not. 121 | * That is useful for primary/replica replication, as Drupal may try to connect 122 | * to a replica server when appropriate and if one is not available will simply 123 | * fall back to the single primary server (The terms primary/replica are 124 | * traditionally referred to as master/slave in database server documentation). 125 | * 126 | * The general format for the $databases array is as follows: 127 | * @code 128 | * $databases['default']['default'] = $info_array; 129 | * $databases['default']['replica'][] = $info_array; 130 | * $databases['default']['replica'][] = $info_array; 131 | * $databases['extra']['default'] = $info_array; 132 | * @endcode 133 | * 134 | * In the above example, $info_array is an array of settings described above. 135 | * The first line sets a "default" database that has one primary database 136 | * (the second level default). The second and third lines create an array 137 | * of potential replica databases. Drupal will select one at random for a given 138 | * request as needed. The fourth line creates a new database with a name of 139 | * "extra". 140 | * 141 | * You can optionally set prefixes for some or all database table names 142 | * by using the 'prefix' setting. If a prefix is specified, the table 143 | * name will be prepended with its value. Be sure to use valid database 144 | * characters only, usually alphanumeric and underscore. If no prefixes 145 | * are desired, leave it as an empty string ''. 146 | * 147 | * To have all database names prefixed, set 'prefix' as a string: 148 | * @code 149 | * 'prefix' => 'main_', 150 | * @endcode 151 | * 152 | * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in 153 | * Drupal 9.0. After that, only a single prefix for all tables will be 154 | * supported. 155 | * 156 | * To provide prefixes for specific tables, set 'prefix' as an array. 157 | * The array's keys are the table names and the values are the prefixes. 158 | * The 'default' element is mandatory and holds the prefix for any tables 159 | * not specified elsewhere in the array. Example: 160 | * @code 161 | * 'prefix' => [ 162 | * 'default' => 'main_', 163 | * 'users' => 'shared_', 164 | * 'sessions' => 'shared_', 165 | * 'role' => 'shared_', 166 | * 'authmap' => 'shared_', 167 | * ], 168 | * @endcode 169 | * You can also use a reference to a schema/database as a prefix. This may be 170 | * useful if your Drupal installation exists in a schema that is not the default 171 | * or you want to access several databases from the same code base at the same 172 | * time. 173 | * Example: 174 | * @code 175 | * 'prefix' => [ 176 | * 'default' => 'main.', 177 | * 'users' => 'shared.', 178 | * 'sessions' => 'shared.', 179 | * 'role' => 'shared.', 180 | * 'authmap' => 'shared.', 181 | * ]; 182 | * @endcode 183 | * NOTE: MySQL and SQLite's definition of a schema is a database. 184 | * 185 | * Advanced users can add or override initial commands to execute when 186 | * connecting to the database server, as well as PDO connection settings. For 187 | * example, to enable MySQL SELECT queries to exceed the max_join_size system 188 | * variable, and to reduce the database connection timeout to 5 seconds: 189 | * @code 190 | * $databases['default']['default'] = [ 191 | * 'init_commands' => [ 192 | * 'big_selects' => 'SET SQL_BIG_SELECTS=1', 193 | * ], 194 | * 'pdo' => [ 195 | * PDO::ATTR_TIMEOUT => 5, 196 | * ], 197 | * ]; 198 | * @endcode 199 | * 200 | * WARNING: The above defaults are designed for database portability. Changing 201 | * them may cause unexpected behavior, including potential data loss. See 202 | * https://www.drupal.org/developing/api/database/configuration for more 203 | * information on these defaults and the potential issues. 204 | * 205 | * More details can be found in the constructor methods for each driver: 206 | * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() 207 | * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() 208 | * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() 209 | * 210 | * Sample Database configuration format for PostgreSQL (pgsql): 211 | * @code 212 | * $databases['default']['default'] = [ 213 | * 'driver' => 'pgsql', 214 | * 'database' => 'databasename', 215 | * 'username' => 'sqlusername', 216 | * 'password' => 'sqlpassword', 217 | * 'host' => 'localhost', 218 | * 'prefix' => '', 219 | * ]; 220 | * @endcode 221 | * 222 | * Sample Database configuration format for SQLite (sqlite): 223 | * @code 224 | * $databases['default']['default'] = [ 225 | * 'driver' => 'sqlite', 226 | * 'database' => '/path/to/databasefilename', 227 | * ]; 228 | * @endcode 229 | * 230 | * Sample Database configuration format for a driver in a contributed module: 231 | * @code 232 | * $databases['default']['default'] = [ 233 | * 'driver' => 'my_driver', 234 | * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', 235 | * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', 236 | * 'database' => 'databasename', 237 | * 'username' => 'sqlusername', 238 | * 'password' => 'sqlpassword', 239 | * 'host' => 'localhost', 240 | * 'prefix' => '', 241 | * ]; 242 | * @endcode 243 | */ 244 | 245 | /** 246 | * Location of the site configuration files. 247 | * 248 | * The $settings['config_sync_directory'] specifies the location of file system 249 | * directory used for syncing configuration data. On install, the directory is 250 | * created. This is used for configuration imports. 251 | * 252 | * The default location for this directory is inside a randomly-named 253 | * directory in the public files path. The setting below allows you to set 254 | * its location. 255 | */ 256 | # $settings['config_sync_directory'] = '/directory/outside/webroot'; 257 | 258 | /** 259 | * Settings: 260 | * 261 | * $settings contains environment-specific configuration, such as the files 262 | * directory and reverse proxy address, and temporary configuration, such as 263 | * security overrides. 264 | * 265 | * @see \Drupal\Core\Site\Settings::get() 266 | */ 267 | 268 | /** 269 | * Salt for one-time login links, cancel links, form tokens, etc. 270 | * 271 | * This variable will be set to a random value by the installer. All one-time 272 | * login links will be invalidated if the value is changed. Note that if your 273 | * site is deployed on a cluster of web servers, you must ensure that this 274 | * variable has the same value on each server. 275 | * 276 | * For enhanced security, you may set this variable to the contents of a file 277 | * outside your document root; you should also ensure that this file is not 278 | * stored with backups of your database. 279 | * 280 | * Example: 281 | * @code 282 | * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); 283 | * @endcode 284 | */ 285 | # $settings['hash_salt'] = ''; 286 | 287 | /** 288 | * Deployment identifier. 289 | * 290 | * Drupal's dependency injection container will be automatically invalidated and 291 | * rebuilt when the Drupal core version changes. When updating contributed or 292 | * custom code that changes the container, changing this identifier will also 293 | * allow the container to be invalidated as soon as code is deployed. 294 | */ 295 | # $settings['deployment_identifier'] = \Drupal::VERSION; 296 | 297 | /** 298 | * Access control for update.php script. 299 | * 300 | * If you are updating your Drupal installation using the update.php script but 301 | * are not logged in using either an account with the "Administer software 302 | * updates" permission or the site maintenance account (the account that was 303 | * created during installation), you will need to modify the access check 304 | * statement below. Change the FALSE to a TRUE to disable the access check. 305 | * After finishing the upgrade, be sure to open this file again and change the 306 | * TRUE back to a FALSE! 307 | */ 308 | $settings['update_free_access'] = FALSE; 309 | 310 | /** 311 | * Fallback to HTTP for Update Manager and for fetching security advisories. 312 | * 313 | * If your site fails to connect to updates.drupal.org over HTTPS (either when 314 | * fetching data on available updates, or when fetching the feed of critical 315 | * security announcements), you may uncomment this setting and set it to TRUE to 316 | * allow an insecure fallback to HTTP. Note that doing so will open your site up 317 | * to a potential man-in-the-middle attack. You should instead attempt to 318 | * resolve the issues before enabling this option. 319 | * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl 320 | * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack 321 | * @see \Drupal\update\UpdateFetcher 322 | * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher 323 | */ 324 | # $settings['update_fetch_with_http_fallback'] = TRUE; 325 | 326 | /** 327 | * External access proxy settings: 328 | * 329 | * If your site must access the Internet via a web proxy then you can enter the 330 | * proxy settings here. Set the full URL of the proxy, including the port, in 331 | * variables: 332 | * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP 333 | * requests. 334 | * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS 335 | * requests. 336 | * You can pass in the user name and password for basic authentication in the 337 | * URLs in these settings. 338 | * 339 | * You can also define an array of host names that can be accessed directly, 340 | * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. 341 | */ 342 | # $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; 343 | # $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; 344 | # $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; 345 | 346 | /** 347 | * Reverse Proxy Configuration: 348 | * 349 | * Reverse proxy servers are often used to enhance the performance 350 | * of heavily visited sites and may also provide other site caching, 351 | * security, or encryption benefits. In an environment where Drupal 352 | * is behind a reverse proxy, the real IP address of the client should 353 | * be determined such that the correct client IP address is available 354 | * to Drupal's logging, statistics, and access management systems. In 355 | * the most simple scenario, the proxy server will add an 356 | * X-Forwarded-For header to the request that contains the client IP 357 | * address. However, HTTP headers are vulnerable to spoofing, where a 358 | * malicious client could bypass restrictions by setting the 359 | * X-Forwarded-For header directly. Therefore, Drupal's proxy 360 | * configuration requires the IP addresses of all remote proxies to be 361 | * specified in $settings['reverse_proxy_addresses'] to work correctly. 362 | * 363 | * Enable this setting to get Drupal to determine the client IP from the 364 | * X-Forwarded-For header. If you are unsure about this setting, do not have a 365 | * reverse proxy, or Drupal operates in a shared hosting environment, this 366 | * setting should remain commented out. 367 | * 368 | * In order for this setting to be used you must specify every possible 369 | * reverse proxy IP address in $settings['reverse_proxy_addresses']. 370 | * If a complete list of reverse proxies is not available in your 371 | * environment (for example, if you use a CDN) you may set the 372 | * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. 373 | * Be aware, however, that it is likely that this would allow IP 374 | * address spoofing unless more advanced precautions are taken. 375 | */ 376 | # $settings['reverse_proxy'] = TRUE; 377 | 378 | /** 379 | * Specify every reverse proxy IP address in your environment. 380 | * This setting is required if $settings['reverse_proxy'] is TRUE. 381 | */ 382 | # $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; 383 | 384 | /** 385 | * Reverse proxy trusted headers. 386 | * 387 | * Sets which headers to trust from your reverse proxy. 388 | * 389 | * Common values are: 390 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR 391 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST 392 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT 393 | * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 394 | * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 395 | * 396 | * Note the default value of 397 | * @code 398 | * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 399 | * @endcode 400 | * is not secure by default. The value should be set to only the specific 401 | * headers the reverse proxy uses. For example: 402 | * @code 403 | * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 404 | * @endcode 405 | * This would trust the following headers: 406 | * - X_FORWARDED_FOR 407 | * - X_FORWARDED_HOST 408 | * - X_FORWARDED_PROTO 409 | * - X_FORWARDED_PORT 410 | * 411 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR 412 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST 413 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT 414 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO 415 | * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED 416 | * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies 417 | */ 418 | # $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT | \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; 419 | 420 | 421 | /** 422 | * Page caching: 423 | * 424 | * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page 425 | * views. This tells a HTTP proxy that it may return a page from its local 426 | * cache without contacting the web server, if the user sends the same Cookie 427 | * header as the user who originally requested the cached page. Without "Vary: 428 | * Cookie", authenticated users would also be served the anonymous page from 429 | * the cache. If the site has mostly anonymous users except a few known 430 | * editors/administrators, the Vary header can be omitted. This allows for 431 | * better caching in HTTP proxies (including reverse proxies), i.e. even if 432 | * clients send different cookies, they still get content served from the cache. 433 | * However, authenticated users should access the site directly (i.e. not use an 434 | * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid 435 | * getting cached pages from the proxy. 436 | */ 437 | # $settings['omit_vary_cookie'] = TRUE; 438 | 439 | 440 | /** 441 | * Cache TTL for client error (4xx) responses. 442 | * 443 | * Items cached per-URL tend to result in a large number of cache items, and 444 | * this can be problematic on 404 pages which by their nature are unbounded. A 445 | * fixed TTL can be set for these items, defaulting to one hour, so that cache 446 | * backends which do not support LRU can purge older entries. To disable caching 447 | * of client error responses set the value to 0. Currently applies only to 448 | * page_cache module. 449 | */ 450 | # $settings['cache_ttl_4xx'] = 3600; 451 | 452 | /** 453 | * Expiration of cached forms. 454 | * 455 | * Drupal's Form API stores details of forms in a cache and these entries are 456 | * kept for at least 6 hours by default. Expired entries are cleared by cron. 457 | * 458 | * @see \Drupal\Core\Form\FormCache::setCache() 459 | */ 460 | # $settings['form_cache_expiration'] = 21600; 461 | 462 | /** 463 | * Class Loader. 464 | * 465 | * If the APCu extension is detected, the classloader will be optimized to use 466 | * it. Set to FALSE to disable this. 467 | * 468 | * @see https://getcomposer.org/doc/articles/autoloader-optimization.md 469 | */ 470 | # $settings['class_loader_auto_detect'] = FALSE; 471 | 472 | /** 473 | * Authorized file system operations: 474 | * 475 | * The Update Manager module included with Drupal provides a mechanism for 476 | * site administrators to securely install missing updates for the site 477 | * directly through the web user interface. On securely-configured servers, 478 | * the Update manager will require the administrator to provide SSH or FTP 479 | * credentials before allowing the installation to proceed; this allows the 480 | * site to update the new files as the user who owns all the Drupal files, 481 | * instead of as the user the webserver is running as. On servers where the 482 | * webserver user is itself the owner of the Drupal files, the administrator 483 | * will not be prompted for SSH or FTP credentials (note that these server 484 | * setups are common on shared hosting, but are inherently insecure). 485 | * 486 | * Some sites might wish to disable the above functionality, and only update 487 | * the code directly via SSH or FTP themselves. This setting completely 488 | * disables all functionality related to these authorized file operations. 489 | * 490 | * @see https://www.drupal.org/node/244924 491 | * 492 | * Remove the leading hash signs to disable. 493 | */ 494 | # $settings['allow_authorize_operations'] = FALSE; 495 | 496 | /** 497 | * Default mode for directories and files written by Drupal. 498 | * 499 | * Value should be in PHP Octal Notation, with leading zero. 500 | */ 501 | # $settings['file_chmod_directory'] = 0775; 502 | # $settings['file_chmod_file'] = 0664; 503 | 504 | /** 505 | * Public file base URL: 506 | * 507 | * An alternative base URL to be used for serving public files. This must 508 | * include any leading directory path. 509 | * 510 | * A different value from the domain used by Drupal to be used for accessing 511 | * public files. This can be used for a simple CDN integration, or to improve 512 | * security by serving user-uploaded files from a different domain or subdomain 513 | * pointing to the same server. Do not include a trailing slash. 514 | */ 515 | # $settings['file_public_base_url'] = 'http://downloads.example.com/files'; 516 | 517 | /** 518 | * Public file path: 519 | * 520 | * A local file system path where public files will be stored. This directory 521 | * must exist and be writable by Drupal. This directory must be relative to 522 | * the Drupal installation directory and be accessible over the web. 523 | */ 524 | # $settings['file_public_path'] = 'sites/default/files'; 525 | 526 | /** 527 | * Private file path: 528 | * 529 | * A local file system path where private files will be stored. This directory 530 | * must be absolute, outside of the Drupal installation directory and not 531 | * accessible over the web. 532 | * 533 | * Note: Caches need to be cleared when this value is changed to make the 534 | * private:// stream wrapper available to the system. 535 | * 536 | * See https://www.drupal.org/documentation/modules/file for more information 537 | * about securing private files. 538 | */ 539 | # $settings['file_private_path'] = ''; 540 | 541 | /** 542 | * Temporary file path: 543 | * 544 | * A local file system path where temporary files will be stored. This directory 545 | * must be absolute, outside of the Drupal installation directory and not 546 | * accessible over the web. 547 | * 548 | * If this is not set, the default for the operating system will be used. 549 | * 550 | * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() 551 | */ 552 | # $settings['file_temp_path'] = '/tmp'; 553 | 554 | /** 555 | * Session write interval: 556 | * 557 | * Set the minimum interval between each session write to database. 558 | * For performance reasons it defaults to 180. 559 | */ 560 | # $settings['session_write_interval'] = 180; 561 | 562 | /** 563 | * String overrides: 564 | * 565 | * To override specific strings on your site with or without enabling the Locale 566 | * module, add an entry to this list. This functionality allows you to change 567 | * a small number of your site's default English language interface strings. 568 | * 569 | * Remove the leading hash signs to enable. 570 | * 571 | * The "en" part of the variable name, is dynamic and can be any langcode of 572 | * any added language. (eg locale_custom_strings_de for german). 573 | */ 574 | # $settings['locale_custom_strings_en'][''] = [ 575 | # 'forum' => 'Discussion board', 576 | # '@count min' => '@count minutes', 577 | # ]; 578 | 579 | /** 580 | * A custom theme for the offline page: 581 | * 582 | * This applies when the site is explicitly set to maintenance mode through the 583 | * administration page or when the database is inactive due to an error. 584 | * The template file should also be copied into the theme. It is located inside 585 | * 'core/modules/system/templates/maintenance-page.html.twig'. 586 | * 587 | * Note: This setting does not apply to installation and update pages. 588 | */ 589 | # $settings['maintenance_theme'] = 'bartik'; 590 | 591 | /** 592 | * PHP settings: 593 | * 594 | * To see what PHP settings are possible, including whether they can be set at 595 | * runtime (by using ini_set()), read the PHP documentation: 596 | * http://php.net/manual/ini.list.php 597 | * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime 598 | * settings and the .htaccess file for non-runtime settings. 599 | * Settings defined there should not be duplicated here so as to avoid conflict 600 | * issues. 601 | */ 602 | 603 | /** 604 | * If you encounter a situation where users post a large amount of text, and 605 | * the result is stripped out upon viewing but can still be edited, Drupal's 606 | * output filter may not have sufficient memory to process it. If you 607 | * experience this issue, you may wish to uncomment the following two lines 608 | * and increase the limits of these variables. For more information, see 609 | * http://php.net/manual/pcre.configuration.php. 610 | */ 611 | # ini_set('pcre.backtrack_limit', 200000); 612 | # ini_set('pcre.recursion_limit', 200000); 613 | 614 | /** 615 | * Add Permissions-Policy header to disable Google FLoC. 616 | * 617 | * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header 618 | * to disable Google's Federated Learning of Cohorts feature, introduced in 619 | * Chrome 89. 620 | * 621 | * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more 622 | * information about FLoC. 623 | * 624 | * If you don't wish to disable FLoC in Chrome, you can set this value 625 | * to FALSE. 626 | */ 627 | # $settings['block_interest_cohort'] = TRUE; 628 | 629 | /** 630 | * Configuration overrides. 631 | * 632 | * To globally override specific configuration values for this site, 633 | * set them here. You usually don't need to use this feature. This is 634 | * useful in a configuration file for a vhost or directory, rather than 635 | * the default settings.php. 636 | * 637 | * Note that any values you provide in these variable overrides will not be 638 | * viewable from the Drupal administration interface. The administration 639 | * interface displays the values stored in configuration so that you can stage 640 | * changes to other environments that don't have the overrides. 641 | * 642 | * There are particular configuration values that are risky to override. For 643 | * example, overriding the list of installed modules in 'core.extension' is not 644 | * supported as module install or uninstall has not occurred. Other examples 645 | * include field storage configuration, because it has effects on database 646 | * structure, and 'core.menu.static_menu_link_overrides' since this is cached in 647 | * a way that is not config override aware. Also, note that changing 648 | * configuration values in settings.php will not fire any of the configuration 649 | * change events. 650 | */ 651 | # $config['system.site']['name'] = 'My Drupal site'; 652 | # $config['user.settings']['anonymous'] = 'Visitor'; 653 | 654 | /** 655 | * Fast 404 pages: 656 | * 657 | * Drupal can generate fully themed 404 pages. However, some of these responses 658 | * are for images or other resource files that are not displayed to the user. 659 | * This can waste bandwidth, and also generate server load. 660 | * 661 | * The options below return a simple, fast 404 page for URLs matching a 662 | * specific pattern: 663 | * - $config['system.performance']['fast_404']['exclude_paths']: A regular 664 | * expression to match paths to exclude, such as images generated by image 665 | * styles, or dynamically-resized images. The default pattern provided below 666 | * also excludes the private file system. If you need to add more paths, you 667 | * can add '|path' to the expression. 668 | * - $config['system.performance']['fast_404']['paths']: A regular expression to 669 | * match paths that should return a simple 404 page, rather than the fully 670 | * themed 404 page. If you don't have any aliases ending in htm or html you 671 | * can add '|s?html?' to the expression. 672 | * - $config['system.performance']['fast_404']['html']: The html to return for 673 | * simple 404 pages. 674 | * 675 | * Remove the leading hash signs if you would like to alter this functionality. 676 | */ 677 | # $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; 678 | # $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; 679 | # $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

The requested URL "@path" was not found on this server.

'; 680 | 681 | /** 682 | * Load services definition file. 683 | */ 684 | $settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; 685 | 686 | /** 687 | * Override the default service container class. 688 | * 689 | * This is useful for example to trace the service container for performance 690 | * tracking purposes, for testing a service container with an error condition or 691 | * to test a service container that throws an exception. 692 | */ 693 | # $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; 694 | 695 | /** 696 | * Override the default yaml parser class. 697 | * 698 | * Provide a fully qualified class name here if you would like to provide an 699 | * alternate implementation YAML parser. The class must implement the 700 | * \Drupal\Component\Serialization\SerializationInterface interface. 701 | */ 702 | # $settings['yaml_parser_class'] = NULL; 703 | 704 | /** 705 | * Trusted host configuration. 706 | * 707 | * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host 708 | * header spoofing. 709 | * 710 | * To enable the trusted host mechanism, you enable your allowable hosts 711 | * in $settings['trusted_host_patterns']. This should be an array of regular 712 | * expression patterns, without delimiters, representing the hosts you would 713 | * like to allow. 714 | * 715 | * For example: 716 | * @code 717 | * $settings['trusted_host_patterns'] = [ 718 | * '^www\.example\.com$', 719 | * ]; 720 | * @endcode 721 | * will allow the site to only run from www.example.com. 722 | * 723 | * If you are running multisite, or if you are running your site from 724 | * different domain names (eg, you don't redirect http://www.example.com to 725 | * http://example.com), you should specify all of the host patterns that are 726 | * allowed by your site. 727 | * 728 | * For example: 729 | * @code 730 | * $settings['trusted_host_patterns'] = [ 731 | * '^example\.com$', 732 | * '^.+\.example\.com$', 733 | * '^example\.org$', 734 | * '^.+\.example\.org$', 735 | * ]; 736 | * @endcode 737 | * will allow the site to run off of all variants of example.com and 738 | * example.org, with all subdomains included. 739 | */ 740 | 741 | /** 742 | * The default list of directories that will be ignored by Drupal's file API. 743 | * 744 | * By default ignore node_modules and bower_components folders to avoid issues 745 | * with common frontend tools and recursive scanning of directories looking for 746 | * extensions. 747 | * 748 | * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() 749 | * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() 750 | */ 751 | $settings['file_scan_ignore_directories'] = [ 752 | 'node_modules', 753 | 'bower_components', 754 | ]; 755 | 756 | /** 757 | * The default number of entities to update in a batch process. 758 | * 759 | * This is used by update and post-update functions that need to go through and 760 | * change all the entities on a site, so it is useful to increase this number 761 | * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a 762 | * larger number of entities to be processed in a single batch run. 763 | */ 764 | $settings['entity_update_batch_size'] = 50; 765 | 766 | /** 767 | * Entity update backup. 768 | * 769 | * This is used to inform the entity storage handler that the backup tables as 770 | * well as the original entity type and field storage definitions should be 771 | * retained after a successful entity update process. 772 | */ 773 | $settings['entity_update_backup'] = TRUE; 774 | 775 | /** 776 | * Node migration type. 777 | * 778 | * This is used to force the migration system to use the classic node migrations 779 | * instead of the default complete node migrations. The migration system will 780 | * use the classic node migration only if there are existing migrate_map tables 781 | * for the classic node migrations and they contain data. These tables may not 782 | * exist if you are developing custom migrations and do not want to use the 783 | * complete node migrations. Set this to TRUE to force the use of the classic 784 | * node migrations. 785 | */ 786 | $settings['migrate_node_migrate_type_classic'] = FALSE; 787 | 788 | /** 789 | * Load local development override configuration, if available. 790 | * 791 | * Create a settings.local.php file to override variables on secondary (staging, 792 | * development, etc.) installations of this site. 793 | * 794 | * Typical uses of settings.local.php include: 795 | * - Disabling caching. 796 | * - Disabling JavaScript/CSS compression. 797 | * - Rerouting outgoing emails. 798 | * 799 | * Keep this code block at the end of this file to take full effect. 800 | */ 801 | # 802 | # if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { 803 | # include $app_root . '/' . $site_path . '/settings.local.php'; 804 | # } 805 | # 806 | include $app_root . '/' . $site_path . '/settings.lando.php'; 807 | 808 | $settings['config_sync_directory'] = '../config/sync'; 809 | -------------------------------------------------------------------------------- /web/sites/development.services.yml: -------------------------------------------------------------------------------- 1 | # Local development services. 2 | # 3 | # To activate this feature, follow the instructions at the top of the 4 | # 'example.settings.local.php' file, which sits next to this file. 5 | parameters: 6 | http.response.debug_cacheability_headers: true 7 | services: 8 | cache.backend.null: 9 | class: Drupal\Core\Cache\NullBackendFactory 10 | -------------------------------------------------------------------------------- /web/sites/example.settings.local.php: -------------------------------------------------------------------------------- 1 | ..' => 'directory'. As an 26 | * example, to map https://www.drupal.org:8080/mysite/test to the configuration 27 | * directory sites/example.com, the array should be defined as: 28 | * @code 29 | * $sites = [ 30 | * '8080.www.drupal.org.mysite.test' => 'example.com', 31 | * ]; 32 | * @endcode 33 | * The URL, https://www.drupal.org:8080/mysite/test/, could be a symbolic link 34 | * or an Apache Alias directive that points to the Drupal root containing 35 | * index.php. An alias could also be created for a subdomain. See the 36 | * @link https://www.drupal.org/documentation/install online Drupal installation guide @endlink 37 | * for more information on setting up domains, subdomains, and subdirectories. 38 | * 39 | * The following examples look for a site configuration in sites/example.com: 40 | * @code 41 | * URL: http://dev.drupal.org 42 | * $sites['dev.drupal.org'] = 'example.com'; 43 | * 44 | * URL: http://localhost/example 45 | * $sites['localhost.example'] = 'example.com'; 46 | * 47 | * URL: http://localhost:8080/example 48 | * $sites['8080.localhost.example'] = 'example.com'; 49 | * 50 | * URL: https://www.drupal.org:8080/mysite/test/ 51 | * $sites['8080.www.drupal.org.mysite.test'] = 'example.com'; 52 | * @endcode 53 | * 54 | * @see default.settings.php 55 | * @see \Drupal\Core\DrupalKernel::getSitePath() 56 | * @see https://www.drupal.org/documentation/install/multi-site 57 | */ 58 | -------------------------------------------------------------------------------- /web/themes/README.txt: -------------------------------------------------------------------------------- 1 | Themes allow you to change the look and feel of your Drupal site. You can use 2 | themes contributed by others or create your own. 3 | 4 | WHAT TO PLACE IN THIS DIRECTORY? 5 | -------------------------------- 6 | 7 | Placing downloaded and custom themes in this directory separates downloaded and 8 | custom themes from Drupal core's themes. This allows Drupal core to be updated 9 | without overwriting these files. 10 | 11 | DOWNLOAD ADDITIONAL THEMES 12 | -------------------------- 13 | 14 | Contributed themes from the Drupal community may be downloaded at 15 | https://www.drupal.org/project/project_theme. 16 | 17 | MULTISITE CONFIGURATION 18 | ----------------------- 19 | 20 | In multisite configurations, themes found in this directory are available to 21 | all sites. You may also put themes in the sites/all/themes directory, and the 22 | versions in sites/all/themes will take precedence over versions of the same 23 | themes that are here. Alternatively, the sites/your_site_name/themes directory 24 | pattern may be used to restrict themes to a specific site instance. 25 | 26 | MORE INFORMATION 27 | ----------------- 28 | 29 | Refer to the "Appearance" section of the README.txt in the Drupal root directory 30 | for further information on customizing the appearance of Drupal with custom 31 | themes. 32 | -------------------------------------------------------------------------------- /web/update.php: -------------------------------------------------------------------------------- 1 | handle($request); 28 | $response->send(); 29 | 30 | $kernel->terminate($request, $response); 31 | -------------------------------------------------------------------------------- /web/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 39 | 48 | 49 | 52 | 61 | 62 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | --------------------------------------------------------------------------------