Skip to content

Configuration not reliable  #51

@alexandrestein

Description

@alexandrestein

I tried multiple times now to add some headers to some of my hosts and to active GZIP on specific paths.

I never made it because in fact the configuration of the plugin is very hazardous.
After many tries, it appears that plugins are loaded randomly.
I tried to check if the plugging order mater but it seams like it does not.

Here is an config example:

--- 
address: ":8080"
hosts: 
  localhost: 
    paths:
      "/":
        plugins: 
          - 
            name: static
            browse: true
            html5: true
            root: ./
          - 
            name: header
            set: 
              Content-Security-Policy: "default-src 'self' data:"
              Expect-CT: max-age=604800
              Feature-Policy: "accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"
              Referrer-Policy: strict-origin-when-cross-origin
              Strict-Transport-Security: "max-age=15780000; includeSubdomains"
              X-Content-Type-Option: nosniff
              X-Frame-Options: SAMEORIGIN
              X-Xss-Protection: "1; mode=block"
          -
            name: gzip
            level: 3
      "/API/content/":
        plugins: 
          - 
            browse: true
            html5: true
            name: static
            root: ./
          - 
            name: header
            set: 
              File: "true"
    # plugins: 
    #   - 
    #     browse: true
    #     html5: true
    #     name: static
    #     root: ./
read_timeout: 129600
write_timeout: 129600

You can make it even simpler but here is the point.
If I run the process with the same config and same build I have random result:

curl --compressed --head localhost:8080/
HTTP/1.1 200 OK
Content-Security-Policy: default-src 'self' data:
Content-Type: text/html; charset=UTF-8
Expect-Ct: max-age=604800
Feature-Policy: accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'
Referrer-Policy: strict-origin-when-cross-origin
Server: armor/0.4.13
Strict-Transport-Security: max-age=15780000; includeSubdomains
X-Content-Type-Option: nosniff
X-Frame-Options: SAMEORIGIN
X-Xss-Protection: 1; mode=block
Date: Thu, 13 Jun 2019 10:03:27 GMT
Content-Length: 928
curl --compressed --head localhost:8080/
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: armor/0.4.13
Date: Thu, 13 Jun 2019 10:31:35 GMT
curl --compressed --head localhost:8080/
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: armor/0.4.13
Date: Thu, 13 Jun 2019 10:31:36 GMT
curl --compressed --head localhost:8080/
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: armor/0.4.13
Date: Thu, 13 Jun 2019 10:31:50 GMT
curl --compressed --head localhost:8080/
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Security-Policy: default-src 'self' data:
Content-Type: text/html; charset=UTF-8
Expect-Ct: max-age=604800
Feature-Policy: accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'
Referrer-Policy: strict-origin-when-cross-origin
Server: armor/0.4.13
Strict-Transport-Security: max-age=15780000; includeSubdomains
Vary: Accept-Encoding
X-Content-Type-Option: nosniff
X-Frame-Options: SAMEORIGIN
X-Xss-Protection: 1; mode=block
Date: Thu, 13 Jun 2019 10:31:57 GMT
Content-Length: 923

It looks like the static plugin is always loaded but the GZIP and header are not always.

In the first command header are OK but not the GZIP.
In the second, third and fourth none GZIP or header are loaded.
And in the last one finally is what I expect.

We can't relay on this behavior and I did not found where to dig.

Please take a look to this, because it's a terrible thing.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions