2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 14:57:16 +08:00
Files
panel/internal/bootstrap/http.go
2024-10-12 02:52:23 +08:00

54 lines
1.1 KiB
Go

package bootstrap
import (
"crypto/tls"
"fmt"
"log"
"net/http"
"path/filepath"
"github.com/go-chi/chi/v5"
"github.com/TheTNB/panel/internal/app"
"github.com/TheTNB/panel/internal/apps"
"github.com/TheTNB/panel/internal/http/middleware"
"github.com/TheTNB/panel/internal/route"
)
func initHttp() {
app.Http = chi.NewRouter()
// add middleware
app.Http.Use(middleware.GlobalMiddleware()...)
// add route
route.Http(app.Http)
apps.Boot(app.Http)
srv := &http.Server{
Addr: fmt.Sprintf(":%d", app.Conf.MustInt("http.port")),
Handler: http.AllowQuerySemicolons(app.Http),
MaxHeaderBytes: 2048 << 20,
}
if app.Conf.Bool("http.tls") {
srv.TLSConfig = &tls.Config{
MinVersion: tls.VersionTLS12,
}
cert := filepath.Join(app.Root, "panel/storage/cert.pem")
key := filepath.Join(app.Root, "panel/storage/cert.key")
go func() {
if err := srv.ListenAndServeTLS(cert, key); err != nil {
log.Fatalf("failed to start https server: %v", err)
}
}()
} else {
go func() {
if err := srv.ListenAndServe(); err != nil {
log.Fatalf("failed to start http server: %v", err)
}
}()
}
}