router.go 2.15 KB
Newer Older
qiuqunfeng's avatar
qiuqunfeng committed
1 2 3 4 5 6 7
package api

import (
	"io"
	"net/http"

	"github.com/gin-gonic/gin"
qiuqunfeng's avatar
qiuqunfeng committed
8
	"github.com/rs/zerolog/log"
qiuqunfeng's avatar
qiuqunfeng committed
9
	"gitlab.com/tensorsecurity-rd/waf-console/internal/config"
10
	"gitlab.com/tensorsecurity-rd/waf-console/internal/middleware"
qiuqunfeng's avatar
qiuqunfeng committed
11 12 13 14
	"gitlab.com/tensorsecurity-rd/waf-console/internal/utils"
	"gorm.io/gorm"
)

15
func SetRouters(db *gorm.DB, clusterClientManager *utils.ClusterClientManager, gatewayUrl string, ssoUrl string) *gin.Engine {
qiuqunfeng's avatar
qiuqunfeng committed
16 17 18 19
	var engine *gin.Engine

	if !config.Conf.Debug {
		// 生产模式
qiuqunfeng's avatar
qiuqunfeng committed
20
		log.Info().Msg("release mode")
qiuqunfeng's avatar
qiuqunfeng committed
21 22
		engine = ReleaseRouter()
		engine.Use(
23
			middleware.AuthMiddleware(ssoUrl),
qiuqunfeng's avatar
qiuqunfeng committed
24 25 26 27
		// middleware.RequestCostHandler(),
		// middleware.CustomLogger(),
		// middleware.CustomRecovery(),
		// middleware.CorsHandler(),
28
		// middleware.CorsHandler(),
qiuqunfeng's avatar
qiuqunfeng committed
29 30 31
		)
	} else {
		// 开发调试模式
qiuqunfeng's avatar
qiuqunfeng committed
32
		log.Info().Msg("debug mode")
qiuqunfeng's avatar
qiuqunfeng committed
33 34
		engine = gin.New()
		engine.Use(
35
			middleware.AuthMiddleware(ssoUrl),
qiuqunfeng's avatar
qiuqunfeng committed
36 37 38 39 40 41
			gin.Logger(),
			// middleware.CustomRecovery(),
			// middleware.CorsHandler(),
		)
	}
	// set up trusted agents
qiuqunfeng's avatar
config  
qiuqunfeng committed
42
	err := engine.SetTrustedProxies([]string{"127.0.0.1"})
qiuqunfeng's avatar
qiuqunfeng committed
43 44 45 46 47 48 49 50 51 52 53 54 55 56
	if err != nil {
		panic(err)
	}
	// ping
	engine.GET("/ping", func(c *gin.Context) {
		c.AbortWithStatusJSON(http.StatusOK, gin.H{
			"message": "pong!",
		})
	})

	// 设置 API 路由
	// SetIPInforRouter(engine)
	// loadkubeConfig()
	// clientcmd.LoadFromFile("kubeconfig.yaml")
qiuqunfeng's avatar
fix  
qiuqunfeng committed
57 58 59 60 61 62 63 64 65 66
	// client := versioned.NewForConfigOrDie(&rest.Config{
	// 	Host: "https://127.0.0.1:6443",
	// 	TLSClientConfig: rest.TLSClientConfig{
	// 		Insecure: false,
	// 		CAData:   []byte(""),
	// 		CertData: []byte(""),
	// 		KeyData:  []byte(""),
	// 	},
	// 	// BearerToken: "1234567890",
	// })
67
	SetWafRouter(engine, clusterClientManager, db, gatewayUrl)
qiuqunfeng's avatar
qiuqunfeng committed
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88

	// 统一处理 404
	engine.NoRoute(func(c *gin.Context) {
		utils.AssembleResponse(c, nil, err)
		// response2.Resp().SetHttpCode(http.StatusNotFound).FailCode(c, errors.NotFound)
	})

	return engine
}

// ReleaseRouter 生产模式使用官方建议设置为 release 模式
func ReleaseRouter() *gin.Engine {
	// 切换到生产模式
	gin.SetMode(gin.ReleaseMode)
	// 禁用 gin 输出接口访问日志
	gin.DefaultWriter = io.Discard

	engine := gin.New()

	return engine
}