aboutsummaryrefslogtreecommitdiff
path: root/internal/router/router.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/router/router.go')
-rw-r--r--internal/router/router.go69
1 files changed, 27 insertions, 42 deletions
diff --git a/internal/router/router.go b/internal/router/router.go
index 1313705..564de14 100644
--- a/internal/router/router.go
+++ b/internal/router/router.go
@@ -17,52 +17,37 @@ package router
import (
"net/http"
- "github.com/gorilla/mux"
"github.com/thousandeyes/shoelaces/internal/environment"
"github.com/thousandeyes/shoelaces/internal/handlers"
)
// ShoelacesRouter sets up all routes and handlers for shoelaces
func ShoelacesRouter(env *environment.Environment) http.Handler {
- r := mux.NewRouter()
-
- // Main UI page
- r.Handle("/", handlers.RenderDefaultTemplate("index")).Methods("GET")
- // Event Log History page
- r.Handle("/events", handlers.RenderDefaultTemplate("events")).Methods("GET")
- // Currently configured mappings page
- r.Handle("/mappings", handlers.RenderDefaultTemplate("mappings")).Methods("GET")
- // Static files used by the UI
- r.PathPrefix("/static/").Handler(http.StripPrefix("/static/",
- http.FileServer(http.Dir(env.StaticDir))))
- // Manual boot parameters POST endpoint
- r.HandleFunc("/update/target", handlers.UpdateTargetHandler).Methods("POST")
- // Provides a list of the servers that tried to boot but did not match
- // the hostname regex or network mappings
- r.HandleFunc("/ajax/servers", handlers.ServerListHandler).Methods("GET")
- // Event Log History JSON endpoint
- r.HandleFunc("/ajax/events", handlers.ListEvents).Methods("GET")
- // Provides the list of possible parameters for a given template
- r.HandleFunc("/ajax/script/params", handlers.GetTemplateParams)
-
- // Static configuration files endpoint
- r.PathPrefix("/configs/static/").Handler(http.StripPrefix("/configs/static/",
- handlers.StaticConfigFileServer()))
-
- // Dynamic configuration endpoint
- r.PathPrefix("/configs/").Handler(http.StripPrefix("/configs/",
- handlers.TemplateServer()))
-
- // Starting point for iPXE boot agents, usualy defined by DHCP server.
- // Gets the iPXE boot agents into the polling loop.
- r.HandleFunc("/start", handlers.StartPollingHandler).Methods("GET")
- // Called by iPXE boot agents, returns boot script specified on the configuration
- // or if the host is unknown makes it retry for a while until the user specifies
- // alternative ipxe boot script
- r.HandleFunc("/poll/1/{mac}", handlers.PollHandler).Methods("GET")
- // Serves a generated iPXE boot script providing a selection
- // of all of the boot scripts available on the filesystem for that environment.
- r.HandleFunc("/ipxemenu", handlers.IPXEMenu).Methods("GET")
-
- return r
+ mux := http.NewServeMux()
+ staticFiles := http.StripPrefix("/static/", http.FileServer(http.Dir(env.StaticDir)))
+ staticConfigs := http.StripPrefix("/configs/static/", handlers.StaticConfigFileServer())
+ dynamicConfigs := http.StripPrefix("/configs/", handlers.TemplateServer())
+
+ // UI pages and assets.
+ mux.Handle("GET /{$}", handlers.RenderDefaultTemplate("index"))
+ mux.Handle("GET /events", handlers.RenderDefaultTemplate("events"))
+ mux.Handle("GET /mappings", handlers.RenderDefaultTemplate("mappings"))
+ mux.Handle("GET /static/", staticFiles)
+
+ // UI JSON endpoints and manual boot selection.
+ mux.HandleFunc("POST /update/target", handlers.UpdateTargetHandler)
+ mux.HandleFunc("GET /ajax/servers", handlers.ServerListHandler)
+ mux.HandleFunc("GET /ajax/events", handlers.ListEvents)
+ mux.HandleFunc("GET /ajax/script/params", handlers.GetTemplateParams)
+
+ // Static and templated configuration files served to booting hosts.
+ mux.Handle("GET /configs/static/", staticConfigs)
+ mux.Handle("GET /configs/", dynamicConfigs)
+
+ // iPXE boot endpoints.
+ mux.HandleFunc("GET /start", handlers.StartPollingHandler)
+ mux.HandleFunc("GET /poll/1/{mac}", handlers.PollHandler)
+ mux.HandleFunc("GET /ipxemenu", handlers.IPXEMenu)
+
+ return mux
}
nihil fit ex nihilo