Files
orbit/internal/transport/httpserver/console.go

39 lines
1.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package httpserver
import (
"embed"
"io/fs"
"net/http"
)
// consoleAssets 将控制台静态资源编译进 Orbit,避免运行容器依赖 Node.js、外部 CDN
// 或额外的文件挂载。控制台只调用版本化 HTTP API,不读取数据库。
//
//go:embed console
var consoleAssets embed.FS
// RegisterConsole 注册本地及生产可复用的 Orbit 控制台入口。
// /console 不改变业务 API 的认证和路由;静态页面自身不包含凭据。
func RegisterConsole(server *http.Server) {
if server == nil {
return
}
mux, ok := server.Handler.(*http.ServeMux)
if !ok {
return
}
assets, err := fs.Sub(consoleAssets, "console")
if err != nil {
return
}
files := http.StripPrefix("/console/", http.FileServer(http.FS(assets)))
mux.HandleFunc("GET /console", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/console/", http.StatusPermanentRedirect)
})
mux.Handle("GET /console/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Cache-Control", "no-store")
w.Header().Set("X-Content-Type-Options", "nosniff")
files.ServeHTTP(w, r)
}))
}