mirror of
https://github.com/goharbor/harbor.git
synced 2024-12-24 01:27:49 +01:00
Merge pull request #10367 from ywk253100/191227_list
Remove the manifest list middleware
This commit is contained in:
commit
6571135cbf
@ -23,7 +23,6 @@ import (
|
|||||||
"github.com/goharbor/harbor/src/core/middlewares/countquota"
|
"github.com/goharbor/harbor/src/core/middlewares/countquota"
|
||||||
"github.com/goharbor/harbor/src/core/middlewares/immutable"
|
"github.com/goharbor/harbor/src/core/middlewares/immutable"
|
||||||
"github.com/goharbor/harbor/src/core/middlewares/listrepo"
|
"github.com/goharbor/harbor/src/core/middlewares/listrepo"
|
||||||
"github.com/goharbor/harbor/src/core/middlewares/multiplmanifest"
|
|
||||||
"github.com/goharbor/harbor/src/core/middlewares/readonly"
|
"github.com/goharbor/harbor/src/core/middlewares/readonly"
|
||||||
"github.com/goharbor/harbor/src/core/middlewares/regtoken"
|
"github.com/goharbor/harbor/src/core/middlewares/regtoken"
|
||||||
"github.com/goharbor/harbor/src/core/middlewares/sizequota"
|
"github.com/goharbor/harbor/src/core/middlewares/sizequota"
|
||||||
@ -63,17 +62,16 @@ func (b *DefaultCreator) Create() *alice.Chain {
|
|||||||
|
|
||||||
func (b *DefaultCreator) geMiddleware(mName string) alice.Constructor {
|
func (b *DefaultCreator) geMiddleware(mName string) alice.Constructor {
|
||||||
middlewares := map[string]alice.Constructor{
|
middlewares := map[string]alice.Constructor{
|
||||||
CHART: func(next http.Handler) http.Handler { return chart.New(next) },
|
CHART: func(next http.Handler) http.Handler { return chart.New(next) },
|
||||||
READONLY: func(next http.Handler) http.Handler { return readonly.New(next) },
|
READONLY: func(next http.Handler) http.Handler { return readonly.New(next) },
|
||||||
URL: func(next http.Handler) http.Handler { return url.New(next) },
|
URL: func(next http.Handler) http.Handler { return url.New(next) },
|
||||||
MUITIPLEMANIFEST: func(next http.Handler) http.Handler { return multiplmanifest.New(next) },
|
LISTREPO: func(next http.Handler) http.Handler { return listrepo.New(next) },
|
||||||
LISTREPO: func(next http.Handler) http.Handler { return listrepo.New(next) },
|
CONTENTTRUST: func(next http.Handler) http.Handler { return contenttrust.New(next) },
|
||||||
CONTENTTRUST: func(next http.Handler) http.Handler { return contenttrust.New(next) },
|
VULNERABLE: func(next http.Handler) http.Handler { return vulnerable.New(next) },
|
||||||
VULNERABLE: func(next http.Handler) http.Handler { return vulnerable.New(next) },
|
SIZEQUOTA: func(next http.Handler) http.Handler { return sizequota.New(next) },
|
||||||
SIZEQUOTA: func(next http.Handler) http.Handler { return sizequota.New(next) },
|
COUNTQUOTA: func(next http.Handler) http.Handler { return countquota.New(next) },
|
||||||
COUNTQUOTA: func(next http.Handler) http.Handler { return countquota.New(next) },
|
IMMUTABLE: func(next http.Handler) http.Handler { return immutable.New(next) },
|
||||||
IMMUTABLE: func(next http.Handler) http.Handler { return immutable.New(next) },
|
REGTOKEN: func(next http.Handler) http.Handler { return regtoken.New(next) },
|
||||||
REGTOKEN: func(next http.Handler) http.Handler { return regtoken.New(next) },
|
|
||||||
}
|
}
|
||||||
return middlewares[mName]
|
return middlewares[mName]
|
||||||
}
|
}
|
||||||
|
@ -16,24 +16,23 @@ package middlewares
|
|||||||
|
|
||||||
// const variables
|
// const variables
|
||||||
const (
|
const (
|
||||||
CHART = "chart"
|
CHART = "chart"
|
||||||
READONLY = "readonly"
|
READONLY = "readonly"
|
||||||
URL = "url"
|
URL = "url"
|
||||||
MUITIPLEMANIFEST = "manifest"
|
LISTREPO = "listrepo"
|
||||||
LISTREPO = "listrepo"
|
CONTENTTRUST = "contenttrust"
|
||||||
CONTENTTRUST = "contenttrust"
|
VULNERABLE = "vulnerable"
|
||||||
VULNERABLE = "vulnerable"
|
SIZEQUOTA = "sizequota"
|
||||||
SIZEQUOTA = "sizequota"
|
COUNTQUOTA = "countquota"
|
||||||
COUNTQUOTA = "countquota"
|
IMMUTABLE = "immutable"
|
||||||
IMMUTABLE = "immutable"
|
REGTOKEN = "regtoken"
|
||||||
REGTOKEN = "regtoken"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ChartMiddlewares middlewares for chart server
|
// ChartMiddlewares middlewares for chart server
|
||||||
var ChartMiddlewares = []string{CHART}
|
var ChartMiddlewares = []string{CHART}
|
||||||
|
|
||||||
// Middlewares with sequential organization
|
// Middlewares with sequential organization
|
||||||
var Middlewares = []string{READONLY, URL, REGTOKEN, MUITIPLEMANIFEST, LISTREPO, CONTENTTRUST, VULNERABLE, SIZEQUOTA, IMMUTABLE, COUNTQUOTA}
|
var Middlewares = []string{READONLY, URL, REGTOKEN, LISTREPO, CONTENTTRUST, VULNERABLE, SIZEQUOTA, IMMUTABLE, COUNTQUOTA}
|
||||||
|
|
||||||
// MiddlewaresLocal ...
|
// MiddlewaresLocal ...
|
||||||
var MiddlewaresLocal = []string{SIZEQUOTA, IMMUTABLE, COUNTQUOTA}
|
var MiddlewaresLocal = []string{SIZEQUOTA, IMMUTABLE, COUNTQUOTA}
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
// Copyright Project Harbor Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package multiplmanifest
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/goharbor/harbor/src/common/utils/log"
|
|
||||||
"github.com/goharbor/harbor/src/core/middlewares/util"
|
|
||||||
"net/http"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
type multipleManifestHandler struct {
|
|
||||||
next http.Handler
|
|
||||||
}
|
|
||||||
|
|
||||||
// New ...
|
|
||||||
func New(next http.Handler) http.Handler {
|
|
||||||
return &multipleManifestHandler{
|
|
||||||
next: next,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ServeHTTP The handler is responsible for blocking request to upload manifest list by docker client, which is not supported so far by Harbor.
|
|
||||||
func (mh multipleManifestHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
|
||||||
match, _, _ := util.MatchPushManifest(req)
|
|
||||||
if match {
|
|
||||||
contentType := req.Header.Get("Content-type")
|
|
||||||
// application/vnd.docker.distribution.manifest.list.v2+json
|
|
||||||
if strings.Contains(contentType, "manifest.list.v2") {
|
|
||||||
log.Debugf("Content-type: %s is not supported, failing the response.", contentType)
|
|
||||||
http.Error(rw, util.MarshalError("UNSUPPORTED_MEDIA_TYPE", "Manifest.list is not supported."), http.StatusUnsupportedMediaType)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mh.next.ServeHTTP(rw, req)
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user