diff --git a/internal/config/config.go b/internal/config/config.go index 6e80c32..5500044 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -46,6 +46,7 @@ type config struct { // nolint DisableCompression bool // DISABLE_COMPRESSION InsecureTLS bool // Disables TLS validation on request endpoints. JwtSecretKey string // JWT_SECRET_KEY + VerboseLog bool // VERBOSE_LOG } // Setup configurations with environment variables @@ -98,6 +99,10 @@ func Setup() { if b, err := strconv.ParseBool(os.Getenv("INSECURE_TLS")); err == nil { insecureTLS = b } + verboseLog := false + if b, err := strconv.ParseBool(os.Getenv("VERBOSE_LOG")); err == nil { + verboseLog = b + } Config = &config{ AwsRegion: region, AwsAPIEndpoint: os.Getenv("AWS_API_ENDPOINT"), @@ -128,6 +133,7 @@ func Setup() { DisableCompression: disableCompression, InsecureTLS: insecureTLS, JwtSecretKey: os.Getenv("JWT_SECRET_KEY"), + VerboseLog: verboseLog, } // Proxy log.Printf("[config] Proxy to %v", Config.S3Bucket) diff --git a/internal/controllers/s3.go b/internal/controllers/s3.go index 7243e7c..4feafed 100644 --- a/internal/controllers/s3.go +++ b/internal/controllers/s3.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "io" + "log" "net/http" "reflect" "sort" @@ -50,6 +51,9 @@ func AwsS3(w http.ResponseWriter, r *http.Request) { replaced, err := replacePathWithSymlink(client, c.S3Bucket, c.S3KeyPrefix+path[:idx+12]) if err != nil { code, message := toHTTPError(err) + if c.VerboseLog { + log.Printf(message) + } http.Error(w, message, code) return } @@ -58,7 +62,7 @@ func AwsS3(w http.ResponseWriter, r *http.Request) { // Ends with / -> listing or index.html if strings.HasSuffix(path, "/") { if c.DirectoryListing { - s3listFiles(w, r, client, c.S3Bucket, c.S3KeyPrefix+path) + s3listFiles(w, r, client, c.S3Bucket, c.S3KeyPrefix+path, c.VerboseLog) return } path += c.IndexDocument @@ -67,6 +71,9 @@ func AwsS3(w http.ResponseWriter, r *http.Request) { obj, err := client.S3get(c.S3Bucket, c.S3KeyPrefix+path, rangeHeader) if err != nil { code, message := toHTTPError(err) + if c.VerboseLog { + log.Printf(message) + } http.Error(w, message, code) return } @@ -141,12 +148,15 @@ func setTimeHeader(w http.ResponseWriter, key string, value *time.Time) { } } -func s3listFiles(w http.ResponseWriter, r *http.Request, client service.AWS, bucket, prefix string) { +func s3listFiles(w http.ResponseWriter, r *http.Request, client service.AWS, bucket, prefix string, verboseLog bool) { prefix = strings.TrimPrefix(prefix, "/") result, err := client.S3listObjects(bucket, prefix) if err != nil { code, message := toHTTPError(err) + if verboseLog { + log.Printf(message) + } http.Error(w, message, code) return }