27fd97cef9
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
398 lines
7.5 KiB
ReStructuredText
398 lines
7.5 KiB
ReStructuredText
.. _common_middleware:
|
|
|
|
**********
|
|
Middleware
|
|
**********
|
|
|
|
.. _account-quotas:
|
|
|
|
Account Quotas
|
|
==============
|
|
|
|
.. automodule:: swift.common.middleware.account_quotas
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _s3api:
|
|
|
|
AWS S3 Api
|
|
==========
|
|
|
|
.. automodule:: swift.common.middleware.s3api.s3api
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.s3token
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.s3request
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.s3response
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.exception
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.etree
|
|
:members: _Element
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.utils
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.subresource
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.acl_handlers
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.acl_utils
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.base
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.service
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.bucket
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.obj
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.acl
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.s3_acl
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.multi_upload
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.multi_delete
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.versioning
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.location
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.logging
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _bulk:
|
|
|
|
Bulk Operations (Delete and Archive Auto Extraction)
|
|
====================================================
|
|
|
|
.. automodule:: swift.common.middleware.bulk
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _catch_errors:
|
|
|
|
CatchErrors
|
|
=============
|
|
|
|
.. automodule:: swift.common.middleware.catch_errors
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
CNAME Lookup
|
|
============
|
|
|
|
.. automodule:: swift.common.middleware.cname_lookup
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _container-quotas:
|
|
|
|
Container Quotas
|
|
================
|
|
|
|
.. automodule:: swift.common.middleware.container_quotas
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _container-sync:
|
|
|
|
Container Sync Middleware
|
|
=========================
|
|
|
|
.. automodule:: swift.common.middleware.container_sync
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Cross Domain Policies
|
|
=====================
|
|
|
|
.. automodule:: swift.common.middleware.crossdomain
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _discoverability:
|
|
|
|
Discoverability
|
|
===============
|
|
|
|
Swift will by default provide clients with an interface providing details
|
|
about the installation. Unless disabled (i.e ``expose_info=false`` in
|
|
:ref:`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
|
|
============
|
|
|
|
.. automodule:: swift.common.middleware.domain_remap
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
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 :ref:`dlo-doc` further details.
|
|
|
|
.. _encryption:
|
|
|
|
Encryption
|
|
==========
|
|
|
|
Encryption middleware should be deployed in conjunction with the
|
|
:ref:`keymaster` middleware.
|
|
|
|
.. automodule:: swift.common.middleware.crypto
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.crypto.encrypter
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.crypto.decrypter
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _etag_quoter:
|
|
|
|
Etag Quoter
|
|
===========
|
|
|
|
.. automodule:: swift.common.middleware.etag_quoter
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _formpost:
|
|
|
|
FormPost
|
|
========
|
|
|
|
.. automodule:: swift.common.middleware.formpost
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _gatekeeper:
|
|
|
|
GateKeeper
|
|
==========
|
|
|
|
.. automodule:: swift.common.middleware.gatekeeper
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _healthcheck:
|
|
|
|
Healthcheck
|
|
===========
|
|
|
|
.. automodule:: swift.common.middleware.healthcheck
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _keymaster:
|
|
|
|
Keymaster
|
|
=========
|
|
|
|
Keymaster middleware should be deployed in conjunction with the
|
|
:ref:`encryption` middleware.
|
|
|
|
.. automodule:: swift.common.middleware.crypto.keymaster
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _keystoneauth:
|
|
|
|
KeystoneAuth
|
|
============
|
|
|
|
.. automodule:: swift.common.middleware.keystoneauth
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _list_endpoints:
|
|
|
|
List Endpoints
|
|
==============
|
|
|
|
.. automodule:: swift.common.middleware.list_endpoints
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Memcache
|
|
========
|
|
|
|
.. automodule:: swift.common.middleware.memcache
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Name Check (Forbidden Character Filter)
|
|
=======================================
|
|
|
|
.. automodule:: swift.common.middleware.name_check
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _object_versioning:
|
|
|
|
Object Versioning
|
|
=================
|
|
|
|
.. automodule:: swift.common.middleware.versioned_writes.object_versioning
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Proxy Logging
|
|
=============
|
|
|
|
.. automodule:: swift.common.middleware.proxy_logging
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Ratelimit
|
|
=========
|
|
|
|
.. automodule:: swift.common.middleware.ratelimit
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _read_only:
|
|
|
|
Read Only
|
|
=========
|
|
|
|
.. automodule:: swift.common.middleware.read_only
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _recon:
|
|
|
|
Recon
|
|
=====
|
|
|
|
.. automodule:: swift.common.middleware.recon
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _copy:
|
|
|
|
Server Side Copy
|
|
================
|
|
|
|
.. automodule:: swift.common.middleware.copy
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Static Large Objects
|
|
====================
|
|
|
|
Please see
|
|
the SLO docs for :ref:`slo-doc` further details.
|
|
|
|
|
|
.. _staticweb:
|
|
|
|
StaticWeb
|
|
=========
|
|
|
|
.. automodule:: swift.common.middleware.staticweb
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _symlink:
|
|
|
|
Symlink
|
|
=======
|
|
|
|
.. automodule:: swift.common.middleware.symlink
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _common_tempauth:
|
|
|
|
TempAuth
|
|
========
|
|
|
|
.. automodule:: swift.common.middleware.tempauth
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _tempurl:
|
|
|
|
TempURL
|
|
=======
|
|
|
|
.. automodule:: swift.common.middleware.tempurl
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _versioned_writes:
|
|
|
|
Versioned Writes
|
|
=================
|
|
|
|
.. automodule:: swift.common.middleware.versioned_writes.legacy
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
XProfile
|
|
==============
|
|
|
|
.. automodule:: swift.common.middleware.xprofile
|
|
:members:
|
|
:show-inheritance:
|