router.go 3.26 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"
8
	"github.com/olivere/elastic/v7"
qiuqunfeng's avatar
qiuqunfeng committed
9
	"github.com/rs/zerolog/log"
10
	"gitlab.com/tensorsecurity-rd/waf-console/cmd/api-server/config"
11
	"gitlab.com/tensorsecurity-rd/waf-console/internal/middleware"
qiuqunfeng's avatar
qiuqunfeng committed
12 13 14 15
	"gitlab.com/tensorsecurity-rd/waf-console/internal/utils"
	"gorm.io/gorm"
)

16 17
func SetRouters(db *gorm.DB, clusterClientManager *utils.ClusterClientManager, gatewayUrl string, ssoUrl string,
	elasticClient *elastic.Client, debug bool, regionUrlMap map[string]string) *gin.Engine {
qiuqunfeng's avatar
qiuqunfeng committed
18 19
	var engine *gin.Engine

20
	if !debug {
qiuqunfeng's avatar
qiuqunfeng committed
21
		// 生产模式
qiuqunfeng's avatar
qiuqunfeng committed
22
		log.Info().Msg("release mode")
qiuqunfeng's avatar
qiuqunfeng committed
23 24
		engine = ReleaseRouter()
		engine.Use(
25
			middleware.AuthMiddleware(ssoUrl),
qiuqunfeng's avatar
qiuqunfeng committed
26 27 28 29
		// middleware.RequestCostHandler(),
		// middleware.CustomLogger(),
		// middleware.CustomRecovery(),
		// middleware.CorsHandler(),
30
		// middleware.CorsHandler(),
qiuqunfeng's avatar
qiuqunfeng committed
31 32 33
		)
	} else {
		// 开发调试模式
qiuqunfeng's avatar
qiuqunfeng committed
34
		log.Info().Msg("debug mode")
qiuqunfeng's avatar
qiuqunfeng committed
35 36
		engine = gin.New()
		engine.Use(
37
			middleware.AuthMiddleware(ssoUrl),
qiuqunfeng's avatar
qiuqunfeng committed
38 39 40 41 42 43
			gin.Logger(),
			// middleware.CustomRecovery(),
			// middleware.CorsHandler(),
		)
	}
	// set up trusted agents
qiuqunfeng's avatar
config  
qiuqunfeng committed
44
	err := engine.SetTrustedProxies([]string{"127.0.0.1"})
qiuqunfeng's avatar
qiuqunfeng committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58
	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
59 60 61 62 63 64 65 66 67 68
	// 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",
	// })
69 70

	SetWafRouter(engine, clusterClientManager, db, gatewayUrl, elasticClient, regionUrlMap)
qiuqunfeng's avatar
qiuqunfeng committed
71 72 73 74 75 76 77 78 79 80

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

	return engine
}

81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
func SetApiRouters(config *config.Config, ssoUrl string, elasticClient *elastic.Client) *gin.Engine {
	var engine *gin.Engine

	if !config.Debug {
		// 生产模式
		log.Info().Msg("release mode")
		engine = ReleaseRouter()
		engine.Use(
			middleware.AuthMiddleware(ssoUrl),
		// middleware.RequestCostHandler(),
		// middleware.CustomLogger(),
		// middleware.CustomRecovery(),
		// middleware.CorsHandler(),
		// middleware.CorsHandler(),
		)
	} else {
		// 开发调试模式
		log.Info().Msg("debug mode")
		engine = gin.New()
		engine.Use(
			middleware.AuthMiddleware(ssoUrl),
			gin.Logger(),
			// middleware.CustomRecovery(),
			// middleware.CorsHandler(),
		)
	}
	// set up trusted agents
	err := engine.SetTrustedProxies([]string{"127.0.0.1"})
	if err != nil {
		panic(err)
	}
	// ping
	engine.GET("/ping", func(c *gin.Context) {
		c.AbortWithStatusJSON(http.StatusOK, gin.H{
			"message": "pong!",
		})
	})

119
	SetWafApiServerRouter(engine, nil, nil, "", elasticClient)
120 121 122
	return engine
}

qiuqunfeng's avatar
qiuqunfeng committed
123 124 125 126 127 128 129 130 131 132 133
// ReleaseRouter 生产模式使用官方建议设置为 release 模式
func ReleaseRouter() *gin.Engine {
	// 切换到生产模式
	gin.SetMode(gin.ReleaseMode)
	// 禁用 gin 输出接口访问日志
	gin.DefaultWriter = io.Discard

	engine := gin.New()

	return engine
}