mirror of
https://github.com/MatrixSeven/file-transfer-go.git
synced 2026-02-04 03:25:03 +08:00
77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
package main
|
||
|
||
import (
|
||
"net/http"
|
||
|
||
"chuan/internal/handlers"
|
||
"chuan/internal/web"
|
||
|
||
"github.com/go-chi/chi/v5"
|
||
"github.com/go-chi/chi/v5/middleware"
|
||
"github.com/go-chi/cors"
|
||
)
|
||
|
||
// RouterSetup 路由设置结果
|
||
type RouterSetup struct {
|
||
Handler *handlers.Handler
|
||
Router http.Handler
|
||
}
|
||
|
||
// setupRouter 设置路由和中间件
|
||
func setupRouter(config *Config) *RouterSetup {
|
||
// 初始化处理器
|
||
h := handlers.NewHandler()
|
||
|
||
router := chi.NewRouter()
|
||
|
||
// 设置中间件
|
||
setupMiddleware(router)
|
||
|
||
// 设置API路由
|
||
setupAPIRoutes(router, h, config)
|
||
|
||
// 设置前端路由
|
||
router.Handle("/*", web.CreateFrontendHandler())
|
||
|
||
return &RouterSetup{
|
||
Handler: h,
|
||
Router: router,
|
||
}
|
||
}
|
||
|
||
// setupMiddleware 设置中间件
|
||
func setupMiddleware(r *chi.Mux) {
|
||
r.Use(middleware.Logger)
|
||
r.Use(middleware.Recoverer)
|
||
r.Use(middleware.Compress(5))
|
||
|
||
// CORS 配置
|
||
r.Use(cors.Handler(cors.Options{
|
||
AllowedOrigins: []string{"*"},
|
||
AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
|
||
AllowedHeaders: []string{"Accept", "Authorization", "Content-Type", "X-CSRF-Token"},
|
||
ExposedHeaders: []string{"Link"},
|
||
AllowCredentials: true,
|
||
MaxAge: 300,
|
||
}))
|
||
}
|
||
|
||
// setupAPIRoutes 设置API路由
|
||
func setupAPIRoutes(r *chi.Mux, h *handlers.Handler, config *Config) {
|
||
// WebRTC信令WebSocket路由
|
||
r.Get("/api/ws/webrtc", h.HandleWebRTCWebSocket)
|
||
|
||
// WebRTC房间API
|
||
r.Post("/api/create-room", h.CreateRoomHandler)
|
||
r.Get("/api/room-info", h.WebRTCRoomStatusHandler)
|
||
|
||
// TURN服务器API(仅在启用时可用)
|
||
if config.TurnConfig.Enabled {
|
||
r.Get("/api/turn/stats", h.TurnStatsHandler)
|
||
r.Get("/api/turn/config", h.TurnConfigHandler)
|
||
}
|
||
|
||
// 管理API
|
||
r.Get("/api/admin/status", h.AdminStatusHandler)
|
||
}
|