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 }