2025-10-06 16:23:56 +08:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
2026-04-05 10:36:22 +08:00
|
|
|
"crypto/rand"
|
|
|
|
|
"fmt"
|
2025-10-06 16:23:56 +08:00
|
|
|
|
2026-04-05 10:36:22 +08:00
|
|
|
"github.com/gin-contrib/sessions"
|
|
|
|
|
"github.com/gin-contrib/sessions/cookie"
|
2025-10-06 16:23:56 +08:00
|
|
|
"github.com/gin-gonic/gin"
|
2026-06-06 15:25:38 +08:00
|
|
|
"github.com/robfig/cron/v3"
|
2026-04-05 10:36:22 +08:00
|
|
|
"github.com/ssdomei232/goodBaby/api/account"
|
|
|
|
|
"github.com/ssdomei232/goodBaby/api/rule"
|
|
|
|
|
"github.com/ssdomei232/goodBaby/api/user"
|
2026-06-06 15:25:38 +08:00
|
|
|
"github.com/ssdomei232/goodBaby/handler/checker"
|
2026-06-06 19:31:16 +08:00
|
|
|
"github.com/ssdomei232/goodBaby/handler/runner"
|
2025-10-06 16:23:56 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
2026-06-06 19:31:16 +08:00
|
|
|
runner.InitExecutorRegistry()
|
|
|
|
|
|
|
|
|
|
c := cron.New()
|
|
|
|
|
c.AddFunc("@every 10m", checker.CheckTimers)
|
|
|
|
|
c.Start()
|
|
|
|
|
|
2025-10-06 16:23:56 +08:00
|
|
|
r := gin.Default()
|
2026-04-05 10:36:22 +08:00
|
|
|
store := cookie.NewStore(generateRandomKey(32))
|
|
|
|
|
r.Use(sessions.Sessions("goodbaby-session", store))
|
|
|
|
|
|
|
|
|
|
v1 := r.Group("/api/v1")
|
|
|
|
|
{
|
|
|
|
|
v1.POST("/user/registry", user.HandleRegistry)
|
|
|
|
|
v1.POST("/user/login", user.HandleLogin)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 需要认证的路由组
|
|
|
|
|
authorized := v1.Group("/")
|
|
|
|
|
authorized.Use(user.AuthMiddleware())
|
|
|
|
|
{
|
2026-06-19 18:47:36 +08:00
|
|
|
users := authorized.Group("/user")
|
|
|
|
|
{
|
|
|
|
|
users.GET("/info", user.HandleGetUserInfo)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rules := authorized.Group("/rules")
|
|
|
|
|
{
|
|
|
|
|
rules.GET("/", rule.HandleGetAllRules)
|
|
|
|
|
rules.POST("/", rule.HandleCreateRule)
|
|
|
|
|
rules.PUT("/:ruleID", rule.HandleEditRule)
|
|
|
|
|
rules.DELETE("/:ruleID", rule.HandleDeleteRule)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
accounts := authorized.Group("/accounts")
|
|
|
|
|
{
|
|
|
|
|
accounts.GET("/", account.HandleGetAllAccounts)
|
|
|
|
|
accounts.POST("/", account.HandleAddAccount)
|
|
|
|
|
accounts.GET("/:accountID/check", account.HandleCheckDeleteAccount)
|
|
|
|
|
accounts.DELETE("/:accountID", account.HandleDeleteAccount)
|
|
|
|
|
}
|
2026-04-05 10:36:22 +08:00
|
|
|
}
|
2025-10-07 15:01:33 +08:00
|
|
|
|
2025-10-06 16:23:56 +08:00
|
|
|
r.Run(":8088")
|
|
|
|
|
}
|
2025-10-06 20:02:47 +08:00
|
|
|
|
2026-04-05 10:36:22 +08:00
|
|
|
func generateRandomKey(length int) []byte {
|
|
|
|
|
key := make([]byte, length)
|
|
|
|
|
_, err := rand.Read(key)
|
2025-10-07 14:49:00 +08:00
|
|
|
if err != nil {
|
2026-04-05 10:36:22 +08:00
|
|
|
panic(fmt.Sprintf("无法生成随机密钥: %v", err))
|
2025-10-07 14:49:00 +08:00
|
|
|
}
|
2026-04-05 10:36:22 +08:00
|
|
|
return key
|
2025-10-07 14:49:00 +08:00
|
|
|
}
|