add auth CLI support for api & metrics

This commit is contained in:
ginuerzh
2024-01-07 19:42:14 +08:00
parent f68bfdb149
commit fdd3eb61c3
3 changed files with 44 additions and 3 deletions

View File

@ -7,9 +7,11 @@ import (
"strings"
"github.com/go-gost/core/logger"
mdutil "github.com/go-gost/core/metadata/util"
"github.com/go-gost/x/config"
"github.com/go-gost/x/config/parsing"
logger_parser "github.com/go-gost/x/config/parsing/logger"
xmd "github.com/go-gost/x/metadata"
xmetrics "github.com/go-gost/x/metrics"
"github.com/go-gost/x/registry"
"github.com/judwhite/go-svc"
@ -71,6 +73,26 @@ func (p *program) Init(env svc.Environment) error {
cfg.API = &config.APIConfig{
Addr: apiAddr,
}
if url, _ := normCmd(apiAddr); url != nil {
cfg.API.Addr = url.Host
if url.User != nil {
username := url.User.Username()
password, _ := url.User.Password()
cfg.API.Auth = &config.AuthConfig{
Username: username,
Password: password,
}
}
m := map[string]any{}
for k, v := range url.Query() {
if len(v) > 0 {
m[k] = v[0]
}
}
md := xmd.NewMetadata(m)
cfg.API.PathPrefix = mdutil.GetString(md, "pathPrefix")
cfg.API.AccessLog = mdutil.GetBool(md, "accesslog")
}
}
if debug {
if cfg.Log == nil {
@ -82,6 +104,25 @@ func (p *program) Init(env svc.Environment) error {
cfg.Metrics = &config.MetricsConfig{
Addr: metricsAddr,
}
if url, _ := normCmd(metricsAddr); url != nil {
cfg.Metrics.Addr = url.Host
if url.User != nil {
username := url.User.Username()
password, _ := url.User.Password()
cfg.Metrics.Auth = &config.AuthConfig{
Username: username,
Password: password,
}
}
m := map[string]any{}
for k, v := range url.Query() {
if len(v) > 0 {
m[k] = v[0]
}
}
md := xmd.NewMetadata(m)
cfg.Metrics.Path = mdutil.GetString(md, "path")
}
}
logCfg := cfg.Log