fix: proxyHandler — timeout 60s, валидация key по s3Prefix; readyz — timeout 5s
This commit is contained in:
+11
-2
@@ -300,8 +300,15 @@ func proxyHandler(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, "Missing key param", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
if !strings.HasPrefix(key, s3Prefix+"/") && !strings.HasPrefix(key, "docs/") {
|
||||
http.Error(w, "Forbidden", http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
|
||||
obj, err := s3Client.GetObject(context.Background(), bucketName, key, s3.GetObjectOptions{})
|
||||
ctx, cancel := context.WithTimeout(r.Context(), 60*time.Second)
|
||||
defer cancel()
|
||||
|
||||
obj, err := s3Client.GetObject(ctx, bucketName, key, s3.GetObjectOptions{})
|
||||
if err != nil {
|
||||
log.Printf("Error getting object %s/%s: %v", bucketName, key, err)
|
||||
http.Error(w, "File not found", http.StatusNotFound)
|
||||
@@ -479,7 +486,9 @@ func healthzHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func readyzHandler(w http.ResponseWriter, r *http.Request) {
|
||||
_, err := s3Client.BucketExists(context.Background(), bucketName)
|
||||
ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second)
|
||||
defer cancel()
|
||||
_, err := s3Client.BucketExists(ctx, bucketName)
|
||||
if err != nil {
|
||||
msg := fmt.Sprintf("s3 unreachable: %v", err)
|
||||
log.Printf("readyz: %s", msg)
|
||||
|
||||
Reference in New Issue
Block a user