From 7774f0cc84ee3c4672be67f6d4aaacc36b64b30b Mon Sep 17 00:00:00 2001 From: Vitalii Miagkov Date: Mon, 8 Dec 2025 10:42:19 +0300 Subject: [PATCH] debug Request.BasicAuth --- internal/auth/auth.go | 0 internal/service/auth_service.go | 31 +++++++-- internal/utils/security_utils.go | 107 ------------------------------- 3 files changed, 26 insertions(+), 112 deletions(-) delete mode 100644 internal/auth/auth.go delete mode 100644 internal/utils/security_utils.go diff --git a/internal/auth/auth.go b/internal/auth/auth.go deleted file mode 100644 index e69de29b..00000000 diff --git a/internal/service/auth_service.go b/internal/service/auth_service.go index bcba4811..7c4ded13 100644 --- a/internal/service/auth_service.go +++ b/internal/service/auth_service.go @@ -2,6 +2,7 @@ package service import ( "context" + "encoding/base64" "errors" "fmt" "regexp" @@ -360,14 +361,34 @@ func (auth *AuthService) IsAuthEnabled(uri string, path config.AppPath) (bool, e } func (auth *AuthService) GetBasicAuth(c *gin.Context) *config.User { - username, password, ok := c.Request.BasicAuth() - if !ok { - log.Debug().Msg("No basic auth provided") + + for k, v := range c.Request.Header { + log.Info().Msgf("HEADER %s = %v", k, v) + } + + authHeader := c.Request.Header.Get("X-Api-Key") + if authHeader == "" { + return nil + } + + parts := strings.SplitN(authHeader, " ", 2) + if len(parts) != 2 || parts[0] != "Basic" { + return nil + } + + payload, err := base64.StdEncoding.DecodeString(parts[1]) + if err != nil { return nil } + + pair := strings.SplitN(string(payload), ":", 2) + if len(pair) != 2 { + return nil + } + return &config.User{ - Username: username, - Password: password, + Username: pair[0], + Password: pair[1], } } diff --git a/internal/utils/security_utils.go b/internal/utils/security_utils.go deleted file mode 100644 index 40fe7130..00000000 --- a/internal/utils/security_utils.go +++ /dev/null @@ -1,107 +0,0 @@ -package utils - -import ( - "encoding/base64" - "errors" - "net" - "regexp" - "strings" - - "github.com/google/uuid" -) - -func GetSecret(conf string, file string) string { - if conf == "" && file == "" { - return "" - } - - if conf != "" { - return conf - } - - contents, err := ReadFile(file) - if err != nil { - return "" - } - - return ParseSecretFile(contents) -} - -func ParseSecretFile(contents string) string { - lines := strings.Split(contents, "\n") - - for _, line := range lines { - if strings.TrimSpace(line) == "" { - continue - } - return strings.TrimSpace(line) - } - - return "" -} - -func GetBasicAuth(username string, password string) string { - auth := username + ":" + password - return base64.StdEncoding.EncodeToString([]byte(auth)) -} - -func FilterIP(filter string, ip string) (bool, error) { - ipAddr := net.ParseIP(ip) - - if ipAddr == nil { - return false, errors.New("invalid IP address") - } - - filter = strings.Replace(filter, "-", "/", -1) - - if strings.Contains(filter, "/") { - _, cidr, err := net.ParseCIDR(filter) - if err != nil { - return false, err - } - return cidr.Contains(ipAddr), nil - } - - ipFilter := net.ParseIP(filter) - if ipFilter == nil { - return false, errors.New("invalid IP address in filter") - } - - if ipFilter.Equal(ipAddr) { - return true, nil - } - - return false, nil -} - -func CheckFilter(filter string, str string) bool { - if len(strings.TrimSpace(filter)) == 0 { - return true - } - - if strings.HasPrefix(filter, "/") && strings.HasSuffix(filter, "/") { - re, err := regexp.Compile(filter[1 : len(filter)-1]) - if err != nil { - return false - } - - if re.MatchString(strings.TrimSpace(str)) { - return true - } - } - - filterSplit := strings.Split(filter, ",") - - for _, item := range filterSplit { - if strings.TrimSpace(item) == strings.TrimSpace(str) { - return true - } - } - - return false -} - -func GenerateUUID(str string) string { - uuid := uuid.NewSHA1(uuid.NameSpaceURL, []byte(str)) - return uuid.String() -}