mirror of
https://github.com/router-for-me/CLIProxyAPIPlus.git
synced 2026-04-04 03:31:21 +00:00
69 lines
1.2 KiB
Go
69 lines
1.2 KiB
Go
package auth
|
|
|
|
import "strings"
|
|
|
|
func ExtractCustomHeadersFromMetadata(metadata map[string]any) map[string]string {
|
|
if len(metadata) == 0 {
|
|
return nil
|
|
}
|
|
raw, ok := metadata["headers"]
|
|
if !ok || raw == nil {
|
|
return nil
|
|
}
|
|
|
|
out := make(map[string]string)
|
|
switch headers := raw.(type) {
|
|
case map[string]string:
|
|
for key, value := range headers {
|
|
name := strings.TrimSpace(key)
|
|
if name == "" {
|
|
continue
|
|
}
|
|
val := strings.TrimSpace(value)
|
|
if val == "" {
|
|
continue
|
|
}
|
|
out[name] = val
|
|
}
|
|
case map[string]any:
|
|
for key, value := range headers {
|
|
name := strings.TrimSpace(key)
|
|
if name == "" {
|
|
continue
|
|
}
|
|
rawVal, ok := value.(string)
|
|
if !ok {
|
|
continue
|
|
}
|
|
val := strings.TrimSpace(rawVal)
|
|
if val == "" {
|
|
continue
|
|
}
|
|
out[name] = val
|
|
}
|
|
default:
|
|
return nil
|
|
}
|
|
|
|
if len(out) == 0 {
|
|
return nil
|
|
}
|
|
return out
|
|
}
|
|
|
|
func ApplyCustomHeadersFromMetadata(auth *Auth) {
|
|
if auth == nil || len(auth.Metadata) == 0 {
|
|
return
|
|
}
|
|
headers := ExtractCustomHeadersFromMetadata(auth.Metadata)
|
|
if len(headers) == 0 {
|
|
return
|
|
}
|
|
if auth.Attributes == nil {
|
|
auth.Attributes = make(map[string]string)
|
|
}
|
|
for name, value := range headers {
|
|
auth.Attributes["header:"+name] = value
|
|
}
|
|
}
|