Dynamic Configuration Refactoring
This commit is contained in:
parent
d3ae88f108
commit
a09dfa3ce1
452 changed files with 21023 additions and 9419 deletions
65
middlewares/auth/auth.go
Normal file
65
middlewares/auth/auth.go
Normal file
|
@ -0,0 +1,65 @@
|
|||
package auth
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// UserParser Parses a string and return a userName/userHash. An error if the format of the string is incorrect.
|
||||
type UserParser func(user string) (string, string, error)
|
||||
|
||||
const (
|
||||
defaultRealm = "traefik"
|
||||
authorizationHeader = "Authorization"
|
||||
)
|
||||
|
||||
func getUsers(fileName string, appendUsers []string, parser UserParser) (map[string]string, error) {
|
||||
users, err := loadUsers(fileName, appendUsers)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
userMap := make(map[string]string)
|
||||
for _, user := range users {
|
||||
userName, userHash, err := parser(user)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
userMap[userName] = userHash
|
||||
}
|
||||
|
||||
return userMap, nil
|
||||
}
|
||||
|
||||
func loadUsers(fileName string, appendUsers []string) ([]string, error) {
|
||||
var users []string
|
||||
var err error
|
||||
|
||||
if fileName != "" {
|
||||
users, err = getLinesFromFile(fileName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return append(users, appendUsers...), nil
|
||||
}
|
||||
|
||||
func getLinesFromFile(filename string) ([]string, error) {
|
||||
dat, err := ioutil.ReadFile(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Trim lines and filter out blanks
|
||||
rawLines := strings.Split(string(dat), "\n")
|
||||
var filteredLines []string
|
||||
for _, rawLine := range rawLines {
|
||||
line := strings.TrimSpace(rawLine)
|
||||
if line != "" {
|
||||
filteredLines = append(filteredLines, line)
|
||||
}
|
||||
}
|
||||
|
||||
return filteredLines, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue