mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 04:22:33 +08:00
47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package bootstrap
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/bddjr/hlfhr"
|
|
"github.com/go-chi/chi/v5"
|
|
"github.com/knadh/koanf/v2"
|
|
|
|
"github.com/tnb-labs/panel/internal/http/middleware"
|
|
"github.com/tnb-labs/panel/internal/route"
|
|
)
|
|
|
|
func NewRouter(middlewares *middleware.Middlewares, http *route.Http, ws *route.Ws) (*chi.Mux, error) {
|
|
r := chi.NewRouter()
|
|
|
|
// add middleware
|
|
r.Use(middlewares.Globals(r)...)
|
|
// add http route
|
|
http.Register(r)
|
|
// add ws route
|
|
ws.Register(r)
|
|
|
|
return r, nil
|
|
}
|
|
|
|
func NewHttp(conf *koanf.Koanf, r *chi.Mux) (*hlfhr.Server, error) {
|
|
srv := hlfhr.New(&http.Server{
|
|
Addr: fmt.Sprintf(":%d", conf.MustInt("http.port")),
|
|
Handler: http.AllowQuerySemicolons(r),
|
|
MaxHeaderBytes: 2048 << 20,
|
|
})
|
|
srv.HttpOnHttpsPortErrorHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
hlfhr.RedirectToHttps(w, r, http.StatusTemporaryRedirect)
|
|
})
|
|
|
|
if conf.Bool("http.tls") {
|
|
srv.TLSConfig = &tls.Config{
|
|
MinVersion: tls.VersionTLS13,
|
|
}
|
|
}
|
|
|
|
return srv, nil
|
|
}
|