diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ebae9482..8c47ebf0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,29 @@ # ACE SDSSGryphon +2.0.3 +-------------------------------------------------------------------------------- +_Release Date: 2023-05-31_ + +- SDSS-576-577-578: Updated WYSIWYG text styles (#122) +- SDSS-576: Updated Intro Text and Display text WYSIWYG styles. +- SDSS-577: Updated block quote lg, md, sm styles and font sizes. +- SDSS-578: Updated the Display text style and font size. +- SDSS-606: Added import source and related people fields to News content type. (#128) +- SDSS-606: Cleaned up News node edit form. +- SDSS-354: Added filter by taxonomy RSS view (#120) +- SDSS-532: Hide body field in banner paragraph edit form, since it is not used/displayed. (#121) +- SDSS-530: Hide banner caption field from default display (#137) +- SDSS-601: Provisioned 17 sites (#136) +- SDSS-626: Changed earth_news_importer module type to store in untested contrib directory.(#133) +- SDSS-624: Replaced Dek field with Dek (Long) field in RSS feed (#131) +- SDSS-621: Added dev version of earth_news_importer to the stack. +- SDSS-464: Set the sdss_subtheme as the default theme and updated tests to reflect differences.. (#127) +- Dropped and deprecated public protection and theme viewer roles. +- SDSS-599: Provision understand-energy (#126) +- SDSS-530: Added caption field to banner paragraph (#118) +- SDSS-562: Disable configuration read-only on config capture staging site. (#117) + + 2.0.2 -------------------------------------------------------------------------------- _Release Date: 2023-04-26_ diff --git a/blt/blt.yml b/blt/blt.yml index 2b24ac59d..8c57baaae 100644 --- a/blt/blt.yml +++ b/blt/blt.yml @@ -22,6 +22,8 @@ cm: strategy: config-split allow-overrides: true multisites: + - bitsandwatts + - carbon_removal - changeleadership - climate - climatechange @@ -34,19 +36,35 @@ multisites: - environmentalpolicy - ese - esys + - explore_energy + - extreme_energy_efficiency - farm - geophysics + - gep - gs + - hackingfordefense - hawaii - hopkinsmarinestation + - hydrogen + - mce2050 - naturalcapitalproject + - ngi + - nza - oceans - planetary + - scv - sdss_config_capture - sdsssandbox - sdssuserguide + - seca + - seepac - sepf + - sfi + - storagex + - strategic_energy_alliance - sustainability + - understand_energy_course + - understandenergy - water - woods tests: diff --git a/composer.json b/composer.json index 1d1c5481a..77b892a11 100644 --- a/composer.json +++ b/composer.json @@ -95,6 +95,19 @@ "reference": "master" } } + }, + { + "type": "package", + "package": { + "name": "su-sws/earth_news_importer", + "version": "1.x-dev", + "type": "drupal-module", + "source": { + "type": "git", + "url": "https://github.com/SU-SWS/earth_news_importer.git", + "reference": "1.x" + } + } } ], "require": { @@ -234,6 +247,7 @@ "seboettg/citeproc-php": "2.4.1", "simplesamlphp/simplesamlphp": "^1.19", "su-sws/drupal-patches": "^8.1", + "su-sws/earth_news_importer": "1.x-dev", "su-sws/nobots": "^8.2", "su-sws/react_paragraphs": "^8.2", "su-sws/stanford_actions": "^8.2", diff --git a/composer.lock b/composer.lock index afa8a399e..6615c3b03 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2feed552e6edc481fbf14107cf283a32", + "content-hash": "fe6d8671d1c1cf2d9ea9e77fce736da9", "packages": [ { "name": "acquia/blt", @@ -17934,6 +17934,16 @@ }, "time": "2023-04-12T17:15:27+00:00" }, + { + "name": "su-sws/earth_news_importer", + "version": "1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/SU-SWS/earth_news_importer.git", + "reference": "1.x" + }, + "type": "drupal-module" + }, { "name": "su-sws/nobots", "version": "8.2.2", @@ -27430,6 +27440,7 @@ "drupal/views_rss": 5, "drupal/webp": 10, "onlyextart/colorbox": 20, + "su-sws/earth_news_importer": 20, "su-sws/blt-sws": 20 }, "prefer-stable": true, diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_form_display.node.stanford_news.default.yml b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_form_display.node.stanford_news.default.yml index 5f6eb675b..e67a27d9e 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_form_display.node.stanford_news.default.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_form_display.node.stanford_news.default.yml @@ -15,12 +15,14 @@ dependencies: - field.field.node.stanford_news.su_news_publishing_date - field.field.node.stanford_news.su_news_source - field.field.node.stanford_news.su_news_topics + - field.field.node.stanford_news.su_sdss_import_source - field.field.node.stanford_news.su_sdss_magazine_topics - field.field.node.stanford_news.su_sdss_news_dek_long - field.field.node.stanford_news.su_sdss_news_focal_areas - field.field.node.stanford_news.su_sdss_news_news_source - field.field.node.stanford_news.su_sdss_news_organization - field.field.node.stanford_news.su_sdss_news_research_area + - field.field.node.stanford_news.su_sdss_person_ref - field.field.node.stanford_news.su_shared_tags - node.type.stanford_news module: @@ -81,6 +83,42 @@ third_party_settings: id: '' description: '' required_fields: true + group_tags: + children: + - su_news_topics + - su_sdss_magazine_topics + - su_shared_tags + - su_sdss_news_organization + - su_sdss_news_research_area + - su_sdss_news_focal_areas + label: Taxonomy + region: content + parent_name: '' + weight: 5 + format_type: details + format_settings: + classes: '' + show_empty_fields: true + id: '' + open: false + description: '' + required_fields: true + group_related_content: + children: + - su_sdss_person_ref + label: 'Related Content' + region: content + parent_name: '' + weight: 4 + format_type: details + format_settings: + classes: '' + show_empty_fields: false + id: '' + open: false + description: '' + required_fields: true + formatter: closed id: node.stanford_news.default targetEntityType: node bundle: stanford_news @@ -88,31 +126,31 @@ mode: default content: publish_on: type: datetime_timestamp_no_default - weight: 52 + weight: 11 region: content settings: { } third_party_settings: { } scheduler_settings: - weight: 50 + weight: 10 region: content settings: { } third_party_settings: { } stanford_intranet__access: type: entity_access - weight: 7 + weight: 8 region: content settings: { } third_party_settings: { } status: type: boolean_checkbox - weight: 6 + weight: 7 region: content settings: display_label: true third_party_settings: { } su_metatags: type: metatag_firehose - weight: 32 + weight: 9 region: content settings: sidebar: true @@ -143,7 +181,7 @@ content: third_party_settings: { } su_news_components: type: entity_reference_paragraphs - weight: 5 + weight: 3 region: content settings: title: Paragraph @@ -176,7 +214,7 @@ content: third_party_settings: { } su_news_topics: type: options_shs - weight: 3 + weight: 14 region: content settings: display_node_count: false @@ -186,7 +224,7 @@ content: third_party_settings: { } su_sdss_magazine_topics: type: options_shs - weight: 4 + weight: 15 region: content settings: display_node_count: false @@ -204,7 +242,7 @@ content: third_party_settings: { } su_sdss_news_focal_areas: type: options_shs - weight: 28 + weight: 19 region: content settings: display_node_count: false @@ -224,7 +262,7 @@ content: third_party_settings: { } su_sdss_news_organization: type: options_shs - weight: 26 + weight: 17 region: content settings: display_node_count: false @@ -234,7 +272,7 @@ content: third_party_settings: { } su_sdss_news_research_area: type: options_shs - weight: 27 + weight: 18 region: content settings: display_node_count: false @@ -242,9 +280,19 @@ content: create_new_levels: false force_deepest: false third_party_settings: { } + su_sdss_person_ref: + type: entity_reference_autocomplete + weight: 21 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } su_shared_tags: type: options_shs - weight: 10 + weight: 16 region: content settings: display_node_count: false @@ -268,6 +316,7 @@ hidden: promote: true sticky: true su_news_dek: true + su_sdss_import_source: true uid: true unpublish_on: true url_redirects: true diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_form_display.paragraph.stanford_banner.default.yml b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_form_display.paragraph.stanford_banner.default.yml index a842e85de..dc419bde7 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_form_display.paragraph.stanford_banner.default.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_form_display.paragraph.stanford_banner.default.yml @@ -8,11 +8,11 @@ dependencies: - field.field.paragraph.stanford_banner.su_banner_header - field.field.paragraph.stanford_banner.su_banner_image - field.field.paragraph.stanford_banner.su_banner_sup_header + - field.field.paragraph.stanford_banner.su_sdss_banner_caption - paragraphs.paragraphs_type.stanford_banner module: - link - media_library - - text id: paragraph.stanford_banner.default targetEntityType: paragraph bundle: stanford_banner @@ -26,17 +26,9 @@ content: size: 60 placeholder: '' third_party_settings: { } - su_banner_body: - type: text_textarea - weight: 3 - region: content - settings: - rows: 5 - placeholder: '' - third_party_settings: { } su_banner_button: type: link_default - weight: 5 + weight: 2 region: content settings: placeholder_url: '' @@ -44,7 +36,7 @@ content: third_party_settings: { } su_banner_header: type: string_textfield - weight: 2 + weight: 1 region: content settings: size: 60 @@ -59,14 +51,23 @@ content: third_party_settings: { } su_banner_sup_header: type: string_textfield - weight: 1 + weight: 3 region: content settings: size: 60 placeholder: '' third_party_settings: { } + su_sdss_banner_caption: + type: text_textarea + weight: 3 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } hidden: created: true publish_on: true status: true + su_banner_body: true unpublish_on: true diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.default.yml b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.default.yml index 70e0e2b6b..a586774ff 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.default.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.default.yml @@ -16,12 +16,14 @@ dependencies: - field.field.node.stanford_news.su_news_publishing_date - field.field.node.stanford_news.su_news_source - field.field.node.stanford_news.su_news_topics + - field.field.node.stanford_news.su_sdss_import_source - field.field.node.stanford_news.su_sdss_magazine_topics - field.field.node.stanford_news.su_sdss_news_dek_long - field.field.node.stanford_news.su_sdss_news_focal_areas - field.field.node.stanford_news.su_sdss_news_news_source - field.field.node.stanford_news.su_sdss_news_organization - field.field.node.stanford_news.su_sdss_news_research_area + - field.field.node.stanford_news.su_sdss_person_ref - field.field.node.stanford_news.su_shared_tags - node.type.stanford_news - views.view.stanford_news @@ -33,6 +35,7 @@ dependencies: - layout_builder - layout_builder_restrictions - layout_library + - link - stanford_news - text - user @@ -116,6 +119,42 @@ third_party_settings: class: '' weight: 6 additional: { } + 5ac2f723-c95b-4e9d-a40d-e4c99386da88: + uuid: 5ac2f723-c95b-4e9d-a40d-e4c99386da88 + region: main + configuration: + id: 'field_block:node:stanford_news:su_sdss_import_source' + label_display: '0' + context_mapping: + entity: layout_builder.entity + formatter: + type: link + label: above + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: 7 + additional: { } + 4df41d12-f026-4f77-9d83-e59f53762703: + uuid: 4df41d12-f026-4f77-9d83-e59f53762703 + region: main + configuration: + id: 'field_block:node:stanford_news:su_sdss_person_ref' + label_display: '0' + context_mapping: + entity: layout_builder.entity + formatter: + type: entity_reference_label + label: above + settings: + link: true + third_party_settings: { } + weight: 8 + additional: { } third_party_settings: { } - layout_id: stanford_news_byline @@ -499,6 +538,18 @@ content: third_party_settings: { } weight: 0 region: content + su_sdss_import_source: + type: link + label: above + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: 15 + region: main su_sdss_magazine_topics: type: entity_reference_label label: above @@ -546,6 +597,14 @@ content: third_party_settings: { } weight: 12 region: main + su_sdss_person_ref: + type: entity_reference_label + label: above + settings: + link: true + third_party_settings: { } + weight: 16 + region: main hidden: layout_builder__layout: true layout_selection: true diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.search_indexing.yml b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.search_indexing.yml index 6d9152bb7..b2bec84c4 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.search_indexing.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.search_indexing.yml @@ -16,12 +16,14 @@ dependencies: - field.field.node.stanford_news.su_news_publishing_date - field.field.node.stanford_news.su_news_source - field.field.node.stanford_news.su_news_topics + - field.field.node.stanford_news.su_sdss_import_source - field.field.node.stanford_news.su_sdss_magazine_topics - field.field.node.stanford_news.su_sdss_news_dek_long - field.field.node.stanford_news.su_sdss_news_focal_areas - field.field.node.stanford_news.su_sdss_news_news_source - field.field.node.stanford_news.su_sdss_news_organization - field.field.node.stanford_news.su_sdss_news_research_area + - field.field.node.stanford_news.su_sdss_person_ref - field.field.node.stanford_news.su_shared_tags - node.type.stanford_news module: @@ -130,9 +132,11 @@ hidden: stanford_intranet__access: true su_metatags: true su_news_dek: true + su_sdss_import_source: true su_sdss_magazine_topics: true su_sdss_news_focal_areas: true su_sdss_news_news_source: true su_sdss_news_organization: true su_sdss_news_research_area: true + su_sdss_person_ref: true su_shared_tags: true diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.stanford_card.yml b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.stanford_card.yml index 49aa59119..a66e4641d 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.stanford_card.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.node.stanford_news.stanford_card.yml @@ -16,12 +16,14 @@ dependencies: - field.field.node.stanford_news.su_news_publishing_date - field.field.node.stanford_news.su_news_source - field.field.node.stanford_news.su_news_topics + - field.field.node.stanford_news.su_sdss_import_source - field.field.node.stanford_news.su_sdss_magazine_topics - field.field.node.stanford_news.su_sdss_news_dek_long - field.field.node.stanford_news.su_sdss_news_focal_areas - field.field.node.stanford_news.su_sdss_news_news_source - field.field.node.stanford_news.su_sdss_news_organization - field.field.node.stanford_news.su_sdss_news_research_area + - field.field.node.stanford_news.su_sdss_person_ref - field.field.node.stanford_news.su_shared_tags - node.type.stanford_news module: @@ -177,8 +179,10 @@ hidden: su_news_byline: true su_news_components: true su_news_dek: true + su_sdss_import_source: true su_sdss_magazine_topics: true su_sdss_news_focal_areas: true su_sdss_news_organization: true su_sdss_news_research_area: true + su_sdss_person_ref: true su_shared_tags: true diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.paragraph.stanford_banner.default.yml b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.paragraph.stanford_banner.default.yml index 4453a55b0..1a504ad68 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.paragraph.stanford_banner.default.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.paragraph.stanford_banner.default.yml @@ -8,6 +8,7 @@ dependencies: - field.field.paragraph.stanford_banner.su_banner_header - field.field.paragraph.stanford_banner.su_banner_image - field.field.paragraph.stanford_banner.su_banner_sup_header + - field.field.paragraph.stanford_banner.su_sdss_banner_caption - paragraphs.paragraphs_type.stanford_banner module: - ds @@ -83,6 +84,7 @@ content: view_mode: default link: false image_style: stanford_hero_block_wide + remove_alt: false third_party_settings: { } weight: 0 region: hero_image @@ -96,3 +98,4 @@ content: region: hero_super_headline hidden: search_api_excerpt: true + su_sdss_banner_caption: true diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.paragraph.stanford_banner.variant_1.yml b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.paragraph.stanford_banner.variant_1.yml index 93737b4fb..02083a849 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.paragraph.stanford_banner.variant_1.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/core.entity_view_display.paragraph.stanford_banner.variant_1.yml @@ -9,6 +9,7 @@ dependencies: - field.field.paragraph.stanford_banner.su_banner_header - field.field.paragraph.stanford_banner.su_banner_image - field.field.paragraph.stanford_banner.su_banner_sup_header + - field.field.paragraph.stanford_banner.su_sdss_banner_caption - paragraphs.paragraphs_type.stanford_banner module: - field_formatter_class @@ -41,3 +42,4 @@ hidden: su_banner_button: true su_banner_header: true su_banner_sup_header: true + su_sdss_banner_caption: true diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/editor.editor.stanford_html.yml b/docroot/profiles/sdss/sdss_profile/config/sync/editor.editor.stanford_html.yml index b9ce12795..da125f48c 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/editor.editor.stanford_html.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/editor.editor.stanford_html.yml @@ -55,7 +55,7 @@ settings: - A11ychecker plugins: stylescombo: - styles: "a.su-button|Button\r\na.su-button--big|Big Button\r\na.su-button--secondary|Secondary Button\r\na.su-link--action|Action Link\r\np.plain-text|Normal\r\np.sdss-display-text|Display Text\r\np.sdss-block-quote--big|Block Quote Lg\r\np.sdss-block-quote--med|Block Quote Med\r\np.sdss-block-quote--sm|Block Quote Sm\r\np.su-related-text|Card Text\r\np.su-subheading|Sub Title\r\ncode|Code" + styles: "a.su-button|Button\r\na.su-button--big|Big Button\r\na.su-button--secondary|Secondary Button\r\na.su-link--action|Action Link\r\np.plain-text|Normal\r\np.sdss-display-text|Display Text\r\np.sdss-intro-text|Intro Text\r\np.sdss-block-quote--big|Block Quote Lg\r\np.sdss-block-quote--med|Block Quote Med\r\np.sdss-block-quote--sm|Block Quote Sm\r\np.su-related-text|Card Text\r\np.su-subheading|Sub Title\r\ncode|Code" drupallink: linkit_enabled: true linkit_profile: default diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/field.field.node.stanford_news.su_sdss_import_source.yml b/docroot/profiles/sdss/sdss_profile/config/sync/field.field.node.stanford_news.su_sdss_import_source.yml new file mode 100644 index 000000000..93cd91460 --- /dev/null +++ b/docroot/profiles/sdss/sdss_profile/config/sync/field.field.node.stanford_news.su_sdss_import_source.yml @@ -0,0 +1,23 @@ +uuid: 2db3f007-c617-4732-8b16-e20247a42bfb +langcode: en +status: true +dependencies: + config: + - field.storage.node.su_sdss_import_source + - node.type.stanford_news + module: + - link +id: node.stanford_news.su_sdss_import_source +field_name: su_sdss_import_source +entity_type: node +bundle: stanford_news +label: 'Import Source' +description: 'The source URL of imported content from the previous site. This field is intended for capturing data from a migration, and is not used in displays.' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + title: 1 + link_type: 16 +field_type: link diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/field.field.node.stanford_news.su_sdss_person_ref.yml b/docroot/profiles/sdss/sdss_profile/config/sync/field.field.node.stanford_news.su_sdss_person_ref.yml new file mode 100644 index 000000000..337f39730 --- /dev/null +++ b/docroot/profiles/sdss/sdss_profile/config/sync/field.field.node.stanford_news.su_sdss_person_ref.yml @@ -0,0 +1,29 @@ +uuid: d641deb4-2a9f-4878-bc92-4b2224208323 +langcode: en +status: true +dependencies: + config: + - field.storage.node.su_sdss_person_ref + - node.type.stanford_news + - node.type.stanford_person +id: node.stanford_news.su_sdss_person_ref +field_name: su_sdss_person_ref +entity_type: node +bundle: stanford_news +label: 'Related People' +description: 'Add people related to this piece of content. This does not display on the content by default, but can be added using the List Paragraph' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:node' + handler_settings: + target_bundles: + stanford_person: stanford_person + sort: + field: _none + direction: ASC + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/field.field.paragraph.stanford_banner.su_sdss_banner_caption.yml b/docroot/profiles/sdss/sdss_profile/config/sync/field.field.paragraph.stanford_banner.su_sdss_banner_caption.yml new file mode 100644 index 000000000..ae961d244 --- /dev/null +++ b/docroot/profiles/sdss/sdss_profile/config/sync/field.field.paragraph.stanford_banner.su_sdss_banner_caption.yml @@ -0,0 +1,27 @@ +uuid: ccb83217-8423-4196-94f9-de8079dd2bc5 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.su_sdss_banner_caption + - paragraphs.paragraphs_type.stanford_banner + module: + - allowed_formats + - text +third_party_settings: + allowed_formats: + stanford_minimal_html: stanford_minimal_html + stanford_html: '0' + plain_text: '0' +id: paragraph.stanford_banner.su_sdss_banner_caption +field_name: su_sdss_banner_caption +entity_type: paragraph +bundle: stanford_banner +label: 'Banner Caption' +description: 'A “caption” is a brief description of the media that appears in the banner.' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: text_long diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.node.su_sdss_import_source.yml b/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.node.su_sdss_import_source.yml new file mode 100644 index 000000000..d23561507 --- /dev/null +++ b/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.node.su_sdss_import_source.yml @@ -0,0 +1,19 @@ +uuid: 8447c0cc-a11c-4814-b690-d517fbf7cdaf +langcode: en +status: true +dependencies: + module: + - link + - node +id: node.su_sdss_import_source +field_name: su_sdss_import_source +entity_type: node +type: link +settings: { } +module: link +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.node.su_sdss_person_ref.yml b/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.node.su_sdss_person_ref.yml new file mode 100644 index 000000000..39ab18ca1 --- /dev/null +++ b/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.node.su_sdss_person_ref.yml @@ -0,0 +1,19 @@ +uuid: 4f606d83-1f56-40ad-a0c9-2232b00e8cb9 +langcode: en +status: true +dependencies: + module: + - node +id: node.su_sdss_person_ref +field_name: su_sdss_person_ref +entity_type: node +type: entity_reference +settings: + target_type: node +module: core +locked: false +cardinality: -1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.paragraph.su_sdss_banner_caption.yml b/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.paragraph.su_sdss_banner_caption.yml new file mode 100644 index 000000000..1533cb79f --- /dev/null +++ b/docroot/profiles/sdss/sdss_profile/config/sync/field.storage.paragraph.su_sdss_banner_caption.yml @@ -0,0 +1,19 @@ +uuid: bec18f68-a29c-4322-a45a-8c716be0cef3 +langcode: en +status: true +dependencies: + module: + - paragraphs + - text +id: paragraph.su_sdss_banner_caption +field_name: su_sdss_banner_caption +entity_type: paragraph +type: text_long +settings: { } +module: text +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/system.theme.yml b/docroot/profiles/sdss/sdss_profile/config/sync/system.theme.yml index 32a1e51d8..6c5f8e4d7 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/system.theme.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/system.theme.yml @@ -1,4 +1,4 @@ _core: default_config_hash: 6lQ55NXM9ysybMQ6NzJj4dtiQ1dAkOYxdDompa-r_kk admin: seven -default: stanford_basic +default: sdss_subtheme diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/user.role.theme_viewer.yml b/docroot/profiles/sdss/sdss_profile/config/sync/user.role.theme_viewer.yml deleted file mode 100644 index f7ba47e45..000000000 --- a/docroot/profiles/sdss/sdss_profile/config/sync/user.role.theme_viewer.yml +++ /dev/null @@ -1,9 +0,0 @@ -uuid: 3d376193-f0cf-4869-b4fb-fd5a2929eb2b -langcode: en -status: true -dependencies: { } -id: theme_viewer -label: 'Theme Viewer' -weight: 2 -is_admin: false -permissions: { } diff --git a/docroot/profiles/sdss/sdss_profile/config/sync/views.view.rss_feeds.yml b/docroot/profiles/sdss/sdss_profile/config/sync/views.view.rss_feeds.yml index f00fb8f96..c3de5c576 100644 --- a/docroot/profiles/sdss/sdss_profile/config/sync/views.view.rss_feeds.yml +++ b/docroot/profiles/sdss/sdss_profile/config/sync/views.view.rss_feeds.yml @@ -3,13 +3,19 @@ langcode: en status: true dependencies: config: - - field.storage.node.su_news_dek - field.storage.node.su_news_publishing_date + - field.storage.node.su_sdss_news_dek_long - node.type.stanford_news + - taxonomy.vocabulary.sdss_focal_areas + - taxonomy.vocabulary.sdss_magazine_topics + - taxonomy.vocabulary.sdss_research_areas + - taxonomy.vocabulary.su_sdss_news_source module: - datetime - node + - text - user + - views_taxonomy_term_name_depth id: rss_feeds label: 'RSS Feeds' module: views @@ -286,10 +292,10 @@ display: multi_type: separator separator: ', ' field_api_classes: false - su_news_dek: - id: su_news_dek - table: node__su_news_dek - field: su_news_dek + su_sdss_news_dek_long: + id: su_sdss_news_dek_long + table: node__su_sdss_news_dek_long + field: su_sdss_news_dek_long relationship: none group_type: group admin_label: '' @@ -319,7 +325,7 @@ display: more_link: false more_link_text: '' more_link_path: '' - strip_tags: false + strip_tags: true trim: false preserve_tags: '' html: false @@ -336,9 +342,8 @@ display: empty_zero: false hide_alter_empty: true click_sort_column: value - type: string - settings: - link_to_entity: false + type: text_default + settings: { } group_column: value group_columns: { } group_rows: true @@ -594,8 +599,8 @@ display: - 'user.node_grants:view' - user.permissions tags: - - 'config:field.storage.node.su_news_dek' - 'config:field.storage.node.su_news_publishing_date' + - 'config:field.storage.node.su_sdss_news_dek_long' feed_1: id: feed_1 display_title: 'SDSS News This Week' @@ -616,7 +621,7 @@ display: options: title_field: title link_field: nid - description_field: su_news_dek + description_field: su_sdss_news_dek_long creator_field: name date_field: su_news_publishing_date guid_field_options: @@ -634,5 +639,101 @@ display: - 'user.node_grants:view' - user.permissions tags: - - 'config:field.storage.node.su_news_dek' - 'config:field.storage.node.su_news_publishing_date' + feed_2: + id: feed_2 + display_title: 'News Filtered by Taxonomy' + display_plugin: feed + position: 1 + display_options: + title: 'SDSS News' + pager: + type: none + options: + offset: 0 + arguments: + term_node_taxonomy_name_depth: + id: term_node_taxonomy_name_depth + table: node_field_data + field: term_node_taxonomy_name_depth + relationship: none + group_type: group + admin_label: '' + entity_type: node + plugin_id: taxonomy_index_name_depth + default_action: default + exception: + value: all + title_enable: false + title: All + title_enable: false + title: '' + default_argument_type: taxonomy_tid + default_argument_options: + term_page: '1' + node: true + limit: true + vids: + sdss_focal_areas: sdss_focal_areas + sdss_magazine_topics: sdss_magazine_topics + sdss_research_areas: sdss_research_areas + su_sdss_news_source: su_sdss_news_source + anyall: ',' + default_argument_skip_url: false + summary_options: + base_path: '' + count: true + override: false + items_per_page: 25 + summary: + sort_order: asc + number_of_records: 0 + format: default_summary + specify_validation: false + validate: + type: none + fail: 'not found' + validate_options: { } + break_phrase: false + depth: '0' + use_taxonomy_term_path: false + vocabularies: + sdss_focal_areas: sdss_focal_areas + sdss_magazine_topics: sdss_magazine_topics + sdss_research_areas: sdss_research_areas + stanford_news_topics: stanford_news_topics + style: + type: rss + options: + grouping: { } + description: '' + row: + type: rss_fields + options: + title_field: title + link_field: nid + description_field: su_sdss_news_dek_long + creator_field: name + date_field: su_news_publishing_date + guid_field_options: + guid_field: nid + guid_field_is_permalink: 1 + defaults: + title: false + arguments: false + sitename_title: false + display_description: '' + display_extenders: { } + path: rss/news/%/rss.xml + sitename_title: false + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - 'user.node_grants:view' + - user.permissions + tags: + - 'config:field.storage.node.su_news_publishing_date' + - 'config:field.storage.node.su_sdss_news_dek_long' diff --git a/docroot/profiles/sdss/sdss_profile/sdss_profile.info.yml b/docroot/profiles/sdss/sdss_profile/sdss_profile.info.yml index 01ebec80c..d10241086 100644 --- a/docroot/profiles/sdss/sdss_profile/sdss_profile.info.yml +++ b/docroot/profiles/sdss/sdss_profile/sdss_profile.info.yml @@ -1,6 +1,6 @@ name: 'Stanford Doerr School of Sustainability Profile' description: 'Jumpstart Website Profile for Stanford Doerr School of Sustainability' -version: 2.0.2 +version: 2.0.3 type: profile project: Jumpstart core_version_requirement: ^9 || ^10 @@ -133,6 +133,7 @@ themes: - stable9 - classy - seven + - sdss_subtheme - stanford_basic default_content: block_content: diff --git a/docroot/profiles/sdss/sdss_profile/tests/codeception/acceptance/Content/SearchBlockCest.php b/docroot/profiles/sdss/sdss_profile/tests/codeception/acceptance/Content/SearchBlockCest.php deleted file mode 100644 index 21fa91fd7..000000000 --- a/docroot/profiles/sdss/sdss_profile/tests/codeception/acceptance/Content/SearchBlockCest.php +++ /dev/null @@ -1,33 +0,0 @@ -logInWithRole('site_manager'); - $I->amOnPage('/'); - $I->seeElement('.su-site-search__input'); - $I->amOnPage('/admin/config/system/basic-site-settings'); - $I->see('Hide Site Search'); - $I->checkOption('Hide Site Search'); - $I->click('Save'); - // The settings might have been created or updated. - $I->see('Site Settings has been'); - $I->amOnPage('/'); - $I->dontSeeElement('.su-site-search__input'); - - $I->amOnPage('/admin/config/system/basic-site-settings'); - $I->uncheckOption('Hide Site Search'); - $I->click('Save'); - $I->amOnPage('/'); - $I->seeElement('.su-site-search__input'); - } - -} diff --git a/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Content/StanfordNewsCest.php b/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Content/StanfordNewsCest.php index f0291d35d..31f21c252 100644 --- a/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Content/StanfordNewsCest.php +++ b/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Content/StanfordNewsCest.php @@ -48,6 +48,7 @@ public function testTermOrder(FunctionalTester $I) { $I->amOnPage($node->toUrl('edit-form')->toString()); $I->canSeeInField('Headline', $node->label()); + $I->click('#edit-group-tags summary'); $I->waitForElementVisible('.field--name-su-news-topics [data-shs-delta="0"] select'); $I->selectOption('.field--name-su-news-topics [data-shs-delta="0"] select', $first_term->label()); $I->click('Add another item', '.field--name-su-news-topics'); @@ -62,6 +63,7 @@ public function testTermOrder(FunctionalTester $I) { $I->canSee($first_term->label() . ', ' . $second_term->label() . ', '. $third_term->label()); $I->amOnPage($node->toUrl('edit-form')->toString()); + $I->click('#edit-group-tags summary'); $I->waitForElementVisible('.field--name-su-news-topics [data-shs-delta="2"] select'); $I->selectOption('.field--name-su-news-topics [data-shs-delta="0"] select', $second_term->label()); $I->selectOption('.field--name-su-news-topics [data-shs-delta="1"] select', $first_term->label()); @@ -72,6 +74,7 @@ public function testTermOrder(FunctionalTester $I) { $I->canSee($second_term->label() . ', ' . $first_term->label() . ', '. $third_term->label()); $I->amOnPage($node->toUrl('edit-form')->toString()); + $I->click('#edit-group-tags summary'); $I->waitForElementVisible('.field--name-su-news-topics [data-shs-delta="2"] select'); $I->selectOption('.field--name-su-news-topics [data-shs-delta="0"] select', $third_term->label()); $I->selectOption('.field--name-su-news-topics [data-shs-delta="1"] select', $second_term->label()); @@ -82,6 +85,7 @@ public function testTermOrder(FunctionalTester $I) { $I->canSee($third_term->label() . ', ' . $second_term->label() . ', '. $first_term->label()); $I->amOnPage($node->toUrl('edit-form')->toString()); + $I->click('#edit-group-tags summary'); $I->waitForElementVisible('.field--name-su-news-topics [data-shs-delta="2"] select'); $I->selectOption('.field--name-su-news-topics [data-shs-delta="0"] select', $third_term->label()); $I->selectOption('.field--name-su-news-topics [data-shs-delta="1"] select', $first_term->label()); diff --git a/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Paragraphs/BannerCest.php b/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Paragraphs/BannerCest.php index 8a45bbf1b..1387826e3 100644 --- a/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Paragraphs/BannerCest.php +++ b/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Paragraphs/BannerCest.php @@ -66,9 +66,7 @@ public function testBannerBehaviors(FunctionalTester $I) { ]); $I->amOnPage($node->toUrl()->toString()); - $I->canSee($field_values['sup_header']); $I->canSee($field_values['header']); - $I->canSee($field_values['body']); $I->canSeeLink($field_values['title'], $field_values['uri']); $I->cantSeeElement('.overlay-right'); diff --git a/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Paragraphs/EntityReferenceCest.php b/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Paragraphs/EntityReferenceCest.php index 7db0f0933..dd02ff577 100644 --- a/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Paragraphs/EntityReferenceCest.php +++ b/docroot/profiles/sdss/sdss_profile/tests/codeception/functional/Paragraphs/EntityReferenceCest.php @@ -53,7 +53,7 @@ public function testEntityReference(FunctionalTester $I) { $I->waitForElementNotVisible('.MuiDialog-scrollPaper'); $I->click('Save'); $I->canSee('has been updated'); - $I->canSee('Foo Bar News', '.news.node--layout-stanford-card'); + $I->canSee('Foo Bar News', '.su-card.su-news-vertical-teaser'); } /** diff --git a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/dist/css/ckeditor.css b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/dist/css/ckeditor.css index 6fbd3a908..8afbde10b 100644 --- a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/dist/css/ckeditor.css +++ b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/dist/css/ckeditor.css @@ -1 +1 @@ -.su-wysiwyg-text .tablesaw-cell-content,.su-wysiwyg-text p,body .tablesaw-cell-content,body p{font-size:2.1rem}.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text .tablesaw-cell-content.su-intro-text,.su-wysiwyg-text p.sdss-display-text,.su-wysiwyg-text p.su-intro-text,body .tablesaw-cell-content.sdss-display-text,body .tablesaw-cell-content.su-intro-text,body p.sdss-display-text,body p.su-intro-text{font-size:1.5625em;letter-spacing:-.012em;font-weight:400}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{color:#014240;font-weight:400;letter-spacing:-.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{font-size:3.2rem;line-height:40px}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{font-size:4.8rem;line-height:60px}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{font-size:6.4rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text,body .tablesaw-cell-content.sdss-block-quote--med,body .tablesaw-cell-content.su-quote-text,body p.sdss-block-quote--med,body p.su-quote-text{font-family:"Source Serif Pro",Georgia,Times,Times New Roman,serif;font-size:1.953125em;letter-spacing:-.016em;color:#014240;font-weight:400;font-style:italic;letter-spacing:-.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text,body .tablesaw-cell-content.sdss-block-quote--med,body .tablesaw-cell-content.su-quote-text,body p.sdss-block-quote--med,body p.su-quote-text{font-size:1.66015625em}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-weight:400;font-style:italic;letter-spacing:.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-size:1.8rem;line-height:130%}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-size:1.8rem;line-height:130%}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-size:2.4rem;line-height:140%}}.su-wysiwyg-text .caption figcaption,body .caption figcaption{color:#53565a;font-size:1.8rem;font-style:normal;line-height:1.4;text-align:right;margin-bottom:1em}.su-wysiwyg-text .localist-widget h2 a,body .localist-widget h2 a{color:#014240}.su-wysiwyg-text .localist-widget h2 a:active,.su-wysiwyg-text .localist-widget h2 a:focus,.su-wysiwyg-text .localist-widget h2 a:hover,body .localist-widget h2 a:active,body .localist-widget h2 a:focus,body .localist-widget h2 a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-wysiwyg-text .localist-widget h2 a:active svg.mailto,.su-wysiwyg-text .localist-widget h2 a:focus svg.mailto,.su-wysiwyg-text .localist-widget h2 a:hover svg.mailto,body .localist-widget h2 a:active svg.mailto,body .localist-widget h2 a:focus svg.mailto,body .localist-widget h2 a:hover svg.mailto{fill:#000}.su-wysiwyg-text .localist-widget h2 a:active:after,.su-wysiwyg-text .localist-widget h2 a:focus:after,.su-wysiwyg-text .localist-widget h2 a:hover:after,body .localist-widget h2 a:active:after,body .localist-widget h2 a:focus:after,body .localist-widget h2 a:hover:after{background-color:transparent} \ No newline at end of file +.su-wysiwyg-text .tablesaw-cell-content,.su-wysiwyg-text p,body .tablesaw-cell-content,body p{font-size:2.1rem}.su-wysiwyg-text .tablesaw-cell-content.su-intro-text,.su-wysiwyg-text p.su-intro-text,body .tablesaw-cell-content.su-intro-text,body p.su-intro-text{font-size:1.5625em;letter-spacing:-.012em;font-weight:400}.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text p.sdss-display-text,body .tablesaw-cell-content.sdss-display-text,body p.sdss-display-text{font-size:1.5625em;letter-spacing:-.012em;color:#014240;font-weight:400;line-height:120%}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text p.sdss-display-text,body .tablesaw-cell-content.sdss-display-text,body p.sdss-display-text{font-size:5.2rem;line-height:169%}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text p.sdss-display-text,body .tablesaw-cell-content.sdss-display-text,body p.sdss-display-text{font-size:8rem;line-height:110%}}@media (min-width:1500px){.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text p.sdss-display-text,body .tablesaw-cell-content.sdss-display-text,body p.sdss-display-text{font-size:8.8rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{font-family:"Source Serif Pro",Georgia,Times,Times New Roman,serif;color:#014240;font-weight:400;font-style:italic;letter-spacing:-.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{font-size:3.7rem;line-height:40px}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{font-size:5.1rem;line-height:60px}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{font-size:5.1rem;line-height:120%}}@media only screen and (min-width:1500px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash,body .tablesaw-cell-content.sdss-block-quote--big,body .tablesaw-cell-content.su-font-splash,body p.sdss-block-quote--big,body p.su-font-splash{font-size:5.6rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text,body .tablesaw-cell-content.sdss-block-quote--med,body .tablesaw-cell-content.su-quote-text,body p.sdss-block-quote--med,body p.su-quote-text{font-family:"Source Serif Pro",Georgia,Times,Times New Roman,serif;font-size:1.953125em;letter-spacing:-.016em;color:#014240;font-weight:400;font-style:italic;letter-spacing:-.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text,body .tablesaw-cell-content.sdss-block-quote--med,body .tablesaw-cell-content.su-quote-text,body p.sdss-block-quote--med,body p.su-quote-text{font-size:1.66015625em;font-size:3.1rem;line-height:40px}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text,body .tablesaw-cell-content.sdss-block-quote--med,body .tablesaw-cell-content.su-quote-text,body p.sdss-block-quote--med,body p.su-quote-text{font-size:4.1rem;line-height:60px}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text,body .tablesaw-cell-content.sdss-block-quote--med,body .tablesaw-cell-content.su-quote-text,body p.sdss-block-quote--med,body p.su-quote-text{font-size:4.1rem;line-height:120%}}@media only screen and (min-width:1500px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text,body .tablesaw-cell-content.sdss-block-quote--med,body .tablesaw-cell-content.su-quote-text,body p.sdss-block-quote--med,body p.su-quote-text{font-size:4.5rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-family:"Source Serif Pro",Georgia,Times,Times New Roman,serif;color:#014240;font-weight:400;font-style:italic;letter-spacing:.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-size:2.2rem;line-height:130%}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-size:2.6rem;line-height:130%}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-size:2.6rem;line-height:140%}}@media only screen and (min-width:1500px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text,body .tablesaw-cell-content.sdss-block-quote--sm,body .tablesaw-cell-content.su-callout-text,body p.sdss-block-quote--sm,body p.su-callout-text{font-size:2.8rem;line-height:120%}}.su-wysiwyg-text .caption figcaption,body .caption figcaption{color:#53565a;font-size:1.8rem;font-style:normal;line-height:1.4;text-align:right;margin-bottom:1em}.su-wysiwyg-text .localist-widget h2 a,body .localist-widget h2 a{color:#014240}.su-wysiwyg-text .localist-widget h2 a:active,.su-wysiwyg-text .localist-widget h2 a:focus,.su-wysiwyg-text .localist-widget h2 a:hover,body .localist-widget h2 a:active,body .localist-widget h2 a:focus,body .localist-widget h2 a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-wysiwyg-text .localist-widget h2 a:active svg.mailto,.su-wysiwyg-text .localist-widget h2 a:focus svg.mailto,.su-wysiwyg-text .localist-widget h2 a:hover svg.mailto,body .localist-widget h2 a:active svg.mailto,body .localist-widget h2 a:focus svg.mailto,body .localist-widget h2 a:hover svg.mailto{fill:#000}.su-wysiwyg-text .localist-widget h2 a:active:after,.su-wysiwyg-text .localist-widget h2 a:focus:after,.su-wysiwyg-text .localist-widget h2 a:hover:after,body .localist-widget h2 a:active:after,body .localist-widget h2 a:focus:after,body .localist-widget h2 a:hover:after{background-color:transparent} \ No newline at end of file diff --git a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/dist/css/sdss_subtheme.css b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/dist/css/sdss_subtheme.css index c5c8a778b..4abc0ff80 100644 --- a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/dist/css/sdss_subtheme.css +++ b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/dist/css/sdss_subtheme.css @@ -1 +1 @@ -.js-pager__items .pager__item .button,.sdss-wrapper--button-green .su-card__button .su-button,.stanford-events .more-link a,.su-button,.su-button.su-link,.system-main-block form .su-button,[type=button],[type=image],[type=reset],[type=submit],button,div a.su-button,div a.su-button--big,div a.su-button--big.su-link,div a.su-button.su-link,div a.su-link--external.su-button,div a.su-link--external.su-button--big{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer;display:inline-block;border:0;font-size:2rem;font-weight:400;line-height:1;text-align:center;text-decoration:none;width:auto;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out}.js-pager__items .pager__item .button a,.sdss-wrapper--button-green .su-card__button .su-button a,.stanford-events .more-link a a,.su-button.su-link a,.su-button a,.system-main-block form .su-button a,[type=button] a,[type=image] a,[type=reset] a,[type=submit] a,button a,div a.su-button--big.su-link a,div a.su-button--big a,div a.su-button.su-link a,div a.su-button a,div a.su-link--external.su-button--big a,div a.su-link--external.su-button a{font-weight:400;text-decoration:none}.js-pager__items .pager__item .button:active,.js-pager__items .pager__item .button:focus,.js-pager__items .pager__item .button:hover,.sdss-wrapper--button-green .su-card__button .su-button:active,.sdss-wrapper--button-green .su-card__button .su-button:focus,.sdss-wrapper--button-green .su-card__button .su-button:hover,.stanford-events .more-link a:active,.stanford-events .more-link a:focus,.stanford-events .more-link a:hover,.su-button:active,.su-button:focus,.su-button:hover,.system-main-block form .su-button:active,.system-main-block form .su-button:focus,.system-main-block form .su-button:hover,:active[type=button],:active[type=image],:active[type=reset],:active[type=submit],:focus[type=button],:focus[type=image],:focus[type=reset],:focus[type=submit],:hover[type=button],:hover[type=image],:hover[type=reset],:hover[type=submit],button:active,button:focus,button:hover,div a.su-button--big:active,div a.su-button--big:focus,div a.su-button--big:hover,div a.su-button.su-link:active,div a.su-button.su-link:focus,div a.su-button.su-link:hover,div a.su-link--external.su-button:active,div a.su-link--external.su-button:focus,div a.su-link--external.su-button:hover{text-decoration:underline}.content .paragraph-item{margin-bottom:3.4rem}@media only screen and (min-width:768px){.content .paragraph-item{margin-bottom:5.8rem}}@media only screen and (min-width:1500px){.content .paragraph-item{margin-bottom:6.1rem}}.content .sdss-drop-paragraph-margin .paragraph-item,.content .sdss-drop-paragraph-margin .su-component{margin-bottom:0}.sdss-banner-wrapper--headline-center .su-hero__card{margin:0 auto}.main-region .node-stanford-page-su-page-banner,.paragraph-item.ptype-stanford-banner{margin-bottom:0}.sdss-banner-wrapper--default{z-index:1;position:relative}.sdss-banner-wrapper--default .su-hero__media{background:-webkit-gradient(linear,left top,left bottom,color-stop(50%,rgba(46,45,41,0)),color-stop(90%,#1c1b19));background:linear-gradient(180deg,rgba(46,45,41,0) 50%,#1c1b19 90%)}.sdss-banner-wrapper--default picture{position:relative;z-index:-1;display:block}.sdss-banner-wrapper--default .su-hero{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.sdss-banner-wrapper--default .su-hero .su-hero__card{background:transparent;border:0;bottom:0;-webkit-box-shadow:none;box-shadow:none;margin-top:unset;margin-bottom:0;max-width:94%;top:auto}.sdss-banner-wrapper--default .su-hero .su-hero__card .su-card__contents{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding-bottom:12px}.sdss-banner-wrapper--default .su-hero .su-hero__card .su-card__contents h2{color:#fff;margin-top:0}.sdss-banner-wrapper--default .su-hero .su-hero__card .su-card__contents .su-card__button{margin-top:unset;margin-bottom:unset}@media (max-width:767px){.sdss-banner-wrapper--default .su-hero .su-hero__card{background:#1c1b19;max-width:100%}.sdss-banner-wrapper--default .su-hero .su-hero__card .su-card__contents{display:block}}.sdss-banner-wrapper--height-default .su-hero,.sdss-banner-wrapper--height-default .su-hero__media{min-height:520px}.sdss-banner-wrapper--height-modest .su-hero,.sdss-banner-wrapper--height-modest .su-hero__media{min-height:350px}.sdss-banner-wrapper--height-minimal .su-hero,.sdss-banner-wrapper--height-minimal .su-hero__media{min-height:250px}@media (max-width:767px){.sdss-banner-wrapper--height-default .su-hero,.sdss-banner-wrapper--height-default .su-hero__media,.sdss-banner-wrapper--height-minimal .su-hero,.sdss-banner-wrapper--height-minimal .su-hero__media,.sdss-banner-wrapper--height-modest .su-hero,.sdss-banner-wrapper--height-modest .su-hero__media{min-height:unset}}.su-basic-page-types-list .su-basic-page-list__title a{color:#014240;outline-color:#014240;font-weight:400;text-decoration:none}@supports ((-webkit-mask-repeat:no-repeat) or (mask-repeat:no-repeat)){.su-basic-page-types-list .su-basic-page-list__title a:after{height:.5em;width:.5em;display:inline-block;content:"";-webkit-mask:url(../assets/svg/caret-right.svg) no-repeat 0 0;mask:url(../assets/svg/caret-right.svg) no-repeat 0 0;-webkit-mask-size:contain;mask-size:contain}.su-basic-page-types-list .su-basic-page-list__title a:focus:after,.su-basic-page-types-list .su-basic-page-list__title a:hover:after{background-color:#2e2d29}.su-basic-page-types-list .su-basic-page-list__title a:after{margin-right:.3em;margin-bottom:.06em;margin-left:.4em;background-color:#006cb8;-webkit-transition:-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out;transition:-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out;transition:transform .2s ease-in-out,mask-image .2s ease-in-out;transition:transform .2s ease-in-out,mask-image .2s ease-in-out,-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out}.su-basic-page-types-list .su-basic-page-list__title a:focus:after,.su-basic-page-types-list .su-basic-page-list__title a:hover:after{-webkit-transform:translateX(.2em);transform:translateX(.2em)}}.su-basic-page-types-list .su-basic-page-list__title a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-basic-page-types-list .su-basic-page-list__title a:hover svg.mailto{fill:#000}.su-basic-page-types-list .su-basic-page-list__title a:hover:after{background-color:#000}.su-basic-page-types-list .su-basic-page-list__title a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-basic-page-types-list .su-basic-page-list__title a:focus:after{background-color:#000}.su-basic-page-types-list .su-basic-page-list__title a:active{color:#2e2d29}.su-basic-page-types-list .su-basic-page-list__title a:active:after{background-color:#000}.su-basic-page-types-list .su-basic-page-list__title a.mailto svg{fill:#014240}.su-basic-page-types-list .su-basic-page-list__title a:after{background-color:#014240}.su-button,.su-button.su-link,[type=button],[type=image],[type=reset],[type=submit],button{background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}.su-button.su-link:after,.su-button.su-link:before,.su-button:after,.su-button:before,[type=button]:after,[type=button]:before,[type=image]:after,[type=image]:before,[type=reset]:after,[type=reset]:before,[type=submit]:after,[type=submit]:before,button:after,button:before{background-color:#fff;color:#b1040e}.su-button.su-link:focus,.su-button.su-link:hover,.su-button:focus,.su-button:hover,[type=button]:focus,[type=button]:hover,[type=image]:focus,[type=image]:hover,[type=reset]:focus,[type=reset]:hover,[type=submit]:focus,[type=submit]:hover,button:focus,button:hover{background-color:#2e2d29;color:#fff}.su-button.su-link:focus:after,.su-button.su-link:focus:before,.su-button.su-link:hover:after,.su-button.su-link:hover:before,.su-button:focus:after,.su-button:focus:before,.su-button:hover:after,.su-button:hover:before,[type=button]:focus:after,[type=button]:focus:before,[type=button]:hover:after,[type=button]:hover:before,[type=image]:focus:after,[type=image]:focus:before,[type=image]:hover:after,[type=image]:hover:before,[type=reset]:focus:after,[type=reset]:focus:before,[type=reset]:hover:after,[type=reset]:hover:before,[type=submit]:focus:after,[type=submit]:focus:before,[type=submit]:hover:after,[type=submit]:hover:before,button:focus:after,button:focus:before,button:hover:after,button:hover:before{background-color:#fff}.su-button.su-link:focus,.su-button:focus,[type=button]:focus,[type=image]:focus,[type=reset]:focus,[type=submit]:focus,button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.su-button.su-link:hover,.su-button:hover,[type=button]:hover,[type=image]:hover,[type=reset]:hover,[type=submit]:hover,button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.su-button.su-link:hover svg.mailto,.su-button:hover svg.mailto,[type=button]:hover svg.mailto,[type=image]:hover svg.mailto,[type=reset]:hover svg.mailto,[type=submit]:hover svg.mailto,button:hover svg.mailto{fill:#000}.su-button.su-link:hover:after,.su-button:hover:after,[type=button]:hover:after,[type=image]:hover:after,[type=reset]:hover:after,[type=submit]:hover:after,button:hover:after{background-color:#000}.su-button.su-link:focus,.su-button:focus,[type=button]:focus,[type=image]:focus,[type=reset]:focus,[type=submit]:focus,button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.su-button.su-link:focus:after,.su-button:focus:after,[type=button]:focus:after,[type=image]:focus:after,[type=reset]:focus:after,[type=submit]:focus:after,button:focus:after{background-color:#014240}.su-button.su-link:active,.su-button:active,[type=button]:active,[type=image]:active,[type=reset]:active,[type=submit]:active,button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.su-button.su-link:active:after,.su-button:active:after,[type=button]:active:after,[type=image]:active:after,[type=reset]:active:after,[type=submit]:active:after,button:active:after{background-color:#fff}.su-button.su-link:after,.su-button:after,[type=button]:after,[type=image]:after,[type=reset]:after,[type=submit]:after,button:after{background-color:#000}@media only screen and (min-width:768px){.su-button,.su-button.su-link,[type=button],[type=image],[type=reset],[type=submit],button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){.su-button,.su-button.su-link,[type=button],[type=image],[type=reset],[type=submit],button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}div a.su-button,div a.su-button.su-link,div a.su-link--external.su-button{background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}div a.su-button.su-link:after,div a.su-button.su-link:before,div a.su-button:after,div a.su-button:before,div a.su-link--external.su-button:after,div a.su-link--external.su-button:before{background-color:#fff;color:#b1040e}div a.su-button.su-link:focus,div a.su-button.su-link:hover,div a.su-button:focus,div a.su-button:hover,div a.su-link--external.su-button:focus,div a.su-link--external.su-button:hover{background-color:#2e2d29;color:#fff}div a.su-button.su-link:focus:after,div a.su-button.su-link:focus:before,div a.su-button.su-link:hover:after,div a.su-button.su-link:hover:before,div a.su-button:focus:after,div a.su-button:focus:before,div a.su-button:hover:after,div a.su-button:hover:before,div a.su-link--external.su-button:focus:after,div a.su-link--external.su-button:focus:before,div a.su-link--external.su-button:hover:after,div a.su-link--external.su-button:hover:before{background-color:#fff}div a.su-button.su-link:focus,div a.su-button:focus,div a.su-link--external.su-button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}div a.su-button.su-link:hover,div a.su-button:hover,div a.su-link--external.su-button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}div a.su-button.su-link:hover svg.mailto,div a.su-button:hover svg.mailto,div a.su-link--external.su-button:hover svg.mailto{fill:#000}div a.su-button.su-link:hover:after,div a.su-button:hover:after,div a.su-link--external.su-button:hover:after{background-color:#000}div a.su-button.su-link:focus,div a.su-button:focus,div a.su-link--external.su-button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}div a.su-button.su-link:focus:after,div a.su-button:focus:after,div a.su-link--external.su-button:focus:after{background-color:#014240}div a.su-button.su-link:active,div a.su-button:active,div a.su-link--external.su-button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}div a.su-button.su-link:active:after,div a.su-button:active:after,div a.su-link--external.su-button:active:after{background-color:#fff}div a.su-button.su-link:after,div a.su-button:after,div a.su-link--external.su-button:after{background-color:#000}@media only screen and (min-width:768px){div a.su-button,div a.su-button.su-link,div a.su-link--external.su-button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){div a.su-button,div a.su-button.su-link,div a.su-link--external.su-button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}div a.su-button--secondary,div a.su-link--external.su-button--secondary{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#014240;border:1px solid #014240;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;padding:.375em 2rem .8rem}div a.su-button--secondary:hover,div a.su-link--external.su-button--secondary:hover{background:#fff;-webkit-box-shadow:0 8px 25px rgba(0,0,0,.14);box-shadow:0 8px 25px rgba(0,0,0,.14);color:#014240;cursor:pointer;text-decoration:underline}div a.su-button--secondary:hover svg.mailto,div a.su-link--external.su-button--secondary:hover svg.mailto{fill:#000}div a.su-button--secondary:hover:after,div a.su-link--external.su-button--secondary:hover:after{background-color:#000}div a.su-button--secondary:focus,div a.su-link--external.su-button--secondary:focus{outline:3px solid #014240;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}div a.su-button--secondary:focus:after,div a.su-link--external.su-button--secondary:focus:after{background-color:#014240}div a.su-button--secondary:active,div a.su-link--external.su-button--secondary:active{background-color:#014240;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}div a.su-button--secondary:active:after,div a.su-link--external.su-button--secondary:active:after{background-color:#fff}div a.su-button--secondary:after,div a.su-link--external.su-button--secondary:after{background-color:#014240}@media only screen and (min-width:768px){div a.su-button--secondary,div a.su-link--external.su-button--secondary{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){div a.su-button--secondary,div a.su-link--external.su-button--secondary{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}div a.su-button--secondary-neg,div a.su-link--external.su-button--secondary-neg{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#fff;border:1px solid #fff;text-decoration:none;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;padding:.375em 2rem .8rem}div a.su-button--secondary-neg:hover,div a.su-link--external.su-button--secondary-neg:hover{background:#155f65;border:1px solid #155f65;color:#fff;cursor:pointer;text-decoration:underline}div a.su-button--secondary-neg:hover svg.mailto,div a.su-link--external.su-button--secondary-neg:hover svg.mailto{fill:#fff}div a.su-button--secondary-neg:hover:after,div a.su-link--external.su-button--secondary-neg:hover:after{background-color:#fff}div a.su-button--secondary-neg:focus,div a.su-link--external.su-button--secondary-neg:focus{outline:3px solid #fff;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;text-decoration:underline}div a.su-button--secondary-neg:focus:after,div a.su-link--external.su-button--secondary-neg:focus:after{background-color:#fff}div a.su-button--secondary-neg:active,div a.su-link--external.su-button--secondary-neg:active{background-color:#fff;color:#014240;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}div a.su-button--secondary-neg:active:after,div a.su-link--external.su-button--secondary-neg:active:after{background-color:#014240}div a.su-button--secondary-neg:after,div a.su-link--external.su-button--secondary-neg:after{background-color:#fff}@media only screen and (min-width:768px){div a.su-button--secondary-neg,div a.su-link--external.su-button--secondary-neg{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){div a.su-button--secondary-neg,div a.su-link--external.su-button--secondary-neg{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{background-color:#b1040e;color:#fff;font-size:2.5rem;background:#b1ef89;border-radius:3.5rem;color:#000;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}div a.su-button--big.su-link:after,div a.su-button--big.su-link:before,div a.su-button--big:after,div a.su-button--big:before,div a.su-link--external.su-button--big:after,div a.su-link--external.su-button--big:before{background-color:#fff;color:#b1040e}div a.su-button--big.su-link:focus,div a.su-button--big.su-link:hover,div a.su-button--big:focus,div a.su-button--big:hover,div a.su-link--external.su-button--big:focus,div a.su-link--external.su-button--big:hover{background-color:#2e2d29;color:#fff}div a.su-button--big.su-link:focus:after,div a.su-button--big.su-link:focus:before,div a.su-button--big.su-link:hover:after,div a.su-button--big.su-link:hover:before,div a.su-button--big:focus:after,div a.su-button--big:focus:before,div a.su-button--big:hover:after,div a.su-button--big:hover:before,div a.su-link--external.su-button--big:focus:after,div a.su-link--external.su-button--big:focus:before,div a.su-link--external.su-button--big:hover:after,div a.su-link--external.su-button--big:hover:before{background-color:#fff}div a.su-button--big.su-link:focus,div a.su-button--big:focus,div a.su-link--external.su-button--big:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}@media only screen and (min-width:768px){div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{padding:1.5rem 3rem 1.8rem;font-size:2.8rem}}@media only screen and (min-width:1500px){div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{font-size:3rem}}div a.su-button--big.su-link:hover,div a.su-button--big:hover,div a.su-link--external.su-button--big:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}div a.su-button--big.su-link:hover svg.mailto,div a.su-button--big:hover svg.mailto,div a.su-link--external.su-button--big:hover svg.mailto{fill:#000}div a.su-button--big.su-link:hover:after,div a.su-button--big:hover:after,div a.su-link--external.su-button--big:hover:after{background-color:#000}div a.su-button--big.su-link:focus,div a.su-button--big:focus,div a.su-link--external.su-button--big:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}div a.su-button--big.su-link:focus:after,div a.su-button--big:focus:after,div a.su-link--external.su-button--big:focus:after{background-color:#014240}div a.su-button--big.su-link:active,div a.su-button--big:active,div a.su-link--external.su-button--big:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}div a.su-button--big.su-link:active:after,div a.su-button--big:active:after,div a.su-link--external.su-button--big:active:after{background-color:#fff}div a.su-button--big.su-link:after,div a.su-button--big:after,div a.su-link--external.su-button--big:after{background-color:#000}@media only screen and (min-width:768px){div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}.sdss-wrapper--secondary-button .su-card__button .su-button{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#014240;border:1px solid #014240;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;padding:.375em 2rem .8rem}.sdss-wrapper--secondary-button .su-card__button .su-button:hover{background:#fff;-webkit-box-shadow:0 8px 25px rgba(0,0,0,.14);box-shadow:0 8px 25px rgba(0,0,0,.14);color:#014240;cursor:pointer;text-decoration:underline}.sdss-wrapper--secondary-button .su-card__button .su-button:hover svg.mailto{fill:#000}.sdss-wrapper--secondary-button .su-card__button .su-button:hover:after{background-color:#000}.sdss-wrapper--secondary-button .su-card__button .su-button:focus{outline:3px solid #014240;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.sdss-wrapper--secondary-button .su-card__button .su-button:focus:after{background-color:#014240}.sdss-wrapper--secondary-button .su-card__button .su-button:active{background-color:#014240;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.sdss-wrapper--secondary-button .su-card__button .su-button:active:after{background-color:#fff}.sdss-wrapper--secondary-button .su-card__button .su-button:after{background-color:#014240}@media only screen and (min-width:768px){.sdss-wrapper--secondary-button .su-card__button .su-button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){.sdss-wrapper--secondary-button .su-card__button .su-button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}.sdss-wrapper--button-green .su-card__button .su-button{background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}.sdss-wrapper--button-green .su-card__button .su-button:after,.sdss-wrapper--button-green .su-card__button .su-button:before{background-color:#fff;color:#b1040e}.sdss-wrapper--button-green .su-card__button .su-button:focus,.sdss-wrapper--button-green .su-card__button .su-button:hover{background-color:#2e2d29;color:#fff}.sdss-wrapper--button-green .su-card__button .su-button:focus:after,.sdss-wrapper--button-green .su-card__button .su-button:focus:before,.sdss-wrapper--button-green .su-card__button .su-button:hover:after,.sdss-wrapper--button-green .su-card__button .su-button:hover:before{background-color:#fff}.sdss-wrapper--button-green .su-card__button .su-button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.sdss-wrapper--button-green .su-card__button .su-button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.sdss-wrapper--button-green .su-card__button .su-button:hover svg.mailto{fill:#000}.sdss-wrapper--button-green .su-card__button .su-button:hover:after{background-color:#000}.sdss-wrapper--button-green .su-card__button .su-button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.sdss-wrapper--button-green .su-card__button .su-button:focus:after{background-color:#014240}.sdss-wrapper--button-green .su-card__button .su-button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.sdss-wrapper--button-green .su-card__button .su-button:active:after{background-color:#fff}.sdss-wrapper--button-green .su-card__button .su-button:after{background-color:#000}@media only screen and (min-width:768px){.sdss-wrapper--button-green .su-card__button .su-button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){.sdss-wrapper--button-green .su-card__button .su-button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}.js-pager__items .pager__item .button{background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}.js-pager__items .pager__item .button:after,.js-pager__items .pager__item .button:before{background-color:#fff;color:#b1040e}.js-pager__items .pager__item .button:focus,.js-pager__items .pager__item .button:hover{background-color:#2e2d29;color:#fff}.js-pager__items .pager__item .button:focus:after,.js-pager__items .pager__item .button:focus:before,.js-pager__items .pager__item .button:hover:after,.js-pager__items .pager__item .button:hover:before{background-color:#fff}.js-pager__items .pager__item .button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.js-pager__items .pager__item .button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.js-pager__items .pager__item .button:hover svg.mailto{fill:#000}.js-pager__items .pager__item .button:hover:after{background-color:#000}.js-pager__items .pager__item .button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.js-pager__items .pager__item .button:focus:after{background-color:#014240}.js-pager__items .pager__item .button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.js-pager__items .pager__item .button:active:after{background-color:#fff}.js-pager__items .pager__item .button:after{background-color:#000}@media only screen and (min-width:768px){.js-pager__items .pager__item .button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){.js-pager__items .pager__item .button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}.ds-entity--stanford-page .su-card .su-card__contents a{color:#014240;outline-color:#014240;font-weight:400}.ds-entity--stanford-page .su-card .su-card__contents a:hover{color:#000;cursor:pointer;text-decoration:underline}.ds-entity--stanford-page .su-card .su-card__contents a:hover svg.mailto{fill:#000}.ds-entity--stanford-page .su-card .su-card__contents a:hover:after{background-color:#000}.ds-entity--stanford-page .su-card .su-card__contents a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.ds-entity--stanford-page .su-card .su-card__contents a:focus:after{background-color:#000}.ds-entity--stanford-page .su-card .su-card__contents a:active{color:#2e2d29}.ds-entity--stanford-page .su-card .su-card__contents a:active:after{background-color:#000}.ds-entity--stanford-page .su-card .su-card__contents a:after{background-color:#014240}.ds-entity--stanford-page .su-card .su-card__contents a.mailto svg{fill:#014240}.su-card{background-color:transparent}@media (max-width:767px){.su-card figure,.su-card img{display:block}}.su-card .su-card__contents>span{text-transform:uppercase}@media (min-width:992px){.su-card .su-card__contents>span{font-size:24px}}@media (max-width:991px){.su-card .su-card__contents>span{font-size:16px}}@media (max-width:767px){.su-card .su-card__contents h2{font-size:40px}}@media (max-width:991px){.su-card .su-card__contents h2{font-size:44px}}@media (min-width:992px){.su-card .su-card__contents h2{font-size:56px}}.sdss-card-wrapper--topic article.su-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sdss-card-wrapper--topic .su-card__headline{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.sdss-card-wrapper--topic .image{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.sdss-card-wrapper--topic section.su-card__contents{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.sdss-card-wrapper--stat article.su-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sdss-card-wrapper--stat .su-card__headline{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.sdss-card-wrapper--stat .image{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.sdss-card-wrapper--stat section.su-card__contents{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.sdss-card-wrapper--icon article.su-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sdss-card-wrapper--icon .su-card__headline{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.sdss-card-wrapper--icon .image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.sdss-card-wrapper--icon section.su-card__contents{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.sdss-card-wrapper--title article.su-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sdss-card-wrapper--title .su-card__headline{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.sdss-card-wrapper--title .image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.sdss-card-wrapper--title section.su-card__contents{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.sdss-card-wrapper--default.sdss-card-wrapper--border-none article.su-card{-webkit-box-shadow:none;box-shadow:none;border:none}.sdss-card-wrapper--default.sdss-card-wrapper--white-border article.su-card{background:#fff;-webkit-box-shadow:none;box-shadow:none}.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow article.su-card,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow article.su-card{border:1px solid #edefef}.sdss-card-wrapper--default.sdss-card-wrapper--white-border article.su-card{background-color:#fff;border:1px solid #edefef}.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline{padding-left:2rem}@media only screen and (min-width:768px){.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline{padding-left:2.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline{padding-left:2.7rem}}.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow article.su-card{background-color:#edefef;-webkit-box-shadow:0 8px 24px rgba(0,0,0,.05);box-shadow:0 8px 24px rgba(0,0,0,.05)}.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow article.su-card{background-color:#fff;-webkit-box-shadow:0 8px 24px rgba(0,0,0,.05);box-shadow:0 8px 24px rgba(0,0,0,.05)}.su-row-bgcolor--green .su-card .su-card__headline{color:#fff}.sdss-card-wrapper--icon .su-card{padding:3rem 2rem;text-align:center}@media only screen and (min-width:768px){.sdss-card-wrapper--icon .su-card{padding:3.6rem 2.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--icon .su-card{padding:3.8rem 2.7rem}}.sdss-card-wrapper--icon .su-card .su-card__contents{padding-bottom:0;padding-top:0}.sdss-card-wrapper--icon .su-card .su-card__contents p{font-size:2rem;line-height:150%}.sdss-card-wrapper--icon .su-card .su-card__headline{padding-top:2rem;font-weight:700}@media only screen and (min-width:768px){.sdss-card-wrapper--icon .su-card .su-card__headline{padding-top:2.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--icon .su-card .su-card__headline{padding-top:2.7rem}}@media (max-width:767px){.sdss-card-wrapper--icon .su-card .su-card__headline{font-size:2.1rem;line-height:130%}}@media (min-width:768px){.sdss-card-wrapper--icon .su-card .su-card__headline{font-size:2.6rem;line-height:130%}}@media (min-width:992px){.sdss-card-wrapper--icon .su-card .su-card__headline{font-size:2.6rem;line-height:130%}}.sdss-card-wrapper--icon .su-card .su-card__button{margin-bottom:0}.su-card.su-card--person{border:0;-webkit-box-shadow:none;box-shadow:none}.su-card.su-card--person .su-person-photo{padding-bottom:0}.su-card.su-card--person .su-card__headline{margin-bottom:0}.su-card.su-card--person .su-card__contents{padding:0}.su-row-bgcolor--green-stat>div,.su-row-bgcolor--green>div{color:#fff;background-color:#014240}.su-row-bgcolor--green-stat .paragraph-item{border-left:1px solid #fff}.su-row-bgcolor--green-stat .paragraph-item:first-child{border-left:none}.sdss-card-wrapper--stat .su-card{padding-top:3rem;-webkit-box-shadow:none;box-shadow:none;border:none;color:#fff;background-color:#014240}@media only screen and (min-width:768px){.sdss-card-wrapper--stat .su-card{padding-top:3.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--stat .su-card{padding-top:3.8rem}}.sdss-card-wrapper--stat .su-card section.su-card__contents{padding-bottom:0;padding-top:0}.sdss-card-wrapper--stat .su-card .su-card__superheadline{font-size:1.5625em;letter-spacing:-.012em;font-weight:400}.sdss-card-wrapper--stat .su-card>.su-card__headline{padding-left:3rem;padding-right:3rem}@media (max-width:767px){.sdss-card-wrapper--stat .su-card>.su-card__headline{font-size:3.1rem;line-height:120%}}@media (min-width:768px){.sdss-card-wrapper--stat .su-card>.su-card__headline{font-size:4.1rem;line-height:120%}}@media (min-width:992px){.sdss-card-wrapper--stat .su-card>.su-card__headline{font-size:4.1rem;line-height:120%}}@media only screen and (min-width:768px){.sdss-card-wrapper--stat .su-card>.su-card__headline{padding-left:3.6rem;padding-right:3.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--stat .su-card>.su-card__headline{padding-left:3.8rem;padding-right:3.8rem}}.sdss-card-wrapper--stat .su-card p{font-size:1.25em;letter-spacing:-.01em}.sdss-card-wrapper--title .su-card .su-card__contents{padding-left:0;padding-top:0}.sdss-card-wrapper--title .su-card .su-card__contents p{font-size:2rem;line-height:150%}.sdss-card-wrapper--title .su-card .su-card__contents a{margin-top:0}.sdss-card-wrapper--title .su-card .su-card__contents a.su-button{line-height:inherit}.sdss-card-wrapper--title .su-card .su-card__headline{padding-top:2rem;margin-bottom:0}@media (max-width:767px){.sdss-card-wrapper--title .su-card .su-card__headline{font-size:2.6rem;line-height:120%}}@media (min-width:768px){.sdss-card-wrapper--title .su-card .su-card__headline{font-size:3.2rem;line-height:120%}}@media (min-width:992px){.sdss-card-wrapper--title .su-card .su-card__headline{font-size:3.2rem;line-height:120%}}@media only screen and (min-width:768px){.sdss-card-wrapper--title .su-card .su-card__headline{padding-top:2.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--title .su-card .su-card__headline{padding-top:2.7rem}}.sdss-card-wrapper--topic .su-card .su-card__contents{padding-left:0}.sdss-card-wrapper--topic .su-card .su-card__contents p{font-size:2rem;line-height:150%}@media (max-width:767px){.sdss-card-wrapper--topic .su-card .su-card__headline{font-size:2.6rem;line-height:120%}}@media (min-width:768px){.sdss-card-wrapper--topic .su-card .su-card__headline{font-size:3.2rem;line-height:120%}}@media (min-width:992px){.sdss-card-wrapper--topic .su-card .su-card__headline{font-size:3.2rem;line-height:120%}}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card{border:0;-webkit-box-shadow:none;box-shadow:none}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a{color:#014240;outline-color:#014240;display:inline-block;color:#82817f;font-size:2rem;font-weight:400;text-transform:uppercase;text-decoration:none}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:hover{color:#000;cursor:pointer;text-decoration:underline}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:hover svg.mailto{fill:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:hover:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:focus:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:active{color:#2e2d29}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:active:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:after{background-color:#014240}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a.mailto svg{fill:#014240}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a{color:#014240;outline-color:#014240;font-weight:400;text-decoration:none}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:hover{color:#000;cursor:pointer;text-decoration:underline}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:hover svg.mailto{fill:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:hover:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:focus:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:active{color:#2e2d29}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:active:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:after{background-color:#014240}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a.mailto svg{fill:#014240}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__subheadline{display:none}.stanford-events .more-link a{padding:1rem 2rem 1.15rem;background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out}.stanford-events .more-link a:after,.stanford-events .more-link a:before{background-color:#fff;color:#b1040e}.stanford-events .more-link a:focus,.stanford-events .more-link a:hover{background-color:#2e2d29;color:#fff}.stanford-events .more-link a:focus:after,.stanford-events .more-link a:focus:before,.stanford-events .more-link a:hover:after,.stanford-events .more-link a:hover:before{background-color:#fff}.stanford-events .more-link a:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.stanford-events .more-link a:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.stanford-events .more-link a:hover svg.mailto{fill:#000}.stanford-events .more-link a:hover:after{background-color:#000}.stanford-events .more-link a:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.stanford-events .more-link a:focus:after{background-color:#014240}.stanford-events .more-link a:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.stanford-events .more-link a:active:after{background-color:#fff}.stanford-events .more-link a:after{background-color:#000}.section-editorial-content .su-event-type a{color:#014240;outline-color:#014240;font-size:.9em;display:inline-block;color:#82817f;font-weight:400;text-transform:uppercase;text-decoration:none}.section-editorial-content .su-event-type a:hover{color:#000;cursor:pointer;text-decoration:underline}.section-editorial-content .su-event-type a:hover svg.mailto{fill:#000}.section-editorial-content .su-event-type a:hover:after{background-color:#000}.section-editorial-content .su-event-type a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.section-editorial-content .su-event-type a:focus:after{background-color:#000}.section-editorial-content .su-event-type a:active{color:#2e2d29}.section-editorial-content .su-event-type a:active:after{background-color:#000}.section-editorial-content .su-event-type a:after{background-color:#014240}.section-editorial-content .su-event-type a.mailto svg{fill:#014240}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a{color:#014240;outline-color:#014240;font-size:.9em;display:inline-block;color:#82817f;font-weight:400;text-transform:uppercase;text-decoration:none}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:hover svg.mailto{fill:#000}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:hover:after{background-color:#000}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:focus:after{background-color:#000}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:active{color:#2e2d29}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:active:after{background-color:#000}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:after{background-color:#014240}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a.mailto svg{fill:#014240}.su-event-list-item{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:40px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.su-event-list-item .su-date-stacked{max-width:unset}.su-event-list-item .su-event-list-item__date{max-width:unset;margin-right:unset;margin-bottom:unset}.su-event-list-item .su-event-list-item__date .su-event-end-date,.su-event-list-item .su-event-list-item__date .su-event-end-month,.su-event-list-item .su-event-list-item__date .su-event-start-date,.su-event-list-item .su-event-list-item__date .su-event-start-month{font-weight:400;line-height:1}.su-event-list-item .su-date-stacked.su-date-stacked--no-background{background-color:#e9f7f8;border:1px solid #014240;border-radius:70px;width:110px;padding:20px}.su-event-list-item .su-event-list-item__details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.su-event-list-item .su-event-list-item__details .event-list-item__type{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.su-event-list-item .su-event-list-item__details .event-list-item__type a{color:#014240;outline-color:#014240;padding-top:1.5rem;padding-bottom:1.5rem;display:inline-block;color:#82817f;font-weight:400;text-transform:uppercase;text-decoration:none;font-size:2rem}.su-event-list-item .su-event-list-item__details .event-list-item__type a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-event-list-item .su-event-list-item__details .event-list-item__type a:hover svg.mailto{fill:#000}.su-event-list-item .su-event-list-item__details .event-list-item__type a:hover:after{background-color:#000}.su-event-list-item .su-event-list-item__details .event-list-item__type a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-event-list-item .su-event-list-item__details .event-list-item__type a:focus:after{background-color:#000}.su-event-list-item .su-event-list-item__details .event-list-item__type a:active{color:#2e2d29}.su-event-list-item .su-event-list-item__details .event-list-item__type a:active:after{background-color:#000}.su-event-list-item .su-event-list-item__details .event-list-item__type a:after{background-color:#014240}.su-event-list-item .su-event-list-item__details .event-list-item__type a.mailto svg{fill:#014240}@media only screen and (min-width:768px){.su-event-list-item .su-event-list-item__details .event-list-item__type a{padding-top:1.8rem}}@media only screen and (min-width:1500px){.su-event-list-item .su-event-list-item__details .event-list-item__type a{padding-top:1.9rem}}@media only screen and (min-width:768px){.su-event-list-item .su-event-list-item__details .event-list-item__type a{padding-bottom:1.8rem}}@media only screen and (min-width:1500px){.su-event-list-item .su-event-list-item__details .event-list-item__type a{padding-bottom:1.9rem}}.su-event-list-item .su-event-list-item__details h2>a{color:#014240;outline-color:#014240;font-weight:400;text-decoration:none}@supports ((-webkit-mask-repeat:no-repeat) or (mask-repeat:no-repeat)){.su-event-list-item .su-event-list-item__details h2>a:after{height:.5em;width:.5em;display:inline-block;content:"";-webkit-mask:url(../assets/svg/caret-right.svg) no-repeat 0 0;mask:url(../assets/svg/caret-right.svg) no-repeat 0 0;-webkit-mask-size:contain;mask-size:contain}.su-event-list-item .su-event-list-item__details h2>a:focus:after,.su-event-list-item .su-event-list-item__details h2>a:hover:after{background-color:#2e2d29}.su-event-list-item .su-event-list-item__details h2>a:after{margin-right:.3em;margin-bottom:.06em;margin-left:.4em;background-color:#006cb8;-webkit-transition:-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out;transition:-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out;transition:transform .2s ease-in-out,mask-image .2s ease-in-out;transition:transform .2s ease-in-out,mask-image .2s ease-in-out,-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out}.su-event-list-item .su-event-list-item__details h2>a:focus:after,.su-event-list-item .su-event-list-item__details h2>a:hover:after{-webkit-transform:translateX(.2em);transform:translateX(.2em)}}.su-event-list-item .su-event-list-item__details h2>a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-event-list-item .su-event-list-item__details h2>a:hover svg.mailto{fill:#000}.su-event-list-item .su-event-list-item__details h2>a:hover:after{background-color:#000}.su-event-list-item .su-event-list-item__details h2>a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-event-list-item .su-event-list-item__details h2>a:focus:after{background-color:#000}.su-event-list-item .su-event-list-item__details h2>a:active{color:#2e2d29}.su-event-list-item .su-event-list-item__details h2>a:active:after{background-color:#000}.su-event-list-item .su-event-list-item__details h2>a.mailto svg{fill:#014240}.su-event-list-item .su-event-list-item__details h2>a:after{background-color:#014240}.su-event-list-item .views-field-su-event-date-time span{padding-right:0}.su-event-list-item .date-icon:before{content:""}.su-event-card.su-card{border:none;-webkit-box-shadow:none;box-shadow:none}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a{color:#014240;outline-color:#014240;color:#82817f;font-size:2rem;font-weight:400;text-transform:uppercase;text-decoration:none}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:hover svg.mailto{fill:#000}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:hover:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:focus:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:active{color:#2e2d29}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:active:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:after{background-color:#014240}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a.mailto svg{fill:#014240}.su-event-card.su-card .su-event-list-item__details h2>a{color:#014240;outline-color:#014240;display:inline-block;text-decoration:none}.su-event-card.su-card .su-event-list-item__details h2>a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-event-card.su-card .su-event-list-item__details h2>a:hover svg.mailto{fill:#000}.su-event-card.su-card .su-event-list-item__details h2>a:hover:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details h2>a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-event-card.su-card .su-event-list-item__details h2>a:focus:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details h2>a:active{color:#2e2d29}.su-event-card.su-card .su-event-list-item__details h2>a:active:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details h2>a:after{background-color:#014240}.su-event-card.su-card .su-event-list-item__details h2>a.mailto svg{fill:#014240}.su-event-card.su-card .su-event-list-item__details .event-list-item__subheadline{display:none}.ptype-stanford-lists[data-react-columns="4"] .su-event-list-item__date,.ptype-stanford-lists[data-react-columns="6"] .su-event-list-item__date{margin-bottom:inherit}.su-row-bgcolor--green .su-event-card.su-card .su-event-list-item__details h2>a:focus:after,.su-row-bgcolor--green .su-event-card.su-card .su-event-list-item__details h2>a:hover:after{background-color:#fff}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details,.su-row-bgcolor--green .su-event-list-item h2{color:#fff}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a{color:#b1ef89}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a:active,.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a:focus,.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a:hover{color:#fff}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a:after{background-color:#b1ef89}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .event-list-item__type a{color:#e9f7f8;text-decoration:none}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .event-list-item__type a:active,.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .event-list-item__type a:focus,.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .event-list-item__type a:hover{color:#fff;text-decoration:underline}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .views-field-su-event-location>.map-icon:before{color:#fff}.su-brand-bar__container{display:-webkit-box;display:-ms-flexbox;display:flex}.su-brand-bar__container .su-brand-bar__logo{width:10%}.fixed-header.su-lockup--option-a .su-lockup__line5,.fixed-header.su-lockup--option-b .su-lockup__line5{display:none}@media (min-width:992px){.page-user-login .su-masthead>section:last-of-type{display:-ms-grid;display:grid;-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:"lockup lockup lockup" "main-nav main-nav search";-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.page-user-login .su-masthead{padding-bottom:0}.page-user-login .su-lockup--option-none section:after{background:transparent}.page-user-login .su-lockup--option-none .su-masthead{padding-top:1em}}.su-lockup--option-none .su-lockup__custom-logo{max-width:150px}.su-lockup--option-none.su-lockup{display:block}@media (min-width:992px){.su-lockup.su-lockup--option-none .su-masthead{margin:0 auto}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead{display:-ms-grid;display:grid;-ms-grid-columns:200px 1fr 40px;grid-template-columns:200px 1fr 40px;grid-template-areas:"lockup main-nav search";-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;background:#e9f7f8}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead .su-lockup{grid-area:lockup;background:#fff;width:175px;max-width:unset;padding:1em 0;margin-right:-20px;height:100%}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead #sdss-button--search-link{grid-area:search;width:32px;height:32px;position:relative;top:15px;right:unset;-ms-grid-row-align:center;align-self:center;background-color:#014240;border-radius:32px;left:8px}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead .su-multi-menu{grid-area:main-nav;background-color:#e9f7f8}.su-lockup.su-lockup--option-none .su-masthead nav+.su-site-search,.su-lockup.su-lockup--option-none .su-masthead ul li .su-site-search{display:none}.su-lockup.su-lockup--option-none .su-masthead .su-multi-menu__menu.su-multi-menu__menu-lv1{background-color:#e9f7f8}.su-lockup.su-lockup--option-none section{position:relative}.su-lockup.su-lockup--option-none section:after,.su-lockup.su-lockup--option-none section:before{content:"";position:absolute;top:0;bottom:0;width:9600px;right:100%;background:#fff}.su-lockup.su-lockup--option-none section:after{left:100%;background:#e9f7f8}}.su-lockup.su-lockup--option-none .su-brand-bar__container>span{display:none}.fixed-header.su-lockup.su-lockup--option-a,.fixed-header.su-lockup.su-lockup--option-b{display:unset}@media (min-width:992px){.fixed-header.su-lockup--option-a,.fixed-header.su-lockup--option-b{line-height:2em;padding:0}.fixed-header.su-lockup--option-a .su-lockup__cell1,.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell1,.fixed-header.su-lockup--option-b .su-lockup__cell2{border-right:0;border-left:0}.fixed-header.su-lockup--option-a .su-lockup__custom-logo,.fixed-header.su-lockup--option-b .su-lockup__custom-logo{max-width:166px}.fixed-header.su-lockup--option-a .su-lockup__cell1,.fixed-header.su-lockup--option-b .su-lockup__cell1{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;margin-right:30px;max-width:192px}.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell2{margin-right:30px}.fixed-header.su-lockup--option-a .su-lockup__line1,.fixed-header.su-lockup--option-a .su-lockup__line2,.fixed-header.su-lockup--option-b .su-lockup__line1,.fixed-header.su-lockup--option-b .su-lockup__line2{color:#fff}.fixed-header.su-lockup--option-a .su-lockup__line5,.fixed-header.su-lockup--option-b .su-lockup__line5{display:none}.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell2{border-left:0;background-color:#014240;padding:30px;max-width:unset}.fixed-header.su-lockup--option-a .sdss-masthead,.fixed-header.su-lockup--option-b .sdss-masthead{display:-ms-grid;display:grid;-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:"lockup lockup lockup" "main-nav main-nav search";-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-column-gap:40px;-moz-column-gap:40px;column-gap:40px}.fixed-header.su-lockup--option-a .sdss-masthead .su-lockup,.fixed-header.su-lockup--option-b .sdss-masthead .su-lockup{grid-area:lockup;background:#fff;width:unset;max-width:unset;padding:0;margin-right:-20px}.fixed-header.su-lockup--option-a .sdss-masthead #sdss-button--search-link,.fixed-header.su-lockup--option-b .sdss-masthead #sdss-button--search-link{grid-area:search;width:32px;height:32px;position:relative;top:0;right:unset;-ms-grid-row-align:center;align-self:center;background-color:#014240;border-radius:32px;left:8px}.fixed-header.su-lockup--option-a .sdss-masthead .su-multi-menu,.fixed-header.su-lockup--option-b .sdss-masthead .su-multi-menu{grid-area:main-nav}.fixed-header.su-lockup--option-a nav+.su-site-search,.fixed-header.su-lockup--option-a ul li .su-site-search,.fixed-header.su-lockup--option-b nav+.su-site-search,.fixed-header.su-lockup--option-b ul li .su-site-search{display:none}.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell2{position:relative}.fixed-header.su-lockup--option-a .su-lockup__cell2:after,.fixed-header.su-lockup--option-b .su-lockup__cell2:after{content:"";position:absolute;top:0;bottom:0;width:9600px;right:100%;left:100%;background:#014240}.fixed-header.su-lockup--option-a .sdss-masthead>.su-lockup,.fixed-header.su-lockup--option-b .sdss-masthead>.su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:5}.fixed-header.su-lockup--option-a .sdss-masthead>#sdss-button--search-link,.fixed-header.su-lockup--option-b .sdss-masthead>#sdss-button--search-link{-ms-grid-row:2;-ms-grid-column:5}.fixed-header.su-lockup--option-a .sdss-masthead>.su-multi-menu,.fixed-header.su-lockup--option-b .sdss-masthead>.su-multi-menu{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:3}}@media (min-width:992px){.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead .su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>.su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:1}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead #sdss-button--search-link{-ms-grid-row:2;-ms-grid-column:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>#sdss-button--search-link{-ms-grid-row:1;-ms-grid-column:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead .su-multi-menu{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:2}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>.su-multi-menu{-ms-grid-row:1;-ms-grid-column:2;-ms-grid-column-span:1}.fixed-header.su-lockup--option-a .sdss-masthead .su-lockup,.fixed-header.su-lockup--option-b .sdss-masthead .su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>.su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:1}.fixed-header.su-lockup--option-a .sdss-masthead>.su-lockup,.fixed-header.su-lockup--option-b .sdss-masthead>.su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:5}.fixed-header.su-lockup--option-a .sdss-masthead #sdss-button--search-link,.fixed-header.su-lockup--option-b .sdss-masthead #sdss-button--search-link{-ms-grid-row:2;-ms-grid-column:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>#sdss-button--search-link{-ms-grid-row:1;-ms-grid-column:3}.fixed-header.su-lockup--option-a .sdss-masthead>#sdss-button--search-link,.fixed-header.su-lockup--option-b .sdss-masthead>#sdss-button--search-link{-ms-grid-row:2;-ms-grid-column:5}.fixed-header.su-lockup--option-a .sdss-masthead .su-multi-menu,.fixed-header.su-lockup--option-b .sdss-masthead .su-multi-menu{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:2}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>.su-multi-menu{-ms-grid-row:1;-ms-grid-column:2;-ms-grid-column-span:1}.fixed-header.su-lockup--option-a .sdss-masthead>.su-multi-menu,.fixed-header.su-lockup--option-b .sdss-masthead>.su-multi-menu{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:3}}@media (max-width:991px){.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle{color:#fff}.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle:after,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle:after{margin:0 auto;display:inline-block;width:30px;height:26px;background:url(../assets/svg/hamburger-white.svg) no-repeat 3px 0;content:""}.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle:focus:before,.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle:hover:before,.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:before,.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:focus:before,.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:hover:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle:focus:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle:hover:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:focus:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:hover:before{background-color:#fff}.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:after,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:after{width:22px;background:url(../assets/svg/close-white.svg) no-repeat 3px 0;background-size:16px 16px}.su-masthead>section:last-of-type{padding-top:2rem}.fixed-header.su-lockup--option-a .su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup--option-a .su-lockup__cell2{border-left:none;padding-bottom:1em;padding-left:1em}.fixed-header.su-lockup--option-a .su-lockup__cell1,.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell1,.fixed-header.su-lockup--option-b .su-lockup__cell2{border:none}.fixed-header.su-lockup--option-a .su-lockup__line1,.fixed-header.su-lockup--option-a .su-lockup__line2,.fixed-header.su-lockup--option-b .su-lockup__line1,.fixed-header.su-lockup--option-b .su-lockup__line2{color:#fff}.fixed-header.su-lockup--option-a section,.fixed-header.su-lockup--option-b section{position:relative;background-color:#014240}.fixed-header.su-lockup--option-a section:after,.fixed-header.su-lockup--option-a section:before,.fixed-header.su-lockup--option-b section:after,.fixed-header.su-lockup--option-b section:before{content:"";position:absolute;top:0;bottom:0;width:9600px;right:calc(100% - 160px);background:#fff}.fixed-header.su-lockup--option-a section:after,.fixed-header.su-lockup--option-b section:after{left:100%;background:#014240}.fixed-header.su-lockup--option-b .su-lockup__line2{line-height:1em}}@media (max-width:575px){.fixed-header.su-lockup--option-a .su-masthead .su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-masthead .su-lockup--option-a .su-lockup__cell2{padding-left:0}.fixed-header.su-lockup--option-a .su-lockup__line1{margin-left:0}}@media (max-width:767px){.fixed-header.su-lockup--option-a .su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup--option-a .su-lockup__cell2{padding-left:0}.fixed-header.su-lockup--option-a .su-masthead>section:last-of-type,.fixed-header.su-lockup--option-b .su-masthead>section:last-of-type{padding-top:1.5rem}.fixed-header.su-lockup--option-a .su-lockup a,.fixed-header.su-lockup--option-b .su-lockup a{-webkit-box-align:left;-ms-flex-align:left;align-items:left;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:20px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;vertical-align:bottom;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fixed-header.su-lockup--option-a section,.fixed-header.su-lockup--option-b section{position:relative;background-color:#014240;margin-left:0;margin-right:0;padding-left:30px;padding-right:30px;min-width:100%}.fixed-header.su-lockup--option-a section:before,.fixed-header.su-lockup--option-b section:before{content:"";position:absolute;top:0;bottom:calc(100% - 65px);width:9600px;right:-20%;background:#fff}.fixed-header.su-lockup--option-a section:after,.fixed-header.su-lockup--option-b section:after{content:"";position:absolute;top:0;bottom:190px;width:9600px;right:-20%;background:#fff;left:100%;background:#014240}}nav[aria-label^=footer] a,nav[aria-label^=footer] a.su-link--external:active,nav[aria-label^=footer] a.su-link--external:focus,nav[aria-label^=footer] a.su-link--external:hover,nav[aria-label^=footer] a:hover{color:#fff}nav[aria-label^=footer] a.su-link--external:active:after,nav[aria-label^=footer] a.su-link--external:focus:after,nav[aria-label^=footer] a.su-link--external:hover:after{background-color:#fff}.su-local-footer{background-color:#014240;color:#fff}.su-local-footer a{font-weight:400}.su-local-footer .su-local-footer__cell2{font-size:1.11em;font-weight:600}.su-local-footer .su-local-footer__action-links{font-size:1.11em}.su-local-footer .su-local-footer__columns{-ms-grid-columns:1.5fr 1fr 1fr 0;grid-template-columns:1.5fr 1fr 1fr 0}.su-local-footer .su-local-footer__columns .su-local-footer__cell3{display:none}@media (min-width:992px){.su-local-footer .su-local-footer__header{padding-top:3.8rem}}@media only screen and (min-width:992px) and (min-width:768px){.su-local-footer .su-local-footer__header{padding-top:7.2rem}}@media only screen and (min-width:992px) and (min-width:1500px){.su-local-footer .su-local-footer__header{padding-top:7.6rem}}@media (min-width:992px){.su-local-footer .su-local-footer__columns{padding-top:3.4rem;padding-bottom:3.4rem}}@media only screen and (min-width:992px) and (min-width:768px){.su-local-footer .su-local-footer__columns{padding-top:5.8rem}}@media only screen and (min-width:992px) and (min-width:1500px){.su-local-footer .su-local-footer__columns{padding-top:6.1rem}}@media only screen and (min-width:992px) and (min-width:768px){.su-local-footer .su-local-footer__columns{padding-bottom:5.8rem}}@media only screen and (min-width:992px) and (min-width:1500px){.su-local-footer .su-local-footer__columns{padding-bottom:6.1rem}}@media (min-width:992px){.su-local-footer .su-local-footer__action-links{padding-bottom:3rem}}@media only screen and (min-width:992px) and (min-width:768px){.su-local-footer .su-local-footer__action-links{padding-bottom:3.6rem}}@media only screen and (min-width:992px) and (min-width:1500px){.su-local-footer .su-local-footer__action-links{padding-bottom:3.8rem}}.su-local-footer span.su-lockup__wordmark{color:#fff}.su-local-footer .su-lockup__cell2{border-left:2px solid #fff}.su-local-footer .sdss-footer--stay-connected{margin-bottom:1.5rem}@media only screen and (min-width:768px){.su-local-footer .sdss-footer--stay-connected{margin-bottom:1.8rem}}@media only screen and (min-width:1500px){.su-local-footer .sdss-footer--stay-connected{margin-bottom:1.9rem}}.su-local-footer .sdss-footer--stay-connected p{padding-bottom:5px}.su-local-footer .su-local-footer__address{font-size:1em;padding-bottom:5px}.su-local-footer .su-local-footer__address .organization{font-weight:400}@media (max-width:767px){.su-local-footer .su-local-footer__address .organization{font-size:2.1rem;line-height:130%}}@media (min-width:768px){.su-local-footer .su-local-footer__address .organization{font-size:2.6rem;line-height:130%}}@media (min-width:992px){.su-local-footer .su-local-footer__address .organization{font-size:2.6rem;line-height:130%}}.su-local-footer .su-local-footer__address .address{font-weight:400}.su-local-footer .su-local-footer__columns a{color:#92d7dd;text-decoration:none}.su-local-footer .su-local-footer__columns a:hover{color:#fff;cursor:pointer}.su-local-footer .su-local-footer__columns a:hover svg.mailto{fill:#fff}.su-local-footer .su-local-footer__columns a:hover:after{background-color:#fff}.su-local-footer .su-local-footer__columns a:focus{color:#fff;outline:1px solid #fff;background-color:transparent}.su-local-footer .su-local-footer__columns a:focus:after{background-color:#fff}.su-local-footer .su-local-footer__columns a:active{color:#fff}.su-local-footer .su-local-footer__columns a:active:after{background-color:#fff}.su-local-footer .su-local-footer__columns a:after{background-color:#92d7dd}.su-local-footer .su-local-footer__columns a.mailto svg{fill:#92d7dd}.su-local-footer .su-local-footer__columns a:hover{text-decoration:underline}.su-local-footer .su-local-footer__social-links i:before{color:#92d7dd}.su-local-footer .su-local-footer__action-links a{color:#92d7dd;text-decoration:none}.su-local-footer .su-local-footer__action-links a:hover{color:#fff;cursor:pointer}.su-local-footer .su-local-footer__action-links a:hover svg.mailto{fill:#fff}.su-local-footer .su-local-footer__action-links a:hover:after{background-color:#fff}.su-local-footer .su-local-footer__action-links a:focus{color:#fff;outline:1px solid #fff;background-color:transparent}.su-local-footer .su-local-footer__action-links a:focus:after{background-color:#fff}.su-local-footer .su-local-footer__action-links a:active{color:#fff}.su-local-footer .su-local-footer__action-links a:active:after{background-color:#fff}.su-local-footer .su-local-footer__action-links a:after{background-color:#92d7dd}.su-local-footer .su-local-footer__action-links a.mailto svg{fill:#92d7dd}.su-local-footer .su-local-footer__list-heading{color:#fff;font-weight:700}@media (max-width:767px){.su-local-footer .su-local-footer__list-heading{font-size:2.1rem;line-height:130%}}@media (min-width:768px){.su-local-footer .su-local-footer__list-heading{font-size:2.6rem;line-height:130%}}@media (min-width:992px){.su-local-footer .su-local-footer__list-heading{font-size:2.6rem;line-height:130%}}.su-local-footer a.su-link--external.su-button--secondary{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#fff;border:1px solid #fff;text-decoration:none;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem}.su-local-footer a.su-link--external.su-button--secondary:hover{background:#155f65;border:1px solid #155f65;color:#fff;cursor:pointer;text-decoration:underline}.su-local-footer a.su-link--external.su-button--secondary:hover svg.mailto{fill:#fff}.su-local-footer a.su-link--external.su-button--secondary:hover:after{background-color:#fff}.su-local-footer a.su-link--external.su-button--secondary:focus{outline:3px solid #fff;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;text-decoration:underline}.su-local-footer a.su-link--external.su-button--secondary:focus:after{background-color:#fff}.su-local-footer a.su-link--external.su-button--secondary:active{background-color:#fff;color:#014240;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.su-local-footer a.su-link--external.su-button--secondary:active:after{background-color:#014240}.su-local-footer a.su-link--external.su-button--secondary:after{background-color:#fff}.su-local-footer .su-wysiwyg-text h2,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:active,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:focus,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:hover,.su-local-footer .su-wysiwyg-text h3,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:active,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:focus,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:hover,.su-local-footer .su-wysiwyg-text h4,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:active,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:focus,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:hover,.su-local-footer .su-wysiwyg-text h5,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:active,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:focus,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:hover{color:#fff}.su-local-footer .su-wysiwyg-text h2 a.su-link--external:active:after,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:focus:after,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:hover:after,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:active:after,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:focus:after,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:hover:after,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:active:after,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:focus:after,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:hover:after,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:active:after,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:focus:after,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:hover:after{background-color:#fff}.su-local-footer .su-wysiwyg-text h2 a.su-link--external:after,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:after,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:after,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:after{background-color:#92d7dd}@media (min-width:992px){.su-masthead .su-lockup{margin-bottom:0}}.su-masthead .su-lockup a{-ms-flex-wrap:initial;flex-wrap:nowrap}.su-masthead .su-lockup .su-lockup__custom-logo{max-height:5rem}@media (min-width:992px){.su-masthead .su-lockup .su-lockup__custom-logo{max-height:5.5rem}}.su-lockup--option-a .su-lockup__line5{font-weight:400;text-transform:none}.su-lockup--option-a .su-lockup__line1{font-size:1.5625em;letter-spacing:-.012em;-webkit-text-stroke-width:.1px}@media (min-width:768px){.su-lockup--option-a .su-lockup__line1{line-height:1.05em}}.su-lockup--option-a .su-lockup__line5{font-family:Source Sans Pro Light,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:25px;letter-spacing:.001em;-webkit-text-stroke-width:.1px}@media (max-width:991px){.su-lockup--option-a>a{-webkit-box-orient:unset;-webkit-box-direction:unset;-ms-flex-direction:unset;flex-direction:unset;-ms-flex-wrap:wrap;flex-wrap:wrap}.su-lockup--option-a .su-lockup__line5{margin-top:.75rem;margin-left:-2px;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.su-lockup--option-a .su-lockup__cell2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}}@media (max-width:991px){.su-masthead .su-lockup--option-a .su-lockup__cell1{border-right:none}.su-masthead .su-lockup--option-a .su-lockup__cell2{border-left:1px solid #000}.su-masthead .su-lockup--option-a .su-lockup__line5:after{border-bottom:0}}.su-local-footer .su-lockup__line1,.su-local-footer .su-lockup__line5{color:#fff}@media (max-width:991px){.su-local-footer .su-lockup--option-a .su-lockup__cell1{border-right:none}.su-local-footer .su-lockup--option-a .su-lockup__line5:after{border-bottom:0}}.page-user-login .su-masthead{padding-bottom:2rem}.system-main-block form .su-button{padding:1rem 2rem 1.15rem;background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out}.system-main-block form .su-button:after,.system-main-block form .su-button:before{background-color:#fff;color:#b1040e}.system-main-block form .su-button:focus,.system-main-block form .su-button:hover{background-color:#2e2d29;color:#fff}.system-main-block form .su-button:focus:after,.system-main-block form .su-button:focus:before,.system-main-block form .su-button:hover:after,.system-main-block form .su-button:hover:before{background-color:#fff}.system-main-block form .su-button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.system-main-block form .su-button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.system-main-block form .su-button:hover svg.mailto{fill:#000}.system-main-block form .su-button:hover:after{background-color:#000}.system-main-block form .su-button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.system-main-block form .su-button:focus:after{background-color:#014240}.system-main-block form .su-button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.system-main-block form .su-button:active:after{background-color:#fff}.system-main-block form .su-button:after{background-color:#000}.su-site-search__submit{padding:0;margin-top:0;margin-right:0;margin-bottom:0;background:url(../assets/svg/magnifying-glass-24px.svg) no-repeat 0 0;opacity:.6;position:absolute;top:1.1rem;right:1.2rem;width:24px;height:25px}.su-site-search__submit:hover{background:#b1ef89 url(../assets/svg/magnifying-glass-24px.svg) no-repeat 0 0}@media (min-width:992px){html{scroll-padding-top:21em}.fixed-header{position:sticky;top:0;left:0;width:100%;z-index:100}.role--authenticated .fixed-header{top:79px}}@media (min-width:992px){.su-multi-menu .su-multi-menu__menu-lv2{padding-top:1px;padding-left:1.2rem;margin-left:0;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.1);box-shadow:0 3px 6px rgba(0,0,0,.1);z-index:101;max-width:30rem}}.su-multi-menu .su-multi-menu__menu-lv1>li:last-child>.su-multi-menu__menu-lv2{right:unset}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link{border-bottom:none;color:#2e2d29;font-weight:400;font-size:1.9rem}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:hover>span{text-decoration:underline;color:#2e2d29}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:active:before{background-color:#000}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:hover>span{text-decoration:underline;color:#2e2d29}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:focus:before,.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:hover:before{background-color:#000;width:3px}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-multi-menu .su-multi-menu__item--current>.su-multi-menu__link{color:#014240}.su-multi-menu .su-multi-menu__item--current>.su-multi-menu__link:before{background-color:#000;width:3px}@media (max-width:991px){.su-multi-menu .su-multi-menu__item--current>.su-multi-menu__link:before{background-color:#014240}}.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item>.su-multi-menu__link{color:#2e2d29;font-weight:400}.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item>.su-multi-menu__link:active,.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item>.su-multi-menu__link:focus,.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item>.su-multi-menu__link:hover{font-weight:400}.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item.su-multi-menu__item--active-trail>.su-multi-menu__link{color:#155f65}.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item.su-multi-menu__item--active-trail>.su-multi-menu__link:before{background-color:#155f65}@media (min-width:992px){.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent:last-of-type{margin:0}}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent{margin:0 40px 0 0}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-multi-menu__item--parent:last-of-type{margin:0}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-multi-menu__link:after{border-right:none;margin-left:6px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-nav-toggle[aria-expanded=true]:focus:before{background:#155f65 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%}@media (max-width:991px){.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-nav-toggle:before,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-nav-toggle:focus:before,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-nav-toggle:hover:before{background:#155f65 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%}}.su-multi-menu .su-multi-menu__menu{background-color:#fff}.su-multi-menu .su-multi-menu__nav-toggle:focus:before,.su-multi-menu .su-multi-menu__nav-toggle:hover:before,.su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:before,.su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:focus:before,.su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:hover:before{background-color:#155f65}@media (min-width:992px){.su-multi-menu__menu.su-multi-menu__menu-lv1 .su-nav-toggle:before{content:"";background:#155f65 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%;height:30px;width:30px;display:block;position:absolute;top:5px;right:2px}}@media (min-width:992px){.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu.su-multi-menu__menu-lv2 button.su-nav-toggle,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu.su-multi-menu__menu-lv2 ul.su-multi-menu__menu{display:none}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu.su-multi-menu__menu-lv2 .su-multi-menu__link .su-multi-menu__link-text-wrapper{max-width:none}}@media (min-width:992px){.su-multi-menu__menu-lv1 .su-multi-menu__menu .su-nav-toggle:before{content:"";background:#fff url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;background-size:15px;border-radius:19px;top:5px;right:10px}.su-multi-menu__menu-lv1 .su-multi-menu__menu .su-nav-toggle[aria-expanded=true]{top:15px;right:17px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu .su-multi-menu__menu-lv2>.su-multi-menu__item>a.su-multi-menu__link{padding-right:1rem}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu .su-multi-menu__menu-lv2>.su-multi-menu__item--parent .su-nav-toggle:before{right:15px;top:5px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu .su-multi-menu__menu-lv2>.su-multi-menu__item--parent .su-nav-toggle[aria-expanded=true]{top:10px;right:25px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu .su-multi-menu__menu-lv2>.su-multi-menu__item--parent .su-nav-toggle:focus[aria-expanded=true]:before{top:-2px;right:10px}.su-multi-menu__menu-lv2 .su-multi-menu__item .su-nav-toggle:before{content:"";background:transparent url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;background-size:15px;border-radius:19px;top:5px;right:10px}.su-multi-menu__menu-lv2 .su-multi-menu__item .su-nav-toggle[aria-expanded=true]{top:15px;right:17px}}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle{overflow:visible;width:32px;height:32px;top:10px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:active,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:focus,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:hover,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:hover[aria-expanded=false],.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle[aria-expanded=true]:active,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle[aria-expanded=true]:focus{border-bottom:0;border-top:0}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle[aria-expanded=true]{top:15px;right:2px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:hover:before{background:transparent url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;border-radius:19px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:hover[aria-expanded=false]:before{-webkit-box-shadow:0 8px 25px rgba(0,0,0,.14);box-shadow:0 8px 25px rgba(0,0,0,.14);border:1px solid #2e2d29}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:active:before{background:transparent url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;border-radius:19px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:focus:before{background:#2e2d29 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%;border-radius:19px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:before{background:transparent url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;border-radius:19px}@media (max-width:991px){.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:before{background:#155f65 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%}}.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-bottom:1.1rem;padding-top:1.1rem;margin:0}@media only screen and (min-width:768px){.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-bottom:1.2rem}}@media only screen and (min-width:1500px){.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-bottom:1.3rem}}@media only screen and (min-width:768px){.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-top:1.2rem}}@media only screen and (min-width:1500px){.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-top:1.3rem}}.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link:hover:before,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link:hover:before,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link:hover:before,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link:hover:before{left:-12px}.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link:active>span,.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link:hover>span,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link:active>span,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link:hover>span,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link:active>span,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link:hover>span,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link:active>span,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link:hover>span{color:#155f65}@media only screen and (min-width:992px){.su-masthead>section:last-of-type{display:-ms-grid;display:grid;padding:0}}.su-news-vertical-teaser.su-card{-webkit-box-shadow:none;box-shadow:none;border:none}.su-news-vertical-teaser.su-card h2{margin-left:0;margin-right:0}.su-news-vertical-teaser.su-card .su-link,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link{color:#014240;outline-color:#014240;display:inline;font-size:1.25em;font-weight:400;text-decoration:none}.su-news-vertical-teaser.su-card .su-link:hover,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover{color:#000;cursor:pointer;text-decoration:underline}.su-news-vertical-teaser.su-card .su-link:hover svg.mailto,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover svg.mailto{fill:#000}.su-news-vertical-teaser.su-card .su-link:hover:after,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover:after{background-color:#000}.su-news-vertical-teaser.su-card .su-link:focus,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-news-vertical-teaser.su-card .su-link:focus:after,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus:after{background-color:#000}.su-news-vertical-teaser.su-card .su-link:active,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:active{color:#2e2d29}.su-news-vertical-teaser.su-card .su-link:active:after,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:active:after{background-color:#000}.su-news-vertical-teaser.su-card .su-link:after,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:after{background-color:#014240}.su-news-vertical-teaser.su-card .su-link.mailto svg,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link.mailto svg{fill:#014240}.su-news-vertical-teaser.su-card .su-link:focus,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus{text-decoration:underline}.su-news-vertical-teaser.su-card .su-card__contents{padding:0}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-bottom:1.1rem;margin-top:1.1rem}@media only screen and (min-width:768px){.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-bottom:1.2rem}}@media only screen and (min-width:1500px){.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-bottom:1.3rem}}@media only screen and (min-width:768px){.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-top:1.2rem}}@media only screen and (min-width:1500px){.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-top:1.3rem}}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a{color:#014240;outline-color:#014240;color:#82817f;font-size:2rem;font-weight:400;text-decoration:none;text-transform:uppercase}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:hover svg.mailto{fill:#000}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:hover:after{background-color:#000}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:focus:after{background-color:#000}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:active{color:#2e2d29}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:active:after{background-color:#000}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:after{background-color:#014240}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a.mailto svg{fill:#014240}.ptype-stanford-lists:not([data-react-columns="12"]) .su-news-vertical-teaser.su-card{margin-bottom:3.2rem}@media only screen and (min-width:768px){.ptype-stanford-lists:not([data-react-columns="12"]) .su-news-vertical-teaser.su-card{margin-bottom:4.5rem}}@media only screen and (min-width:1500px){.ptype-stanford-lists:not([data-react-columns="12"]) .su-news-vertical-teaser.su-card{margin-bottom:4.8rem}}.su-news-topics a{color:#014240}.news-vertical-teaser__pub-date{padding-bottom:1.5rem;padding-top:1.5rem}@media only screen and (min-width:768px){.news-vertical-teaser__pub-date{padding-bottom:1.8rem}}@media only screen and (min-width:1500px){.news-vertical-teaser__pub-date{padding-bottom:1.9rem}}@media only screen and (min-width:768px){.news-vertical-teaser__pub-date{padding-top:1.8rem}}@media only screen and (min-width:1500px){.news-vertical-teaser__pub-date{padding-top:1.9rem}}.news-vertical-teaser__source{font-size:.9em;color:#82817f;padding:1em 0 1.5em}.news-vertical-teaser__pub-date{font-size:.9em}.su-sdss-news-dek-long{margin-bottom:2rem}@media only screen and (min-width:768px){.su-sdss-news-dek-long{margin-bottom:2.6rem}}@media only screen and (min-width:1500px){.su-sdss-news-dek-long{margin-bottom:2.7rem}}.news-vertical-teaser__ext-link{display:none}.su-news-vertical-teaser a.su-link--external:after{height:.8em;width:.5em}.su-row-bgcolor--green h2{color:#fff}.su-row-bgcolor--green .su-news-list h2{color:#b1ef89}.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a{color:#fff}.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:after{background-color:#b1ef89}.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:active,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:active>h2,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:focus,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:focus>h2,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:hover,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:hover>h2{color:#fff}.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:active:after,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:focus:after,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:hover:after{background-color:#fff}.su-row-bgcolor--green .su-news-list .su-news-list__source{color:#fff}.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link{color:#b1ef89}.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:after{background-color:#b1ef89}.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:active,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:focus,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:hover,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:active,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover{color:#fff}.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:active:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:focus:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:hover:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:active:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover:after{background-color:#fff}.su-row-bgcolor--green .su-news-vertical-teaser .news-vertical-teaser__source{color:#fff}.su-news-list .su-news-list__headline-dek a{color:#014240;outline-color:#014240;text-decoration:none}.su-news-list .su-news-list__headline-dek a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-news-list .su-news-list__headline-dek a:hover svg.mailto{fill:#000}.su-news-list .su-news-list__headline-dek a:hover:after{background-color:#000}.su-news-list .su-news-list__headline-dek a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-news-list .su-news-list__headline-dek a:focus:after{background-color:#000}.su-news-list .su-news-list__headline-dek a:active{color:#2e2d29}.su-news-list .su-news-list__headline-dek a:active:after{background-color:#000}.su-news-list .su-news-list__headline-dek a:after{background-color:#014240}.su-news-list .su-news-list__headline-dek a.mailto svg{fill:#014240}.su-news-list .su-news-list__headline-dek a:hover>h2{color:#000}.su-news-list .su-news-list__header{display:-ms-grid;display:grid;-ms-grid-columns:1fr 25px 2fr;grid-template-columns:1fr 2fr;-ms-grid-rows:auto 25px auto;grid-template-areas:"article-image headline" "article-image date";gap:25px}.su-news-list .image .media{margin-left:0}.su-news-list .su-news-list__topics a{font-size:2rem;color:#82817f;font-weight:400;text-transform:uppercase}.su-news-list .su-news-list__topics ul{margin-top:0}.su-news-list .su-news-list__topics ul li{margin-bottom:0}.su-news-list .su-news-article{border-bottom:none}.su-news-list .su-news-list__source{font-size:.9em;color:#82817f;padding:1em 0 1.5em}.su-news-list .su-link--external:after{height:.8em;width:.5em}.ptype-stanford-lists:is([data-react-columns="6"]) .su-news-list img,.ptype-stanford-lists:is([data-react-columns="12"]) .su-news-list img{display:unset}.ptype-stanford-lists[data-react-columns="6"] .su-news-list__header{-ms-grid-columns:unset;grid-template-columns:unset}@media (max-width:1199px){.su-news-list .image .media{display:unset}}@media (max-width:991px){.su-news-list .su-news-list__header{display:-ms-grid;display:grid;-ms-grid-columns:100%;grid-template-columns:100%;grid-template-areas:"image" "headline" "date"}}@media (max-width:991px){.jumpstart-ui--one-column .container-1-items{margin-right:2.8em;margin-left:2.8em}}@media (max-width:767px){.jumpstart-ui--one-column .container-1-items{margin-right:1.9em;margin-left:1.9em}}.jumpstart-ui--one-column.centered-content{margin:0 auto}@media only screen and (min-width:0){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 40px);width:calc(100% - 40px)}}@media only screen and (min-width:576px){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 60px);width:calc(100% - 60px)}}@media only screen and (min-width:768px){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 100px);width:calc(100% - 100px)}}@media only screen and (min-width:992px){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 160px);width:calc(100% - 160px)}}@media only screen and (min-width:1200px){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 200px);width:calc(100% - 200px)}}@media only screen and (min-width:1500px){.jumpstart-ui--one-column.centered-content{max-width:1500px;width:calc(100% - 200px)}}.jumpstart-ui--one-column.centered-content>div:first-child{margin-left:unset;margin-right:unset}.people-terms .views-field-title a,.stanford-people-grid .views-field-title a{color:#014240;outline-color:#014240}@media (max-width:767px){.people-terms .views-field-title a,.stanford-people-grid .views-field-title a{font-size:2.6rem;line-height:120%}}@media (min-width:768px){.people-terms .views-field-title a,.stanford-people-grid .views-field-title a{font-size:3.2rem;line-height:120%}}@media (min-width:992px){.people-terms .views-field-title a,.stanford-people-grid .views-field-title a{font-size:3.2rem;line-height:120%}}.people-terms .views-field-title a:hover,.stanford-people-grid .views-field-title a:hover{color:#000;cursor:pointer;text-decoration:underline}.people-terms .views-field-title a:hover svg.mailto,.stanford-people-grid .views-field-title a:hover svg.mailto{fill:#000}.people-terms .views-field-title a:hover:after,.stanford-people-grid .views-field-title a:hover:after{background-color:#000}.people-terms .views-field-title a:focus,.stanford-people-grid .views-field-title a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.people-terms .views-field-title a:focus:after,.stanford-people-grid .views-field-title a:focus:after{background-color:#000}.people-terms .views-field-title a:active,.stanford-people-grid .views-field-title a:active{color:#2e2d29}.people-terms .views-field-title a:active:after,.stanford-people-grid .views-field-title a:active:after{background-color:#000}.people-terms .views-field-title a:after,.stanford-people-grid .views-field-title a:after{background-color:#014240}.people-terms .views-field-title a.mailto svg,.stanford-people-grid .views-field-title a.mailto svg{fill:#014240}.people-terms .views-field-title a h2,.people-terms .views-field-title a h3,.stanford-people-grid .views-field-title a h2,.stanford-people-grid .views-field-title a h3{display:inline;font-weight:400;line-height:120%}.people-terms .views-field-title a:focus h2,.people-terms .views-field-title a:focus h3,.stanford-people-grid .views-field-title a:focus h2,.stanford-people-grid .views-field-title a:focus h3{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.people-terms .views-field-su-person-short-title,.stanford-people-grid .views-field-su-person-short-title{color:#2e2d29}.stanford-people-grid .views-field-title a{color:#014240;outline-color:#014240;font-size:1.5625em}.stanford-people-grid .views-field-title a:hover{color:#000;cursor:pointer;text-decoration:underline}.stanford-people-grid .views-field-title a:hover svg.mailto{fill:#000}.stanford-people-grid .views-field-title a:hover:after{background-color:#000}.stanford-people-grid .views-field-title a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.stanford-people-grid .views-field-title a:focus:after{background-color:#000}.stanford-people-grid .views-field-title a:active{color:#2e2d29}.stanford-people-grid .views-field-title a:active:after{background-color:#000}.stanford-people-grid .views-field-title a:after{background-color:#014240}.stanford-people-grid .views-field-title a.mailto svg{fill:#014240}.stanford-people-grid .views-field-su-person-full-title{font-size:2rem}.ds-entity--stanford-person .su-card a{font-size:.52em;color:#014240;display:inline-block;font-weight:400}.ds-entity--stanford-person .su-card a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.ds-entity--stanford-person .su-card a:active{color:#2e2d29}.ds-entity--stanford-person .su-card .su-person-short-title{color:#2e2d29;font-size:2rem}@media only screen and (min-width:768px){.ds-entity--stanford-person h2{line-height:inherit}}.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-top:3.4rem}@media only screen and (min-width:768px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-top:5.8rem}}@media only screen and (min-width:1500px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-top:6.1rem}}@media (max-width:991px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-bottom:3rem;margin-bottom:3rem}}@media only screen and (max-width:991px) and (min-width:768px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-bottom:3.6rem}}@media only screen and (max-width:991px) and (min-width:1500px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-bottom:3.8rem}}@media only screen and (max-width:991px) and (min-width:768px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{margin-bottom:3.6rem}}@media only screen and (max-width:991px) and (min-width:1500px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{margin-bottom:3.8rem}}.su-row-bgcolor--white{background-color:#fff;color:#2e2d29}.su-row-bgcolor--white article.su-card{background:transparent}.su-row-bgcolor--green{background-color:#014240;color:#fff}.su-row-bgcolor--green table tbody th,.su-row-bgcolor--green table thead th{color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a{color:#92d7dd;outline-color:#92d7dd;text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a:hover{color:#66aaae;cursor:pointer}.su-row-bgcolor--green .su-wysiwyg-text a:hover svg.mailto{fill:#66aaae}.su-row-bgcolor--green .su-wysiwyg-text a:hover:after{background-color:#66aaae}.su-row-bgcolor--green .su-wysiwyg-text a:focus{color:#fff;outline:1px solid #fff;background-color:transparent}.su-row-bgcolor--green .su-wysiwyg-text a:focus:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a:active{color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a:active:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a:after{background-color:#92d7dd}.su-row-bgcolor--green .su-wysiwyg-text a.mailto svg{fill:#92d7dd}.su-row-bgcolor--green .su-wysiwyg-text a.su-button,.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big{color:#014240;text-decoration:none}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:hover,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:hover,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:hover,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:hover{text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:focus,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:focus,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:focus,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:focus{text-decoration:underline;color:#fff;background:transparent;outline:1px solid #fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:focus:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:focus:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:focus:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:focus:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#fff;border:1px solid #fff;text-decoration:none;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:hover,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:hover{background:#155f65;border:1px solid #155f65;color:#fff;cursor:pointer;text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:hover svg.mailto,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:hover svg.mailto{fill:#fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:hover:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:hover:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:focus,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:focus{outline:3px solid #fff;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:focus:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:focus:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:active{background-color:#fff;color:#014240;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:active:after{background-color:#014240}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:after{background-color:#fff}.su-row-bgcolor--green div a.su-button:active,.su-row-bgcolor--green div a.su-button:focus,.su-row-bgcolor--green div a.su-link--external.su-button:active,.su-row-bgcolor--green div a.su-link--external.su-button:focus{padding:.375em .875em}.su-row-bgcolor--green .su-link--action:after{background-color:#92d7dd}.su-row-bgcolor--green figcaption.su-media__caption{color:#fff}.su-row-bgcolor--blue{background-color:#e9f7f8}.su-row-bgcolor--blue article.su-card{background:transparent}.su-row-bgcolor--grey{background-color:#edefef}.su-row-bgcolor--grey article.su-card{background:transparent}.filter-menu{position:sticky;top:250px}.role--authenticated .filter-menu{top:300px}.filter-menu{margin-bottom:4.5rem}@media only screen and (min-width:768px){.filter-menu{margin-bottom:9rem}}@media only screen and (min-width:1500px){.filter-menu{margin-bottom:9.5rem}}.filter-menu .menu .menu-item a,.filter-menu .topics__collapsable-menu{color:#2e2d29;font-weight:400;font-size:1.3em}.filter-menu .menu .menu-item a:active:after,.filter-menu .menu .menu-item a:active:before,.filter-menu .menu .menu-item a:before,.filter-menu .menu .menu-item a:focus:after,.filter-menu .menu .menu-item a:focus:before,.filter-menu .menu .menu-item a:hover:after,.filter-menu .menu .menu-item a:hover:before{background-color:transparent}.filter-menu .menu .menu-item a:focus{padding:1.6rem 4.8rem 1.6rem 0}.filter-menu .menu .menu-item--active-trail .is-active{color:#2e2d29;font-weight:400}.filter-menu .menu .menu-item--active-trail:before{color:#2e2d29}.navigation.menu--main{position:sticky;top:250px}.role--authenticated .navigation.menu--main{top:300px}.su-secondary-nav.su-secondary-nav--buttons>.su-secondary-nav__menu{padding-bottom:4.5rem}@media only screen and (min-width:768px){.su-secondary-nav.su-secondary-nav--buttons>.su-secondary-nav__menu{padding-bottom:9rem}}@media only screen and (min-width:1500px){.su-secondary-nav.su-secondary-nav--buttons>.su-secondary-nav__menu{padding-bottom:9.5rem}}.su-secondary-nav.su-secondary-nav--buttons>.su-secondary-nav__menu>.su-secondary-nav__item{border:0}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__menu-lv2 .su-secondary-nav__item a.su-secondary-nav__link{padding-left:.8em}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link{color:#014240}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:before{background-color:#014240;width:3px}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:active,.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:focus,.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:hover{color:#155f65}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:active:before,.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:focus:before,.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:hover:before{background-color:#000;color:#2e2d29;width:3px}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-bottom:1.1rem;padding-top:1.1rem;color:#2e2d29;font-weight:400;font-size:1.06em}@media only screen and (min-width:768px){.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-bottom:1.2rem}}@media only screen and (min-width:1500px){.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-bottom:1.3rem}}@media only screen and (min-width:768px){.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-top:1.2rem}}@media only screen and (min-width:1500px){.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-top:1.3rem}}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:before{background-color:#000;width:3px}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:active,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:focus,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:hover{color:#155f65}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:active:before,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:focus:before,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:hover:before{background-color:#000}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:active:after,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:focus:after,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:hover:after{background-color:transparent}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:focus{color:#2e2d29}.su-secondary-nav.su-secondary-nav--buttons a.su-link--external.su-secondary-nav__link:after{background-color:#2e2d29}.su-secondary-nav.su-secondary-nav--buttons a.su-link--external.su-secondary-nav__link:hover:after{background-color:#155f65}.su-secondary-nav--buttons .su-secondary-nav__item--parent.su-secondary-nav__item--expanded>.su-nav-toggle:before{background:transparent url(../assets/svg/caret-down-green.svg) no-repeat 50%/50%}.su-secondary-nav--buttons .su-secondary-nav__item--parent>.su-nav-toggle:before{background:transparent url(../assets/svg/caret-down-green.svg) no-repeat 50%/50%;border:2px solid #155f65;border-radius:19px;width:32px;height:32px}@media (min-width:992px){.su-site-search form{display:none}.su-site-search__submit,.su-site-search__submit:active,.su-site-search__submit:focus,.su-site-search__submit:hover{background:url(../assets/svg/magnifying-glass-24px-white.svg) no-repeat 50%/75%}}@media (max-width:991px){a.su-site-search__submit{display:none}}.search .views-row{border-bottom:1px solid #82817f}.search .views-row div:last-child{border:none}.search .views-row h2{line-height:100%}.search .views-row h2 a{font-weight:400;font-size:.6em}.search .views-row span.field-content{display:block;padding-bottom:1em}.content .paragraph-item.ptype-stanford-spacer{margin-bottom:0}.content .paragraph-item.ptype-stanford-spacer .sdss-spacer{margin-bottom:3.4rem}@media only screen and (min-width:768px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer{margin-bottom:5.8rem}}@media only screen and (min-width:1500px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer{margin-bottom:6.1rem}}.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-default{margin-bottom:3.4rem}@media only screen and (min-width:768px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-default{margin-bottom:5.8rem}}@media only screen and (min-width:1500px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-default{margin-bottom:6.1rem}}.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-reduced{margin-bottom:2rem}@media only screen and (min-width:768px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-reduced{margin-bottom:2.6rem}}@media only screen and (min-width:1500px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-reduced{margin-bottom:2.7rem}}.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-minimal{margin-bottom:1.1rem}@media only screen and (min-width:768px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-minimal{margin-bottom:1.2rem}}@media only screen and (min-width:1500px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-minimal{margin-bottom:1.3rem}}.su-news-banner-media-caption{color:#000;font-style:italic;text-align:right}@media (min-width:1500px){.su-news-banner-media-caption{font-size:1.9rem}}@media (min-width:768px) and (max-width:1499px){.su-news-banner-media-caption{font-size:1.6rem}}@media (max-width:767px){.su-news-banner-media-caption{font-size:1.5rem}}.paragraph.su-wysiwyg-text .caption figcaption{color:#000;font-style:italic;text-align:right}@media (min-width:1500px){.paragraph.su-wysiwyg-text .caption figcaption{font-size:1.9rem}}@media (min-width:768px) and (max-width:1499px){.paragraph.su-wysiwyg-text .caption figcaption{font-size:1.6rem}}@media (max-width:767px){.paragraph.su-wysiwyg-text .caption figcaption{font-size:1.5rem}}.su-media .su-media__caption{color:#000;font-style:italic;text-align:right}@media (min-width:1500px){.su-media .su-media__caption{font-size:1.9rem}}@media (min-width:768px) and (max-width:1499px){.su-media .su-media__caption{font-size:1.6rem}}@media (max-width:767px){.su-media .su-media__caption{font-size:1.5rem}}h1,h2,h3,h4,h5,h6{color:#014240;font-weight:400}@media (max-width:767px){h1{font-size:4.5rem;line-height:120%}}@media (min-width:768px){h1{font-size:6.4rem;line-height:120%}}@media (min-width:992px){h1{font-size:6.4rem;line-height:120%}}@media (max-width:767px){h2{font-size:3.7rem;line-height:120%}}@media (min-width:768px){h2{font-size:5.2rem;line-height:120%}}@media (min-width:992px){h2{font-size:5.2rem;line-height:120%}}@media (max-width:767px){h3{font-size:3.1rem;line-height:120%}}@media (min-width:768px){h3{font-size:4.1rem;line-height:120%}}@media (min-width:992px){h3{font-size:4.1rem;line-height:120%}}@media (max-width:767px){h4{font-size:2.6rem;line-height:120%}}@media (min-width:768px){h4{font-size:3.2rem;line-height:120%}}@media (min-width:992px){h4{font-size:3.2rem;line-height:120%}}@media (max-width:767px){h5{font-size:2.1rem;line-height:130%}}@media (min-width:768px){h5{font-size:2.6rem;line-height:130%}}@media (min-width:992px){h5{font-size:2.6rem;line-height:130%}}.su-wysiwyg-text h2 a,.su-wysiwyg-text h3 a,.su-wysiwyg-text h4 a,.su-wysiwyg-text h5 a,.su-wysiwyg-text h6 a{color:#014240;font-weight:400;text-decoration:none}.su-wysiwyg-text h2 a:hover,.su-wysiwyg-text h3 a:hover,.su-wysiwyg-text h4 a:hover,.su-wysiwyg-text h5 a:hover,.su-wysiwyg-text h6 a:hover{color:#5b8f93}.su-wysiwyg-text h2 a:hover:after,.su-wysiwyg-text h3 a:hover:after,.su-wysiwyg-text h4 a:hover:after,.su-wysiwyg-text h5 a:hover:after,.su-wysiwyg-text h6 a:hover:after{background-color:#5b8f93}.su-wysiwyg-text h2 a:after,.su-wysiwyg-text h3 a:after,.su-wysiwyg-text h4 a:after,.su-wysiwyg-text h5 a:after,.su-wysiwyg-text h6 a:after{background-color:#014240}.su-wysiwyg-text h2 a.su-link--external,.su-wysiwyg-text h3 a.su-link--external,.su-wysiwyg-text h4 a.su-link--external,.su-wysiwyg-text h5 a.su-link--external,.su-wysiwyg-text h6 a.su-link--external{font-weight:400}.su-wysiwyg-text h2 a.su-link--external:after,.su-wysiwyg-text h3 a.su-link--external:after,.su-wysiwyg-text h4 a.su-link--external:after,.su-wysiwyg-text h5 a.su-link--external:after,.su-wysiwyg-text h6 a.su-link--external:after{background-color:#014240}.su-wysiwyg-text h2 a.su-link--external:hover,.su-wysiwyg-text h3 a.su-link--external:hover,.su-wysiwyg-text h4 a.su-link--external:hover,.su-wysiwyg-text h5 a.su-link--external:hover,.su-wysiwyg-text h6 a.su-link--external:hover{color:#5b8f93}.su-wysiwyg-text h2 a.su-link--external:hover:after,.su-wysiwyg-text h3 a.su-link--external:hover:after,.su-wysiwyg-text h4 a.su-link--external:hover:after,.su-wysiwyg-text h5 a.su-link--external:hover:after,.su-wysiwyg-text h6 a.su-link--external:hover:after{background-color:#5b8f93}.su-row-bgcolor--green .su-wysiwyg-text .su-font-splash,.su-row-bgcolor--green .su-wysiwyg-text .su-quote-text,.su-row-bgcolor--green .su-wysiwyg-text h2,.su-row-bgcolor--green .su-wysiwyg-text h3,.su-row-bgcolor--green .su-wysiwyg-text h4,.su-row-bgcolor--green .su-wysiwyg-text h5,.su-row-bgcolor--green .su-wysiwyg-text h6{color:#fff}.su-row-bgcolor--green .su-wysiwyg-text h2 a,.su-row-bgcolor--green .su-wysiwyg-text h2.su-link--external,.su-row-bgcolor--green .su-wysiwyg-text h3 a,.su-row-bgcolor--green .su-wysiwyg-text h3.su-link--external,.su-row-bgcolor--green .su-wysiwyg-text h4 a,.su-row-bgcolor--green .su-wysiwyg-text h4.su-link--external,.su-row-bgcolor--green .su-wysiwyg-text h5 a,.su-row-bgcolor--green .su-wysiwyg-text h5.su-link--external,.su-row-bgcolor--green .su-wysiwyg-text h6 a,.su-row-bgcolor--green .su-wysiwyg-text h6.su-link--external{color:#fff;font-weight:unset;text-decoration:none}.su-row-bgcolor--green .su-wysiwyg-text h2 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h2.su-link--external:hover,.su-row-bgcolor--green .su-wysiwyg-text h3 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h3.su-link--external:hover,.su-row-bgcolor--green .su-wysiwyg-text h4 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h4.su-link--external:hover,.su-row-bgcolor--green .su-wysiwyg-text h5 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h5.su-link--external:hover,.su-row-bgcolor--green .su-wysiwyg-text h6 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h6.su-link--external:hover{color:#66aaae}.su-row-bgcolor--green .su-wysiwyg-text h2 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h2.su-link--external:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h3 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h3.su-link--external:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h4 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h4.su-link--external:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h5 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h5.su-link--external:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h6 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h6.su-link--external:hover:after{background-color:#66aaae}.su-row-bgcolor--green .su-wysiwyg-text h2 a:after,.su-row-bgcolor--green .su-wysiwyg-text h2.su-link--external:after,.su-row-bgcolor--green .su-wysiwyg-text h3 a:after,.su-row-bgcolor--green .su-wysiwyg-text h3.su-link--external:after,.su-row-bgcolor--green .su-wysiwyg-text h4 a:after,.su-row-bgcolor--green .su-wysiwyg-text h4.su-link--external:after,.su-row-bgcolor--green .su-wysiwyg-text h5 a:after,.su-row-bgcolor--green .su-wysiwyg-text h5.su-link--external:after,.su-row-bgcolor--green .su-wysiwyg-text h6 a:after,.su-row-bgcolor--green .su-wysiwyg-text h6.su-link--external:after{background-color:#fff}a{color:#014240;font-weight:400}a:hover{color:#66aaae}.block-sdss-subtheme-content .su-link:focus,.block-sdss-subtheme-content a:focus,footer .su-link:focus,footer a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.block-sdss-subtheme-content .su-link.su-button--big:focus,.block-sdss-subtheme-content a.su-button--big:focus,footer .su-link.su-button--big:focus,footer a.su-button--big:focus{padding:1.5rem 3rem 1.8rem}.block-sdss-subtheme-content .su-link.mailto svg,.block-sdss-subtheme-content a.mailto svg,footer .su-link.mailto svg,footer a.mailto svg{fill:#014240}.su-local-footer__social-links .su-link:focus{border:none}.su-link{color:#014240;font-weight:400;outline-color:#014240;text-decoration:underline}.su-link:after{background-color:#014240}.su-link.mailto svg{fill:#014240}.su-link:hover{color:#6bb6bc}.su-link:focus{color:#2e2d29;outline:1px solid #014240}.su-link:active{color:#2e2d29}.su-link--action{font-weight:600}.su-link--action,.su-link--external{text-decoration:underline}.su-link--action:hover,.su-link--external:hover{color:#66aaae}.su-link--action:hover:after,.su-link--external:hover:after{background-color:#66aaae}.content .right-region .su-person-links a:after,.su-link--action:after,.su-link--external:after{background-color:#014240}.stanford-lists.su-list-headline h2{text-align:left}@media (max-width:767px){.stanford-lists.su-list-headline h2{font-size:3.1rem;line-height:120%}}@media (min-width:768px){.stanford-lists.su-list-headline h2{font-size:4.1rem;line-height:120%}}@media (min-width:992px){.stanford-lists.su-list-headline h2{font-size:4.1rem;line-height:120%}}body{color:#2e2d29}@media (min-width:992px){.su-media__caption{font-size:1.8rem}}.su-font-splash{color:#014240;font-weight:400;letter-spacing:-.01em}@media (max-width:767px){.su-font-splash{font-size:3.2rem;line-height:40px}}@media (min-width:768px){.su-font-splash{font-size:4.8rem;line-height:60px}}@media (min-width:992px){.su-font-splash{font-size:6.4rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content,.su-wysiwyg-text p{font-size:2.1rem}.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text .tablesaw-cell-content.su-intro-text,.su-wysiwyg-text p.sdss-display-text,.su-wysiwyg-text p.su-intro-text{font-size:1.5625em;letter-spacing:-.012em;font-weight:400}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{color:#014240;font-weight:400;letter-spacing:-.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{font-size:3.2rem;line-height:40px}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{font-size:4.8rem;line-height:60px}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{font-size:6.4rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text{font-family:"Source Serif Pro",Georgia,Times,Times New Roman,serif;font-size:1.953125em;letter-spacing:-.016em;color:#014240;font-weight:400;font-style:italic;letter-spacing:-.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text{font-size:1.66015625em}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-weight:400;font-style:italic;letter-spacing:.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-size:1.8rem;line-height:130%}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-size:1.8rem;line-height:130%}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-size:2.4rem;line-height:140%}}.su-wysiwyg-text .caption figcaption{color:#53565a;font-size:1.8rem;font-style:normal;line-height:1.4;text-align:right;margin-bottom:1em}.su-wysiwyg-text .localist-widget h2 a{color:#014240}.su-wysiwyg-text .localist-widget h2 a:active,.su-wysiwyg-text .localist-widget h2 a:focus,.su-wysiwyg-text .localist-widget h2 a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-wysiwyg-text .localist-widget h2 a:active svg.mailto,.su-wysiwyg-text .localist-widget h2 a:focus svg.mailto,.su-wysiwyg-text .localist-widget h2 a:hover svg.mailto{fill:#000}.su-wysiwyg-text .localist-widget h2 a:active:after,.su-wysiwyg-text .localist-widget h2 a:focus:after,.su-wysiwyg-text .localist-widget h2 a:hover:after{background-color:transparent} \ No newline at end of file +.js-pager__items .pager__item .button,.sdss-wrapper--button-green .su-card__button .su-button,.stanford-events .more-link a,.su-button,.su-button.su-link,.system-main-block form .su-button,[type=button],[type=image],[type=reset],[type=submit],button,div a.su-button,div a.su-button--big,div a.su-button--big.su-link,div a.su-button.su-link,div a.su-link--external.su-button,div a.su-link--external.su-button--big{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer;display:inline-block;border:0;font-size:2rem;font-weight:400;line-height:1;text-align:center;text-decoration:none;width:auto;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out}.js-pager__items .pager__item .button a,.sdss-wrapper--button-green .su-card__button .su-button a,.stanford-events .more-link a a,.su-button.su-link a,.su-button a,.system-main-block form .su-button a,[type=button] a,[type=image] a,[type=reset] a,[type=submit] a,button a,div a.su-button--big.su-link a,div a.su-button--big a,div a.su-button.su-link a,div a.su-button a,div a.su-link--external.su-button--big a,div a.su-link--external.su-button a{font-weight:400;text-decoration:none}.js-pager__items .pager__item .button:active,.js-pager__items .pager__item .button:focus,.js-pager__items .pager__item .button:hover,.sdss-wrapper--button-green .su-card__button .su-button:active,.sdss-wrapper--button-green .su-card__button .su-button:focus,.sdss-wrapper--button-green .su-card__button .su-button:hover,.stanford-events .more-link a:active,.stanford-events .more-link a:focus,.stanford-events .more-link a:hover,.su-button:active,.su-button:focus,.su-button:hover,.system-main-block form .su-button:active,.system-main-block form .su-button:focus,.system-main-block form .su-button:hover,:active[type=button],:active[type=image],:active[type=reset],:active[type=submit],:focus[type=button],:focus[type=image],:focus[type=reset],:focus[type=submit],:hover[type=button],:hover[type=image],:hover[type=reset],:hover[type=submit],button:active,button:focus,button:hover,div a.su-button--big:active,div a.su-button--big:focus,div a.su-button--big:hover,div a.su-button.su-link:active,div a.su-button.su-link:focus,div a.su-button.su-link:hover,div a.su-link--external.su-button:active,div a.su-link--external.su-button:focus,div a.su-link--external.su-button:hover{text-decoration:underline}.content .paragraph-item{margin-bottom:3.4rem}@media only screen and (min-width:768px){.content .paragraph-item{margin-bottom:5.8rem}}@media only screen and (min-width:1500px){.content .paragraph-item{margin-bottom:6.1rem}}.content .sdss-drop-paragraph-margin .paragraph-item,.content .sdss-drop-paragraph-margin .su-component{margin-bottom:0}.sdss-banner-wrapper--headline-center .su-hero__card{margin:0 auto}.main-region .node-stanford-page-su-page-banner,.paragraph-item.ptype-stanford-banner{margin-bottom:0}.sdss-banner-wrapper--default{z-index:1;position:relative}.sdss-banner-wrapper--default .su-hero__media{background:-webkit-gradient(linear,left top,left bottom,color-stop(50%,rgba(46,45,41,0)),color-stop(90%,#1c1b19));background:linear-gradient(180deg,rgba(46,45,41,0) 50%,#1c1b19 90%)}.sdss-banner-wrapper--default picture{position:relative;z-index:-1;display:block}.sdss-banner-wrapper--default .su-hero{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.sdss-banner-wrapper--default .su-hero .su-hero__card{background:transparent;border:0;bottom:0;-webkit-box-shadow:none;box-shadow:none;margin-top:unset;margin-bottom:0;max-width:94%;top:auto}.sdss-banner-wrapper--default .su-hero .su-hero__card .su-card__contents{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding-bottom:12px}.sdss-banner-wrapper--default .su-hero .su-hero__card .su-card__contents h2{color:#fff;margin-top:0}.sdss-banner-wrapper--default .su-hero .su-hero__card .su-card__contents .su-card__button{margin-top:unset;margin-bottom:unset}@media (max-width:767px){.sdss-banner-wrapper--default .su-hero .su-hero__card{background:#1c1b19;max-width:100%}.sdss-banner-wrapper--default .su-hero .su-hero__card .su-card__contents{display:block}}.sdss-banner-wrapper--height-default .su-hero,.sdss-banner-wrapper--height-default .su-hero__media{min-height:520px}.sdss-banner-wrapper--height-modest .su-hero,.sdss-banner-wrapper--height-modest .su-hero__media{min-height:350px}.sdss-banner-wrapper--height-minimal .su-hero,.sdss-banner-wrapper--height-minimal .su-hero__media{min-height:250px}@media (max-width:767px){.sdss-banner-wrapper--height-default .su-hero,.sdss-banner-wrapper--height-default .su-hero__media,.sdss-banner-wrapper--height-minimal .su-hero,.sdss-banner-wrapper--height-minimal .su-hero__media,.sdss-banner-wrapper--height-modest .su-hero,.sdss-banner-wrapper--height-modest .su-hero__media{min-height:unset}}.su-basic-page-types-list .su-basic-page-list__title a{color:#014240;outline-color:#014240;font-weight:400;text-decoration:none}@supports ((-webkit-mask-repeat:no-repeat) or (mask-repeat:no-repeat)){.su-basic-page-types-list .su-basic-page-list__title a:after{height:.5em;width:.5em;display:inline-block;content:"";-webkit-mask:url(../assets/svg/caret-right.svg) no-repeat 0 0;mask:url(../assets/svg/caret-right.svg) no-repeat 0 0;-webkit-mask-size:contain;mask-size:contain}.su-basic-page-types-list .su-basic-page-list__title a:focus:after,.su-basic-page-types-list .su-basic-page-list__title a:hover:after{background-color:#2e2d29}.su-basic-page-types-list .su-basic-page-list__title a:after{margin-right:.3em;margin-bottom:.06em;margin-left:.4em;background-color:#006cb8;-webkit-transition:-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out;transition:-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out;transition:transform .2s ease-in-out,mask-image .2s ease-in-out;transition:transform .2s ease-in-out,mask-image .2s ease-in-out,-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out}.su-basic-page-types-list .su-basic-page-list__title a:focus:after,.su-basic-page-types-list .su-basic-page-list__title a:hover:after{-webkit-transform:translateX(.2em);transform:translateX(.2em)}}.su-basic-page-types-list .su-basic-page-list__title a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-basic-page-types-list .su-basic-page-list__title a:hover svg.mailto{fill:#000}.su-basic-page-types-list .su-basic-page-list__title a:hover:after{background-color:#000}.su-basic-page-types-list .su-basic-page-list__title a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-basic-page-types-list .su-basic-page-list__title a:focus:after{background-color:#000}.su-basic-page-types-list .su-basic-page-list__title a:active{color:#2e2d29}.su-basic-page-types-list .su-basic-page-list__title a:active:after{background-color:#000}.su-basic-page-types-list .su-basic-page-list__title a.mailto svg{fill:#014240}.su-basic-page-types-list .su-basic-page-list__title a:after{background-color:#014240}.su-button,.su-button.su-link,[type=button],[type=image],[type=reset],[type=submit],button{background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}.su-button.su-link:after,.su-button.su-link:before,.su-button:after,.su-button:before,[type=button]:after,[type=button]:before,[type=image]:after,[type=image]:before,[type=reset]:after,[type=reset]:before,[type=submit]:after,[type=submit]:before,button:after,button:before{background-color:#fff;color:#b1040e}.su-button.su-link:focus,.su-button.su-link:hover,.su-button:focus,.su-button:hover,[type=button]:focus,[type=button]:hover,[type=image]:focus,[type=image]:hover,[type=reset]:focus,[type=reset]:hover,[type=submit]:focus,[type=submit]:hover,button:focus,button:hover{background-color:#2e2d29;color:#fff}.su-button.su-link:focus:after,.su-button.su-link:focus:before,.su-button.su-link:hover:after,.su-button.su-link:hover:before,.su-button:focus:after,.su-button:focus:before,.su-button:hover:after,.su-button:hover:before,[type=button]:focus:after,[type=button]:focus:before,[type=button]:hover:after,[type=button]:hover:before,[type=image]:focus:after,[type=image]:focus:before,[type=image]:hover:after,[type=image]:hover:before,[type=reset]:focus:after,[type=reset]:focus:before,[type=reset]:hover:after,[type=reset]:hover:before,[type=submit]:focus:after,[type=submit]:focus:before,[type=submit]:hover:after,[type=submit]:hover:before,button:focus:after,button:focus:before,button:hover:after,button:hover:before{background-color:#fff}.su-button.su-link:focus,.su-button:focus,[type=button]:focus,[type=image]:focus,[type=reset]:focus,[type=submit]:focus,button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.su-button.su-link:hover,.su-button:hover,[type=button]:hover,[type=image]:hover,[type=reset]:hover,[type=submit]:hover,button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.su-button.su-link:hover svg.mailto,.su-button:hover svg.mailto,[type=button]:hover svg.mailto,[type=image]:hover svg.mailto,[type=reset]:hover svg.mailto,[type=submit]:hover svg.mailto,button:hover svg.mailto{fill:#000}.su-button.su-link:hover:after,.su-button:hover:after,[type=button]:hover:after,[type=image]:hover:after,[type=reset]:hover:after,[type=submit]:hover:after,button:hover:after{background-color:#000}.su-button.su-link:focus,.su-button:focus,[type=button]:focus,[type=image]:focus,[type=reset]:focus,[type=submit]:focus,button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.su-button.su-link:focus:after,.su-button:focus:after,[type=button]:focus:after,[type=image]:focus:after,[type=reset]:focus:after,[type=submit]:focus:after,button:focus:after{background-color:#014240}.su-button.su-link:active,.su-button:active,[type=button]:active,[type=image]:active,[type=reset]:active,[type=submit]:active,button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.su-button.su-link:active:after,.su-button:active:after,[type=button]:active:after,[type=image]:active:after,[type=reset]:active:after,[type=submit]:active:after,button:active:after{background-color:#fff}.su-button.su-link:after,.su-button:after,[type=button]:after,[type=image]:after,[type=reset]:after,[type=submit]:after,button:after{background-color:#000}@media only screen and (min-width:768px){.su-button,.su-button.su-link,[type=button],[type=image],[type=reset],[type=submit],button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){.su-button,.su-button.su-link,[type=button],[type=image],[type=reset],[type=submit],button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}div a.su-button,div a.su-button.su-link,div a.su-link--external.su-button{background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}div a.su-button.su-link:after,div a.su-button.su-link:before,div a.su-button:after,div a.su-button:before,div a.su-link--external.su-button:after,div a.su-link--external.su-button:before{background-color:#fff;color:#b1040e}div a.su-button.su-link:focus,div a.su-button.su-link:hover,div a.su-button:focus,div a.su-button:hover,div a.su-link--external.su-button:focus,div a.su-link--external.su-button:hover{background-color:#2e2d29;color:#fff}div a.su-button.su-link:focus:after,div a.su-button.su-link:focus:before,div a.su-button.su-link:hover:after,div a.su-button.su-link:hover:before,div a.su-button:focus:after,div a.su-button:focus:before,div a.su-button:hover:after,div a.su-button:hover:before,div a.su-link--external.su-button:focus:after,div a.su-link--external.su-button:focus:before,div a.su-link--external.su-button:hover:after,div a.su-link--external.su-button:hover:before{background-color:#fff}div a.su-button.su-link:focus,div a.su-button:focus,div a.su-link--external.su-button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}div a.su-button.su-link:hover,div a.su-button:hover,div a.su-link--external.su-button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}div a.su-button.su-link:hover svg.mailto,div a.su-button:hover svg.mailto,div a.su-link--external.su-button:hover svg.mailto{fill:#000}div a.su-button.su-link:hover:after,div a.su-button:hover:after,div a.su-link--external.su-button:hover:after{background-color:#000}div a.su-button.su-link:focus,div a.su-button:focus,div a.su-link--external.su-button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}div a.su-button.su-link:focus:after,div a.su-button:focus:after,div a.su-link--external.su-button:focus:after{background-color:#014240}div a.su-button.su-link:active,div a.su-button:active,div a.su-link--external.su-button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}div a.su-button.su-link:active:after,div a.su-button:active:after,div a.su-link--external.su-button:active:after{background-color:#fff}div a.su-button.su-link:after,div a.su-button:after,div a.su-link--external.su-button:after{background-color:#000}@media only screen and (min-width:768px){div a.su-button,div a.su-button.su-link,div a.su-link--external.su-button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){div a.su-button,div a.su-button.su-link,div a.su-link--external.su-button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}div a.su-button--secondary,div a.su-link--external.su-button--secondary{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#014240;border:1px solid #014240;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;padding:.375em 2rem .8rem}div a.su-button--secondary:hover,div a.su-link--external.su-button--secondary:hover{background:#fff;-webkit-box-shadow:0 8px 25px rgba(0,0,0,.14);box-shadow:0 8px 25px rgba(0,0,0,.14);color:#014240;cursor:pointer;text-decoration:underline}div a.su-button--secondary:hover svg.mailto,div a.su-link--external.su-button--secondary:hover svg.mailto{fill:#000}div a.su-button--secondary:hover:after,div a.su-link--external.su-button--secondary:hover:after{background-color:#000}div a.su-button--secondary:focus,div a.su-link--external.su-button--secondary:focus{outline:3px solid #014240;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}div a.su-button--secondary:focus:after,div a.su-link--external.su-button--secondary:focus:after{background-color:#014240}div a.su-button--secondary:active,div a.su-link--external.su-button--secondary:active{background-color:#014240;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}div a.su-button--secondary:active:after,div a.su-link--external.su-button--secondary:active:after{background-color:#fff}div a.su-button--secondary:after,div a.su-link--external.su-button--secondary:after{background-color:#014240}@media only screen and (min-width:768px){div a.su-button--secondary,div a.su-link--external.su-button--secondary{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){div a.su-button--secondary,div a.su-link--external.su-button--secondary{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}div a.su-button--secondary-neg,div a.su-link--external.su-button--secondary-neg{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#fff;border:1px solid #fff;text-decoration:none;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;padding:.375em 2rem .8rem}div a.su-button--secondary-neg:hover,div a.su-link--external.su-button--secondary-neg:hover{background:#155f65;border:1px solid #155f65;color:#fff;cursor:pointer;text-decoration:underline}div a.su-button--secondary-neg:hover svg.mailto,div a.su-link--external.su-button--secondary-neg:hover svg.mailto{fill:#fff}div a.su-button--secondary-neg:hover:after,div a.su-link--external.su-button--secondary-neg:hover:after{background-color:#fff}div a.su-button--secondary-neg:focus,div a.su-link--external.su-button--secondary-neg:focus{outline:3px solid #fff;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;text-decoration:underline}div a.su-button--secondary-neg:focus:after,div a.su-link--external.su-button--secondary-neg:focus:after{background-color:#fff}div a.su-button--secondary-neg:active,div a.su-link--external.su-button--secondary-neg:active{background-color:#fff;color:#014240;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}div a.su-button--secondary-neg:active:after,div a.su-link--external.su-button--secondary-neg:active:after{background-color:#014240}div a.su-button--secondary-neg:after,div a.su-link--external.su-button--secondary-neg:after{background-color:#fff}@media only screen and (min-width:768px){div a.su-button--secondary-neg,div a.su-link--external.su-button--secondary-neg{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){div a.su-button--secondary-neg,div a.su-link--external.su-button--secondary-neg{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{background-color:#b1040e;color:#fff;font-size:2.5rem;background:#b1ef89;border-radius:3.5rem;color:#000;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}div a.su-button--big.su-link:after,div a.su-button--big.su-link:before,div a.su-button--big:after,div a.su-button--big:before,div a.su-link--external.su-button--big:after,div a.su-link--external.su-button--big:before{background-color:#fff;color:#b1040e}div a.su-button--big.su-link:focus,div a.su-button--big.su-link:hover,div a.su-button--big:focus,div a.su-button--big:hover,div a.su-link--external.su-button--big:focus,div a.su-link--external.su-button--big:hover{background-color:#2e2d29;color:#fff}div a.su-button--big.su-link:focus:after,div a.su-button--big.su-link:focus:before,div a.su-button--big.su-link:hover:after,div a.su-button--big.su-link:hover:before,div a.su-button--big:focus:after,div a.su-button--big:focus:before,div a.su-button--big:hover:after,div a.su-button--big:hover:before,div a.su-link--external.su-button--big:focus:after,div a.su-link--external.su-button--big:focus:before,div a.su-link--external.su-button--big:hover:after,div a.su-link--external.su-button--big:hover:before{background-color:#fff}div a.su-button--big.su-link:focus,div a.su-button--big:focus,div a.su-link--external.su-button--big:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}@media only screen and (min-width:768px){div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{padding:1.5rem 3rem 1.8rem;font-size:2.8rem}}@media only screen and (min-width:1500px){div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{font-size:3rem}}div a.su-button--big.su-link:hover,div a.su-button--big:hover,div a.su-link--external.su-button--big:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}div a.su-button--big.su-link:hover svg.mailto,div a.su-button--big:hover svg.mailto,div a.su-link--external.su-button--big:hover svg.mailto{fill:#000}div a.su-button--big.su-link:hover:after,div a.su-button--big:hover:after,div a.su-link--external.su-button--big:hover:after{background-color:#000}div a.su-button--big.su-link:focus,div a.su-button--big:focus,div a.su-link--external.su-button--big:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}div a.su-button--big.su-link:focus:after,div a.su-button--big:focus:after,div a.su-link--external.su-button--big:focus:after{background-color:#014240}div a.su-button--big.su-link:active,div a.su-button--big:active,div a.su-link--external.su-button--big:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}div a.su-button--big.su-link:active:after,div a.su-button--big:active:after,div a.su-link--external.su-button--big:active:after{background-color:#fff}div a.su-button--big.su-link:after,div a.su-button--big:after,div a.su-link--external.su-button--big:after{background-color:#000}@media only screen and (min-width:768px){div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){div a.su-button--big,div a.su-button--big.su-link,div a.su-link--external.su-button--big{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}.sdss-wrapper--secondary-button .su-card__button .su-button{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#014240;border:1px solid #014240;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;padding:.375em 2rem .8rem}.sdss-wrapper--secondary-button .su-card__button .su-button:hover{background:#fff;-webkit-box-shadow:0 8px 25px rgba(0,0,0,.14);box-shadow:0 8px 25px rgba(0,0,0,.14);color:#014240;cursor:pointer;text-decoration:underline}.sdss-wrapper--secondary-button .su-card__button .su-button:hover svg.mailto{fill:#000}.sdss-wrapper--secondary-button .su-card__button .su-button:hover:after{background-color:#000}.sdss-wrapper--secondary-button .su-card__button .su-button:focus{outline:3px solid #014240;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.sdss-wrapper--secondary-button .su-card__button .su-button:focus:after{background-color:#014240}.sdss-wrapper--secondary-button .su-card__button .su-button:active{background-color:#014240;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.sdss-wrapper--secondary-button .su-card__button .su-button:active:after{background-color:#fff}.sdss-wrapper--secondary-button .su-card__button .su-button:after{background-color:#014240}@media only screen and (min-width:768px){.sdss-wrapper--secondary-button .su-card__button .su-button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){.sdss-wrapper--secondary-button .su-card__button .su-button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}.sdss-wrapper--button-green .su-card__button .su-button{background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}.sdss-wrapper--button-green .su-card__button .su-button:after,.sdss-wrapper--button-green .su-card__button .su-button:before{background-color:#fff;color:#b1040e}.sdss-wrapper--button-green .su-card__button .su-button:focus,.sdss-wrapper--button-green .su-card__button .su-button:hover{background-color:#2e2d29;color:#fff}.sdss-wrapper--button-green .su-card__button .su-button:focus:after,.sdss-wrapper--button-green .su-card__button .su-button:focus:before,.sdss-wrapper--button-green .su-card__button .su-button:hover:after,.sdss-wrapper--button-green .su-card__button .su-button:hover:before{background-color:#fff}.sdss-wrapper--button-green .su-card__button .su-button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.sdss-wrapper--button-green .su-card__button .su-button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.sdss-wrapper--button-green .su-card__button .su-button:hover svg.mailto{fill:#000}.sdss-wrapper--button-green .su-card__button .su-button:hover:after{background-color:#000}.sdss-wrapper--button-green .su-card__button .su-button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.sdss-wrapper--button-green .su-card__button .su-button:focus:after{background-color:#014240}.sdss-wrapper--button-green .su-card__button .su-button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.sdss-wrapper--button-green .su-card__button .su-button:active:after{background-color:#fff}.sdss-wrapper--button-green .su-card__button .su-button:after{background-color:#000}@media only screen and (min-width:768px){.sdss-wrapper--button-green .su-card__button .su-button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){.sdss-wrapper--button-green .su-card__button .su-button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}.js-pager__items .pager__item .button{background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;padding:.375em 2rem .8rem}.js-pager__items .pager__item .button:after,.js-pager__items .pager__item .button:before{background-color:#fff;color:#b1040e}.js-pager__items .pager__item .button:focus,.js-pager__items .pager__item .button:hover{background-color:#2e2d29;color:#fff}.js-pager__items .pager__item .button:focus:after,.js-pager__items .pager__item .button:focus:before,.js-pager__items .pager__item .button:hover:after,.js-pager__items .pager__item .button:hover:before{background-color:#fff}.js-pager__items .pager__item .button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.js-pager__items .pager__item .button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.js-pager__items .pager__item .button:hover svg.mailto{fill:#000}.js-pager__items .pager__item .button:hover:after{background-color:#000}.js-pager__items .pager__item .button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.js-pager__items .pager__item .button:focus:after{background-color:#014240}.js-pager__items .pager__item .button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.js-pager__items .pager__item .button:active:after{background-color:#fff}.js-pager__items .pager__item .button:after{background-color:#000}@media only screen and (min-width:768px){.js-pager__items .pager__item .button{padding-right:2.6rem;padding-bottom:.9rem;padding-left:2.6rem}}@media only screen and (min-width:1500px){.js-pager__items .pager__item .button{padding-right:2.7rem;padding-bottom:1rem;padding-left:2.7rem}}.ds-entity--stanford-page .su-card .su-card__contents a{color:#014240;outline-color:#014240;font-weight:400}.ds-entity--stanford-page .su-card .su-card__contents a:hover{color:#000;cursor:pointer;text-decoration:underline}.ds-entity--stanford-page .su-card .su-card__contents a:hover svg.mailto{fill:#000}.ds-entity--stanford-page .su-card .su-card__contents a:hover:after{background-color:#000}.ds-entity--stanford-page .su-card .su-card__contents a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.ds-entity--stanford-page .su-card .su-card__contents a:focus:after{background-color:#000}.ds-entity--stanford-page .su-card .su-card__contents a:active{color:#2e2d29}.ds-entity--stanford-page .su-card .su-card__contents a:active:after{background-color:#000}.ds-entity--stanford-page .su-card .su-card__contents a:after{background-color:#014240}.ds-entity--stanford-page .su-card .su-card__contents a.mailto svg{fill:#014240}.su-card{background-color:transparent}@media (max-width:767px){.su-card figure,.su-card img{display:block}}.su-card .su-card__contents>span{text-transform:uppercase}@media (min-width:992px){.su-card .su-card__contents>span{font-size:24px}}@media (max-width:991px){.su-card .su-card__contents>span{font-size:16px}}@media (max-width:767px){.su-card .su-card__contents h2{font-size:40px}}@media (max-width:991px){.su-card .su-card__contents h2{font-size:44px}}@media (min-width:992px){.su-card .su-card__contents h2{font-size:56px}}.sdss-card-wrapper--topic article.su-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sdss-card-wrapper--topic .su-card__headline{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.sdss-card-wrapper--topic .image{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.sdss-card-wrapper--topic section.su-card__contents{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.sdss-card-wrapper--stat article.su-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sdss-card-wrapper--stat .su-card__headline{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.sdss-card-wrapper--stat .image{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.sdss-card-wrapper--stat section.su-card__contents{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.sdss-card-wrapper--icon article.su-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sdss-card-wrapper--icon .su-card__headline{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.sdss-card-wrapper--icon .image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.sdss-card-wrapper--icon section.su-card__contents{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.sdss-card-wrapper--title article.su-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.sdss-card-wrapper--title .su-card__headline{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.sdss-card-wrapper--title .image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.sdss-card-wrapper--title section.su-card__contents{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.sdss-card-wrapper--default.sdss-card-wrapper--border-none article.su-card{-webkit-box-shadow:none;box-shadow:none;border:none}.sdss-card-wrapper--default.sdss-card-wrapper--white-border article.su-card{background:#fff;-webkit-box-shadow:none;box-shadow:none}.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow article.su-card,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow article.su-card{border:1px solid #edefef}.sdss-card-wrapper--default.sdss-card-wrapper--white-border article.su-card{background-color:#fff;border:1px solid #edefef}.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline{padding-left:2rem}@media only screen and (min-width:768px){.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline{padding-left:2.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-border.sdss-card-wrapper--topic article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--title article.su-card .su-card__headline,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__contents,.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow.sdss-card-wrapper--topic article.su-card .su-card__headline{padding-left:2.7rem}}.sdss-card-wrapper--default.sdss-card-wrapper--grey-dropshadow article.su-card{background-color:#edefef;-webkit-box-shadow:0 8px 24px rgba(0,0,0,.05);box-shadow:0 8px 24px rgba(0,0,0,.05)}.sdss-card-wrapper--default.sdss-card-wrapper--white-dropshadow article.su-card{background-color:#fff;-webkit-box-shadow:0 8px 24px rgba(0,0,0,.05);box-shadow:0 8px 24px rgba(0,0,0,.05)}.su-row-bgcolor--green .su-card .su-card__headline{color:#fff}.sdss-card-wrapper--icon .su-card{padding:3rem 2rem;text-align:center}@media only screen and (min-width:768px){.sdss-card-wrapper--icon .su-card{padding:3.6rem 2.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--icon .su-card{padding:3.8rem 2.7rem}}.sdss-card-wrapper--icon .su-card .su-card__contents{padding-bottom:0;padding-top:0}.sdss-card-wrapper--icon .su-card .su-card__contents p{font-size:2rem;line-height:150%}.sdss-card-wrapper--icon .su-card .su-card__headline{padding-top:2rem;font-weight:700}@media only screen and (min-width:768px){.sdss-card-wrapper--icon .su-card .su-card__headline{padding-top:2.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--icon .su-card .su-card__headline{padding-top:2.7rem}}@media (max-width:767px){.sdss-card-wrapper--icon .su-card .su-card__headline{font-size:2.1rem;line-height:130%}}@media (min-width:768px){.sdss-card-wrapper--icon .su-card .su-card__headline{font-size:2.6rem;line-height:130%}}@media (min-width:992px){.sdss-card-wrapper--icon .su-card .su-card__headline{font-size:2.6rem;line-height:130%}}.sdss-card-wrapper--icon .su-card .su-card__button{margin-bottom:0}.su-card.su-card--person{border:0;-webkit-box-shadow:none;box-shadow:none}.su-card.su-card--person .su-person-photo{padding-bottom:0}.su-card.su-card--person .su-card__headline{margin-bottom:0}.su-card.su-card--person .su-card__contents{padding:0}.su-row-bgcolor--green-stat>div,.su-row-bgcolor--green>div{color:#fff;background-color:#014240}.su-row-bgcolor--green-stat .paragraph-item{border-left:1px solid #fff}.su-row-bgcolor--green-stat .paragraph-item:first-child{border-left:none}.sdss-card-wrapper--stat .su-card{padding-top:3rem;-webkit-box-shadow:none;box-shadow:none;border:none;color:#fff;background-color:#014240}@media only screen and (min-width:768px){.sdss-card-wrapper--stat .su-card{padding-top:3.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--stat .su-card{padding-top:3.8rem}}.sdss-card-wrapper--stat .su-card section.su-card__contents{padding-bottom:0;padding-top:0}.sdss-card-wrapper--stat .su-card .su-card__superheadline{font-size:1.5625em;letter-spacing:-.012em;color:#014240;font-weight:400;line-height:120%}@media (max-width:767px){.sdss-card-wrapper--stat .su-card .su-card__superheadline{font-size:5.2rem;line-height:169%}}@media (min-width:768px){.sdss-card-wrapper--stat .su-card .su-card__superheadline{font-size:8rem;line-height:110%}}@media (min-width:1500px){.sdss-card-wrapper--stat .su-card .su-card__superheadline{font-size:8.8rem;line-height:120%}}.sdss-card-wrapper--stat .su-card>.su-card__headline{padding-left:3rem;padding-right:3rem}@media (max-width:767px){.sdss-card-wrapper--stat .su-card>.su-card__headline{font-size:3.1rem;line-height:120%}}@media (min-width:768px){.sdss-card-wrapper--stat .su-card>.su-card__headline{font-size:4.1rem;line-height:120%}}@media (min-width:992px){.sdss-card-wrapper--stat .su-card>.su-card__headline{font-size:4.1rem;line-height:120%}}@media only screen and (min-width:768px){.sdss-card-wrapper--stat .su-card>.su-card__headline{padding-left:3.6rem;padding-right:3.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--stat .su-card>.su-card__headline{padding-left:3.8rem;padding-right:3.8rem}}.sdss-card-wrapper--stat .su-card p{font-size:1.25em;letter-spacing:-.01em}.sdss-card-wrapper--title .su-card .su-card__contents{padding-left:0;padding-top:0}.sdss-card-wrapper--title .su-card .su-card__contents p{font-size:2rem;line-height:150%}.sdss-card-wrapper--title .su-card .su-card__contents a{margin-top:0}.sdss-card-wrapper--title .su-card .su-card__contents a.su-button{line-height:inherit}.sdss-card-wrapper--title .su-card .su-card__headline{padding-top:2rem;margin-bottom:0}@media (max-width:767px){.sdss-card-wrapper--title .su-card .su-card__headline{font-size:2.6rem;line-height:120%}}@media (min-width:768px){.sdss-card-wrapper--title .su-card .su-card__headline{font-size:3.2rem;line-height:120%}}@media (min-width:992px){.sdss-card-wrapper--title .su-card .su-card__headline{font-size:3.2rem;line-height:120%}}@media only screen and (min-width:768px){.sdss-card-wrapper--title .su-card .su-card__headline{padding-top:2.6rem}}@media only screen and (min-width:1500px){.sdss-card-wrapper--title .su-card .su-card__headline{padding-top:2.7rem}}.sdss-card-wrapper--topic .su-card .su-card__contents{padding-left:0}.sdss-card-wrapper--topic .su-card .su-card__contents p{font-size:2rem;line-height:150%}@media (max-width:767px){.sdss-card-wrapper--topic .su-card .su-card__headline{font-size:2.6rem;line-height:120%}}@media (min-width:768px){.sdss-card-wrapper--topic .su-card .su-card__headline{font-size:3.2rem;line-height:120%}}@media (min-width:992px){.sdss-card-wrapper--topic .su-card .su-card__headline{font-size:3.2rem;line-height:120%}}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card{border:0;-webkit-box-shadow:none;box-shadow:none}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a{color:#014240;outline-color:#014240;display:inline-block;color:#82817f;font-size:2rem;font-weight:400;text-transform:uppercase;text-decoration:none}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:hover{color:#000;cursor:pointer;text-decoration:underline}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:hover svg.mailto{fill:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:hover:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:focus:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:active{color:#2e2d29}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:active:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a:after{background-color:#014240}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__type a.mailto svg{fill:#014240}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a{color:#014240;outline-color:#014240;font-weight:400;text-decoration:none}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:hover{color:#000;cursor:pointer;text-decoration:underline}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:hover svg.mailto{fill:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:hover:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:focus:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:active{color:#2e2d29}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:active:after{background-color:#000}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a:after{background-color:#014240}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details h2>a.mailto svg{fill:#014240}.stanford-entity .ds-entity--stanford-event .su-event-list-item.su-card .su-event-list-item__details .event-list-item__subheadline{display:none}.stanford-events .more-link a{padding:1rem 2rem 1.15rem;background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out}.stanford-events .more-link a:after,.stanford-events .more-link a:before{background-color:#fff;color:#b1040e}.stanford-events .more-link a:focus,.stanford-events .more-link a:hover{background-color:#2e2d29;color:#fff}.stanford-events .more-link a:focus:after,.stanford-events .more-link a:focus:before,.stanford-events .more-link a:hover:after,.stanford-events .more-link a:hover:before{background-color:#fff}.stanford-events .more-link a:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.stanford-events .more-link a:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.stanford-events .more-link a:hover svg.mailto{fill:#000}.stanford-events .more-link a:hover:after{background-color:#000}.stanford-events .more-link a:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.stanford-events .more-link a:focus:after{background-color:#014240}.stanford-events .more-link a:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.stanford-events .more-link a:active:after{background-color:#fff}.stanford-events .more-link a:after{background-color:#000}.section-editorial-content .su-event-type a{color:#014240;outline-color:#014240;font-size:.9em;display:inline-block;color:#82817f;font-weight:400;text-transform:uppercase;text-decoration:none}.section-editorial-content .su-event-type a:hover{color:#000;cursor:pointer;text-decoration:underline}.section-editorial-content .su-event-type a:hover svg.mailto{fill:#000}.section-editorial-content .su-event-type a:hover:after{background-color:#000}.section-editorial-content .su-event-type a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.section-editorial-content .su-event-type a:focus:after{background-color:#000}.section-editorial-content .su-event-type a:active{color:#2e2d29}.section-editorial-content .su-event-type a:active:after{background-color:#000}.section-editorial-content .su-event-type a:after{background-color:#014240}.section-editorial-content .su-event-type a.mailto svg{fill:#014240}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a{color:#014240;outline-color:#014240;font-size:.9em;display:inline-block;color:#82817f;font-weight:400;text-transform:uppercase;text-decoration:none}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:hover svg.mailto{fill:#000}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:hover:after{background-color:#000}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:focus:after{background-color:#000}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:active{color:#2e2d29}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:active:after{background-color:#000}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a:after{background-color:#014240}.su-events-type-schedule .node-stanford-event-su-event-type .su-event-type-bottom a.mailto svg{fill:#014240}.su-event-list-item{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:40px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.su-event-list-item .su-date-stacked{max-width:unset}.su-event-list-item .su-event-list-item__date{max-width:unset;margin-right:unset;margin-bottom:unset}.su-event-list-item .su-event-list-item__date .su-event-end-date,.su-event-list-item .su-event-list-item__date .su-event-end-month,.su-event-list-item .su-event-list-item__date .su-event-start-date,.su-event-list-item .su-event-list-item__date .su-event-start-month{font-weight:400;line-height:1}.su-event-list-item .su-date-stacked.su-date-stacked--no-background{background-color:#e9f7f8;border:1px solid #014240;border-radius:70px;width:110px;padding:20px}.su-event-list-item .su-event-list-item__details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.su-event-list-item .su-event-list-item__details .event-list-item__type{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.su-event-list-item .su-event-list-item__details .event-list-item__type a{color:#014240;outline-color:#014240;padding-top:1.5rem;padding-bottom:1.5rem;display:inline-block;color:#82817f;font-weight:400;text-transform:uppercase;text-decoration:none;font-size:2rem}.su-event-list-item .su-event-list-item__details .event-list-item__type a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-event-list-item .su-event-list-item__details .event-list-item__type a:hover svg.mailto{fill:#000}.su-event-list-item .su-event-list-item__details .event-list-item__type a:hover:after{background-color:#000}.su-event-list-item .su-event-list-item__details .event-list-item__type a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-event-list-item .su-event-list-item__details .event-list-item__type a:focus:after{background-color:#000}.su-event-list-item .su-event-list-item__details .event-list-item__type a:active{color:#2e2d29}.su-event-list-item .su-event-list-item__details .event-list-item__type a:active:after{background-color:#000}.su-event-list-item .su-event-list-item__details .event-list-item__type a:after{background-color:#014240}.su-event-list-item .su-event-list-item__details .event-list-item__type a.mailto svg{fill:#014240}@media only screen and (min-width:768px){.su-event-list-item .su-event-list-item__details .event-list-item__type a{padding-top:1.8rem}}@media only screen and (min-width:1500px){.su-event-list-item .su-event-list-item__details .event-list-item__type a{padding-top:1.9rem}}@media only screen and (min-width:768px){.su-event-list-item .su-event-list-item__details .event-list-item__type a{padding-bottom:1.8rem}}@media only screen and (min-width:1500px){.su-event-list-item .su-event-list-item__details .event-list-item__type a{padding-bottom:1.9rem}}.su-event-list-item .su-event-list-item__details h2>a{color:#014240;outline-color:#014240;font-weight:400;text-decoration:none}@supports ((-webkit-mask-repeat:no-repeat) or (mask-repeat:no-repeat)){.su-event-list-item .su-event-list-item__details h2>a:after{height:.5em;width:.5em;display:inline-block;content:"";-webkit-mask:url(../assets/svg/caret-right.svg) no-repeat 0 0;mask:url(../assets/svg/caret-right.svg) no-repeat 0 0;-webkit-mask-size:contain;mask-size:contain}.su-event-list-item .su-event-list-item__details h2>a:focus:after,.su-event-list-item .su-event-list-item__details h2>a:hover:after{background-color:#2e2d29}.su-event-list-item .su-event-list-item__details h2>a:after{margin-right:.3em;margin-bottom:.06em;margin-left:.4em;background-color:#006cb8;-webkit-transition:-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out;transition:-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out;transition:transform .2s ease-in-out,mask-image .2s ease-in-out;transition:transform .2s ease-in-out,mask-image .2s ease-in-out,-webkit-transform .2s ease-in-out,-webkit-mask-image .2s ease-in-out}.su-event-list-item .su-event-list-item__details h2>a:focus:after,.su-event-list-item .su-event-list-item__details h2>a:hover:after{-webkit-transform:translateX(.2em);transform:translateX(.2em)}}.su-event-list-item .su-event-list-item__details h2>a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-event-list-item .su-event-list-item__details h2>a:hover svg.mailto{fill:#000}.su-event-list-item .su-event-list-item__details h2>a:hover:after{background-color:#000}.su-event-list-item .su-event-list-item__details h2>a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-event-list-item .su-event-list-item__details h2>a:focus:after{background-color:#000}.su-event-list-item .su-event-list-item__details h2>a:active{color:#2e2d29}.su-event-list-item .su-event-list-item__details h2>a:active:after{background-color:#000}.su-event-list-item .su-event-list-item__details h2>a.mailto svg{fill:#014240}.su-event-list-item .su-event-list-item__details h2>a:after{background-color:#014240}.su-event-list-item .views-field-su-event-date-time span{padding-right:0}.su-event-list-item .date-icon:before{content:""}.su-event-card.su-card{border:none;-webkit-box-shadow:none;box-shadow:none}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a{color:#014240;outline-color:#014240;color:#82817f;font-size:2rem;font-weight:400;text-transform:uppercase;text-decoration:none}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:hover svg.mailto{fill:#000}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:hover:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:focus:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:active{color:#2e2d29}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:active:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a:after{background-color:#014240}.su-event-card.su-card .su-event-list-item__details .event-list-item__type a.mailto svg{fill:#014240}.su-event-card.su-card .su-event-list-item__details h2>a{color:#014240;outline-color:#014240;display:inline-block;text-decoration:none}.su-event-card.su-card .su-event-list-item__details h2>a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-event-card.su-card .su-event-list-item__details h2>a:hover svg.mailto{fill:#000}.su-event-card.su-card .su-event-list-item__details h2>a:hover:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details h2>a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-event-card.su-card .su-event-list-item__details h2>a:focus:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details h2>a:active{color:#2e2d29}.su-event-card.su-card .su-event-list-item__details h2>a:active:after{background-color:#000}.su-event-card.su-card .su-event-list-item__details h2>a:after{background-color:#014240}.su-event-card.su-card .su-event-list-item__details h2>a.mailto svg{fill:#014240}.su-event-card.su-card .su-event-list-item__details .event-list-item__subheadline{display:none}.ptype-stanford-lists[data-react-columns="4"] .su-event-list-item__date,.ptype-stanford-lists[data-react-columns="6"] .su-event-list-item__date{margin-bottom:inherit}.su-row-bgcolor--green .su-event-card.su-card .su-event-list-item__details h2>a:focus:after,.su-row-bgcolor--green .su-event-card.su-card .su-event-list-item__details h2>a:hover:after{background-color:#fff}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details,.su-row-bgcolor--green .su-event-list-item h2{color:#fff}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a{color:#b1ef89}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a:active,.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a:focus,.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a:hover{color:#fff}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details h2>a:after{background-color:#b1ef89}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .event-list-item__type a{color:#e9f7f8;text-decoration:none}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .event-list-item__type a:active,.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .event-list-item__type a:focus,.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .event-list-item__type a:hover{color:#fff;text-decoration:underline}.su-row-bgcolor--green .su-event-list-item .su-event-list-item__details .views-field-su-event-location>.map-icon:before{color:#fff}.su-brand-bar__container{display:-webkit-box;display:-ms-flexbox;display:flex}.su-brand-bar__container .su-brand-bar__logo{width:10%}.fixed-header.su-lockup--option-a .su-lockup__line5,.fixed-header.su-lockup--option-b .su-lockup__line5{display:none}@media (min-width:992px){.page-user-login .su-masthead>section:last-of-type{display:-ms-grid;display:grid;-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:"lockup lockup lockup" "main-nav main-nav search";-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.page-user-login .su-masthead{padding-bottom:0}.page-user-login .su-lockup--option-none section:after{background:transparent}.page-user-login .su-lockup--option-none .su-masthead{padding-top:1em}}.su-lockup--option-none .su-lockup__custom-logo{max-width:150px}.su-lockup--option-none.su-lockup{display:block}@media (min-width:992px){.su-lockup.su-lockup--option-none .su-masthead{margin:0 auto}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead{display:-ms-grid;display:grid;-ms-grid-columns:200px 1fr 40px;grid-template-columns:200px 1fr 40px;grid-template-areas:"lockup main-nav search";-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;background:#e9f7f8}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead .su-lockup{grid-area:lockup;background:#fff;width:175px;max-width:unset;padding:1em 0;margin-right:-20px;height:100%}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead #sdss-button--search-link{grid-area:search;width:32px;height:32px;position:relative;top:15px;right:unset;-ms-grid-row-align:center;align-self:center;background-color:#014240;border-radius:32px;left:8px}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead .su-multi-menu{grid-area:main-nav;background-color:#e9f7f8}.su-lockup.su-lockup--option-none .su-masthead nav+.su-site-search,.su-lockup.su-lockup--option-none .su-masthead ul li .su-site-search{display:none}.su-lockup.su-lockup--option-none .su-masthead .su-multi-menu__menu.su-multi-menu__menu-lv1{background-color:#e9f7f8}.su-lockup.su-lockup--option-none section{position:relative}.su-lockup.su-lockup--option-none section:after,.su-lockup.su-lockup--option-none section:before{content:"";position:absolute;top:0;bottom:0;width:9600px;right:100%;background:#fff}.su-lockup.su-lockup--option-none section:after{left:100%;background:#e9f7f8}}.su-lockup.su-lockup--option-none .su-brand-bar__container>span{display:none}.fixed-header.su-lockup.su-lockup--option-a,.fixed-header.su-lockup.su-lockup--option-b{display:unset}@media (min-width:992px){.fixed-header.su-lockup--option-a,.fixed-header.su-lockup--option-b{line-height:2em;padding:0}.fixed-header.su-lockup--option-a .su-lockup__cell1,.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell1,.fixed-header.su-lockup--option-b .su-lockup__cell2{border-right:0;border-left:0}.fixed-header.su-lockup--option-a .su-lockup__custom-logo,.fixed-header.su-lockup--option-b .su-lockup__custom-logo{max-width:166px}.fixed-header.su-lockup--option-a .su-lockup__cell1,.fixed-header.su-lockup--option-b .su-lockup__cell1{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;margin-right:30px;max-width:192px}.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell2{margin-right:30px}.fixed-header.su-lockup--option-a .su-lockup__line1,.fixed-header.su-lockup--option-a .su-lockup__line2,.fixed-header.su-lockup--option-b .su-lockup__line1,.fixed-header.su-lockup--option-b .su-lockup__line2{color:#fff}.fixed-header.su-lockup--option-a .su-lockup__line5,.fixed-header.su-lockup--option-b .su-lockup__line5{display:none}.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell2{border-left:0;background-color:#014240;padding:30px;max-width:unset}.fixed-header.su-lockup--option-a .sdss-masthead,.fixed-header.su-lockup--option-b .sdss-masthead{display:-ms-grid;display:grid;-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:"lockup lockup lockup" "main-nav main-nav search";-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-column-gap:40px;-moz-column-gap:40px;column-gap:40px}.fixed-header.su-lockup--option-a .sdss-masthead .su-lockup,.fixed-header.su-lockup--option-b .sdss-masthead .su-lockup{grid-area:lockup;background:#fff;width:unset;max-width:unset;padding:0;margin-right:-20px}.fixed-header.su-lockup--option-a .sdss-masthead #sdss-button--search-link,.fixed-header.su-lockup--option-b .sdss-masthead #sdss-button--search-link{grid-area:search;width:32px;height:32px;position:relative;top:0;right:unset;-ms-grid-row-align:center;align-self:center;background-color:#014240;border-radius:32px;left:8px}.fixed-header.su-lockup--option-a .sdss-masthead .su-multi-menu,.fixed-header.su-lockup--option-b .sdss-masthead .su-multi-menu{grid-area:main-nav}.fixed-header.su-lockup--option-a nav+.su-site-search,.fixed-header.su-lockup--option-a ul li .su-site-search,.fixed-header.su-lockup--option-b nav+.su-site-search,.fixed-header.su-lockup--option-b ul li .su-site-search{display:none}.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell2{position:relative}.fixed-header.su-lockup--option-a .su-lockup__cell2:after,.fixed-header.su-lockup--option-b .su-lockup__cell2:after{content:"";position:absolute;top:0;bottom:0;width:9600px;right:100%;left:100%;background:#014240}.fixed-header.su-lockup--option-a .sdss-masthead>.su-lockup,.fixed-header.su-lockup--option-b .sdss-masthead>.su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:5}.fixed-header.su-lockup--option-a .sdss-masthead>#sdss-button--search-link,.fixed-header.su-lockup--option-b .sdss-masthead>#sdss-button--search-link{-ms-grid-row:2;-ms-grid-column:5}.fixed-header.su-lockup--option-a .sdss-masthead>.su-multi-menu,.fixed-header.su-lockup--option-b .sdss-masthead>.su-multi-menu{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:3}}@media (min-width:992px){.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead .su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>.su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:1}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead #sdss-button--search-link{-ms-grid-row:2;-ms-grid-column:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>#sdss-button--search-link{-ms-grid-row:1;-ms-grid-column:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead .su-multi-menu{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:2}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>.su-multi-menu{-ms-grid-row:1;-ms-grid-column:2;-ms-grid-column-span:1}.fixed-header.su-lockup--option-a .sdss-masthead .su-lockup,.fixed-header.su-lockup--option-b .sdss-masthead .su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>.su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:1}.fixed-header.su-lockup--option-a .sdss-masthead>.su-lockup,.fixed-header.su-lockup--option-b .sdss-masthead>.su-lockup{-ms-grid-row:1;-ms-grid-column:1;-ms-grid-column-span:5}.fixed-header.su-lockup--option-a .sdss-masthead #sdss-button--search-link,.fixed-header.su-lockup--option-b .sdss-masthead #sdss-button--search-link{-ms-grid-row:2;-ms-grid-column:3}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>#sdss-button--search-link{-ms-grid-row:1;-ms-grid-column:3}.fixed-header.su-lockup--option-a .sdss-masthead>#sdss-button--search-link,.fixed-header.su-lockup--option-b .sdss-masthead>#sdss-button--search-link{-ms-grid-row:2;-ms-grid-column:5}.fixed-header.su-lockup--option-a .sdss-masthead .su-multi-menu,.fixed-header.su-lockup--option-b .sdss-masthead .su-multi-menu{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:2}.su-lockup.su-lockup--option-none .su-masthead .sdss-masthead>.su-multi-menu{-ms-grid-row:1;-ms-grid-column:2;-ms-grid-column-span:1}.fixed-header.su-lockup--option-a .sdss-masthead>.su-multi-menu,.fixed-header.su-lockup--option-b .sdss-masthead>.su-multi-menu{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:3}}@media (max-width:991px){.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle{color:#fff}.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle:after,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle:after{margin:0 auto;display:inline-block;width:30px;height:26px;background:url(../assets/svg/hamburger-white.svg) no-repeat 3px 0;content:""}.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle:focus:before,.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle:hover:before,.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:before,.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:focus:before,.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:hover:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle:focus:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle:hover:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:focus:before,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:hover:before{background-color:#fff}.fixed-header.su-lockup--option-a .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:after,.fixed-header.su-lockup--option-b .su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:after{width:22px;background:url(../assets/svg/close-white.svg) no-repeat 3px 0;background-size:16px 16px}.su-masthead>section:last-of-type{padding-top:2rem}.fixed-header.su-lockup--option-a .su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup--option-a .su-lockup__cell2{border-left:none;padding-bottom:1em;padding-left:1em}.fixed-header.su-lockup--option-a .su-lockup__cell1,.fixed-header.su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup__cell1,.fixed-header.su-lockup--option-b .su-lockup__cell2{border:none}.fixed-header.su-lockup--option-a .su-lockup__line1,.fixed-header.su-lockup--option-a .su-lockup__line2,.fixed-header.su-lockup--option-b .su-lockup__line1,.fixed-header.su-lockup--option-b .su-lockup__line2{color:#fff}.fixed-header.su-lockup--option-a section,.fixed-header.su-lockup--option-b section{position:relative;background-color:#014240}.fixed-header.su-lockup--option-a section:after,.fixed-header.su-lockup--option-a section:before,.fixed-header.su-lockup--option-b section:after,.fixed-header.su-lockup--option-b section:before{content:"";position:absolute;top:0;bottom:0;width:9600px;right:calc(100% - 160px);background:#fff}.fixed-header.su-lockup--option-a section:after,.fixed-header.su-lockup--option-b section:after{left:100%;background:#014240}.fixed-header.su-lockup--option-b .su-lockup__line2{line-height:1em}}@media (max-width:575px){.fixed-header.su-lockup--option-a .su-masthead .su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-masthead .su-lockup--option-a .su-lockup__cell2{padding-left:0}.fixed-header.su-lockup--option-a .su-lockup__line1{margin-left:0}}@media (max-width:767px){.fixed-header.su-lockup--option-a .su-lockup--option-a .su-lockup__cell2,.fixed-header.su-lockup--option-b .su-lockup--option-a .su-lockup__cell2{padding-left:0}.fixed-header.su-lockup--option-a .su-masthead>section:last-of-type,.fixed-header.su-lockup--option-b .su-masthead>section:last-of-type{padding-top:1.5rem}.fixed-header.su-lockup--option-a .su-lockup a,.fixed-header.su-lockup--option-b .su-lockup a{-webkit-box-align:left;-ms-flex-align:left;align-items:left;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:20px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;vertical-align:bottom;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fixed-header.su-lockup--option-a section,.fixed-header.su-lockup--option-b section{position:relative;background-color:#014240;margin-left:0;margin-right:0;padding-left:30px;padding-right:30px;min-width:100%}.fixed-header.su-lockup--option-a section:before,.fixed-header.su-lockup--option-b section:before{content:"";position:absolute;top:0;bottom:calc(100% - 65px);width:9600px;right:-20%;background:#fff}.fixed-header.su-lockup--option-a section:after,.fixed-header.su-lockup--option-b section:after{content:"";position:absolute;top:0;bottom:190px;width:9600px;right:-20%;background:#fff;left:100%;background:#014240}}nav[aria-label^=footer] a,nav[aria-label^=footer] a.su-link--external:active,nav[aria-label^=footer] a.su-link--external:focus,nav[aria-label^=footer] a.su-link--external:hover,nav[aria-label^=footer] a:hover{color:#fff}nav[aria-label^=footer] a.su-link--external:active:after,nav[aria-label^=footer] a.su-link--external:focus:after,nav[aria-label^=footer] a.su-link--external:hover:after{background-color:#fff}.su-local-footer{background-color:#014240;color:#fff}.su-local-footer a{font-weight:400}.su-local-footer .su-local-footer__cell2{font-size:1.11em;font-weight:600}.su-local-footer .su-local-footer__action-links{font-size:1.11em}.su-local-footer .su-local-footer__columns{-ms-grid-columns:1.5fr 1fr 1fr 0;grid-template-columns:1.5fr 1fr 1fr 0}.su-local-footer .su-local-footer__columns .su-local-footer__cell3{display:none}@media (min-width:992px){.su-local-footer .su-local-footer__header{padding-top:3.8rem}}@media only screen and (min-width:992px) and (min-width:768px){.su-local-footer .su-local-footer__header{padding-top:7.2rem}}@media only screen and (min-width:992px) and (min-width:1500px){.su-local-footer .su-local-footer__header{padding-top:7.6rem}}@media (min-width:992px){.su-local-footer .su-local-footer__columns{padding-top:3.4rem;padding-bottom:3.4rem}}@media only screen and (min-width:992px) and (min-width:768px){.su-local-footer .su-local-footer__columns{padding-top:5.8rem}}@media only screen and (min-width:992px) and (min-width:1500px){.su-local-footer .su-local-footer__columns{padding-top:6.1rem}}@media only screen and (min-width:992px) and (min-width:768px){.su-local-footer .su-local-footer__columns{padding-bottom:5.8rem}}@media only screen and (min-width:992px) and (min-width:1500px){.su-local-footer .su-local-footer__columns{padding-bottom:6.1rem}}@media (min-width:992px){.su-local-footer .su-local-footer__action-links{padding-bottom:3rem}}@media only screen and (min-width:992px) and (min-width:768px){.su-local-footer .su-local-footer__action-links{padding-bottom:3.6rem}}@media only screen and (min-width:992px) and (min-width:1500px){.su-local-footer .su-local-footer__action-links{padding-bottom:3.8rem}}.su-local-footer span.su-lockup__wordmark{color:#fff}.su-local-footer .su-lockup__cell2{border-left:2px solid #fff}.su-local-footer .sdss-footer--stay-connected{margin-bottom:1.5rem}@media only screen and (min-width:768px){.su-local-footer .sdss-footer--stay-connected{margin-bottom:1.8rem}}@media only screen and (min-width:1500px){.su-local-footer .sdss-footer--stay-connected{margin-bottom:1.9rem}}.su-local-footer .sdss-footer--stay-connected p{padding-bottom:5px}.su-local-footer .su-local-footer__address{font-size:1em;padding-bottom:5px}.su-local-footer .su-local-footer__address .organization{font-weight:400}@media (max-width:767px){.su-local-footer .su-local-footer__address .organization{font-size:2.1rem;line-height:130%}}@media (min-width:768px){.su-local-footer .su-local-footer__address .organization{font-size:2.6rem;line-height:130%}}@media (min-width:992px){.su-local-footer .su-local-footer__address .organization{font-size:2.6rem;line-height:130%}}.su-local-footer .su-local-footer__address .address{font-weight:400}.su-local-footer .su-local-footer__columns a{color:#92d7dd;text-decoration:none}.su-local-footer .su-local-footer__columns a:hover{color:#fff;cursor:pointer}.su-local-footer .su-local-footer__columns a:hover svg.mailto{fill:#fff}.su-local-footer .su-local-footer__columns a:hover:after{background-color:#fff}.su-local-footer .su-local-footer__columns a:focus{color:#fff;outline:1px solid #fff;background-color:transparent}.su-local-footer .su-local-footer__columns a:focus:after{background-color:#fff}.su-local-footer .su-local-footer__columns a:active{color:#fff}.su-local-footer .su-local-footer__columns a:active:after{background-color:#fff}.su-local-footer .su-local-footer__columns a:after{background-color:#92d7dd}.su-local-footer .su-local-footer__columns a.mailto svg{fill:#92d7dd}.su-local-footer .su-local-footer__columns a:hover{text-decoration:underline}.su-local-footer .su-local-footer__social-links i:before{color:#92d7dd}.su-local-footer .su-local-footer__action-links a{color:#92d7dd;text-decoration:none}.su-local-footer .su-local-footer__action-links a:hover{color:#fff;cursor:pointer}.su-local-footer .su-local-footer__action-links a:hover svg.mailto{fill:#fff}.su-local-footer .su-local-footer__action-links a:hover:after{background-color:#fff}.su-local-footer .su-local-footer__action-links a:focus{color:#fff;outline:1px solid #fff;background-color:transparent}.su-local-footer .su-local-footer__action-links a:focus:after{background-color:#fff}.su-local-footer .su-local-footer__action-links a:active{color:#fff}.su-local-footer .su-local-footer__action-links a:active:after{background-color:#fff}.su-local-footer .su-local-footer__action-links a:after{background-color:#92d7dd}.su-local-footer .su-local-footer__action-links a.mailto svg{fill:#92d7dd}.su-local-footer .su-local-footer__list-heading{color:#fff;font-weight:700}@media (max-width:767px){.su-local-footer .su-local-footer__list-heading{font-size:2.1rem;line-height:130%}}@media (min-width:768px){.su-local-footer .su-local-footer__list-heading{font-size:2.6rem;line-height:130%}}@media (min-width:992px){.su-local-footer .su-local-footer__list-heading{font-size:2.6rem;line-height:130%}}.su-local-footer a.su-link--external.su-button--secondary{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#fff;border:1px solid #fff;text-decoration:none;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem}.su-local-footer a.su-link--external.su-button--secondary:hover{background:#155f65;border:1px solid #155f65;color:#fff;cursor:pointer;text-decoration:underline}.su-local-footer a.su-link--external.su-button--secondary:hover svg.mailto{fill:#fff}.su-local-footer a.su-link--external.su-button--secondary:hover:after{background-color:#fff}.su-local-footer a.su-link--external.su-button--secondary:focus{outline:3px solid #fff;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;text-decoration:underline}.su-local-footer a.su-link--external.su-button--secondary:focus:after{background-color:#fff}.su-local-footer a.su-link--external.su-button--secondary:active{background-color:#fff;color:#014240;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.su-local-footer a.su-link--external.su-button--secondary:active:after{background-color:#014240}.su-local-footer a.su-link--external.su-button--secondary:after{background-color:#fff}.su-local-footer .su-wysiwyg-text h2,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:active,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:focus,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:hover,.su-local-footer .su-wysiwyg-text h3,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:active,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:focus,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:hover,.su-local-footer .su-wysiwyg-text h4,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:active,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:focus,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:hover,.su-local-footer .su-wysiwyg-text h5,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:active,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:focus,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:hover{color:#fff}.su-local-footer .su-wysiwyg-text h2 a.su-link--external:active:after,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:focus:after,.su-local-footer .su-wysiwyg-text h2 a.su-link--external:hover:after,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:active:after,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:focus:after,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:hover:after,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:active:after,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:focus:after,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:hover:after,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:active:after,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:focus:after,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:hover:after{background-color:#fff}.su-local-footer .su-wysiwyg-text h2 a.su-link--external:after,.su-local-footer .su-wysiwyg-text h3 a.su-link--external:after,.su-local-footer .su-wysiwyg-text h4 a.su-link--external:after,.su-local-footer .su-wysiwyg-text h5 a.su-link--external:after{background-color:#92d7dd}@media (min-width:992px){.su-masthead .su-lockup{margin-bottom:0}}.su-masthead .su-lockup a{-ms-flex-wrap:initial;flex-wrap:nowrap}.su-masthead .su-lockup .su-lockup__custom-logo{max-height:5rem}@media (min-width:992px){.su-masthead .su-lockup .su-lockup__custom-logo{max-height:5.5rem}}.su-lockup--option-a .su-lockup__line5{font-weight:400;text-transform:none}.su-lockup--option-a .su-lockup__line1{font-size:1.5625em;letter-spacing:-.012em;-webkit-text-stroke-width:.1px}@media (min-width:768px){.su-lockup--option-a .su-lockup__line1{line-height:1.05em}}.su-lockup--option-a .su-lockup__line5{font-family:Source Sans Pro Light,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:25px;letter-spacing:.001em;-webkit-text-stroke-width:.1px}@media (max-width:991px){.su-lockup--option-a>a{-webkit-box-orient:unset;-webkit-box-direction:unset;-ms-flex-direction:unset;flex-direction:unset;-ms-flex-wrap:wrap;flex-wrap:wrap}.su-lockup--option-a .su-lockup__line5{margin-top:.75rem;margin-left:-2px;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.su-lockup--option-a .su-lockup__cell2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}}@media (max-width:991px){.su-masthead .su-lockup--option-a .su-lockup__cell1{border-right:none}.su-masthead .su-lockup--option-a .su-lockup__cell2{border-left:1px solid #000}.su-masthead .su-lockup--option-a .su-lockup__line5:after{border-bottom:0}}.su-local-footer .su-lockup__line1,.su-local-footer .su-lockup__line5{color:#fff}@media (max-width:991px){.su-local-footer .su-lockup--option-a .su-lockup__cell1{border-right:none}.su-local-footer .su-lockup--option-a .su-lockup__line5:after{border-bottom:0}}.page-user-login .su-masthead{padding-bottom:2rem}.system-main-block form .su-button{padding:1rem 2rem 1.15rem;background-color:#b1040e;color:#fff;background:#b1ef89;border-radius:3rem;color:#000;font-weight:400;line-height:1.15;margin:0 .3rem .3rem;text-decoration:none;-webkit-transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out;transition:background-color .25s ease-in-out,color .25s ease-in-out,border-color .25s ease-in-out}.system-main-block form .su-button:after,.system-main-block form .su-button:before{background-color:#fff;color:#b1040e}.system-main-block form .su-button:focus,.system-main-block form .su-button:hover{background-color:#2e2d29;color:#fff}.system-main-block form .su-button:focus:after,.system-main-block form .su-button:focus:before,.system-main-block form .su-button:hover:after,.system-main-block form .su-button:hover:before{background-color:#fff}.system-main-block form .su-button:focus{-webkit-box-shadow:0 0 3px #53565a,0 0 7px #53565a;box-shadow:0 0 3px #53565a,0 0 7px #53565a}.system-main-block form .su-button:hover{background:#90cc69;color:#000;cursor:pointer;text-decoration:underline}.system-main-block form .su-button:hover svg.mailto{fill:#000}.system-main-block form .su-button:hover:after{background-color:#000}.system-main-block form .su-button:focus{outline:3px solid #014240;background-color:#b1ef89;-webkit-box-shadow:none;box-shadow:none;color:#014240;text-decoration:underline}.system-main-block form .su-button:focus:after{background-color:#014240}.system-main-block form .su-button:active{background-color:#155f65;color:#fff;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.system-main-block form .su-button:active:after{background-color:#fff}.system-main-block form .su-button:after{background-color:#000}.su-site-search__submit{padding:0;margin-top:0;margin-right:0;margin-bottom:0;background:url(../assets/svg/magnifying-glass-24px.svg) no-repeat 0 0;opacity:.6;position:absolute;top:1.1rem;right:1.2rem;width:24px;height:25px}.su-site-search__submit:hover{background:#b1ef89 url(../assets/svg/magnifying-glass-24px.svg) no-repeat 0 0}@media (min-width:992px){html{scroll-padding-top:21em}.fixed-header{position:sticky;top:0;left:0;width:100%;z-index:100}.role--authenticated .fixed-header{top:79px}}@media (min-width:992px){.su-multi-menu .su-multi-menu__menu-lv2{padding-top:1px;padding-left:1.2rem;margin-left:0;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.1);box-shadow:0 3px 6px rgba(0,0,0,.1);z-index:101;max-width:30rem}}.su-multi-menu .su-multi-menu__menu-lv1>li:last-child>.su-multi-menu__menu-lv2{right:unset}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link{border-bottom:none;color:#2e2d29;font-weight:400;font-size:1.9rem}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:hover>span{text-decoration:underline;color:#2e2d29}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:active:before{background-color:#000}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:hover>span{text-decoration:underline;color:#2e2d29}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:focus:before,.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:hover:before{background-color:#000;width:3px}.su-multi-menu .su-multi-menu__menu .su-multi-menu__link:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-multi-menu .su-multi-menu__item--current>.su-multi-menu__link{color:#014240}.su-multi-menu .su-multi-menu__item--current>.su-multi-menu__link:before{background-color:#000;width:3px}@media (max-width:991px){.su-multi-menu .su-multi-menu__item--current>.su-multi-menu__link:before{background-color:#014240}}.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item>.su-multi-menu__link{color:#2e2d29;font-weight:400}.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item>.su-multi-menu__link:active,.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item>.su-multi-menu__link:focus,.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item>.su-multi-menu__link:hover{font-weight:400}.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item.su-multi-menu__item--active-trail>.su-multi-menu__link{color:#155f65}.su-multi-menu .su-multi-menu__menu-lv1>.su-multi-menu__item.su-multi-menu__item--active-trail>.su-multi-menu__link:before{background-color:#155f65}@media (min-width:992px){.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent:last-of-type{margin:0}}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent{margin:0 40px 0 0}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-multi-menu__item--parent:last-of-type{margin:0}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-multi-menu__link:after{border-right:none;margin-left:6px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-nav-toggle[aria-expanded=true]:focus:before{background:#155f65 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%}@media (max-width:991px){.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-nav-toggle:before,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-nav-toggle:focus:before,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu-lv1>.su-multi-menu__item--parent>.su-nav-toggle:hover:before{background:#155f65 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%}}.su-multi-menu .su-multi-menu__menu{background-color:#fff}.su-multi-menu .su-multi-menu__nav-toggle:focus:before,.su-multi-menu .su-multi-menu__nav-toggle:hover:before,.su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:before,.su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:focus:before,.su-multi-menu .su-multi-menu__nav-toggle[aria-expanded=true]:hover:before{background-color:#155f65}@media (min-width:992px){.su-multi-menu__menu.su-multi-menu__menu-lv1 .su-nav-toggle:before{content:"";background:#155f65 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%;height:30px;width:30px;display:block;position:absolute;top:5px;right:2px}}@media (min-width:992px){.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu.su-multi-menu__menu-lv2 button.su-nav-toggle,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu.su-multi-menu__menu-lv2 ul.su-multi-menu__menu{display:none}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu.su-multi-menu__menu-lv2 .su-multi-menu__link .su-multi-menu__link-text-wrapper{max-width:none}}@media (min-width:992px){.su-multi-menu__menu-lv1 .su-multi-menu__menu .su-nav-toggle:before{content:"";background:#fff url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;background-size:15px;border-radius:19px;top:5px;right:10px}.su-multi-menu__menu-lv1 .su-multi-menu__menu .su-nav-toggle[aria-expanded=true]{top:15px;right:17px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu .su-multi-menu__menu-lv2>.su-multi-menu__item>a.su-multi-menu__link{padding-right:1rem}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu .su-multi-menu__menu-lv2>.su-multi-menu__item--parent .su-nav-toggle:before{right:15px;top:5px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu .su-multi-menu__menu-lv2>.su-multi-menu__item--parent .su-nav-toggle[aria-expanded=true]{top:10px;right:25px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu .su-multi-menu__menu-lv2>.su-multi-menu__item--parent .su-nav-toggle:focus[aria-expanded=true]:before{top:-2px;right:10px}.su-multi-menu__menu-lv2 .su-multi-menu__item .su-nav-toggle:before{content:"";background:transparent url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;background-size:15px;border-radius:19px;top:5px;right:10px}.su-multi-menu__menu-lv2 .su-multi-menu__item .su-nav-toggle[aria-expanded=true]{top:15px;right:17px}}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle{overflow:visible;width:32px;height:32px;top:10px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:active,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:focus,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:hover,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:hover[aria-expanded=false],.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle[aria-expanded=true]:active,.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle[aria-expanded=true]:focus{border-bottom:0;border-top:0}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle[aria-expanded=true]{top:15px;right:2px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:hover:before{background:transparent url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;border-radius:19px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:hover[aria-expanded=false]:before{-webkit-box-shadow:0 8px 25px rgba(0,0,0,.14);box-shadow:0 8px 25px rgba(0,0,0,.14);border:1px solid #2e2d29}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:active:before{background:transparent url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;border-radius:19px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:focus:before{background:#2e2d29 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%;border-radius:19px}.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:before{background:transparent url(../assets/svg/caret-down-black.svg) no-repeat 50%/50%;border-radius:19px}@media (max-width:991px){.su-multi-menu.su-multi-menu--dropdowns .su-multi-menu__menu>.su-multi-menu__item--parent .su-nav-toggle:before{background:#155f65 url(../assets/svg/caret-down-white.svg) no-repeat 50%/50%}}.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-bottom:1.1rem;padding-top:1.1rem;margin:0}@media only screen and (min-width:768px){.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-bottom:1.2rem}}@media only screen and (min-width:1500px){.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-bottom:1.3rem}}@media only screen and (min-width:768px){.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-top:1.2rem}}@media only screen and (min-width:1500px){.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link{padding-top:1.3rem}}.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link:hover:before,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link:hover:before,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link:hover:before,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link:hover:before{left:-12px}.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link:active>span,.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu-lv2 .su-multi-menu__item>.su-multi-menu__link:hover>span,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link:active>span,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu-lv3 .su-multi-menu__item>.su-multi-menu__link:hover>span,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link:active>span,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu-lv4 .su-multi-menu__item>.su-multi-menu__link:hover>span,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link:active>span,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link:focus>span,.su-multi-menu .su-multi-menu__menu-lv5 .su-multi-menu__item>.su-multi-menu__link:hover>span{color:#155f65}@media only screen and (min-width:992px){.su-masthead>section:last-of-type{display:-ms-grid;display:grid;padding:0}}.su-news-vertical-teaser.su-card{-webkit-box-shadow:none;box-shadow:none;border:none}.su-news-vertical-teaser.su-card h2{margin-left:0;margin-right:0}.su-news-vertical-teaser.su-card .su-link,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link{color:#014240;outline-color:#014240;display:inline;font-size:1.25em;font-weight:400;text-decoration:none}.su-news-vertical-teaser.su-card .su-link:hover,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover{color:#000;cursor:pointer;text-decoration:underline}.su-news-vertical-teaser.su-card .su-link:hover svg.mailto,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover svg.mailto{fill:#000}.su-news-vertical-teaser.su-card .su-link:hover:after,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover:after{background-color:#000}.su-news-vertical-teaser.su-card .su-link:focus,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-news-vertical-teaser.su-card .su-link:focus:after,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus:after{background-color:#000}.su-news-vertical-teaser.su-card .su-link:active,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:active{color:#2e2d29}.su-news-vertical-teaser.su-card .su-link:active:after,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:active:after{background-color:#000}.su-news-vertical-teaser.su-card .su-link:after,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:after{background-color:#014240}.su-news-vertical-teaser.su-card .su-link.mailto svg,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link.mailto svg{fill:#014240}.su-news-vertical-teaser.su-card .su-link:focus,.su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus{text-decoration:underline}.su-news-vertical-teaser.su-card .su-card__contents{padding:0}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-bottom:1.1rem;margin-top:1.1rem}@media only screen and (min-width:768px){.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-bottom:1.2rem}}@media only screen and (min-width:1500px){.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-bottom:1.3rem}}@media only screen and (min-width:768px){.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-top:1.2rem}}@media only screen and (min-width:1500px){.su-news-vertical-teaser.su-card .news-vertical-teaser__topics{margin-top:1.3rem}}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a{color:#014240;outline-color:#014240;color:#82817f;font-size:2rem;font-weight:400;text-decoration:none;text-transform:uppercase}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:hover svg.mailto{fill:#000}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:hover:after{background-color:#000}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:focus:after{background-color:#000}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:active{color:#2e2d29}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:active:after{background-color:#000}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a:after{background-color:#014240}.su-news-vertical-teaser.su-card .news-vertical-teaser__topics a.mailto svg{fill:#014240}.ptype-stanford-lists:not([data-react-columns="12"]) .su-news-vertical-teaser.su-card{margin-bottom:3.2rem}@media only screen and (min-width:768px){.ptype-stanford-lists:not([data-react-columns="12"]) .su-news-vertical-teaser.su-card{margin-bottom:4.5rem}}@media only screen and (min-width:1500px){.ptype-stanford-lists:not([data-react-columns="12"]) .su-news-vertical-teaser.su-card{margin-bottom:4.8rem}}.su-news-topics a{color:#014240}.news-vertical-teaser__pub-date{padding-bottom:1.5rem;padding-top:1.5rem}@media only screen and (min-width:768px){.news-vertical-teaser__pub-date{padding-bottom:1.8rem}}@media only screen and (min-width:1500px){.news-vertical-teaser__pub-date{padding-bottom:1.9rem}}@media only screen and (min-width:768px){.news-vertical-teaser__pub-date{padding-top:1.8rem}}@media only screen and (min-width:1500px){.news-vertical-teaser__pub-date{padding-top:1.9rem}}.news-vertical-teaser__source{font-size:.9em;color:#82817f;padding:1em 0 1.5em}.news-vertical-teaser__pub-date{font-size:.9em}.su-sdss-news-dek-long{margin-bottom:2rem}@media only screen and (min-width:768px){.su-sdss-news-dek-long{margin-bottom:2.6rem}}@media only screen and (min-width:1500px){.su-sdss-news-dek-long{margin-bottom:2.7rem}}.news-vertical-teaser__ext-link{display:none}.su-news-vertical-teaser a.su-link--external:after{height:.8em;width:.5em}.su-row-bgcolor--green h2{color:#fff}.su-row-bgcolor--green .su-news-list h2{color:#b1ef89}.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a{color:#fff}.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:after{background-color:#b1ef89}.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:active,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:active>h2,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:focus,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:focus>h2,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:hover,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:hover>h2{color:#fff}.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:active:after,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:focus:after,.su-row-bgcolor--green .su-news-list .su-news-list__headline-dek a:hover:after{background-color:#fff}.su-row-bgcolor--green .su-news-list .su-news-list__source{color:#fff}.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link{color:#b1ef89}.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:after{background-color:#b1ef89}.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:active,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:focus,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:hover,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:active,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover{color:#fff}.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:active:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:focus:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-link:hover:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:active:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:focus:after,.su-row-bgcolor--green .su-news-vertical-teaser.su-card .su-news-vertical-teaser__link:hover:after{background-color:#fff}.su-row-bgcolor--green .su-news-vertical-teaser .news-vertical-teaser__source{color:#fff}.su-news-list .su-news-list__headline-dek a{color:#014240;outline-color:#014240;text-decoration:none}.su-news-list .su-news-list__headline-dek a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-news-list .su-news-list__headline-dek a:hover svg.mailto{fill:#000}.su-news-list .su-news-list__headline-dek a:hover:after{background-color:#000}.su-news-list .su-news-list__headline-dek a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.su-news-list .su-news-list__headline-dek a:focus:after{background-color:#000}.su-news-list .su-news-list__headline-dek a:active{color:#2e2d29}.su-news-list .su-news-list__headline-dek a:active:after{background-color:#000}.su-news-list .su-news-list__headline-dek a:after{background-color:#014240}.su-news-list .su-news-list__headline-dek a.mailto svg{fill:#014240}.su-news-list .su-news-list__headline-dek a:hover>h2{color:#000}.su-news-list .su-news-list__header{display:-ms-grid;display:grid;-ms-grid-columns:1fr 25px 2fr;grid-template-columns:1fr 2fr;-ms-grid-rows:auto 25px auto;grid-template-areas:"article-image headline" "article-image date";gap:25px}.su-news-list .image .media{margin-left:0}.su-news-list .su-news-list__topics a{font-size:2rem;color:#82817f;font-weight:400;text-transform:uppercase}.su-news-list .su-news-list__topics ul{margin-top:0}.su-news-list .su-news-list__topics ul li{margin-bottom:0}.su-news-list .su-news-article{border-bottom:none}.su-news-list .su-news-list__source{font-size:.9em;color:#82817f;padding:1em 0 1.5em}.su-news-list .su-link--external:after{height:.8em;width:.5em}.ptype-stanford-lists:is([data-react-columns="6"]) .su-news-list img,.ptype-stanford-lists:is([data-react-columns="12"]) .su-news-list img{display:unset}.ptype-stanford-lists[data-react-columns="6"] .su-news-list__header{-ms-grid-columns:unset;grid-template-columns:unset}@media (max-width:1199px){.su-news-list .image .media{display:unset}}@media (max-width:991px){.su-news-list .su-news-list__header{display:-ms-grid;display:grid;-ms-grid-columns:100%;grid-template-columns:100%;grid-template-areas:"image" "headline" "date"}}@media (max-width:991px){.jumpstart-ui--one-column .container-1-items{margin-right:2.8em;margin-left:2.8em}}@media (max-width:767px){.jumpstart-ui--one-column .container-1-items{margin-right:1.9em;margin-left:1.9em}}.jumpstart-ui--one-column.centered-content{margin:0 auto}@media only screen and (min-width:0){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 40px);width:calc(100% - 40px)}}@media only screen and (min-width:576px){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 60px);width:calc(100% - 60px)}}@media only screen and (min-width:768px){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 100px);width:calc(100% - 100px)}}@media only screen and (min-width:992px){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 160px);width:calc(100% - 160px)}}@media only screen and (min-width:1200px){.jumpstart-ui--one-column.centered-content{max-width:calc(100% - 200px);width:calc(100% - 200px)}}@media only screen and (min-width:1500px){.jumpstart-ui--one-column.centered-content{max-width:1500px;width:calc(100% - 200px)}}.jumpstart-ui--one-column.centered-content>div:first-child{margin-left:unset;margin-right:unset}.people-terms .views-field-title a,.stanford-people-grid .views-field-title a{color:#014240;outline-color:#014240}@media (max-width:767px){.people-terms .views-field-title a,.stanford-people-grid .views-field-title a{font-size:2.6rem;line-height:120%}}@media (min-width:768px){.people-terms .views-field-title a,.stanford-people-grid .views-field-title a{font-size:3.2rem;line-height:120%}}@media (min-width:992px){.people-terms .views-field-title a,.stanford-people-grid .views-field-title a{font-size:3.2rem;line-height:120%}}.people-terms .views-field-title a:hover,.stanford-people-grid .views-field-title a:hover{color:#000;cursor:pointer;text-decoration:underline}.people-terms .views-field-title a:hover svg.mailto,.stanford-people-grid .views-field-title a:hover svg.mailto{fill:#000}.people-terms .views-field-title a:hover:after,.stanford-people-grid .views-field-title a:hover:after{background-color:#000}.people-terms .views-field-title a:focus,.stanford-people-grid .views-field-title a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.people-terms .views-field-title a:focus:after,.stanford-people-grid .views-field-title a:focus:after{background-color:#000}.people-terms .views-field-title a:active,.stanford-people-grid .views-field-title a:active{color:#2e2d29}.people-terms .views-field-title a:active:after,.stanford-people-grid .views-field-title a:active:after{background-color:#000}.people-terms .views-field-title a:after,.stanford-people-grid .views-field-title a:after{background-color:#014240}.people-terms .views-field-title a.mailto svg,.stanford-people-grid .views-field-title a.mailto svg{fill:#014240}.people-terms .views-field-title a h2,.people-terms .views-field-title a h3,.stanford-people-grid .views-field-title a h2,.stanford-people-grid .views-field-title a h3{display:inline;font-weight:400;line-height:120%}.people-terms .views-field-title a:focus h2,.people-terms .views-field-title a:focus h3,.stanford-people-grid .views-field-title a:focus h2,.stanford-people-grid .views-field-title a:focus h3{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.people-terms .views-field-su-person-short-title,.stanford-people-grid .views-field-su-person-short-title{color:#2e2d29}.stanford-people-grid .views-field-title a{color:#014240;outline-color:#014240;font-size:1.5625em}.stanford-people-grid .views-field-title a:hover{color:#000;cursor:pointer;text-decoration:underline}.stanford-people-grid .views-field-title a:hover svg.mailto{fill:#000}.stanford-people-grid .views-field-title a:hover:after{background-color:#000}.stanford-people-grid .views-field-title a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.stanford-people-grid .views-field-title a:focus:after{background-color:#000}.stanford-people-grid .views-field-title a:active{color:#2e2d29}.stanford-people-grid .views-field-title a:active:after{background-color:#000}.stanford-people-grid .views-field-title a:after{background-color:#014240}.stanford-people-grid .views-field-title a.mailto svg{fill:#014240}.stanford-people-grid .views-field-su-person-full-title{font-size:2rem}.ds-entity--stanford-person .su-card a{font-size:.52em;color:#014240;display:inline-block;font-weight:400}.ds-entity--stanford-person .su-card a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.ds-entity--stanford-person .su-card a:active{color:#2e2d29}.ds-entity--stanford-person .su-card .su-person-short-title{color:#2e2d29;font-size:2rem}@media only screen and (min-width:768px){.ds-entity--stanford-person h2{line-height:inherit}}.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-top:3.4rem}@media only screen and (min-width:768px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-top:5.8rem}}@media only screen and (min-width:1500px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-top:6.1rem}}@media (max-width:991px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-bottom:3rem;margin-bottom:3rem}}@media only screen and (max-width:991px) and (min-width:768px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-bottom:3.6rem}}@media only screen and (max-width:991px) and (min-width:1500px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{padding-bottom:3.8rem}}@media only screen and (max-width:991px) and (min-width:768px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{margin-bottom:3.6rem}}@media only screen and (max-width:991px) and (min-width:1500px){.su-row-bgcolor--blue,.su-row-bgcolor--green,.su-row-bgcolor--grey{margin-bottom:3.8rem}}.su-row-bgcolor--white{background-color:#fff;color:#2e2d29}.su-row-bgcolor--white article.su-card{background:transparent}.su-row-bgcolor--green{background-color:#014240;color:#fff}.su-row-bgcolor--green table tbody th,.su-row-bgcolor--green table thead th{color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a{color:#92d7dd;outline-color:#92d7dd;text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a:hover{color:#66aaae;cursor:pointer}.su-row-bgcolor--green .su-wysiwyg-text a:hover svg.mailto{fill:#66aaae}.su-row-bgcolor--green .su-wysiwyg-text a:hover:after{background-color:#66aaae}.su-row-bgcolor--green .su-wysiwyg-text a:focus{color:#fff;outline:1px solid #fff;background-color:transparent}.su-row-bgcolor--green .su-wysiwyg-text a:focus:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a:active{color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a:active:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a:after{background-color:#92d7dd}.su-row-bgcolor--green .su-wysiwyg-text a.mailto svg{fill:#92d7dd}.su-row-bgcolor--green .su-wysiwyg-text a.su-button,.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big{color:#014240;text-decoration:none}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:hover,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:hover,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:hover,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:hover{text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:focus,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:focus,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:focus,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:focus{text-decoration:underline;color:#fff;background:transparent;outline:1px solid #fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-button--big:focus:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-button:focus:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button--big:focus:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button:focus:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary{-webkit-box-shadow:none;box-shadow:none;background:transparent;color:#fff;border:1px solid #fff;text-decoration:none;border-radius:3rem;font-weight:400;line-height:1.15;margin:0 .3rem .3rem}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:hover,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:hover{background:#155f65;border:1px solid #155f65;color:#fff;cursor:pointer;text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:hover svg.mailto,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:hover svg.mailto{fill:#fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:hover:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:hover:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:focus,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:focus{outline:3px solid #fff;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:focus:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:focus:after{background-color:#fff}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:active,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:active{background-color:#fff;color:#014240;-webkit-box-shadow:none;box-shadow:none;text-decoration:underline}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:active:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:active:after{background-color:#014240}.su-row-bgcolor--green .su-wysiwyg-text a.su-button--secondary:after,.su-row-bgcolor--green .su-wysiwyg-text a.su-link--external.su-button-secondary:after{background-color:#fff}.su-row-bgcolor--green div a.su-button:active,.su-row-bgcolor--green div a.su-button:focus,.su-row-bgcolor--green div a.su-link--external.su-button:active,.su-row-bgcolor--green div a.su-link--external.su-button:focus{padding:.375em .875em}.su-row-bgcolor--green .su-link--action:after{background-color:#92d7dd}.su-row-bgcolor--green figcaption.su-media__caption{color:#fff}.su-row-bgcolor--blue{background-color:#e9f7f8}.su-row-bgcolor--blue article.su-card{background:transparent}.su-row-bgcolor--grey{background-color:#edefef}.su-row-bgcolor--grey article.su-card{background:transparent}.filter-menu{position:sticky;top:250px}.role--authenticated .filter-menu{top:300px}.filter-menu{margin-bottom:4.5rem}@media only screen and (min-width:768px){.filter-menu{margin-bottom:9rem}}@media only screen and (min-width:1500px){.filter-menu{margin-bottom:9.5rem}}.filter-menu .menu .menu-item a,.filter-menu .topics__collapsable-menu{color:#2e2d29;font-weight:400;font-size:1.3em}.filter-menu .menu .menu-item a:active:after,.filter-menu .menu .menu-item a:active:before,.filter-menu .menu .menu-item a:before,.filter-menu .menu .menu-item a:focus:after,.filter-menu .menu .menu-item a:focus:before,.filter-menu .menu .menu-item a:hover:after,.filter-menu .menu .menu-item a:hover:before{background-color:transparent}.filter-menu .menu .menu-item a:focus{padding:1.6rem 4.8rem 1.6rem 0}.filter-menu .menu .menu-item--active-trail .is-active{color:#2e2d29;font-weight:400}.filter-menu .menu .menu-item--active-trail:before{color:#2e2d29}.navigation.menu--main{position:sticky;top:250px}.role--authenticated .navigation.menu--main{top:300px}.su-secondary-nav.su-secondary-nav--buttons>.su-secondary-nav__menu{padding-bottom:4.5rem}@media only screen and (min-width:768px){.su-secondary-nav.su-secondary-nav--buttons>.su-secondary-nav__menu{padding-bottom:9rem}}@media only screen and (min-width:1500px){.su-secondary-nav.su-secondary-nav--buttons>.su-secondary-nav__menu{padding-bottom:9.5rem}}.su-secondary-nav.su-secondary-nav--buttons>.su-secondary-nav__menu>.su-secondary-nav__item{border:0}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__menu-lv2 .su-secondary-nav__item a.su-secondary-nav__link{padding-left:.8em}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link{color:#014240}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:before{background-color:#014240;width:3px}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:active,.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:focus,.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:hover{color:#155f65}.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:active:before,.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:focus:before,.su-secondary-nav.su-secondary-nav--buttons .su-secondary-nav__item--current>a.su-secondary-nav__link:hover:before{background-color:#000;color:#2e2d29;width:3px}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-bottom:1.1rem;padding-top:1.1rem;color:#2e2d29;font-weight:400;font-size:1.06em}@media only screen and (min-width:768px){.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-bottom:1.2rem}}@media only screen and (min-width:1500px){.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-bottom:1.3rem}}@media only screen and (min-width:768px){.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-top:1.2rem}}@media only screen and (min-width:1500px){.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link{padding-top:1.3rem}}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:before{background-color:#000;width:3px}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:active,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:focus,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:hover{color:#155f65}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:active:before,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:focus:before,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:hover:before{background-color:#000}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:active:after,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:focus:after,.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:hover:after{background-color:transparent}.su-secondary-nav.su-secondary-nav--buttons a.su-secondary-nav__link:focus{color:#2e2d29}.su-secondary-nav.su-secondary-nav--buttons a.su-link--external.su-secondary-nav__link:after{background-color:#2e2d29}.su-secondary-nav.su-secondary-nav--buttons a.su-link--external.su-secondary-nav__link:hover:after{background-color:#155f65}.su-secondary-nav--buttons .su-secondary-nav__item--parent.su-secondary-nav__item--expanded>.su-nav-toggle:before{background:transparent url(../assets/svg/caret-down-green.svg) no-repeat 50%/50%}.su-secondary-nav--buttons .su-secondary-nav__item--parent>.su-nav-toggle:before{background:transparent url(../assets/svg/caret-down-green.svg) no-repeat 50%/50%;border:2px solid #155f65;border-radius:19px;width:32px;height:32px}@media (min-width:992px){.su-site-search form{display:none}.su-site-search__submit,.su-site-search__submit:active,.su-site-search__submit:focus,.su-site-search__submit:hover{background:url(../assets/svg/magnifying-glass-24px-white.svg) no-repeat 50%/75%}}@media (max-width:991px){a.su-site-search__submit{display:none}}.search .views-row{border-bottom:1px solid #82817f}.search .views-row div:last-child{border:none}.search .views-row h2{line-height:100%}.search .views-row h2 a{font-weight:400;font-size:.6em}.search .views-row span.field-content{display:block;padding-bottom:1em}.content .paragraph-item.ptype-stanford-spacer{margin-bottom:0}.content .paragraph-item.ptype-stanford-spacer .sdss-spacer{margin-bottom:3.4rem}@media only screen and (min-width:768px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer{margin-bottom:5.8rem}}@media only screen and (min-width:1500px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer{margin-bottom:6.1rem}}.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-default{margin-bottom:3.4rem}@media only screen and (min-width:768px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-default{margin-bottom:5.8rem}}@media only screen and (min-width:1500px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-default{margin-bottom:6.1rem}}.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-reduced{margin-bottom:2rem}@media only screen and (min-width:768px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-reduced{margin-bottom:2.6rem}}@media only screen and (min-width:1500px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-reduced{margin-bottom:2.7rem}}.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-minimal{margin-bottom:1.1rem}@media only screen and (min-width:768px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-minimal{margin-bottom:1.2rem}}@media only screen and (min-width:1500px){.content .paragraph-item.ptype-stanford-spacer .sdss-spacer.sdss-spacer-minimal{margin-bottom:1.3rem}}.su-news-banner-media-caption{color:#000;font-style:italic;text-align:right}@media (min-width:1500px){.su-news-banner-media-caption{font-size:1.9rem}}@media (min-width:768px) and (max-width:1499px){.su-news-banner-media-caption{font-size:1.6rem}}@media (max-width:767px){.su-news-banner-media-caption{font-size:1.5rem}}.paragraph.su-wysiwyg-text .caption figcaption{color:#000;font-style:italic;text-align:right}@media (min-width:1500px){.paragraph.su-wysiwyg-text .caption figcaption{font-size:1.9rem}}@media (min-width:768px) and (max-width:1499px){.paragraph.su-wysiwyg-text .caption figcaption{font-size:1.6rem}}@media (max-width:767px){.paragraph.su-wysiwyg-text .caption figcaption{font-size:1.5rem}}.su-media .su-media__caption{color:#000;font-style:italic;text-align:right}@media (min-width:1500px){.su-media .su-media__caption{font-size:1.9rem}}@media (min-width:768px) and (max-width:1499px){.su-media .su-media__caption{font-size:1.6rem}}@media (max-width:767px){.su-media .su-media__caption{font-size:1.5rem}}h1,h2,h3,h4,h5,h6{color:#014240;font-weight:400}@media (max-width:767px){h1{font-size:4.5rem;line-height:120%}}@media (min-width:768px){h1{font-size:6.4rem;line-height:120%}}@media (min-width:992px){h1{font-size:6.4rem;line-height:120%}}@media (max-width:767px){h2{font-size:3.7rem;line-height:120%}}@media (min-width:768px){h2{font-size:5.2rem;line-height:120%}}@media (min-width:992px){h2{font-size:5.2rem;line-height:120%}}@media (max-width:767px){h3{font-size:3.1rem;line-height:120%}}@media (min-width:768px){h3{font-size:4.1rem;line-height:120%}}@media (min-width:992px){h3{font-size:4.1rem;line-height:120%}}@media (max-width:767px){h4{font-size:2.6rem;line-height:120%}}@media (min-width:768px){h4{font-size:3.2rem;line-height:120%}}@media (min-width:992px){h4{font-size:3.2rem;line-height:120%}}@media (max-width:767px){h5{font-size:2.1rem;line-height:130%}}@media (min-width:768px){h5{font-size:2.6rem;line-height:130%}}@media (min-width:992px){h5{font-size:2.6rem;line-height:130%}}.su-wysiwyg-text h2 a,.su-wysiwyg-text h3 a,.su-wysiwyg-text h4 a,.su-wysiwyg-text h5 a,.su-wysiwyg-text h6 a{color:#014240;font-weight:400;text-decoration:none}.su-wysiwyg-text h2 a:hover,.su-wysiwyg-text h3 a:hover,.su-wysiwyg-text h4 a:hover,.su-wysiwyg-text h5 a:hover,.su-wysiwyg-text h6 a:hover{color:#5b8f93}.su-wysiwyg-text h2 a:hover:after,.su-wysiwyg-text h3 a:hover:after,.su-wysiwyg-text h4 a:hover:after,.su-wysiwyg-text h5 a:hover:after,.su-wysiwyg-text h6 a:hover:after{background-color:#5b8f93}.su-wysiwyg-text h2 a:after,.su-wysiwyg-text h3 a:after,.su-wysiwyg-text h4 a:after,.su-wysiwyg-text h5 a:after,.su-wysiwyg-text h6 a:after{background-color:#014240}.su-wysiwyg-text h2 a.su-link--external,.su-wysiwyg-text h3 a.su-link--external,.su-wysiwyg-text h4 a.su-link--external,.su-wysiwyg-text h5 a.su-link--external,.su-wysiwyg-text h6 a.su-link--external{font-weight:400}.su-wysiwyg-text h2 a.su-link--external:after,.su-wysiwyg-text h3 a.su-link--external:after,.su-wysiwyg-text h4 a.su-link--external:after,.su-wysiwyg-text h5 a.su-link--external:after,.su-wysiwyg-text h6 a.su-link--external:after{background-color:#014240}.su-wysiwyg-text h2 a.su-link--external:hover,.su-wysiwyg-text h3 a.su-link--external:hover,.su-wysiwyg-text h4 a.su-link--external:hover,.su-wysiwyg-text h5 a.su-link--external:hover,.su-wysiwyg-text h6 a.su-link--external:hover{color:#5b8f93}.su-wysiwyg-text h2 a.su-link--external:hover:after,.su-wysiwyg-text h3 a.su-link--external:hover:after,.su-wysiwyg-text h4 a.su-link--external:hover:after,.su-wysiwyg-text h5 a.su-link--external:hover:after,.su-wysiwyg-text h6 a.su-link--external:hover:after{background-color:#5b8f93}.su-row-bgcolor--green .su-wysiwyg-text .su-font-splash,.su-row-bgcolor--green .su-wysiwyg-text .su-quote-text,.su-row-bgcolor--green .su-wysiwyg-text h2,.su-row-bgcolor--green .su-wysiwyg-text h3,.su-row-bgcolor--green .su-wysiwyg-text h4,.su-row-bgcolor--green .su-wysiwyg-text h5,.su-row-bgcolor--green .su-wysiwyg-text h6{color:#fff}.su-row-bgcolor--green .su-wysiwyg-text h2 a,.su-row-bgcolor--green .su-wysiwyg-text h2.su-link--external,.su-row-bgcolor--green .su-wysiwyg-text h3 a,.su-row-bgcolor--green .su-wysiwyg-text h3.su-link--external,.su-row-bgcolor--green .su-wysiwyg-text h4 a,.su-row-bgcolor--green .su-wysiwyg-text h4.su-link--external,.su-row-bgcolor--green .su-wysiwyg-text h5 a,.su-row-bgcolor--green .su-wysiwyg-text h5.su-link--external,.su-row-bgcolor--green .su-wysiwyg-text h6 a,.su-row-bgcolor--green .su-wysiwyg-text h6.su-link--external{color:#fff;font-weight:unset;text-decoration:none}.su-row-bgcolor--green .su-wysiwyg-text h2 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h2.su-link--external:hover,.su-row-bgcolor--green .su-wysiwyg-text h3 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h3.su-link--external:hover,.su-row-bgcolor--green .su-wysiwyg-text h4 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h4.su-link--external:hover,.su-row-bgcolor--green .su-wysiwyg-text h5 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h5.su-link--external:hover,.su-row-bgcolor--green .su-wysiwyg-text h6 a:hover,.su-row-bgcolor--green .su-wysiwyg-text h6.su-link--external:hover{color:#66aaae}.su-row-bgcolor--green .su-wysiwyg-text h2 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h2.su-link--external:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h3 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h3.su-link--external:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h4 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h4.su-link--external:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h5 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h5.su-link--external:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h6 a:hover:after,.su-row-bgcolor--green .su-wysiwyg-text h6.su-link--external:hover:after{background-color:#66aaae}.su-row-bgcolor--green .su-wysiwyg-text h2 a:after,.su-row-bgcolor--green .su-wysiwyg-text h2.su-link--external:after,.su-row-bgcolor--green .su-wysiwyg-text h3 a:after,.su-row-bgcolor--green .su-wysiwyg-text h3.su-link--external:after,.su-row-bgcolor--green .su-wysiwyg-text h4 a:after,.su-row-bgcolor--green .su-wysiwyg-text h4.su-link--external:after,.su-row-bgcolor--green .su-wysiwyg-text h5 a:after,.su-row-bgcolor--green .su-wysiwyg-text h5.su-link--external:after,.su-row-bgcolor--green .su-wysiwyg-text h6 a:after,.su-row-bgcolor--green .su-wysiwyg-text h6.su-link--external:after{background-color:#fff}a{color:#014240;font-weight:400}a:hover{color:#66aaae}.block-sdss-subtheme-content .su-link:focus,.block-sdss-subtheme-content a:focus,footer .su-link:focus,footer a:focus{color:#2e2d29;outline:1px solid #014240;background-color:transparent}.block-sdss-subtheme-content .su-link.su-button--big:focus,.block-sdss-subtheme-content a.su-button--big:focus,footer .su-link.su-button--big:focus,footer a.su-button--big:focus{padding:1.5rem 3rem 1.8rem}.block-sdss-subtheme-content .su-link.mailto svg,.block-sdss-subtheme-content a.mailto svg,footer .su-link.mailto svg,footer a.mailto svg{fill:#014240}.su-local-footer__social-links .su-link:focus{border:none}.su-link{color:#014240;font-weight:400;outline-color:#014240;text-decoration:underline}.su-link:after{background-color:#014240}.su-link.mailto svg{fill:#014240}.su-link:hover{color:#6bb6bc}.su-link:focus{color:#2e2d29;outline:1px solid #014240}.su-link:active{color:#2e2d29}.su-link--action{font-weight:600}.su-link--action,.su-link--external{text-decoration:underline}.su-link--action:hover,.su-link--external:hover{color:#66aaae}.su-link--action:hover:after,.su-link--external:hover:after{background-color:#66aaae}.content .right-region .su-person-links a:after,.su-link--action:after,.su-link--external:after{background-color:#014240}.stanford-lists.su-list-headline h2{text-align:left}@media (max-width:767px){.stanford-lists.su-list-headline h2{font-size:3.1rem;line-height:120%}}@media (min-width:768px){.stanford-lists.su-list-headline h2{font-size:4.1rem;line-height:120%}}@media (min-width:992px){.stanford-lists.su-list-headline h2{font-size:4.1rem;line-height:120%}}body{color:#2e2d29}@media (min-width:992px){.su-media__caption{font-size:1.8rem}}.su-font-splash{color:#014240;font-weight:400;font-style:italic;letter-spacing:-.01em}@media (max-width:767px){.su-font-splash{font-size:3.7rem;line-height:40px}}@media (min-width:768px){.su-font-splash{font-size:5.1rem;line-height:60px}}@media (min-width:992px){.su-font-splash{font-size:5.1rem;line-height:120%}}@media only screen and (min-width:1500px){.su-font-splash{font-size:5.6rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content,.su-wysiwyg-text p{font-size:2.1rem}.su-wysiwyg-text .tablesaw-cell-content.su-intro-text,.su-wysiwyg-text p.su-intro-text{font-size:1.5625em;letter-spacing:-.012em;font-weight:400}.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text p.sdss-display-text{font-size:1.5625em;letter-spacing:-.012em;color:#014240;font-weight:400;line-height:120%}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text p.sdss-display-text{font-size:5.2rem;line-height:169%}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text p.sdss-display-text{font-size:8rem;line-height:110%}}@media (min-width:1500px){.su-wysiwyg-text .tablesaw-cell-content.sdss-display-text,.su-wysiwyg-text p.sdss-display-text{font-size:8.8rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{font-family:"Source Serif Pro",Georgia,Times,Times New Roman,serif;color:#014240;font-weight:400;font-style:italic;letter-spacing:-.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{font-size:3.7rem;line-height:40px}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{font-size:5.1rem;line-height:60px}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{font-size:5.1rem;line-height:120%}}@media only screen and (min-width:1500px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--big,.su-wysiwyg-text .tablesaw-cell-content.su-font-splash,.su-wysiwyg-text p.sdss-block-quote--big,.su-wysiwyg-text p.su-font-splash{font-size:5.6rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text{font-family:"Source Serif Pro",Georgia,Times,Times New Roman,serif;font-size:1.953125em;letter-spacing:-.016em;color:#014240;font-weight:400;font-style:italic;letter-spacing:-.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text{font-size:1.66015625em;font-size:3.1rem;line-height:40px}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text{font-size:4.1rem;line-height:60px}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text{font-size:4.1rem;line-height:120%}}@media only screen and (min-width:1500px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--med,.su-wysiwyg-text .tablesaw-cell-content.su-quote-text,.su-wysiwyg-text p.sdss-block-quote--med,.su-wysiwyg-text p.su-quote-text{font-size:4.5rem;line-height:120%}}.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-family:"Source Serif Pro",Georgia,Times,Times New Roman,serif;color:#014240;font-weight:400;font-style:italic;letter-spacing:.01em}@media (max-width:767px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-size:2.2rem;line-height:130%}}@media (min-width:768px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-size:2.6rem;line-height:130%}}@media (min-width:992px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-size:2.6rem;line-height:140%}}@media only screen and (min-width:1500px){.su-wysiwyg-text .tablesaw-cell-content.sdss-block-quote--sm,.su-wysiwyg-text .tablesaw-cell-content.su-callout-text,.su-wysiwyg-text p.sdss-block-quote--sm,.su-wysiwyg-text p.su-callout-text{font-size:2.8rem;line-height:120%}}.su-wysiwyg-text .caption figcaption{color:#53565a;font-size:1.8rem;font-style:normal;line-height:1.4;text-align:right;margin-bottom:1em}.su-wysiwyg-text .localist-widget h2 a{color:#014240}.su-wysiwyg-text .localist-widget h2 a:active,.su-wysiwyg-text .localist-widget h2 a:focus,.su-wysiwyg-text .localist-widget h2 a:hover{color:#000;cursor:pointer;text-decoration:underline}.su-wysiwyg-text .localist-widget h2 a:active svg.mailto,.su-wysiwyg-text .localist-widget h2 a:focus svg.mailto,.su-wysiwyg-text .localist-widget h2 a:hover svg.mailto{fill:#000}.su-wysiwyg-text .localist-widget h2 a:active:after,.su-wysiwyg-text .localist-widget h2 a:focus:after,.su-wysiwyg-text .localist-widget h2 a:hover:after{background-color:transparent} \ No newline at end of file diff --git a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/sdss_subtheme.info.yml b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/sdss_subtheme.info.yml index f555c058a..344ea01b2 100755 --- a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/sdss_subtheme.info.yml +++ b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/sdss_subtheme.info.yml @@ -2,7 +2,7 @@ name: Stanford SDSS subtheme type: theme description: 'Stanford SDSS subtheme' package: Stanford -version: 2.0.2 +version: 2.0.3 core_version_requirement: ^9 base theme: stanford_basic libraries: diff --git a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/sdss_subtheme.theme b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/sdss_subtheme.theme index 8edf699ac..4b87ab52a 100755 --- a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/sdss_subtheme.theme +++ b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/sdss_subtheme.theme @@ -9,7 +9,6 @@ */ function sdss_subtheme_preprocess_html(&$variables) { $variables['stanford_basic_path'] = drupal_get_path('theme', 'stanford_basic'); - $variables['public'] = (bool) \Drupal::state()->get('sdss_subtheme.public', false); } /** diff --git a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/src/scss/theme/_wysiwyg.scss b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/src/scss/theme/_wysiwyg.scss index 32fbe39cd..dceb4e3ee 100644 --- a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/src/scss/theme/_wysiwyg.scss +++ b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/src/scss/theme/_wysiwyg.scss @@ -13,21 +13,25 @@ .tablesaw-cell-content { font-size: 2.1rem; - // Intro = Display, intro is the legacy name. - // Display-text is the updated name. - &.su-intro-text, + // Intro text. + &.su-intro-text { + @include sdss-intro; + } + + // Display text &.sdss-display-text { @include sdss-display; } - // Splash = Splash text is the legacy name. + // Splash = Splash text is the legacy stanford_basic name. // Block Quote is the updated name. &.su-font-splash, &.sdss-block-quote--big { + @include serif; @include sdss-block-quote--big; } - // Quote Text is the legacy name. + // Quote Text is the legacy stanford_basic name. // Block Quote Medium is the updated name. &.su-quote-text, &.sdss-block-quote--med { @@ -35,10 +39,11 @@ @include sdss-block-quote--med; } - // Callout text is the legacy name. + // Callout text is the legacy stanford_basic name. // Block Quote Small is the updated name. &.su-callout-text, &.sdss-block-quote--sm { + @include serif; @include sdss-block-quote--sm; } } diff --git a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/src/scss/utilities/mixins/_typography.scss b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/src/scss/utilities/mixins/_typography.scss index 7ddfb29e3..3f7fa73c3 100644 --- a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/src/scss/utilities/mixins/_typography.scss +++ b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/src/scss/utilities/mixins/_typography.scss @@ -4,36 +4,66 @@ // Example: All mixin names should be prefaced with your abbreviation (saa, soe, ood, etc) -// Intro is the Drupal style = Display is the design language. +// Display text @mixin sdss-display { @include type_c; + color: $sdss-color-palo-alto-dark; + font-weight: $su-font-regular; + line-height: 120%; + + @include grid-media-max('sm') { + font-size: 5.2rem; //52px + line-height: 169%; + } + + @include grid-media-min('md') { + font-size: 8.0rem; //80px + line-height: 110%; + } + + @include grid-media-min('2xl') { + font-size: 8.8rem; //88px + line-height: 120%; + } +} + +// Intro text +@mixin sdss-intro { + @include type_c; + font-weight: $su-font-regular; } -// Splash is the Drupal style = Block Quote Big is the design language. +// Block Quote Big is the design language. @mixin sdss-block-quote--big { color: $sdss-color-palo-alto-dark; font-weight: $su-font-regular; + font-style: italic; letter-spacing: -0.01em; @include grid-media-max('sm') { - font-size: 3.2rem; //32px + font-size: 3.7rem; // ~37px line-height: 40px; } @include grid-media-min('md') { - font-size: 4.8rem; //48px + font-size: 5.1rem; // ~51px line-height: 60px; } @include grid-media-min('lg') { - font-size: 6.4rem; //64px + font-size: 5.1rem; // ~51px + line-height: 120%; + } + + @include grid-media('2xl') { + font-size: 5.6rem; // ~56px line-height: 120%; } } -// Quote Text is the Drupal style = Block Quote Medium is the design language. +// Block Quote Medium is the design language. @mixin sdss-block-quote--med { @include type_b; @@ -41,28 +71,54 @@ font-weight: $su-font-regular; font-style: italic; letter-spacing: -0.01em; + + @include grid-media-max('sm') { + font-size: 3.1rem; // ~31px + line-height: 40px; + } + + @include grid-media-min('md') { + font-size: 4.1rem; // ~41px + line-height: 60px; + } + + @include grid-media-min('lg') { + font-size: 4.1rem; // ~41px + line-height: 120%; + } + + @include grid-media('2xl') { + font-size: 4.5rem; // ~45px + line-height: 120%; + } } - // Callout text is the Drupal style = Block Quote Small is the design language. + // Block Quote Small is the design language. @mixin sdss-block-quote--sm { + color: $sdss-color-palo-alto-dark; font-weight: $su-font-regular; font-style: italic; letter-spacing: 0.01em; @include grid-media-max('sm') { - font-size: 1.8rem; // ~18px + font-size: 2.2rem; // ~22px line-height: 130%; } @include grid-media-min('md') { - font-size: 1.8rem; // ~18px + font-size: 2.6rem; // ~26px line-height: 130%; } @include grid-media-min('lg') { - font-size: 2.4rem; // ~24px + font-size: 2.6rem; // ~26px line-height: 140%; } + + @include grid-media('2xl') { + font-size: 2.8rem; // ~28px + line-height: 120%; + } } diff --git a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/templates/html.html.twig b/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/templates/html.html.twig deleted file mode 100644 index 3a8fb57b1..000000000 --- a/docroot/profiles/sdss/sdss_profile/themes/sdss_subtheme/templates/html.html.twig +++ /dev/null @@ -1,9 +0,0 @@ -{% if public or 'site_manager' in user.roles or 'administrator' in user.roles or 'theme_viewer' in user.roles %} - {% include '@basic/html.html.twig' %} -{% else %} - {% if user.isAnonymous %} - Log In - {% else %} -

Sorry, you do not appear to have access to this site. Please Log out

- {% endif %} -{% endif %} diff --git a/docroot/sites/bitsandwatts/blt.yml b/docroot/sites/bitsandwatts/blt.yml new file mode 100644 index 000000000..9c0111f68 --- /dev/null +++ b/docroot/sites/bitsandwatts/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: bitsandwatts + human_name: bitsandwatts + local: + protocol: http + hostname: local.bitsandwatts.com +drush: + aliases: + local: bitsandwatts.local + remote: bitsandwatts.prod +drupal: + db: { } diff --git a/docroot/sites/bitsandwatts/default.local.drush.yml b/docroot/sites/bitsandwatts/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/bitsandwatts/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/bitsandwatts/default.services.yml b/docroot/sites/bitsandwatts/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/bitsandwatts/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/bitsandwatts/default.settings.php b/docroot/sites/bitsandwatts/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/bitsandwatts/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/bitsandwatts/settings.php b/docroot/sites/bitsandwatts/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/bitsandwatts/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/bitsandwatts/settings/default.includes.settings.php b/docroot/sites/bitsandwatts/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/bitsandwatts/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/carbon_removal/blt.yml b/docroot/sites/carbon_removal/blt.yml new file mode 100644 index 000000000..3801b22c6 --- /dev/null +++ b/docroot/sites/carbon_removal/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: carbon_removal + human_name: carbon_removal + local: + protocol: http + hostname: local.carbon_removal.com +drush: + aliases: + local: carbon_removal.local + remote: carbon_removal.prod +drupal: + db: { } diff --git a/docroot/sites/carbon_removal/default.local.drush.yml b/docroot/sites/carbon_removal/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/carbon_removal/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/carbon_removal/default.services.yml b/docroot/sites/carbon_removal/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/carbon_removal/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/carbon_removal/default.settings.php b/docroot/sites/carbon_removal/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/carbon_removal/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/carbon_removal/settings.php b/docroot/sites/carbon_removal/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/carbon_removal/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/carbon_removal/settings/default.includes.settings.php b/docroot/sites/carbon_removal/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/carbon_removal/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/explore_energy/blt.yml b/docroot/sites/explore_energy/blt.yml new file mode 100644 index 000000000..7c0c7270b --- /dev/null +++ b/docroot/sites/explore_energy/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: explore_energy + human_name: explore_energy + local: + protocol: http + hostname: local.explore_energy.com +drush: + aliases: + local: explore_energy.local + remote: explore_energy.prod +drupal: + db: { } diff --git a/docroot/sites/explore_energy/default.local.drush.yml b/docroot/sites/explore_energy/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/explore_energy/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/explore_energy/default.services.yml b/docroot/sites/explore_energy/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/explore_energy/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/explore_energy/default.settings.php b/docroot/sites/explore_energy/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/explore_energy/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/explore_energy/settings.php b/docroot/sites/explore_energy/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/explore_energy/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/explore_energy/settings/default.includes.settings.php b/docroot/sites/explore_energy/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/explore_energy/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/extreme_energy_efficiency/blt.yml b/docroot/sites/extreme_energy_efficiency/blt.yml new file mode 100644 index 000000000..bdfe95c13 --- /dev/null +++ b/docroot/sites/extreme_energy_efficiency/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: extreme_energy_efficiency + human_name: extreme_energy_efficiency + local: + protocol: http + hostname: local.extreme_energy_efficiency.com +drush: + aliases: + local: extreme_energy_efficiency.local + remote: extreme_energy_efficiency.prod +drupal: + db: { } diff --git a/docroot/sites/extreme_energy_efficiency/default.local.drush.yml b/docroot/sites/extreme_energy_efficiency/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/extreme_energy_efficiency/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/extreme_energy_efficiency/default.services.yml b/docroot/sites/extreme_energy_efficiency/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/extreme_energy_efficiency/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/extreme_energy_efficiency/default.settings.php b/docroot/sites/extreme_energy_efficiency/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/extreme_energy_efficiency/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/extreme_energy_efficiency/settings.php b/docroot/sites/extreme_energy_efficiency/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/extreme_energy_efficiency/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/extreme_energy_efficiency/settings/default.includes.settings.php b/docroot/sites/extreme_energy_efficiency/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/extreme_energy_efficiency/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/gep/blt.yml b/docroot/sites/gep/blt.yml new file mode 100644 index 000000000..db51de31c --- /dev/null +++ b/docroot/sites/gep/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: gep + human_name: gep + local: + protocol: http + hostname: local.gep.com +drush: + aliases: + local: gep.local + remote: gep.prod +drupal: + db: { } diff --git a/docroot/sites/gep/default.local.drush.yml b/docroot/sites/gep/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/gep/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/gep/default.services.yml b/docroot/sites/gep/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/gep/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/gep/default.settings.php b/docroot/sites/gep/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/gep/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/gep/settings.php b/docroot/sites/gep/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/gep/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/gep/settings/default.includes.settings.php b/docroot/sites/gep/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/gep/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/hackingfordefense/blt.yml b/docroot/sites/hackingfordefense/blt.yml new file mode 100644 index 000000000..fc8f45dbe --- /dev/null +++ b/docroot/sites/hackingfordefense/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: hackingfordefense + human_name: hackingfordefense + local: + protocol: http + hostname: local.hackingfordefense.com +drush: + aliases: + local: hackingfordefense.local + remote: hackingfordefense.prod +drupal: + db: { } diff --git a/docroot/sites/hackingfordefense/default.local.drush.yml b/docroot/sites/hackingfordefense/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/hackingfordefense/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/hackingfordefense/default.services.yml b/docroot/sites/hackingfordefense/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/hackingfordefense/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/hackingfordefense/default.settings.php b/docroot/sites/hackingfordefense/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/hackingfordefense/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/hackingfordefense/settings.php b/docroot/sites/hackingfordefense/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/hackingfordefense/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/hackingfordefense/settings/default.includes.settings.php b/docroot/sites/hackingfordefense/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/hackingfordefense/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/hydrogen/blt.yml b/docroot/sites/hydrogen/blt.yml new file mode 100644 index 000000000..13f1b6a4c --- /dev/null +++ b/docroot/sites/hydrogen/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: hydrogen + human_name: hydrogen + local: + protocol: http + hostname: local.hydrogen.com +drush: + aliases: + local: hydrogen.local + remote: hydrogen.prod +drupal: + db: { } diff --git a/docroot/sites/hydrogen/default.local.drush.yml b/docroot/sites/hydrogen/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/hydrogen/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/hydrogen/default.services.yml b/docroot/sites/hydrogen/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/hydrogen/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/hydrogen/default.settings.php b/docroot/sites/hydrogen/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/hydrogen/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/hydrogen/settings.php b/docroot/sites/hydrogen/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/hydrogen/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/hydrogen/settings/default.includes.settings.php b/docroot/sites/hydrogen/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/hydrogen/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/mce2050/blt.yml b/docroot/sites/mce2050/blt.yml new file mode 100644 index 000000000..60834a2f8 --- /dev/null +++ b/docroot/sites/mce2050/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: mce2050 + human_name: mce2050 + local: + protocol: http + hostname: local.mce2050.com +drush: + aliases: + local: mce2050.local + remote: mce2050.prod +drupal: + db: { } diff --git a/docroot/sites/mce2050/default.local.drush.yml b/docroot/sites/mce2050/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/mce2050/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/mce2050/default.services.yml b/docroot/sites/mce2050/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/mce2050/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/mce2050/default.settings.php b/docroot/sites/mce2050/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/mce2050/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/mce2050/settings.php b/docroot/sites/mce2050/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/mce2050/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/mce2050/settings/default.includes.settings.php b/docroot/sites/mce2050/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/mce2050/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/ngi/blt.yml b/docroot/sites/ngi/blt.yml new file mode 100644 index 000000000..de97e9d68 --- /dev/null +++ b/docroot/sites/ngi/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: ngi + human_name: ngi + local: + protocol: http + hostname: local.ngi.com +drush: + aliases: + local: ngi.local + remote: ngi.prod +drupal: + db: { } diff --git a/docroot/sites/ngi/default.local.drush.yml b/docroot/sites/ngi/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/ngi/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/ngi/default.services.yml b/docroot/sites/ngi/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/ngi/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/ngi/default.settings.php b/docroot/sites/ngi/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/ngi/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/ngi/settings.php b/docroot/sites/ngi/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/ngi/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/ngi/settings/default.includes.settings.php b/docroot/sites/ngi/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/ngi/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/nza/blt.yml b/docroot/sites/nza/blt.yml new file mode 100644 index 000000000..240e3805c --- /dev/null +++ b/docroot/sites/nza/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: nza + human_name: nza + local: + protocol: http + hostname: local.nza.com +drush: + aliases: + local: nza.local + remote: nza.prod +drupal: + db: { } diff --git a/docroot/sites/nza/default.local.drush.yml b/docroot/sites/nza/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/nza/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/nza/default.services.yml b/docroot/sites/nza/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/nza/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/nza/default.settings.php b/docroot/sites/nza/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/nza/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/nza/settings.php b/docroot/sites/nza/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/nza/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/nza/settings/default.includes.settings.php b/docroot/sites/nza/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/nza/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/scv/blt.yml b/docroot/sites/scv/blt.yml new file mode 100644 index 000000000..c25fd5677 --- /dev/null +++ b/docroot/sites/scv/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: scv + human_name: scv + local: + protocol: http + hostname: local.scv.com +drush: + aliases: + local: scv.local + remote: scv.prod +drupal: + db: { } diff --git a/docroot/sites/scv/default.local.drush.yml b/docroot/sites/scv/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/scv/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/scv/default.services.yml b/docroot/sites/scv/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/scv/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/scv/default.settings.php b/docroot/sites/scv/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/scv/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/scv/settings.php b/docroot/sites/scv/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/scv/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/scv/settings/default.includes.settings.php b/docroot/sites/scv/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/scv/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/sdss_config_capture/settings.php b/docroot/sites/sdss_config_capture/settings.php index 675a2c583..4848a1ac6 100644 --- a/docroot/sites/sdss_config_capture/settings.php +++ b/docroot/sites/sdss_config_capture/settings.php @@ -1,5 +1,7 @@ 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/seca/settings.php b/docroot/sites/seca/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/seca/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/seca/settings/default.includes.settings.php b/docroot/sites/seca/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/seca/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/seepac/blt.yml b/docroot/sites/seepac/blt.yml new file mode 100644 index 000000000..62c79a5ba --- /dev/null +++ b/docroot/sites/seepac/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: seepac + human_name: seepac + local: + protocol: http + hostname: local.seepac.com +drush: + aliases: + local: seepac.local + remote: seepac.prod +drupal: + db: { } diff --git a/docroot/sites/seepac/default.local.drush.yml b/docroot/sites/seepac/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/seepac/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/seepac/default.services.yml b/docroot/sites/seepac/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/seepac/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/seepac/default.settings.php b/docroot/sites/seepac/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/seepac/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/seepac/settings.php b/docroot/sites/seepac/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/seepac/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/seepac/settings/default.includes.settings.php b/docroot/sites/seepac/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/seepac/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/sfi/blt.yml b/docroot/sites/sfi/blt.yml new file mode 100644 index 000000000..7b95a4353 --- /dev/null +++ b/docroot/sites/sfi/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: sfi + human_name: sfi + local: + protocol: http + hostname: local.sfi.com +drush: + aliases: + local: sfi.local + remote: sfi.prod +drupal: + db: { } diff --git a/docroot/sites/sfi/default.local.drush.yml b/docroot/sites/sfi/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/sfi/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/sfi/default.services.yml b/docroot/sites/sfi/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/sfi/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/sfi/default.settings.php b/docroot/sites/sfi/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/sfi/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/sfi/settings.php b/docroot/sites/sfi/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/sfi/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/sfi/settings/default.includes.settings.php b/docroot/sites/sfi/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/sfi/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/storagex/blt.yml b/docroot/sites/storagex/blt.yml new file mode 100644 index 000000000..7bc986a78 --- /dev/null +++ b/docroot/sites/storagex/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: storagex + human_name: storagex + local: + protocol: http + hostname: local.storagex.com +drush: + aliases: + local: storagex.local + remote: storagex.prod +drupal: + db: { } diff --git a/docroot/sites/storagex/default.local.drush.yml b/docroot/sites/storagex/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/storagex/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/storagex/default.services.yml b/docroot/sites/storagex/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/storagex/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/storagex/default.settings.php b/docroot/sites/storagex/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/storagex/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/storagex/settings.php b/docroot/sites/storagex/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/storagex/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/storagex/settings/default.includes.settings.php b/docroot/sites/storagex/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/storagex/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/strategic_energy_alliance/blt.yml b/docroot/sites/strategic_energy_alliance/blt.yml new file mode 100644 index 000000000..4f7fdd829 --- /dev/null +++ b/docroot/sites/strategic_energy_alliance/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: strategic_energy_alliance + human_name: strategic_energy_alliance + local: + protocol: http + hostname: local.strategic_energy_alliance.com +drush: + aliases: + local: strategic_energy_alliance.local + remote: strategic_energy_alliance.prod +drupal: + db: { } diff --git a/docroot/sites/strategic_energy_alliance/default.local.drush.yml b/docroot/sites/strategic_energy_alliance/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/strategic_energy_alliance/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/strategic_energy_alliance/default.services.yml b/docroot/sites/strategic_energy_alliance/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/strategic_energy_alliance/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/strategic_energy_alliance/default.settings.php b/docroot/sites/strategic_energy_alliance/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/strategic_energy_alliance/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/strategic_energy_alliance/settings.php b/docroot/sites/strategic_energy_alliance/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/strategic_energy_alliance/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/strategic_energy_alliance/settings/default.includes.settings.php b/docroot/sites/strategic_energy_alliance/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/strategic_energy_alliance/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/understand_energy_course/blt.yml b/docroot/sites/understand_energy_course/blt.yml new file mode 100644 index 000000000..b86fcead3 --- /dev/null +++ b/docroot/sites/understand_energy_course/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: understand_energy_course + human_name: understand_energy_course + local: + protocol: http + hostname: local.understand_energy_course.com +drush: + aliases: + local: understand_energy_course.local + remote: understand_energy_course.prod +drupal: + db: { } diff --git a/docroot/sites/understand_energy_course/default.local.drush.yml b/docroot/sites/understand_energy_course/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/understand_energy_course/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/understand_energy_course/default.services.yml b/docroot/sites/understand_energy_course/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/understand_energy_course/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/understand_energy_course/default.settings.php b/docroot/sites/understand_energy_course/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/understand_energy_course/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/understand_energy_course/settings.php b/docroot/sites/understand_energy_course/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/understand_energy_course/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/understand_energy_course/settings/default.includes.settings.php b/docroot/sites/understand_energy_course/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/understand_energy_course/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/docroot/sites/understandenergy/blt.yml b/docroot/sites/understandenergy/blt.yml new file mode 100644 index 000000000..e95d39b89 --- /dev/null +++ b/docroot/sites/understandenergy/blt.yml @@ -0,0 +1,12 @@ +project: + machine_name: understandenergy + human_name: understandenergy + local: + protocol: http + hostname: understandenergy.lndo.site +drush: + aliases: + local: understandenergy.local + remote: understandenergy.remote +drupal: + db: { } diff --git a/docroot/sites/understandenergy/default.local.drush.yml b/docroot/sites/understandenergy/default.local.drush.yml new file mode 100644 index 000000000..fb3258e3f --- /dev/null +++ b/docroot/sites/understandenergy/default.local.drush.yml @@ -0,0 +1,2 @@ +options: + uri: '${project.local.uri}' diff --git a/docroot/sites/understandenergy/default.services.yml b/docroot/sites/understandenergy/default.services.yml new file mode 100644 index 000000000..cdeb41fc4 --- /dev/null +++ b/docroot/sites/understandenergy/default.services.yml @@ -0,0 +1,206 @@ +parameters: + session.storage.options: + # Default ini options for sessions. + # + # Some distributions of Linux (most notably Debian) ship their PHP + # installations with garbage collection (gc) disabled. Since Drupal depends + # on PHP's garbage collection for clearing sessions, ensure that garbage + # collection occurs by using the most common settings. + # @default 1 + gc_probability: 1 + # @default 100 + gc_divisor: 100 + # + # Set session lifetime (in seconds), i.e. the grace period for session + # data. Sessions are deleted by the session garbage collector after one + # session lifetime has elapsed since the user's last visit. When a session + # is deleted, authenticated users are logged out, and the contents of the + # user's session is discarded. + # @default 200000 + gc_maxlifetime: 200000 + # + # Set session cookie lifetime (in seconds), i.e. the time from the session + # is created to the cookie expires, i.e. when the browser is expected to + # discard the cookie. The value 0 means "until the browser is closed". + # @default 2000000 + cookie_lifetime: 2000000 + # + # Drupal automatically generates a unique session cookie name based on the + # full domain name used to access the site. This mechanism is sufficient + # for most use-cases, including multi-site deployments. However, if it is + # desired that a session can be reused across different subdomains, the + # cookie domain needs to be set to the shared base domain. Doing so assures + # that users remain logged in as they cross between various subdomains. + # To maximize compatibility and normalize the behavior across user agents, + # the cookie domain should start with a dot. + # + # @default none + # cookie_domain: '.example.com' + # + # Set the session ID string length. The length can be between 22 to 256. The + # PHP recommended value is 48. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 48 + sid_length: 48 + # + # Set the number of bits in encoded session ID character. The possible + # values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", + # ","). The PHP recommended value is 6. See + # https://www.php.net/manual/session.security.ini.php for more information. + # This value should be kept in sync with + # \Drupal\Core\Session\SessionConfiguration::__construct() + # @default 6 + sid_bits_per_character: 6 + twig.config: + # Twig debugging: + # + # When debugging is enabled: + # - The markup of each Twig template is surrounded by HTML comments that + # contain theming information, such as template file name suggestions. + # - Note that this debugging markup will cause automated tests that directly + # check rendered HTML to fail. When running automated tests, 'debug' + # should be set to FALSE. + # - The dump() function can be used in Twig templates to output information + # about template variables. + # - Twig templates are automatically recompiled whenever the source code + # changes (see auto_reload below). + # + # For more information about debugging Twig templates, see + # https://www.drupal.org/node/1906392. + # + # Enabling Twig debugging is not recommended in production environments. + # @default false + debug: false + # Twig auto-reload: + # + # Automatically recompile Twig templates whenever the source code changes. + # If you don't provide a value for auto_reload, it will be determined + # based on the value of debug. + # + # Enabling auto-reload is not recommended in production environments. + # @default null + auto_reload: null + # Twig cache: + # + # By default, Twig templates will be compiled and stored in the filesystem + # to increase performance. Disabling the Twig cache will recompile the + # templates from source each time they are used. In most cases the + # auto_reload setting above should be enabled rather than disabling the + # Twig cache. + # + # Disabling the Twig cache is not recommended in production environments. + # @default true + cache: true + # File extensions: + # + # List of file extensions the Twig system is allowed to load via the + # twig.loader.filesystem service. Files with other extensions will not be + # loaded unless they are added here. For example, to allow a file named + # 'example.partial' to be loaded, add 'partial' to this list. To load files + # with no extension, add an empty string '' to the list. + # + # @default ['css', 'html', 'js', 'svg', 'twig'] + allowed_file_extensions: + - css + - html + - js + - svg + - twig + renderer.config: + # Renderer required cache contexts: + # + # The Renderer will automatically associate these cache contexts with every + # render array, hence varying every render array by these cache contexts. + # + # @default ['languages:language_interface', 'theme', 'user.permissions'] + required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] + # Renderer automatic placeholdering conditions: + # + # Drupal allows portions of the page to be automatically deferred when + # rendering to improve cache performance. That is especially helpful for + # cache contexts that vary widely, such as the active user. On some sites + # those may be different, however, such as sites with only a handful of + # users. If you know what the high-cardinality cache contexts are for your + # site, specify those here. If you're not sure, the defaults are fairly safe + # in general. + # + # For more information about rendering optimizations see + # https://www.drupal.org/developing/api/8/render/arrays/cacheability#optimizing + auto_placeholder_conditions: + # Max-age at or below which caching is not considered worthwhile. + # + # Disable by setting to -1. + # + # @default 0 + max-age: 0 + # Cache contexts with a high cardinality. + # + # Disable by setting to []. + # + # @default ['session', 'user'] + contexts: ['session', 'user'] + # Tags with a high invalidation frequency. + # + # Disable by setting to []. + # + # @default [] + tags: [] + # Cacheability debugging: + # + # Responses with cacheability metadata (CacheableResponseInterface instances) + # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age + # headers. + # + # For more information about debugging cacheable responses, see + # https://www.drupal.org/developing/api/8/response/cacheable-response-interface + # + # Enabling cacheability debugging is not recommended in production + # environments. + # @default false + http.response.debug_cacheability_headers: false + factory.keyvalue: {} + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database + factory.keyvalue.expirable: {} + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable + # Allowed protocols for URL generation. + filter_protocols: + - http + - https + - ftp + - news + - nntp + - tel + - telnet + - mailto + - irc + - ssh + - sftp + - webcal + - rtsp + + # Configure Cross-Site HTTP requests (CORS). + # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + # for more information about the topic in general. + # Note: By default the configuration is disabled. + cors.config: + enabled: false + # Specify allowed headers, like 'x-allowed-header'. + allowedHeaders: [] + # Specify allowed request methods, specify ['*'] to allow all possible ones. + allowedMethods: [] + # Configure requests allowed from specific origins. + allowedOrigins: ['*'] + # Sets the Access-Control-Expose-Headers header. + exposedHeaders: false + # Sets the Access-Control-Max-Age header. + maxAge: false + # Sets the Access-Control-Allow-Credentials header. + supportsCredentials: false diff --git a/docroot/sites/understandenergy/default.settings.php b/docroot/sites/understandenergy/default.settings.php new file mode 100644 index 000000000..31e6b7a77 --- /dev/null +++ b/docroot/sites/understandenergy/default.settings.php @@ -0,0 +1,815 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Drupal core implements drivers for mysql, pgsql, and sqlite. Other drivers + * can be provided by contributed or custom modules. To use a contributed or + * custom driver, the "namespace" property must be set to the namespace of the + * driver. The code in this namespace must be autoloadable prior to connecting + * to the database, and therefore, prior to when module root namespaces are + * added to the autoloader. To add the driver's namespace to the autoloader, + * set the "autoload" property to the PSR-4 base directory of the driver's + * namespace. This is optional for projects managed with Composer if the + * driver's namespace is in Composer's autoloader. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. + * + * For example, to have all database table prefixed with 'main_', set: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + * + * Sample Database configuration format for a driver in a contributed module: + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * Fallback to HTTP for Update Manager and for fetching security advisories. + * + * If your site fails to connect to updates.drupal.org over HTTPS (either when + * fetching data on available updates, or when fetching the feed of critical + * security announcements), you may uncomment this setting and set it to TRUE to + * allow an insecure fallback to HTTP. Note that doing so will open your site up + * to a potential man-in-the-middle attack. You should instead attempt to + * resolve the issues before enabling this option. + * @see https://www.drupal.org/docs/system-requirements/php-requirements#openssl + * @see https://en.wikipedia.org/wiki/Man-in-the-middle_attack + * @see \Drupal\update\UpdateFetcher + * @see \Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher + */ +# $settings['update_fetch_with_http_fallback'] = TRUE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \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 + * + * Note the default value of + * @code + * \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 + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \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 + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_HOST + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $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; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APCu extension is detected, the classloader will be optimized to use + * it. Set to FALSE to disable this. + * + * @see https://getcomposer.org/doc/articles/autoloader-optimization.md + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Add Permissions-Policy header to disable Google FLoC. + * + * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header + * to disable Google's Federated Learning of Cohorts feature, introduced in + * Chrome 89. + * + * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more + * information about FLoC. + * + * If you don't wish to disable FLoC in Chrome, you can set this value + * to FALSE. + */ +# $settings['block_interest_cohort'] = TRUE; + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Node migration type. + * + * This is used to force the migration system to use the classic node migrations + * instead of the default complete node migrations. The migration system will + * use the classic node migration only if there are existing migrate_map tables + * for the classic node migrations and they contain data. These tables may not + * exist if you are developing custom migrations and do not want to use the + * complete node migrations. Set this to TRUE to force the use of the classic + * node migrations. + */ +$settings['migrate_node_migrate_type_classic'] = FALSE; + +/** + * Load local development override configuration, if available. + * + * Create a settings.local.php file to override variables on secondary (staging, + * development, etc.) installations of this site. + * + * Typical uses of settings.local.php include: + * - Disabling caching. + * - Disabling JavaScript/CSS compression. + * - Rerouting outgoing emails. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/docroot/sites/understandenergy/settings.php b/docroot/sites/understandenergy/settings.php new file mode 100644 index 000000000..675a2c583 --- /dev/null +++ b/docroot/sites/understandenergy/settings.php @@ -0,0 +1,766 @@ + 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

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

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } +require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `blt.settings.php`. See BLT's documentation for more detail. + * + * @link https://docs.acquia.com/blt/ + */ diff --git a/docroot/sites/understandenergy/settings/default.includes.settings.php b/docroot/sites/understandenergy/settings/default.includes.settings.php new file mode 100644 index 000000000..12553a4ab --- /dev/null +++ b/docroot/sites/understandenergy/settings/default.includes.settings.php @@ -0,0 +1,50 @@ + + [ + 'default' => + [ + 'database' => $db_name, + 'username' => '${drupal.db.username}', + 'password' => '${drupal.db.password}', + 'host' => '${drupal.db.host}', + 'port' => '${drupal.db.port}', + 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', + 'driver' => 'mysql', + 'prefix' => '', + ], + ], +]; + +$dir = dirname(DRUPAL_ROOT); + +// Use development service parameters. +$settings['container_yamls'][] = $dir . '/docroot/sites/development.services.yml'; +$settings['container_yamls'][] = $dir . '/docroot/sites/blt.development.services.yml'; + +// Allow access to update.php. +$settings['update_free_access'] = TRUE; + +/** + * Assertions. + * + * The Drupal project primarily uses runtime assertions to enforce the + * expectations of the API by failing when incorrect calls are made by code + * under development. + * + * @see http://php.net/assert + * @see https://www.drupal.org/node/2492225 + * + * If you are using PHP 7.0 it is strongly recommended that you set + * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess + * or runtime) on development machines and to 0 in production. + * + * @see https://wiki.php.net/rfc/expectations + */ +assert_options(ASSERT_ACTIVE, TRUE); +Handle::register(); + +/** + * Show all error messages, with backtrace information. + * + * In case the error level could not be fetched from the database, as for + * example the database connection failed, we rely only on this value. + */ +$config['system.logging']['error_level'] = 'verbose'; + +/** + * Disable CSS and JS aggregation. + */ +$config['system.performance']['css']['preprocess'] = FALSE; +$config['system.performance']['js']['preprocess'] = FALSE; + +/** + * Disable the render cache (this includes the page cache). + * + * Note: you should test with the render cache enabled, to ensure the correct + * cacheability metadata is present. However, in the early stages of + * development, you may want to disable it. + * + * This setting disables the render cache by using the Null cache back-end + * defined by the development.services.yml file above. + * + * Do not use this setting until after the site is installed. + */ +// $settings['cache']['bins']['render'] = 'cache.backend.null'; +/** + * Disable Dynamic Page Cache. + * + * Note: you should test with Dynamic Page Cache enabled, to ensure the correct + * cacheability metadata is present (and hence the expected behavior). However, + * in the early stages of development, you may want to disable it. + */ +// $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; +/** + * Allow test modules and themes to be installed. + * + * Drupal ignores test modules and themes by default for performance reasons. + * During development it can be useful to install test extensions for debugging + * purposes. + */ +$settings['extension_discovery_scan_tests'] = FALSE; + + +/** + * Configure static caches. + * + * Note: you should test with the config, bootstrap, and discovery caches + * enabled to test that metadata is cached as expected. However, in the early + * stages of development, you may want to disable them. Overrides to these bins + * must be explicitly set for each bin to change the default configuration + * provided by Drupal core in core.services.yml. + * See https://www.drupal.org/node/2754947 + */ + +// $settings['cache']['bins']['bootstrap'] = 'cache.backend.null'; +// $settings['cache']['bins']['discovery'] = 'cache.backend.null'; +// $settings['cache']['bins']['config'] = 'cache.backend.null'; +/** + * Enable access to rebuild.php. + * + * This setting can be enabled to allow Drupal's php and database cached + * storage to be cleared via the rebuild.php page. Access to this page can also + * be gained by generating a query string from rebuild_token_calculator.sh and + * using these parameters in a request to rebuild.php. + */ +$settings['rebuild_access'] = FALSE; + +/** + * Skip file system permissions hardening. + * + * The system module will periodically check the permissions of your site's + * site directory to ensure that it is not writable by the website user. For + * sites that are managed with a version control system, this can cause problems + * when files in that directory such as settings.php are updated, because the + * user pulling in the changes won't have permissions to modify files in the + * directory. + */ +$settings['skip_permissions_hardening'] = TRUE; + +/** + * Private file path. + */ +$settings['file_private_path'] = $dir . '/files-private/default'; +if (isset($_acsf_site_name)) { + $settings['file_public_path'] = "sites/default/files/$_acsf_site_name"; + // phpcs:ignore + $settings['file_private_path'] = "$repo_root/files-private/$_acsf_site_name"; +} + +/** + * Trusted host configuration. + * + * See full description in default.settings.php. + */ +$settings['trusted_host_patterns'] = [ + '^.+$', +]; diff --git a/drush/sites/bitsandwatts.site.yml b/drush/sites/bitsandwatts.site.yml new file mode 100644 index 000000000..ade5418c9 --- /dev/null +++ b/drush/sites/bitsandwatts.site.yml @@ -0,0 +1,47 @@ +local: + uri: bitsandwatts + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: bitsandwatts-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: bitsandwatts-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: bitsandwatts-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: bitsandwatts-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/carbon_removal.site.yml b/drush/sites/carbon_removal.site.yml new file mode 100644 index 000000000..220373d17 --- /dev/null +++ b/drush/sites/carbon_removal.site.yml @@ -0,0 +1,47 @@ +local: + uri: carbon-removal + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: carbon-removal-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: carbon-removal-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: carbon-removal-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: carbon-removal-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/explore_energy.site.yml b/drush/sites/explore_energy.site.yml new file mode 100644 index 000000000..745738a4a --- /dev/null +++ b/drush/sites/explore_energy.site.yml @@ -0,0 +1,47 @@ +local: + uri: explore-energy + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: explore-energy-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: explore-energy-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: explore-energy-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: explore-energy-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/extreme_energy_efficiency.site.yml b/drush/sites/extreme_energy_efficiency.site.yml new file mode 100644 index 000000000..024592484 --- /dev/null +++ b/drush/sites/extreme_energy_efficiency.site.yml @@ -0,0 +1,47 @@ +local: + uri: extreme-energy-efficiency + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: extreme-energy-efficiency-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: extreme-energy-efficiency-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: extreme-energy-efficiency-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: extreme-energy-efficiency-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/gep.site.yml b/drush/sites/gep.site.yml new file mode 100644 index 000000000..c61336c64 --- /dev/null +++ b/drush/sites/gep.site.yml @@ -0,0 +1,47 @@ +local: + uri: gep + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: gep-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: gep-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: gep-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: gep-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/hackingfordefense.site.yml b/drush/sites/hackingfordefense.site.yml new file mode 100644 index 000000000..332cb2f23 --- /dev/null +++ b/drush/sites/hackingfordefense.site.yml @@ -0,0 +1,47 @@ +local: + uri: hackingfordefense + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: hackingfordefense-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: hackingfordefense-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: hackingfordefense-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: hackingfordefense-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/hydrogen.site.yml b/drush/sites/hydrogen.site.yml new file mode 100644 index 000000000..36237c02c --- /dev/null +++ b/drush/sites/hydrogen.site.yml @@ -0,0 +1,47 @@ +local: + uri: hydrogen + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: hydrogen-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: hydrogen-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: hydrogen-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: hydrogen-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/mce2050.site.yml b/drush/sites/mce2050.site.yml new file mode 100644 index 000000000..a1f31d21e --- /dev/null +++ b/drush/sites/mce2050.site.yml @@ -0,0 +1,47 @@ +local: + uri: mce2050 + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: mce2050-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: mce2050-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: mce2050-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: mce2050-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/ngi.site.yml b/drush/sites/ngi.site.yml new file mode 100644 index 000000000..3806a22cc --- /dev/null +++ b/drush/sites/ngi.site.yml @@ -0,0 +1,47 @@ +local: + uri: ngi + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: ngi-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: ngi-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: ngi-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: ngi-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/nza.site.yml b/drush/sites/nza.site.yml new file mode 100644 index 000000000..4c35b0df7 --- /dev/null +++ b/drush/sites/nza.site.yml @@ -0,0 +1,47 @@ +local: + uri: nza + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: nza-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: nza-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: nza-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: nza-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/scv.site.yml b/drush/sites/scv.site.yml new file mode 100644 index 000000000..82ae859cd --- /dev/null +++ b/drush/sites/scv.site.yml @@ -0,0 +1,47 @@ +local: + uri: scv + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: scv-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: scv-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: scv-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: scv-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/seca.site.yml b/drush/sites/seca.site.yml new file mode 100644 index 000000000..11ca165c8 --- /dev/null +++ b/drush/sites/seca.site.yml @@ -0,0 +1,47 @@ +local: + uri: seca + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: seca-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: seca-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: seca-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: seca-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/seepac.site.yml b/drush/sites/seepac.site.yml new file mode 100644 index 000000000..151b47b2b --- /dev/null +++ b/drush/sites/seepac.site.yml @@ -0,0 +1,47 @@ +local: + uri: seepac + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: seepac-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: seepac-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: seepac-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: seepac-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/sfi.site.yml b/drush/sites/sfi.site.yml new file mode 100644 index 000000000..a2b6bacf0 --- /dev/null +++ b/drush/sites/sfi.site.yml @@ -0,0 +1,47 @@ +local: + uri: sfi + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: sfi-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: sfi-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: sfi-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: sfi-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/storagex.site.yml b/drush/sites/storagex.site.yml new file mode 100644 index 000000000..09fface6c --- /dev/null +++ b/drush/sites/storagex.site.yml @@ -0,0 +1,47 @@ +local: + uri: storagex + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: storagex-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: storagex-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: storagex-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: storagex-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/strategic_energy_alliance.site.yml b/drush/sites/strategic_energy_alliance.site.yml new file mode 100644 index 000000000..09329e4fa --- /dev/null +++ b/drush/sites/strategic_energy_alliance.site.yml @@ -0,0 +1,47 @@ +local: + uri: strategic-energy-alliance + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: strategic-energy-alliance-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: strategic-energy-alliance-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: strategic-energy-alliance-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: strategic-energy-alliance-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/understand_energy_course.site.yml b/drush/sites/understand_energy_course.site.yml new file mode 100644 index 000000000..ac768160b --- /dev/null +++ b/drush/sites/understand_energy_course.site.yml @@ -0,0 +1,47 @@ +local: + uri: understand-energy-course + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: understand-energy-course-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: understand-energy-course-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: understand-energy-course-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: understand-energy-course-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test diff --git a/drush/sites/understandenergy.site.yml b/drush/sites/understandenergy.site.yml new file mode 100644 index 000000000..7165ba846 --- /dev/null +++ b/drush/sites/understandenergy.site.yml @@ -0,0 +1,47 @@ +local: + uri: understandenergy + root: '${env.cwd}/docroot' +dev: + root: /var/www/html/stanfordsos.dev/docroot + ac-site: stanfordsos + ac-env: dev + ac-realm: prod + uri: understandenergy-dev.stanford.edu + dev.livedev: + parent: '@stanfordsos.dev' + root: /mnt/gfs/stanfordsos.dev/livedev/docroot + host: stanfordsosdev.ssh.prod.acquia-sites.com + user: stanfordsos.dev +prod: + root: /var/www/html/stanfordsos.prod/docroot + ac-site: stanfordsos + ac-env: prod + ac-realm: prod + uri: understandenergy-prod.stanford.edu + prod.livedev: + parent: '@stanfordsos.prod' + root: /mnt/gfs/stanfordsos.prod/livedev/docroot + host: stanfordsos.ssh.prod.acquia-sites.com + user: stanfordsos.prod +ra: + root: /var/www/html/stanfordsos.ra/docroot + ac-site: stanfordsos + ac-env: ra + ac-realm: prod + uri: understandenergy-ra.stanford.edu + ra.livedev: + parent: '@stanfordsos.ra' + root: /mnt/gfs/stanfordsos.ra/livedev/docroot + host: stanfordsosra.ssh.prod.acquia-sites.com + user: stanfordsos.ra +test: + root: /var/www/html/stanfordsos.test/docroot + ac-site: stanfordsos + ac-env: test + ac-realm: prod + uri: understandenergy-test.stanford.edu + test.livedev: + parent: '@stanfordsos.test' + root: /mnt/gfs/stanfordsos.test/livedev/docroot + host: stanfordsosstg.ssh.prod.acquia-sites.com + user: stanfordsos.test