44 lines
814 B
Go
44 lines
814 B
Go
package server
|
|
|
|
import (
|
|
"net/http/httputil"
|
|
"net/url"
|
|
|
|
"git.secnex.io/secnex/api-gateway/config"
|
|
"git.secnex.io/secnex/masterlog"
|
|
)
|
|
|
|
type Targets map[string]*Target
|
|
|
|
type Target struct {
|
|
ID string
|
|
Name string
|
|
URL *url.URL
|
|
proxy *httputil.ReverseProxy
|
|
}
|
|
|
|
func NewTargets(cfg *config.Configuration) Targets {
|
|
targets := make(Targets)
|
|
for _, target := range cfg.Targets {
|
|
targets[target.ID] = NewTarget(&target)
|
|
}
|
|
return targets
|
|
}
|
|
|
|
func NewTarget(target *config.Target) *Target {
|
|
url, err := url.Parse(target.URL)
|
|
if err != nil {
|
|
masterlog.Error("Failed to parse target URL", map[string]interface{}{
|
|
"error": err,
|
|
"target": target.URL,
|
|
})
|
|
return nil
|
|
}
|
|
return &Target{
|
|
ID: target.ID,
|
|
Name: target.Name,
|
|
URL: url,
|
|
proxy: httputil.NewSingleHostReverseProxy(url),
|
|
}
|
|
}
|