diff --git a/build/sysroot/usr/share/casaos/shell/helper.sh b/build/sysroot/usr/share/casaos/shell/helper.sh index 9b32f8b..925ece1 100644 --- a/build/sysroot/usr/share/casaos/shell/helper.sh +++ b/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 格式 diff --git a/go.mod b/go.mod index 927e2fb..dba5b7c 100644 --- a/go.mod +++ b/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 diff --git a/go.sum b/go.sum index 6ab4765..9843af1 100644 --- a/go.sum +++ b/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= diff --git a/route/v1/samba.go b/route/v1/samba.go index 30cfb81..750b678 100644 --- a/route/v1/samba.go +++ b/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 { diff --git a/service/connections.go b/service/connections.go index f9fe135..b304bc0 100644 --- a/service/connections.go +++ b/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 {