storj.io/minio@v0.0.0-20230509071714-0cbc90f649b1/cmd/dummy-handlers.go (about)

     1  /*
     2   * MinIO Cloud Storage, (C) 2018, 2019 MinIO, Inc.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  package cmd
    18  
    19  import (
    20  	"net/http"
    21  
    22  	"github.com/gorilla/mux"
    23  
    24  	"storj.io/minio/cmd/logger"
    25  	"storj.io/minio/pkg/bucket/policy"
    26  )
    27  
    28  // Data types used for returning dummy tagging XML.
    29  // These variables shouldn't be used elsewhere.
    30  // They are only defined to be used in this file alone.
    31  
    32  // GetBucketWebsite  - GET bucket website, a dummy api
    33  func (api ObjectAPIHandlers) GetBucketWebsiteHandler(w http.ResponseWriter, r *http.Request) {
    34  	ctx := NewContext(r, w, "GetBucketWebsite")
    35  
    36  	defer logger.AuditLog(ctx, w, r, mustGetClaimsFromToken(r))
    37  
    38  	vars := mux.Vars(r)
    39  	bucket := vars["bucket"]
    40  
    41  	objAPI := api.ObjectAPI()
    42  	if objAPI == nil {
    43  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(ErrServerNotInitialized), r.URL, guessIsBrowserReq(r))
    44  		return
    45  	}
    46  
    47  	// Allow getBucketCors if policy action is set, since this is a dummy call
    48  	// we are simply re-purposing the bucketPolicyAction.
    49  	if s3Error := checkRequestAuthType(ctx, r, policy.GetBucketPolicyAction, bucket, ""); s3Error != ErrNone {
    50  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(s3Error), r.URL, guessIsBrowserReq(r))
    51  		return
    52  	}
    53  
    54  	// Validate if bucket exists, before proceeding further...
    55  	_, err := objAPI.GetBucketInfo(ctx, bucket)
    56  	if err != nil {
    57  		WriteErrorResponse(ctx, w, ToAPIError(ctx, err), r.URL, guessIsBrowserReq(r))
    58  		return
    59  	}
    60  
    61  	WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(ErrNoSuchWebsiteConfiguration), r.URL, guessIsBrowserReq(r))
    62  }
    63  
    64  // GetBucketAccelerate  - GET bucket accelerate, a dummy api
    65  func (api ObjectAPIHandlers) GetBucketAccelerateHandler(w http.ResponseWriter, r *http.Request) {
    66  	ctx := NewContext(r, w, "GetBucketAccelerate")
    67  
    68  	defer logger.AuditLog(ctx, w, r, mustGetClaimsFromToken(r))
    69  
    70  	vars := mux.Vars(r)
    71  	bucket := vars["bucket"]
    72  
    73  	objAPI := api.ObjectAPI()
    74  	if objAPI == nil {
    75  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(ErrServerNotInitialized), r.URL, guessIsBrowserReq(r))
    76  		return
    77  	}
    78  
    79  	// Allow getBucketCors if policy action is set, since this is a dummy call
    80  	// we are simply re-purposing the bucketPolicyAction.
    81  	if s3Error := checkRequestAuthType(ctx, r, policy.GetBucketPolicyAction, bucket, ""); s3Error != ErrNone {
    82  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(s3Error), r.URL, guessIsBrowserReq(r))
    83  		return
    84  	}
    85  
    86  	// Validate if bucket exists, before proceeding further...
    87  	_, err := objAPI.GetBucketInfo(ctx, bucket)
    88  	if err != nil {
    89  		WriteErrorResponse(ctx, w, ToAPIError(ctx, err), r.URL, guessIsBrowserReq(r))
    90  		return
    91  	}
    92  
    93  	const accelerateDefaultConfig = `<?xml version="1.0" encoding="UTF-8"?><AccelerateConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"/>`
    94  	WriteSuccessResponseXML(w, []byte(accelerateDefaultConfig))
    95  }
    96  
    97  // GetBucketRequestPaymentHandler - GET bucket requestPayment, a dummy api
    98  func (api ObjectAPIHandlers) GetBucketRequestPaymentHandler(w http.ResponseWriter, r *http.Request) {
    99  	ctx := NewContext(r, w, "GetBucketRequestPayment")
   100  
   101  	defer logger.AuditLog(ctx, w, r, mustGetClaimsFromToken(r))
   102  
   103  	vars := mux.Vars(r)
   104  	bucket := vars["bucket"]
   105  
   106  	objAPI := api.ObjectAPI()
   107  	if objAPI == nil {
   108  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(ErrServerNotInitialized), r.URL, guessIsBrowserReq(r))
   109  		return
   110  	}
   111  
   112  	// Allow getBucketCors if policy action is set, since this is a dummy call
   113  	// we are simply re-purposing the bucketPolicyAction.
   114  	if s3Error := checkRequestAuthType(ctx, r, policy.GetBucketPolicyAction, bucket, ""); s3Error != ErrNone {
   115  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(s3Error), r.URL, guessIsBrowserReq(r))
   116  		return
   117  	}
   118  
   119  	// Validate if bucket exists, before proceeding further...
   120  	_, err := objAPI.GetBucketInfo(ctx, bucket)
   121  	if err != nil {
   122  		WriteErrorResponse(ctx, w, ToAPIError(ctx, err), r.URL, guessIsBrowserReq(r))
   123  		return
   124  	}
   125  
   126  	const requestPaymentDefaultConfig = `<?xml version="1.0" encoding="UTF-8"?><RequestPaymentConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Payer>BucketOwner</Payer></RequestPaymentConfiguration>`
   127  
   128  	WriteSuccessResponseXML(w, []byte(requestPaymentDefaultConfig))
   129  }
   130  
   131  // GetBucketLoggingHandler - GET bucket logging, a dummy api
   132  func (api ObjectAPIHandlers) GetBucketLoggingHandler(w http.ResponseWriter, r *http.Request) {
   133  	ctx := NewContext(r, w, "GetBucketLogging")
   134  
   135  	defer logger.AuditLog(ctx, w, r, mustGetClaimsFromToken(r))
   136  
   137  	vars := mux.Vars(r)
   138  	bucket := vars["bucket"]
   139  
   140  	objAPI := api.ObjectAPI()
   141  	if objAPI == nil {
   142  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(ErrServerNotInitialized), r.URL, guessIsBrowserReq(r))
   143  		return
   144  	}
   145  
   146  	// Allow getBucketCors if policy action is set, since this is a dummy call
   147  	// we are simply re-purposing the bucketPolicyAction.
   148  	if s3Error := checkRequestAuthType(ctx, r, policy.GetBucketPolicyAction, bucket, ""); s3Error != ErrNone {
   149  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(s3Error), r.URL, guessIsBrowserReq(r))
   150  		return
   151  	}
   152  
   153  	// Validate if bucket exists, before proceeding further...
   154  	_, err := objAPI.GetBucketInfo(ctx, bucket)
   155  	if err != nil {
   156  		WriteErrorResponse(ctx, w, ToAPIError(ctx, err), r.URL, guessIsBrowserReq(r))
   157  		return
   158  	}
   159  
   160  	const loggingDefaultConfig = `<?xml version="1.0" encoding="UTF-8"?><BucketLoggingStatus xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><!--<LoggingEnabled><TargetBucket>myLogsBucket</TargetBucket><TargetPrefix>add/this/prefix/to/my/log/files/access_log-</TargetPrefix></LoggingEnabled>--></BucketLoggingStatus>`
   161  	WriteSuccessResponseXML(w, []byte(loggingDefaultConfig))
   162  }
   163  
   164  // DeleteBucketWebsiteHandler - DELETE bucket website, a dummy api
   165  func (api ObjectAPIHandlers) DeleteBucketWebsiteHandler(w http.ResponseWriter, r *http.Request) {
   166  	writeSuccessResponseHeadersOnly(w)
   167  	w.(http.Flusher).Flush()
   168  }
   169  
   170  // GetBucketCorsHandler - GET bucket cors, a dummy api
   171  func (api ObjectAPIHandlers) GetBucketCorsHandler(w http.ResponseWriter, r *http.Request) {
   172  	ctx := NewContext(r, w, "GetBucketCors")
   173  
   174  	defer logger.AuditLog(ctx, w, r, mustGetClaimsFromToken(r))
   175  
   176  	vars := mux.Vars(r)
   177  	bucket := vars["bucket"]
   178  
   179  	objAPI := api.ObjectAPI()
   180  	if objAPI == nil {
   181  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(ErrServerNotInitialized), r.URL, guessIsBrowserReq(r))
   182  		return
   183  	}
   184  
   185  	// Allow getBucketCors if policy action is set, since this is a dummy call
   186  	// we are simply re-purposing the bucketPolicyAction.
   187  	if s3Error := checkRequestAuthType(ctx, r, policy.GetBucketPolicyAction, bucket, ""); s3Error != ErrNone {
   188  		WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(s3Error), r.URL, guessIsBrowserReq(r))
   189  		return
   190  	}
   191  
   192  	// Validate if bucket exists, before proceeding further...
   193  	_, err := objAPI.GetBucketInfo(ctx, bucket)
   194  	if err != nil {
   195  		WriteErrorResponse(ctx, w, ToAPIError(ctx, err), r.URL, guessIsBrowserReq(r))
   196  		return
   197  	}
   198  
   199  	WriteErrorResponse(ctx, w, errorCodes.ToAPIErr(ErrNoSuchCORSConfiguration), r.URL, guessIsBrowserReq(r))
   200  }