swift/doc/source/middleware.rst
Romain LE DISEZ 27fd97cef9 Middleware that allows a user to have quoted Etags
Users have complained for a while that Swift's ETags don't match the
expected RFC formats. We've resisted fixing this for just as long,
worrying that the fix would break innumerable clients that expect the
value to be a hex-encoded MD5 digest and *nothing else*.

But, users keep asking for it, and some consumers (including some CDNs)
break if we *don't* have quoted etags -- so, let's make it an option.

With this middleware, Swift users can set metadata per-account or even
per-container to explicitly request RFC compliant etags or not. Swift
operators also get an option to change the default behavior
cluster-wide; it defaults to the old, non-compliant format.

See also:
  - https://tools.ietf.org/html/rfc2616#section-3.11
  - https://tools.ietf.org/html/rfc7232#section-2.3

Closes-Bug: 1099087
Closes-Bug: 1424614
Co-Authored-By: Tim Burke <tim.burke@gmail.com>
Change-Id: I380c6e34949d857158e11eb428b3eda9975d855d
2020-01-27 12:53:35 -08:00

7.5 KiB

Middleware

Account Quotas

swift.common.middleware.account_quotas

AWS S3 Api

swift.common.middleware.s3api.s3api

swift.common.middleware.s3api.s3token

swift.common.middleware.s3api.s3request

swift.common.middleware.s3api.s3response

swift.common.middleware.s3api.exception

swift.common.middleware.s3api.etree

swift.common.middleware.s3api.utils

swift.common.middleware.s3api.subresource

swift.common.middleware.s3api.acl_handlers

swift.common.middleware.s3api.acl_utils

swift.common.middleware.s3api.controllers.base

swift.common.middleware.s3api.controllers.service

swift.common.middleware.s3api.controllers.bucket

swift.common.middleware.s3api.controllers.obj

swift.common.middleware.s3api.controllers.acl

swift.common.middleware.s3api.controllers.s3_acl

swift.common.middleware.s3api.controllers.multi_upload

swift.common.middleware.s3api.controllers.multi_delete

swift.common.middleware.s3api.controllers.versioning

swift.common.middleware.s3api.controllers.location

swift.common.middleware.s3api.controllers.logging

Bulk Operations (Delete and Archive Auto Extraction)

swift.common.middleware.bulk

CatchErrors

swift.common.middleware.catch_errors

CNAME Lookup

swift.common.middleware.cname_lookup

Container Quotas

swift.common.middleware.container_quotas

Container Sync Middleware

swift.common.middleware.container_sync

Cross Domain Policies

swift.common.middleware.crossdomain

Discoverability

Swift will by default provide clients with an interface providing details about the installation. Unless disabled (i.e expose_info=false in proxy-server-config), a GET request to /info will return configuration data in JSON format. An example response:

{"swift": {"version": "1.11.0"}, "staticweb": {}, "tempurl": {}}

This would signify to the client that swift version 1.11.0 is running and that staticweb and tempurl are available in this installation.

There may be administrator-only information available via /info. To retrieve it, one must use an HMAC-signed request, similar to TempURL. The signature may be produced like so:

swift tempurl GET 3600 /info secret 2>/dev/null | sed s/temp_url/swiftinfo/g

Domain Remap

swift.common.middleware.domain_remap

Dynamic Large Objects

DLO support centers around a user specified filter that matches segments and concatenates them together in object listing order. Please see the DLO docs for dlo-doc further details.

Encryption

Encryption middleware should be deployed in conjunction with the keymaster middleware.

swift.common.middleware.crypto

swift.common.middleware.crypto.encrypter

swift.common.middleware.crypto.decrypter

Etag Quoter

swift.common.middleware.etag_quoter

FormPost

swift.common.middleware.formpost

GateKeeper

swift.common.middleware.gatekeeper

Healthcheck

swift.common.middleware.healthcheck

Keymaster

Keymaster middleware should be deployed in conjunction with the encryption middleware.

swift.common.middleware.crypto.keymaster

KeystoneAuth

swift.common.middleware.keystoneauth

List Endpoints

swift.common.middleware.list_endpoints

Memcache

swift.common.middleware.memcache

Name Check (Forbidden Character Filter)

swift.common.middleware.name_check

Object Versioning

swift.common.middleware.versioned_writes.object_versioning

Proxy Logging

swift.common.middleware.proxy_logging

Ratelimit

swift.common.middleware.ratelimit

Read Only

swift.common.middleware.read_only

Recon

swift.common.middleware.recon

Server Side Copy

swift.common.middleware.copy

Static Large Objects

Please see the SLO docs for slo-doc further details.

StaticWeb

swift.common.middleware.staticweb

swift.common.middleware.symlink

TempAuth

swift.common.middleware.tempauth

TempURL

swift.common.middleware.tempurl

Versioned Writes

swift.common.middleware.versioned_writes.legacy

XProfile

swift.common.middleware.xprofile