implement a flag to specify custom crossdomain.xml (#19262)

fixes #16909
This commit is contained in:
Harshavardhana 2024-03-17 23:42:40 -07:00 committed by GitHub
parent a0de56abb6
commit f168ef9989
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 22 additions and 3 deletions

View File

@ -361,6 +361,14 @@ func buildServerCtxt(ctx *cli.Context, ctxt *serverCtxt) (err error) {
ctxt.ConsoleAddr = ctx.String("console-address") ctxt.ConsoleAddr = ctx.String("console-address")
} }
if cxml := ctx.String("crossdomain-xml"); cxml != "" {
buf, err := os.ReadFile(cxml)
if err != nil {
return err
}
ctxt.CrossDomainXML = string(buf)
}
// Check "no-compat" flag from command line argument. // Check "no-compat" flag from command line argument.
ctxt.StrictS3Compat = !(ctx.IsSet("no-compat") || ctx.GlobalIsSet("no-compat")) ctxt.StrictS3Compat = !(ctx.IsSet("no-compat") || ctx.GlobalIsSet("no-compat"))

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2021 MinIO, Inc. // Copyright (c) 2015-2024 MinIO, Inc.
// //
// This file is part of MinIO Object Storage stack // This file is part of MinIO Object Storage stack
// //
@ -32,10 +32,14 @@ const crossDomainXMLEntity = "/crossdomain.xml"
// policy file that grants access to the source domain, allowing the client to continue the transaction. // policy file that grants access to the source domain, allowing the client to continue the transaction.
func setCrossDomainPolicyMiddleware(h http.Handler) http.Handler { func setCrossDomainPolicyMiddleware(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
cxml := crossDomainXML
if globalServerCtxt.CrossDomainXML != "" {
cxml = globalServerCtxt.CrossDomainXML
}
// Look for 'crossdomain.xml' in the incoming request. // Look for 'crossdomain.xml' in the incoming request.
if r.URL.Path == crossDomainXMLEntity { if r.URL.Path == crossDomainXMLEntity {
// Write the standard cross domain policy xml. // Write the standard cross domain policy xml.
w.Write([]byte(crossDomainXML)) w.Write([]byte(cxml))
// Request completed, no need to serve to other handlers. // Request completed, no need to serve to other handlers.
return return
} }

View File

@ -171,6 +171,7 @@ type serverCtxt struct {
ReadHeaderTimeout time.Duration ReadHeaderTimeout time.Duration
MaxIdleConnsPerHost int MaxIdleConnsPerHost int
CrossDomainXML string
// The layout of disks as interpreted // The layout of disks as interpreted
Layout disksLayout Layout disksLayout
} }

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2023 MinIO, Inc. // Copyright (c) 2015-2024 MinIO, Inc.
// //
// This file is part of MinIO Object Storage stack // This file is part of MinIO Object Storage stack
// //
@ -161,6 +161,12 @@ var ServerFlags = []cli.Flag{
Name: "sftp", Name: "sftp",
Usage: "enable and configure an SFTP server", Usage: "enable and configure an SFTP server",
}, },
cli.StringFlag{
Name: "crossdomain-xml",
Usage: "provide a custom crossdomain-xml configuration to report at http://endpoint/crossdomain.xml",
Hidden: true,
EnvVar: "MINIO_CROSSDOMAIN_XML",
},
} }
var gatewayCmd = cli.Command{ var gatewayCmd = cli.Command{