From 319050d9fc88999602ba6789ba669f8b52419b79 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 21 May 2024 11:35:01 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E8=8E=B7=E5=8F=96=E5=8A=A0=E5=AF=86?= =?UTF-8?q?=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/config/config.go | 6 ++++++ pkg/jms-sdk-go/service/jms_terminal.go | 14 ++++++++++++++ pkg/jms-sdk-go/service/url.go | 2 ++ pkg/koko/koko.go | 23 +++++++++++++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 pkg/jms-sdk-go/service/jms_terminal.go diff --git a/pkg/config/config.go b/pkg/config/config.go index ec915a65..b7e419aa 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -57,6 +57,8 @@ type Config struct { HiddenFields []string `mapstructure:"HIDDEN_FIELDS"` + SecretEncryptKey string `mapstructure:"SECRET_ENCRYPT_KEY"` + RootPath string DataFolderPath string LogDirPath string @@ -73,6 +75,10 @@ func (c *Config) EnsureConfigValid() { } } +func (c *Config) UpdateRedisPassword(val string) { + c.RedisPassword = val +} + func GetConf() Config { if GlobalConfig == nil { return getDefaultConfig() diff --git a/pkg/jms-sdk-go/service/jms_terminal.go b/pkg/jms-sdk-go/service/jms_terminal.go new file mode 100644 index 00000000..9b67bded --- /dev/null +++ b/pkg/jms-sdk-go/service/jms_terminal.go @@ -0,0 +1,14 @@ +package service + +func (s *JMService) GetEncryptedConfigValue(encryptKey, encryptedValue string) (resp ResultValue, err error) { + data := map[string]string{ + "secret_encrypt_key": encryptKey, + "encrypted_value": encryptedValue, + } + _, err = s.authClient.Post(TerminalEncryptedConfigURL, data, &resp) + return +} + +type ResultValue struct { + Value string `json:"value"` +} diff --git a/pkg/jms-sdk-go/service/url.go b/pkg/jms-sdk-go/service/url.go index acbb69d2..def1b5e5 100644 --- a/pkg/jms-sdk-go/service/url.go +++ b/pkg/jms-sdk-go/service/url.go @@ -6,6 +6,8 @@ const ( TerminalRegisterURL = "/api/v1/terminal/terminal-registrations/" // 注册 TerminalConfigURL = "/api/v1/terminal/terminals/config/" // 获取配置 TerminalHeartBeatURL = "/api/v1/terminal/terminals/status/" + + TerminalEncryptedConfigURL = "/api/v1/terminal/encrypted-config/" ) // 用户登陆认证使用的API diff --git a/pkg/koko/koko.go b/pkg/koko/koko.go index 0a8247e6..42b0778d 100644 --- a/pkg/koko/koko.go +++ b/pkg/koko/koko.go @@ -40,6 +40,7 @@ func RunForever(confPath string) { gracefulStop := make(chan os.Signal, 1) signal.Notify(gracefulStop, syscall.SIGTERM, syscall.SIGINT, syscall.SIGQUIT) jmsService := MustJMService() + bootstrapWithJMService(jmsService) webSrv := httpd.NewServer(jmsService) sshSrv := sshd.NewSSHServer(jmsService) app := &Koko{ @@ -55,9 +56,31 @@ func RunForever(confPath string) { func bootstrap() { i18n.Initial() logger.Initial() +} + +func bootstrapWithJMService(jmsService *service.JMService) { + updateEncryptConfigValue(jmsService) exchange.Initial() } +func updateEncryptConfigValue(jmsService *service.JMService) { + cfg := config.GlobalConfig + encryptKey := cfg.SecretEncryptKey + if encryptKey != "" { + redisPassword := cfg.RedisPassword + ret, err := jmsService.GetEncryptedConfigValue(encryptKey, redisPassword) + if err != nil { + logger.Error("Get encrypted config value failed: " + err.Error()) + return + } + if ret.Value != "" { + cfg.UpdateRedisPassword(ret.Value) + } else { + logger.Error("Get encrypted config value failed: empty value") + } + } +} + func runTasks(jmsService *service.JMService) { if config.GetConf().UploadFailedReplay { go uploadRemainReplay(jmsService)