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 }