diff --git a/agent/app/api/v2/setting.go b/agent/app/api/v2/setting.go index d869d73db..604dcf78b 100644 --- a/agent/app/api/v2/setting.go +++ b/agent/app/api/v2/setting.go @@ -84,6 +84,28 @@ func (b *BaseApi) CheckLocalConn(c *gin.Context) { helper.SuccessWithData(c, err == nil) } +// @Tags System Setting +// @Summary Update local is conn +// @Accept json +// @Param request body dto.SSHDefaultConn true "request" +// @Success 200 +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /settings/ssh/conn/default [post] +// @x-panel-log {"bodyKeys":["defaultConn"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"本地终端默认连接 [defaultConn]","formatEN":"update system default conn [defaultConn]"} +func (b *BaseApi) SetDefaultIsConn(c *gin.Context) { + var req dto.SSHDefaultConn + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + + if err := settingService.SetDefaultIsConn(req); err != nil { + helper.InternalServer(c, err) + return + } + helper.Success(c) +} + // @Tags System Setting // @Summary Check local conn info // @Success 200 {boolean} isOk diff --git a/agent/app/dto/setting.go b/agent/app/dto/setting.go index 9714002f7..ed594686f 100644 --- a/agent/app/dto/setting.go +++ b/agent/app/dto/setting.go @@ -62,6 +62,10 @@ type Clean struct { Size uint64 `json:"size"` } +type SSHDefaultConn struct { + WithReset bool `json:"withReset"` + DefaultConn string `json:"defaultConn"` +} type SSHConnData struct { Addr string `json:"addr" validate:"required"` Port uint `json:"port" validate:"required,number,max=65535,min=1"` diff --git a/agent/app/service/setting.go b/agent/app/service/setting.go index 91ccbba13..cc45f676e 100644 --- a/agent/app/service/setting.go +++ b/agent/app/service/setting.go @@ -9,6 +9,7 @@ import ( "github.com/1Panel-dev/1Panel/agent/app/model" "github.com/1Panel-dev/1Panel/agent/app/repo" "github.com/1Panel-dev/1Panel/agent/buserr" + "github.com/1Panel-dev/1Panel/agent/constant" "github.com/1Panel-dev/1Panel/agent/utils/encrypt" "github.com/1Panel-dev/1Panel/agent/utils/ssh" "github.com/jinzhu/copier" @@ -22,6 +23,7 @@ type ISettingService interface { TestConnByInfo(req dto.SSHConnData) bool SaveConnInfo(req dto.SSHConnData) error + SetDefaultIsConn(req dto.SSHDefaultConn) error GetSystemProxy() (*dto.SystemProxy, error) GetLocalConn() dto.SSHConnData GetSettingByKey(key string) string @@ -125,6 +127,15 @@ func (u *SettingService) SaveConnInfo(req dto.SSHConnData) error { return nil } +func (u *SettingService) SetDefaultIsConn(req dto.SSHDefaultConn) error { + if req.DefaultConn == constant.StatusDisable && req.WithReset { + if err := settingRepo.Update("LocalSSHConn", ""); err != nil { + return err + } + } + return settingRepo.Update("LocalSSHConnShow", req.DefaultConn) +} + func (u *SettingService) GetSystemProxy() (*dto.SystemProxy, error) { systemProxy := dto.SystemProxy{} systemProxy.Type, _ = settingRepo.GetValueByKey("ProxyType") @@ -138,6 +149,7 @@ func (u *SettingService) GetSystemProxy() (*dto.SystemProxy, error) { func (u *SettingService) GetLocalConn() dto.SSHConnData { var data dto.SSHConnData + data.LocalSSHConnShow, _ = settingRepo.GetValueByKey("LocalSSHConnShow") connItem, _ := settingRepo.GetValueByKey("LocalSSHConn") if len(connItem) == 0 { return data diff --git a/agent/router/ro_setting.go b/agent/router/ro_setting.go index 79ee7510a..fea8ede7e 100644 --- a/agent/router/ro_setting.go +++ b/agent/router/ro_setting.go @@ -32,6 +32,7 @@ func (s *SettingRouter) InitRouter(Router *gin.RouterGroup) { settingRouter.POST("/ssh/check", baseApi.CheckLocalConn) settingRouter.GET("/ssh/conn", baseApi.LoadLocalConn) + settingRouter.POST("/ssh/default", baseApi.SetDefaultIsConn) settingRouter.POST("/ssh", baseApi.SaveLocalConn) settingRouter.POST("/ssh/check/info", baseApi.CheckLocalConnByInfo) } diff --git a/frontend/src/api/modules/terminal.ts b/frontend/src/api/modules/terminal.ts index b42b3b2d7..306602838 100644 --- a/frontend/src/api/modules/terminal.ts +++ b/frontend/src/api/modules/terminal.ts @@ -13,6 +13,9 @@ export const getHostByID = (id: number) => { export const getHostTree = (params: Host.ReqSearch) => { return http.post>(`/core/hosts/tree`, params); }; +export const updateLocalConn = (param: { withReset: boolean; defaultConn: string }) => { + return http.post(`/settings/ssh/default`, param); +}; export const addHost = (params: Host.HostOperate) => { let request = deepCopy(params) as Host.HostOperate; if (request.password) { diff --git a/frontend/src/components/del-dialog/index.vue b/frontend/src/components/del-dialog/index.vue index 6e4d379b1..e19618e67 100644 --- a/frontend/src/components/del-dialog/index.vue +++ b/frontend/src/components/del-dialog/index.vue @@ -22,7 +22,7 @@ + + + +