Commit efa788a3 authored by Stephen Mustgrave's avatar Stephen Mustgrave
Browse files

Issue #2514772: Add file extension exclusion list

parent 62009020
Loading
Loading
Loading
Loading
+1 −0
Changes for config/install/stage_file_proxy.settings.yml: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,3 +3,4 @@ origin: ''
origin_dir: ''
use_imagecache_root: true
verify: true
excluded_extensions: ''
+3 −0
Changes for config/schema/stage_file_proxy.schema.yml: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -17,3 +17,6 @@ stage_file_proxy.settings:
    verify:
      type: boolean
      label: "Verify SSL"
    excluded_extensions:
      type: string
      label: "Excluded extensions"
+10 −0
Changes for src/EventSubscriber/ProxySubscriber.php: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -118,6 +118,16 @@ class ProxySubscriber implements EventSubscriberInterface {
      return;
    }

    // Quit if the extension is in the list of excluded extensions.
    $excluded_extensions = array_map('trim', explode(',', $config->get('excluded_extensions')));

    $path_info = pathinfo($request_path);
    $ext = $path_info['extension'];

    if (in_array($ext, $excluded_extensions)) {
      return;
    }

    $alter_excluded_paths_event = new AlterExcludedPathsEvent([]);
    $this->eventDispatcher->dispatch($alter_excluded_paths_event, 'stage_file_proxy.alter_excluded_paths');
    $excluded_paths = $alter_excluded_paths_event->getExcludedPaths();
+9 −0
Changes for src/Form/SettingsForm.php: 9 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -107,6 +107,14 @@ class SettingsForm extends ConfigFormBase {
      '#required' => FALSE,
    ];

    $form['excluded_extensions'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Excluded extensions.'),
      '#default_value' => $config->get('excluded_extensions'),
      '#description' => $this->t("A comma separated list of the extensions that will not be fetched by Stage File Proxy if Hotlinking is disabled. For example: 'mp3,ogg'"),
      '#required' => FALSE,
    ];

    return parent::buildForm($form, $form_state);
  }

@@ -134,6 +142,7 @@ class SettingsForm extends ConfigFormBase {
      'use_imagecache_root',
      'hotlink',
      'verify',
      'excluded_extensions',
    ];
    foreach ($keys as $key) {
      $value = $form_state->getValue($key);