github.com/minio/console@v1.4.1/pkg/utils/utils.go (about)

     1  // This file is part of MinIO Console Server
     2  // Copyright (c) 2022 MinIO, Inc.
     3  //
     4  // This program is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Affero General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // This program is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  // GNU Affero General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Affero General Public License
    15  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package utils
    18  
    19  import (
    20  	"context"
    21  	"encoding/base64"
    22  )
    23  
    24  // DecodeBase64 : decoded base64 input into utf-8 text
    25  func DecodeBase64(s string) (string, error) {
    26  	decodedInput, err := base64.StdEncoding.DecodeString(s)
    27  	if err != nil {
    28  		return "", err
    29  	}
    30  	return string(decodedInput), nil
    31  }
    32  
    33  // Key used for Get/SetReqInfo
    34  type key string
    35  
    36  const (
    37  	ContextLogKey            = key("console-log")
    38  	ContextRequestID         = key("request-id")
    39  	ContextRequestUserID     = key("request-user-id")
    40  	ContextRequestUserAgent  = key("request-user-agent")
    41  	ContextRequestHost       = key("request-host")
    42  	ContextRequestRemoteAddr = key("request-remote-addr")
    43  	ContextAuditKey          = key("request-audit-entry")
    44  	ContextClientIP          = key("client-ip")
    45  )
    46  
    47  // ClientIPFromContext attempts to get the Client IP from a context, if it's not present, it returns
    48  // 127.0.0.1
    49  func ClientIPFromContext(ctx context.Context) string {
    50  	val := ctx.Value(ContextClientIP)
    51  	if val != nil {
    52  		return val.(string)
    53  	}
    54  	return "127.0.0.1"
    55  }