Add custom http root

Now we are able to let this service run on a different root path.
This commit is contained in:
Thomas Boerger
2019-12-09 14:48:22 +01:00
parent b5a28fe5ed
commit 4e4e873b80
5 changed files with 29 additions and 2 deletions

View File

@@ -71,6 +71,9 @@ OCS_DEBUG_ZPAGES
OCS_HTTP_ADDR
: Address to bind http server, defaults to `0.0.0.0:9110`
OCS_HTTP_ROOT
: Root path of http server, defaults to `/`
##### Health
OCS_DEBUG_ADDR
@@ -126,6 +129,9 @@ If you prefer to configure the service with commandline flags you can see the av
--http-addr
: Address to bind http server, defaults to `0.0.0.0:9110`
--http-root
: Root path of http server, defaults to `/`
##### Health
--debug-addr

View File

@@ -4,6 +4,7 @@ import (
"context"
"os"
"os/signal"
"strings"
"time"
"contrib.go.opencensus.io/exporter/jaeger"
@@ -28,6 +29,13 @@ func Server(cfg *config.Config) cli.Command {
Name: "server",
Usage: "Start integrated server",
Flags: flagset.ServerWithConfig(cfg),
Before: func(c *cli.Context) error {
if cfg.HTTP.Root != "/" {
cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/")
}
return nil
},
Action: func(c *cli.Context) error {
logger := NewLogger(cfg)

View File

@@ -18,6 +18,7 @@ type Debug struct {
// HTTP defines the available http configuration.
type HTTP struct {
Addr string
Root string
}
// Tracing defines the available tracing configuration.

View File

@@ -120,5 +120,12 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag {
EnvVar: "OCS_HTTP_ADDR",
Destination: &cfg.HTTP.Addr,
},
&cli.StringFlag{
Name: "http-root",
Value: "/",
Usage: "Root path of http server",
EnvVar: "OCS_HTTP_ROOT",
Destination: &cfg.HTTP.Root,
},
}
}

View File

@@ -25,7 +25,9 @@ func NewService(opts ...Option) Service {
mux: m,
}
m.HandleFunc("/", svc.Dummy)
m.Route(options.Config.HTTP.Root, func(r chi.Router) {
r.Get("/", svc.Dummy)
})
return svc
}
@@ -43,5 +45,8 @@ func (g Ocs) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// Dummy implements the Service interface.
func (g Ocs) Dummy(w http.ResponseWriter, r *http.Request) {
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
w.Header().Set("Content-Type", "text/plain")
w.WriteHeader(http.StatusOK)
w.Write([]byte(http.StatusText(http.StatusOK)))
}