67 lines
1.9 KiB
Go
67 lines
1.9 KiB
Go
package router
|
|
|
|
import (
|
|
"github.com/gin-contrib/cors"
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"mengyaping-backend/handlers"
|
|
"mengyaping-backend/middleware"
|
|
)
|
|
|
|
// SetupRouter 设置路由
|
|
func SetupRouter() *gin.Engine {
|
|
r := gin.Default()
|
|
|
|
// CORS配置
|
|
r.Use(cors.New(cors.Config{
|
|
AllowOrigins: []string{"*"},
|
|
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
|
|
AllowHeaders: []string{"Origin", "Content-Type", "Accept", "Authorization", "X-Admin-Token"},
|
|
ExposeHeaders: []string{"Content-Length"},
|
|
AllowCredentials: true,
|
|
}))
|
|
|
|
// 创建处理器
|
|
websiteHandler := handlers.NewWebsiteHandler()
|
|
settingsHandler := handlers.NewSettingsHandler()
|
|
|
|
// API路由组
|
|
api := r.Group("/api")
|
|
{
|
|
// 健康检查
|
|
api.GET("/health", func(c *gin.Context) {
|
|
c.JSON(200, gin.H{
|
|
"status": "ok",
|
|
"message": "服务运行正常",
|
|
})
|
|
})
|
|
|
|
// 公开:监控调度信息(仅展示)
|
|
api.GET("/monitor/settings", settingsHandler.GetPublicMonitorSettings)
|
|
|
|
// 网站 / 分组 — 读操作公开
|
|
api.GET("/websites", websiteHandler.GetWebsites)
|
|
api.GET("/websites/:id", websiteHandler.GetWebsite)
|
|
api.GET("/groups", websiteHandler.GetGroups)
|
|
api.GET("/groups/:id", websiteHandler.GetGroup)
|
|
|
|
// 管理:写操作需 ADMIN_TOKEN
|
|
admin := api.Group("")
|
|
admin.Use(middleware.AdminAuth())
|
|
{
|
|
admin.POST("/websites", websiteHandler.CreateWebsite)
|
|
admin.PUT("/websites/:id", websiteHandler.UpdateWebsite)
|
|
admin.DELETE("/websites/:id", websiteHandler.DeleteWebsite)
|
|
admin.POST("/websites/:id/check", websiteHandler.CheckWebsiteNow)
|
|
admin.POST("/groups", websiteHandler.AddGroup)
|
|
admin.PUT("/groups/:id", websiteHandler.UpdateGroup)
|
|
admin.DELETE("/groups/:id", websiteHandler.DeleteGroup)
|
|
|
|
admin.GET("/admin/config", settingsHandler.GetAdminConfig)
|
|
admin.PUT("/admin/config", settingsHandler.PutAdminMonitorConfig)
|
|
}
|
|
}
|
|
|
|
return r
|
|
}
|