Kaynağa Gözat

Add uninstall error judgment (#875)

link 2 yıl önce
ebeveyn
işleme
b331c484f5
5 değiştirilmiş dosya ile 15 ekleme ve 17 silme
  1. 0 12
      build/sysroot/usr/share/casaos/shell/helper.sh
  2. 1 0
      go.mod
  3. 2 0
      go.sum
  4. 8 1
      route/v1/samba.go
  5. 4 4
      service/connections.go

+ 0 - 12
build/sysroot/usr/share/casaos/shell/helper.sh

@@ -66,18 +66,6 @@ GetLocalJoinNetworks() {
   zerotier-cli listnetworks -j
 }
 
-#移除挂载点,删除已挂在的文件夹
-UMountPorintAndRemoveDir() {
-  DEVICE=$1
-  MOUNT_POINT=$(mount | grep ${DEVICE} | awk '{ print $3 }')
-  if [[ -z ${MOUNT_POINT} ]]; then
-    ${log} "Warning: ${DEVICE} is not mounted"
-  else
-    umount -lf ${DEVICE}
-    /bin/rmdir "${MOUNT_POINT}"
-  fi
-}
-
 #格式化fat32磁盘
 #param 需要格式化的目录 /dev/sda1
 #param 格式

+ 1 - 0
go.mod

@@ -29,6 +29,7 @@ require (
 	github.com/labstack/echo/v4 v4.10.0
 	github.com/maruel/natural v1.1.0
 	github.com/mholt/archiver/v3 v3.5.1
+	github.com/moby/sys/mount v0.3.3
 	github.com/moby/sys/mountinfo v0.6.2
 	github.com/patrickmn/go-cache v2.1.0+incompatible
 	github.com/pkg/errors v0.9.1

+ 2 - 0
go.sum

@@ -201,6 +201,8 @@ github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOj
 github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
 github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo=
 github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4=
+github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs=
+github.com/moby/sys/mount v0.3.3/go.mod h1:PBaEorSNTLG5t/+4EgukEQVlAvVEc6ZjTySwKdqp5K0=
 github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78=
 github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=

+ 8 - 1
route/v1/samba.go

@@ -19,7 +19,9 @@ import (
 	"regexp"
 	"strings"
 
+	"github.com/IceWhaleTech/CasaOS-Common/utils/logger"
 	"github.com/IceWhaleTech/CasaOS-Common/utils/systemctl"
+	"go.uber.org/zap"
 
 	"github.com/IceWhaleTech/CasaOS/model"
 	"github.com/IceWhaleTech/CasaOS/pkg/samba"
@@ -203,7 +205,12 @@ func DeleteSambaConnections(c *gin.Context) {
 		return
 	}
 	for _, v := range mountPointList {
-		service.MyService.Connections().UnmountSmaba(v.Path)
+		err := service.MyService.Connections().UnmountSmaba(v.Path)
+		if err != nil {
+			logger.Error("unmount smaba error", zap.Error(err), zap.Any("path", v.Path))
+			c.JSON(common_err.SERVICE_ERROR, model.Result{Success: common_err.SERVICE_ERROR, Message: common_err.GetMsg(common_err.SERVICE_ERROR), Data: err.Error()})
+			return
+		}
 	}
 	dir, _ := ioutil.ReadDir(connection.MountPoint)
 	if len(dir) == 0 {

+ 4 - 4
service/connections.go

@@ -15,6 +15,7 @@ import (
 	command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command"
 	"github.com/IceWhaleTech/CasaOS/service/model"
 	model2 "github.com/IceWhaleTech/CasaOS/service/model"
+	"github.com/moby/sys/mount"
 	"gorm.io/gorm"
 )
 
@@ -26,7 +27,7 @@ type ConnectionsService interface {
 	DeleteConnection(id string)
 	UpdateConnection(connection *model2.ConnectionsDBModel)
 	MountSmaba(username, host, directory, port, mountPoint, password string) string
-	UnmountSmaba(mountPoint string) string
+	UnmountSmaba(mountPoint string) error
 }
 
 type connectionsStruct struct {
@@ -59,9 +60,8 @@ func (s *connectionsStruct) MountSmaba(username, host, directory, port, mountPoi
 	str := command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;MountCIFS " + username + " " + host + " " + directory + " " + port + " " + mountPoint + " " + password)
 	return str
 }
-func (s *connectionsStruct) UnmountSmaba(mountPoint string) string {
-	str := command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;UMountPorintAndRemoveDir " + mountPoint)
-	return str
+func (s *connectionsStruct) UnmountSmaba(mountPoint string) error {
+	return mount.Unmount(mountPoint)
 }
 
 func NewConnectionsService(db *gorm.DB) ConnectionsService {