mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 04:42:33 +02:00
34 lines
754 B
Go
34 lines
754 B
Go
package middleware
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
var middlewares = map[string]*Middleware{
|
|
"set_x_forwarded": SetXForwarded, // nginx
|
|
"add_x_forwarded": AddXForwarded, // nginx
|
|
"trust_forward_header": AddXForwarded, // traefik alias
|
|
"redirect_http": RedirectHTTP,
|
|
}
|
|
|
|
func Get(name string) (middleware *Middleware, ok bool) {
|
|
middleware, ok = middlewares[name]
|
|
return
|
|
}
|
|
|
|
// initialize middleware names
|
|
var _ = func() (_ bool) {
|
|
names := make(map[*Middleware][]string)
|
|
for name, m := range middlewares {
|
|
names[m] = append(names[m], name)
|
|
}
|
|
for m, names := range names {
|
|
if len(names) > 1 {
|
|
m.name = fmt.Sprintf("%s (a.k.a. %s)", names[0], strings.Join(names[1:], ", "))
|
|
} else {
|
|
m.name = names[0]
|
|
}
|
|
}
|
|
return
|
|
}()
|