cmd.go 2.09 KB
Newer Older
qiuqunfeng's avatar
qiuqunfeng committed
1 2 3
package app

import (
qiuqunfeng's avatar
fix  
qiuqunfeng committed
4
	"encoding/base64"
qiuqunfeng's avatar
config  
qiuqunfeng committed
5
	"fmt"
qiuqunfeng's avatar
qiuqunfeng committed
6 7
	"os"

qiuqunfeng's avatar
commit  
qiuqunfeng committed
8
	"github.com/rs/zerolog/log"
qiuqunfeng's avatar
qiuqunfeng committed
9 10
	"github.com/spf13/cobra"
	"gitlab.com/tensorsecurity-rd/waf-console/api"
qiuqunfeng's avatar
commit  
qiuqunfeng committed
11
	"gitlab.com/tensorsecurity-rd/waf-console/internal/utils"
qiuqunfeng's avatar
fix  
qiuqunfeng committed
12
	"gitlab.com/tensorsecurity-rd/waf-console/pkg/generated/clientset/versioned"
qiuqunfeng's avatar
config  
qiuqunfeng committed
13 14
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
qiuqunfeng's avatar
fix  
qiuqunfeng committed
15
	"k8s.io/client-go/rest"
qiuqunfeng's avatar
qiuqunfeng committed
16 17 18 19 20 21 22 23
)

func NewRootCommand() *cobra.Command {
	return &cobra.Command{
		Use:   "waf-console",
		Short: "Start waf-console service.",
		Args:  cobra.ExactArgs(0),
		RunE: func(cmd *cobra.Command, args []string) error {
qiuqunfeng's avatar
config  
qiuqunfeng committed
24
			config := LoadConfig()
qiuqunfeng's avatar
qiuqunfeng committed
25
			debugMode := os.Getenv("DEBUG_MODE")
qiuqunfeng's avatar
commit  
qiuqunfeng committed
26
			log.Info().Msgf("DEBUG_MODE: %s", debugMode)
qiuqunfeng's avatar
qiuqunfeng committed
27
			if debugMode == "true" {
qiuqunfeng's avatar
config  
qiuqunfeng committed
28 29 30 31 32 33 34 35 36 37 38 39 40 41
				config.Debug = true
				// config.Conf.Debug = true
			}
			dbConfig := config.DBConfig
			var db *gorm.DB
			var err error
			if dbConfig != nil {
				dns := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbConfig.User, dbConfig.Password, dbConfig.Host, dbConfig.Port, dbConfig.Database)
				db, err = gorm.Open(mysql.Open(dns), &gorm.Config{})
				if err != nil {
					panic(err)
				}
			} else {
				panic("dbConfig is nil")
qiuqunfeng's avatar
qiuqunfeng committed
42 43
			}

qiuqunfeng's avatar
commit  
qiuqunfeng committed
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
			clusterClientManager := utils.NewClusterClientManager()
			for _, regionConfig := range config.RegionConfigs {
				caData, err := base64.StdEncoding.DecodeString(regionConfig.CAData)
				if err != nil {
					panic(err)
				}
				clientCertData, err := base64.StdEncoding.DecodeString(regionConfig.ClientCertData)
				if err != nil {
					panic(err)
				}
				clientKeyData, err := base64.StdEncoding.DecodeString(regionConfig.ClientKeyData)
				if err != nil {
					panic(err)
				}
				client := versioned.NewForConfigOrDie(&rest.Config{
					Host: regionConfig.ApiServer,
					TLSClientConfig: rest.TLSClientConfig{
qiuqunfeng's avatar
commit  
qiuqunfeng committed
61
						Insecure: regionConfig.Insecure,
qiuqunfeng's avatar
commit  
qiuqunfeng committed
62 63 64 65 66 67 68
						CAData:   caData,
						CertData: clientCertData,
						KeyData:  clientKeyData,
					},
					// BearerToken: "1234567890",
				})
				clusterClientManager.AddClient(regionConfig.RegionCode, client)
qiuqunfeng's avatar
fix  
qiuqunfeng committed
69
			}
qiuqunfeng's avatar
fix  
qiuqunfeng committed
70

qiuqunfeng's avatar
commit  
qiuqunfeng committed
71
			e := api.SetRouters(db, clusterClientManager)
qiuqunfeng's avatar
qiuqunfeng committed
72 73 74 75
			return e.Run(":8080")
		},
	}
}