add a feature toggle for deprecating arbitrary prefixes/delimiters
At some point in the future, we might want to disable listing with arbitrary prefixes/delimiters for projects created after a certain date. I expect to be able to configure Gateway-MT such that I can specify a date after which projects created can no longer use arbitrary prefixes and delimiters if they utilize credentials that encrypt paths. Summarizing, old projects will function as before, and new projects that can also be created without path encryption won't be allowed to list with custom prefixes/delimiters if they choose to encrypt object keys.
This is likely an umbrella issue that needs to be broken down because:
- we need to ensure that the informational endpoints @ satellite respond with the project's creation date
- we need to ensure that we save the creation date in the auth database
Then, we can implement the actual code changes in the gateway itself.
Change pb: add project created date to ProjectInfoResponse mentions this issue.
Change satellite/metainfo: return created at date for ProjectInfo mentions this issue.
Change private/project: include project created at within project info mentions this issue.
Change miniogw: add support for ProjectCreatedAt field in credentials mentions this issue.
Change pkg: save project created at in the auth db mentions this issue.
Change miniogw: add cfg for disallowing encrypted listing arbirary options mentions this issue.
All the supporting changes have been merged, the last one to do the validation is here: https://review.dev.storj.tools/c/storj/gateway/+/18834, then we can pass through the project created date in gateway-mt once we bump the gateway dependency.
Change pkg/server/gw: pass through ProjectCreatedAt to miniogw.Credentials mentions this issue.
Change go.mod: bump storj.io/gateway dependency mentions this issue.