diff --git a/agent/app/service/image_repo.go b/agent/app/service/image_repo.go
index 8e050a3d1..fca1925a8 100644
--- a/agent/app/service/image_repo.go
+++ b/agent/app/service/image_repo.go
@@ -263,7 +263,15 @@ func stopBeforeUpdateRepo() error {
if err := validateDockerConfig(); err != nil {
return err
}
- if err := controller.HandleRestart("docker"); err != nil {
+ dockerService, _ := controller.LoadServiceName("docker")
+ if len(dockerService) == 0 {
+ return errors.New("docker service not found")
+ }
+ client, err := controller.New()
+ if err != nil {
+ return err
+ }
+ if err := client.Operate("restart", dockerService); err != nil {
return fmt.Errorf("failed to restart Docker: %v", err)
}
ticker := time.NewTicker(3 * time.Second)
@@ -276,8 +284,8 @@ func stopBeforeUpdateRepo() error {
cancel()
return errors.New("the docker service cannot be restarted")
default:
- active, err := controller.CheckActive("docker")
- if active && err != nil {
+ active, _ := client.IsActive(dockerService)
+ if active {
global.LOG.Info("docker restart with new conf successful!")
return nil
}
diff --git a/agent/app/service/snapshot.go b/agent/app/service/snapshot.go
index 976ce4a7b..e178e1f7b 100644
--- a/agent/app/service/snapshot.go
+++ b/agent/app/service/snapshot.go
@@ -336,11 +336,26 @@ func loadPanelFile(fileOp fileUtils.FileOp) ([]dto.DataTree, error) {
Path: path.Join(global.Dir.DataDir, fileItem.Name()),
}
switch itemData.Label {
- case "agent", "runtime", "docker", "task", "geo", "secret", "uploads":
+ case "runtime", "docker", "task", "geo", "secret", "uploads":
itemData.IsDisable = true
case "clamav", "download":
panelPath := path.Join(global.Dir.DataDir, itemData.Label)
itemData.Children, _ = loadFile(panelPath, 3, fileOp)
+ case "agent":
+ panelPath := path.Join(global.Dir.DataDir, itemData.Label)
+ itemData.Children, _ = loadFile(panelPath, 3, fileOp)
+ itemData.IsCheck = false
+ for i := 0; i < len(itemData.Children); i++ {
+ if itemData.Children[i].Label != "package" {
+ itemData.Children[i].IsDisable = true
+ } else {
+ itemData.Size = -itemData.Children[i].Size
+ itemData.Children[i].IsCheck = false
+ for j := 0; j < len(itemData.Children[i].Children); j++ {
+ itemData.Children[i].Children[j].IsCheck = false
+ }
+ }
+ }
case "apps", "backup", "log", "db", "tmp":
continue
}
@@ -349,7 +364,7 @@ func loadPanelFile(fileOp fileUtils.FileOp) ([]dto.DataTree, error) {
if err != nil {
continue
}
- itemData.Size = uint64(sizeItem)
+ itemData.Size = uint64(int64(sizeItem) + int64(itemData.Size))
} else {
fileInfo, err := fileItem.Info()
if err != nil {
diff --git a/agent/utils/files/file_op.go b/agent/utils/files/file_op.go
index 5bd8aa48b..558ce9a01 100644
--- a/agent/utils/files/file_op.go
+++ b/agent/utils/files/file_op.go
@@ -478,7 +478,7 @@ func (f FileOp) CopyDir(src, dst string) error {
if err = f.Fs.MkdirAll(dstDir, srcInfo.Mode()); err != nil {
return err
}
- return cmd.RunDefaultBashCf(`cp -rf '%s' '%s'`, src, dst+"/")
+ return cmd.NewCommandMgr(cmd.WithIgnoreExist1()).RunBashCf(`cp -rf '%s' '%s'`, src, dst+"/")
}
func (f FileOp) CopyDirWithExclude(src, dst string, excludeNames []string) error {
@@ -491,7 +491,7 @@ func (f FileOp) CopyDirWithExclude(src, dst string, excludeNames []string) error
return err
}
if len(excludeNames) == 0 {
- return cmd.RunDefaultBashCf(`cp -rf '%s' '%s'`, src, dst+"/")
+ return cmd.NewCommandMgr(cmd.WithIgnoreExist1()).RunBashCf(`cp -rf '%s' '%s'`, src, dst+"/")
}
tmpFiles, err := os.ReadDir(src)
if err != nil {
@@ -524,7 +524,7 @@ func (f FileOp) CopyDirWithExclude(src, dst string, excludeNames []string) error
func (f FileOp) CopyFile(src, dst string) error {
dst = filepath.Clean(dst) + string(filepath.Separator)
- return cmd.RunDefaultBashCf(`cp -f '%s' '%s'`, src, dst+"/")
+ return cmd.NewCommandMgr(cmd.WithIgnoreExist1()).RunBashCf(`cp -f '%s' '%s'`, src, dst+"/")
}
func (f FileOp) GetDirSize(path string) (int64, error) {
diff --git a/frontend/src/views/terminal/setting/index.vue b/frontend/src/views/terminal/setting/index.vue
index aa79e7f9c..c764b7e4f 100644
--- a/frontend/src/views/terminal/setting/index.vue
+++ b/frontend/src/views/terminal/setting/index.vue
@@ -105,7 +105,7 @@
-
+
@@ -200,12 +200,25 @@ const changeShow = async () => {
title: i18n.global.t('terminal.defaultConn'),
names: [],
msg: i18n.global.t('terminal.defaultConnHelper', [op]),
- noMsg: false,
- successMsg: i18n.global.t('commons.msg.operationSuccess'),
- api: updateLocalConn,
- params: { withReset: resetConn.value, defaultConn: form.showDefaultConn ? 'Enable' : 'Disable' },
+ api: null,
+ params: {},
});
};
+const submitChangeShow = async () => {
+ loading.value = true;
+ await updateLocalConn({
+ withReset: resetConn.value,
+ defaultConn: form.showDefaultConn ? 'Enable' : 'Disable',
+ })
+ .then(() => {
+ loading.value = false;
+ loadConnShow();
+ MsgSuccess(i18n.global.t('commons.msg.operationSuccess'));
+ })
+ .finally(() => {
+ loading.value = false;
+ });
+};
const iniTerm = () => {
term.value = new Terminal({