Files
Charon/backend/internal/server/server.go
GitHub Actions 8f15fdd97f chore: Update QA report and improve test coverage
- Updated the QA/Security Validation Report with new dates and status.
- Enhanced coverage verification metrics for backend and frontend tests.
- Improved TypeScript checks and security scans, ensuring all checks passed.
- Refactored ProxyHosts tests to utilize mock implementations for hooks and APIs.
- Added smoke test for login functionality using Playwright.
- Adjusted vitest configuration to use thread pooling for tests.
- Removed unnecessary peer dependency from package-lock.json.
2026-01-02 07:10:08 +00:00

38 lines
1.1 KiB
Go

// Package server provides the HTTP server and router configuration.
package server
import (
"net/http"
"strings"
"github.com/gin-gonic/gin"
)
// NewRouter creates a new Gin router with frontend static file serving.
func NewRouter(frontendDir string) *gin.Engine {
router := gin.Default()
// Silence "trusted all proxies" warning by not trusting any by default.
// If running behind a proxy, this should be configured to trust that proxy's IP.
_ = router.SetTrustedProxies(nil)
// Serve frontend static files
if frontendDir != "" {
router.Static("/assets", frontendDir+"/assets")
router.StaticFile("/", frontendDir+"/index.html")
router.StaticFile("/banner.png", frontendDir+"/banner.png")
router.StaticFile("/logo.png", frontendDir+"/logo.png")
router.StaticFile("/favicon.png", frontendDir+"/favicon.png")
router.NoRoute(func(c *gin.Context) {
// API routes should never fall back to the SPA HTML.
path := c.Request.URL.Path
if path == "/api" || strings.HasPrefix(path, "/api/") {
c.JSON(http.StatusNotFound, gin.H{"error": "not found"})
return
}
c.File(frontendDir + "/index.html")
})
}
return router
}