v0.2.0
ADDED: * The ability to show both IPv4 and IPv6 addresses (if the client has dual-stack and either the server does as well or a separate ClientInfo is running on the "other" net family).
This commit is contained in:
@@ -46,6 +46,7 @@ func NewClient(uaStr string) (r *R00tClient, err error) {
|
||||
func NewServer(log logging.Logger, cliArgs *args.Args) (srv *Server, err error) {
|
||||
|
||||
var s Server
|
||||
var origin string
|
||||
var udsSockPerms args.UdsPerms
|
||||
|
||||
if log == nil {
|
||||
@@ -62,6 +63,7 @@ func NewServer(log logging.Logger, cliArgs *args.Args) (srv *Server, err error)
|
||||
args: cliArgs,
|
||||
mux: http.NewServeMux(),
|
||||
sock: nil,
|
||||
corsOrigins: nil,
|
||||
reloadChan: make(chan os.Signal),
|
||||
stopChan: make(chan os.Signal),
|
||||
}
|
||||
@@ -73,6 +75,42 @@ func NewServer(log logging.Logger, cliArgs *args.Args) (srv *Server, err error)
|
||||
s.mux.HandleFunc("/usage.html", s.handleUsage)
|
||||
s.mux.HandleFunc("/favicon.ico", s.explicit404)
|
||||
|
||||
if cliArgs.CORS != nil && len(cliArgs.CORS) > 0 {
|
||||
if s.corsOrigins == nil {
|
||||
s.corsOrigins = make(map[string]struct{})
|
||||
}
|
||||
for _, origin = range cliArgs.CORS {
|
||||
s.corsOrigins[strings.ToLower(origin)] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
if cliArgs.V4Url != nil {
|
||||
if s.v4Url, err = url.Parse(*cliArgs.V4Url); err != nil {
|
||||
s.log.Err("server.NewServer: Failed to parse IPv4 URI '%s': %v", *cliArgs.V4Url, err)
|
||||
return
|
||||
}
|
||||
if s.corsOrigins == nil {
|
||||
s.corsOrigins = make(map[string]struct{})
|
||||
}
|
||||
origin = strings.ToLower(fmt.Sprintf("%s://%s", s.v4Url.Scheme, s.v4Url.Host))
|
||||
s.corsOrigins[origin] = struct{}{}
|
||||
}
|
||||
if cliArgs.V6Url != nil {
|
||||
if s.v6Url, err = url.Parse(*cliArgs.V6Url); err != nil {
|
||||
s.log.Err("server.NewServer: Failed to parse IPv6 URI '%s': %v", *cliArgs.V6Url, err)
|
||||
return
|
||||
}
|
||||
if s.corsOrigins == nil {
|
||||
s.corsOrigins = make(map[string]struct{})
|
||||
}
|
||||
origin = strings.ToLower(fmt.Sprintf("%s://%s", s.v6Url.Scheme, s.v6Url.Host))
|
||||
s.corsOrigins[origin] = struct{}{}
|
||||
}
|
||||
|
||||
if s.corsOrigins != nil {
|
||||
s.log.Debug("server.NewServer: CORS origins: %#v", s.corsOrigins)
|
||||
}
|
||||
|
||||
if s.listenUri, err = url.Parse(cliArgs.Listen.Listen); err != nil {
|
||||
s.log.Err("server.NewServer: Failed to parse listener URI: %v", err)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user