[bugfix] Set Vary header correctly on cache-control (#1988)

* [bugfix] Set Vary header correctly on cache-control

* Prefer activitypub types on AP endpoints

* use immutable on file server, vary by range

* vary auth on Accept
This commit is contained in:
tobi
2023-07-13 21:27:25 +02:00
committed by GitHub
parent 88688899aa
commit 12b6cdcd8c
19 changed files with 132 additions and 41 deletions

View File

@ -41,11 +41,13 @@ func (a *ActivityPub) Route(r router.Router, m ...gin.HandlerFunc) {
usersGroup := r.AttachGroup("users")
// attach shared, non-global middlewares to both of these groups
cacheControlMiddleware := middleware.CacheControl("no-store")
ccMiddleware := middleware.CacheControl(middleware.CacheControlConfig{
Directives: []string{"no-store"},
})
emojiGroup.Use(m...)
usersGroup.Use(m...)
emojiGroup.Use(a.signatureCheckMiddleware, cacheControlMiddleware)
usersGroup.Use(a.signatureCheckMiddleware, cacheControlMiddleware)
emojiGroup.Use(a.signatureCheckMiddleware, ccMiddleware)
usersGroup.Use(a.signatureCheckMiddleware, ccMiddleware)
a.emoji.Route(emojiGroup.Handle)
a.users.Route(usersGroup.Handle)
@ -53,8 +55,17 @@ func (a *ActivityPub) Route(r router.Router, m ...gin.HandlerFunc) {
// Public key endpoint requires different middleware + cache policies from other AP endpoints.
func (a *ActivityPub) RoutePublicKey(r router.Router, m ...gin.HandlerFunc) {
// Create grouping for the 'users/[username]/main-key' prefix.
publicKeyGroup := r.AttachGroup(publickey.PublicKeyPath)
publicKeyGroup.Use(a.signatureCheckMiddleware, middleware.CacheControl("public,max-age=604800"))
// Attach middleware allowing public cacheing of main-key.
ccMiddleware := middleware.CacheControl(middleware.CacheControlConfig{
Directives: []string{"public", "max-age=604800"},
Vary: []string{"Accept", "Accept-Encoding"},
})
publicKeyGroup.Use(m...)
publicKeyGroup.Use(a.signatureCheckMiddleware, ccMiddleware)
a.publicKey.Route(publicKeyGroup.Handle)
}