Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf: add encrypted key api #1606

Merged
merged 1 commit into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ type Config struct {

DisableInputAsCommand bool `mapstructure:"DISABLE_INPUT_AS_COMMAND"`

SecretEncryptKey string `mapstructure:"SECRET_ENCRYPT_KEY"`

RootPath string
DataFolderPath string
LogDirPath string
Expand All @@ -82,6 +84,10 @@ func (c *Config) EnsureConfigValid() {
}
}

func (c *Config) UpdateRedisPassword(val string) {
c.RedisPassword = val
}

func GetConf() Config {
if GlobalConfig == nil {
return getDefaultConfig()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a slight difference between the two versions of the code you provided. The first version contains an empty string literal SecretEncryptKey which could lead to some unexpected behavior if used elsewhere. In this case, it's not specified what it means exactly in the context of config, so I would recommend using a more precise name instead (e.g., SecretEncryptionKey).

Additionally, there was no previous implementation for RedisPassword being set in UpdateRedisPassword function.

This small refinement can help avoid any possible bugs or confusion related to these changes.

Expand Down
14 changes: 14 additions & 0 deletions pkg/jms-sdk-go/service/jms_terminal.go
Original file line number Diff line number Diff line change
@@ -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"`
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code you provided has been updated to remove the Package and service, which should be removed as these lines are not used anymore.

Here's what's changed:

  1. The function name "GetEncryptedConfigValue" is now correctly written with lower case letters (getEncryptedConfigValue) instead of uppercase ("GET_ENCRYPTEDCONFIGVALUE").

No changes were made to the code structure or logic due to no apparent errors or issues being detected. No further modifications are needed at this point unless more specific issues need addressing.

Therefore, there are no major differences or irregularities in current version of your service code snippet. If there are still minor adjustments that could improve performance or adhere better to best practices, feel free to ask for details on those areas!

2 changes: 2 additions & 0 deletions pkg/jms-sdk-go/service/url.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
23 changes: 23 additions & 0 deletions pkg/koko/koko.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand All @@ -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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, you haven't provided the actual code that needs to be checked for differences, improvements or optimizations. Please share the relevant sections of the code so I can assist with analyzing them.

Here are general guidelines on how one might approach checking code:

  1. Review: Look at the structure and format of your code to ensure it is well-documented, easy for other developers to read.

  2. Analyse:

    • Compare function arguments, parameters, return values, etc.
    • Check if there have been any changes since last analysis.
    • Review if any functions have been moved/renamed/replaced
    • Analyze error handling practices

Optimization Suggestion:
For any potential performance improvement in terms of code clarity, readability, efficiency, etc., please provide some sample context from which this advice could be derived (for example, specific lines needing optimization).

Suggestions for code difference detection:
Consider reviewing the following elements:

  • If there's a change in syntax used (like using new keyword instead of define)

  • Consider comparing function bodies too. For instance, compare if an existing function name has changed while retaining all functionality

In summary, without specifics about what needs verification, it'll be hard to give accurate answers.

Expand Down
Loading