loveuer 6e866b83e4 feat: as docker mirror registry
feat: add global proxy config
upgrade: upgrade front(angular) to 19
chore: deployment staff
  1. Dockerfile: build frontend, backend, and run in nginx base image
2024-12-23 22:46:34 -08:00

50 lines
999 B
Go

package handler
import (
"nf-repo/internal/interfaces"
"nf-repo/internal/opt"
"nf-repo/internal/tool/rerr"
"github.com/loveuer/nf"
"github.com/loveuer/nf/nft/log"
)
type blob struct {
blobHandler interfaces.BlobHandler
uploadHandler interfaces.UploadHandler
}
var b = &blob{}
func Root(bh interfaces.BlobHandler, uh interfaces.UploadHandler, mh interfaces.ManifestHandler) nf.HandlerFunc {
b.blobHandler = bh
b.uploadHandler = uh
return func(c *nf.Ctx) error {
if isBlob(c) {
return handleBlobs(c)
}
if isManifest(c) {
return handleManifest(c, mh, bh)
}
if isTags(c) {
return handleTags(c, mh)
}
if isCatalog(c) {
return handleCatalog(c, mh)
}
if opt.ReferrersEnabled && isReferrers(c) {
return handleReferrers(c, mh)
}
c.SetHeader("Docker-Distribution-API-Version", "registry/2.0")
log.Warn("root.go Root: path = %s, method = %s, headers = %v", c.Path(), c.Method(), c.Request.Header)
return rerr.Error(c, rerr.ErrUnauthorized)
}
}