fix: Fix the issue where SSH port changes are not synchronized to the… (#10398)

… local terminal

Refs #10358
This commit is contained in:
ssongliu 2025-09-17 18:43:58 +08:00 committed by GitHub
parent 1999f102bf
commit 41c49ca95f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3,6 +3,7 @@ package service
import (
"bytes"
"encoding/base64"
"encoding/json"
"fmt"
"os"
"os/user"
@ -208,6 +209,10 @@ func (u *SSHService) Update(req dto.SSHUpdate) error {
if err := NewIFirewallService().UpdatePortRule(ruleItem); err != nil {
global.LOG.Errorf("reset firewall rules %s -> %s failed, err: %v", req.OldValue, req.NewValue, err)
}
newPort, _ := strconv.Atoi(req.NewValue)
if err := updateLocalConn(uint(newPort)); err != nil {
global.LOG.Errorf("update local conn for terminal failed, err: %v", err)
}
}
_, _ = cmd.RunDefaultWithStdoutBashCf("%s systemctl restart %s", sudo, serviceName)
@ -738,3 +743,28 @@ func loadEncryptioMode(content string) string {
}
return ""
}
func updateLocalConn(newPort uint) error {
conn, _ := settingRepo.GetValueByKey("LocalSSHConn")
if len(conn) == 0 {
return nil
}
connItem, err := encrypt.StringDecrypt(conn)
if err != nil {
return err
}
var data dto.SSHConnData
if err := json.Unmarshal([]byte(connItem), &data); err != nil {
return err
}
data.Port = newPort
connNew, err := json.Marshal(data)
if err != nil {
return err
}
connNewItem, err := encrypt.StringEncrypt(string(connNew))
if err != nil {
return err
}
return settingRepo.Update("LocalSSHConn", connNewItem)
}