diff --git a/api/dashboard.go b/api/dashboard.go index 90bd9443c..a3232a166 100644 --- a/api/dashboard.go +++ b/api/dashboard.go @@ -4,15 +4,22 @@ import ( "net/http" "github.com/containous/mux" - "github.com/containous/traefik/autogen/genstatic" + "github.com/containous/traefik/log" "github.com/elazarl/go-bindata-assetfs" ) // DashboardHandler expose dashboard routes -type DashboardHandler struct{} +type DashboardHandler struct { + Assets *assetfs.AssetFS +} // AddRoutes add dashboard routes on a router func (g DashboardHandler) AddRoutes(router *mux.Router) { + if g.Assets == nil { + log.Error("No assets for dashboard") + return + } + // Expose dashboard router.Methods(http.MethodGet). Path("/"). @@ -28,5 +35,5 @@ func (g DashboardHandler) AddRoutes(router *mux.Router) { router.Methods(http.MethodGet). PathPrefix("/dashboard/"). - Handler(http.StripPrefix("/dashboard/", http.FileServer(&assetfs.AssetFS{Asset: genstatic.Asset, AssetInfo: genstatic.AssetInfo, AssetDir: genstatic.AssetDir, Prefix: "static"}))) + Handler(http.StripPrefix("/dashboard/", http.FileServer(g.Assets))) } diff --git a/api/handler.go b/api/handler.go index 2ecb103e1..e3e88b433 100644 --- a/api/handler.go +++ b/api/handler.go @@ -9,6 +9,7 @@ import ( "github.com/containous/traefik/safe" "github.com/containous/traefik/types" "github.com/containous/traefik/version" + "github.com/elazarl/go-bindata-assetfs" thoas_stats "github.com/thoas/stats" "github.com/unrolled/render" ) @@ -22,6 +23,7 @@ type Handler struct { Statistics *types.Statistics `description:"Enable more detailed statistics" export:"true"` Stats *thoas_stats.Stats `json:"-"` StatsRecorder *middlewares.StatsRecorder `json:"-"` + DashboardAssets *assetfs.AssetFS } var ( @@ -54,7 +56,7 @@ func (p Handler) AddRoutes(router *mux.Router) { version.Handler{}.AddRoutes(router) if p.Dashboard { - DashboardHandler{}.AddRoutes(router) + DashboardHandler{Assets: p.DashboardAssets}.AddRoutes(router) } } diff --git a/cmd/traefik/traefik.go b/cmd/traefik/traefik.go index 4fe774d0b..f09402748 100644 --- a/cmd/traefik/traefik.go +++ b/cmd/traefik/traefik.go @@ -14,6 +14,7 @@ import ( "github.com/cenk/backoff" "github.com/containous/flaeg" "github.com/containous/staert" + "github.com/containous/traefik/autogen/genstatic" "github.com/containous/traefik/cmd" "github.com/containous/traefik/cmd/bug" "github.com/containous/traefik/cmd/healthcheck" @@ -33,6 +34,7 @@ import ( "github.com/containous/traefik/types" "github.com/containous/traefik/version" "github.com/coreos/go-systemd/daemon" + "github.com/elazarl/go-bindata-assetfs" "github.com/ogier/pflag" "github.com/sirupsen/logrus" "github.com/vulcand/oxy/roundrobin" @@ -163,6 +165,10 @@ func runCmd(globalConfiguration *configuration.GlobalConfiguration, configFile s globalConfiguration.SetEffectiveConfiguration(configFile) globalConfiguration.ValidateConfiguration() + if globalConfiguration.API != nil && globalConfiguration.API.Dashboard { + globalConfiguration.API.DashboardAssets = &assetfs.AssetFS{Asset: genstatic.Asset, AssetInfo: genstatic.AssetInfo, AssetDir: genstatic.AssetDir, Prefix: "static"} + } + jsonConf, _ := json.Marshal(globalConfiguration) log.Infof("Traefik version %s built on %s", version.Version, version.BuildDate)