mirror of
https://github.com/versity/versitygw.git
synced 2026-09-20 15:04:27 +00:00
feat: option to host webui on s3 port
This adds the webui-s3-prefix option to specify a prefix and host the webui on the same port as the s3 service. Like the health endpoint, this will mask any bucket with the same name as the webui prefix. The benefit of hosting this on the same interface as the s3 service is no longer needing the CORS headers for the browser access if the webui and s3 access are on the same IP:PORT.
This commit is contained in:
+27
-9
@@ -35,6 +35,7 @@ import (
|
||||
"github.com/versity/versitygw/s3err"
|
||||
"github.com/versity/versitygw/s3event"
|
||||
"github.com/versity/versitygw/s3log"
|
||||
"github.com/versity/versitygw/webui"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -42,15 +43,17 @@ const (
|
||||
)
|
||||
|
||||
type S3ApiServer struct {
|
||||
Router *S3ApiRouter
|
||||
app *fiber.App
|
||||
backend backend.Backend
|
||||
CertStorage *utils.CertStorage
|
||||
quiet bool
|
||||
keepAlive bool
|
||||
health string
|
||||
maxConnections int
|
||||
maxRequests int
|
||||
Router *S3ApiRouter
|
||||
app *fiber.App
|
||||
backend backend.Backend
|
||||
CertStorage *utils.CertStorage
|
||||
quiet bool
|
||||
keepAlive bool
|
||||
health string
|
||||
maxConnections int
|
||||
maxRequests int
|
||||
webuiMountPrefix string
|
||||
webuiSrvCfg *webui.ServerConfig
|
||||
}
|
||||
|
||||
func New(
|
||||
@@ -120,6 +123,11 @@ func New(
|
||||
})
|
||||
}
|
||||
|
||||
// Set up WebUI on the S3 port if configured
|
||||
if server.webuiSrvCfg != nil {
|
||||
webui.MountOn(app, server.webuiMountPrefix, server.webuiSrvCfg)
|
||||
}
|
||||
|
||||
// initialize total requests cap limiter middleware
|
||||
app.Use(middlewares.RateLimiter(server.maxRequests, mm, l))
|
||||
|
||||
@@ -185,6 +193,16 @@ func WithCORSAllowOrigin(origin string) Option {
|
||||
return func(s *S3ApiServer) { s.Router.corsAllowOrigin = origin }
|
||||
}
|
||||
|
||||
// WithWebUI mounts the WebUI on the S3 server's Fiber app at the given path prefix,
|
||||
// before S3 routes are registered. The prefix must start with "/" and must not be
|
||||
// empty or just "/".
|
||||
func WithWebUI(prefix string, cfg *webui.ServerConfig) Option {
|
||||
return func(s *S3ApiServer) {
|
||||
s.webuiMountPrefix = prefix
|
||||
s.webuiSrvCfg = cfg
|
||||
}
|
||||
}
|
||||
|
||||
// WithConcurrencyLimiter sets the server's maximum connection limit
|
||||
// and the hard limit for in-flight requests.
|
||||
func WithConcurrencyLimiter(maxConnections, maxRequests int) Option {
|
||||
|
||||
Reference in New Issue
Block a user