From af440eac5563644854ff33f72041e52d3fd1f47c Mon Sep 17 00:00:00 2001 From: link Date: Mon, 24 Apr 2023 11:24:22 +0800 Subject: [PATCH] Update samba (#1021) --- route/v1/samba.go | 34 ++++++++++++++++------------------ service/connections.go | 21 +++++++++++++++------ 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/route/v1/samba.go b/route/v1/samba.go index 80deb82..452f61d 100644 --- a/route/v1/samba.go +++ b/route/v1/samba.go @@ -16,7 +16,6 @@ import ( "net/http" "os" "path/filepath" - "regexp" "strings" "github.com/IceWhaleTech/CasaOS-Common/utils/logger" @@ -27,7 +26,6 @@ import ( "github.com/IceWhaleTech/CasaOS/pkg/samba" "github.com/IceWhaleTech/CasaOS/pkg/utils/common_err" "github.com/IceWhaleTech/CasaOS/pkg/utils/file" - "github.com/IceWhaleTech/CasaOS/pkg/utils/ip_helper" "github.com/IceWhaleTech/CasaOS/service" model2 "github.com/IceWhaleTech/CasaOS/service/model" "github.com/gin-gonic/gin" @@ -139,22 +137,22 @@ func PostSambaConnectionsCreate(c *gin.Context) { return } - if ok, _ := regexp.MatchString(`^[\w@#*.]{4,30}$`, connection.Password); !ok { - c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.CHARACTER_LIMIT, Message: common_err.GetMsg(common_err.CHARACTER_LIMIT)}) - return - } - if ok, _ := regexp.MatchString(`^[\w@#*.]{4,30}$`, connection.Username); !ok { - c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)}) - return - } - if !ip_helper.IsIPv4(connection.Host) && !ip_helper.IsIPv6(connection.Host) { - c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)}) - return - } - if ok, _ := regexp.MatchString("^[0-9]{1,6}$", connection.Port); !ok { - c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)}) - return - } + // if ok, _ := regexp.MatchString(`^[\w@#*.]{4,30}$`, connection.Password); !ok { + // c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.CHARACTER_LIMIT, Message: common_err.GetMsg(common_err.CHARACTER_LIMIT)}) + // return + // } + // if ok, _ := regexp.MatchString(`^[\w@#*.]{4,30}$`, connection.Username); !ok { + // c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)}) + // return + // } + // if !ip_helper.IsIPv4(connection.Host) && !ip_helper.IsIPv6(connection.Host) { + // c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)}) + // return + // } + // if ok, _ := regexp.MatchString("^[0-9]{1,6}$", connection.Port); !ok { + // c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)}) + // return + // } connection.Host = strings.Split(connection.Host, "/")[0] // check is exists diff --git a/service/connections.go b/service/connections.go index b304bc0..bc35c79 100644 --- a/service/connections.go +++ b/service/connections.go @@ -11,11 +11,12 @@ package service import ( - "github.com/IceWhaleTech/CasaOS/pkg/config" - command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command" + "fmt" + "github.com/IceWhaleTech/CasaOS/service/model" model2 "github.com/IceWhaleTech/CasaOS/service/model" "github.com/moby/sys/mount" + "golang.org/x/sys/unix" "gorm.io/gorm" ) @@ -26,7 +27,7 @@ type ConnectionsService interface { CreateConnection(connection *model2.ConnectionsDBModel) DeleteConnection(id string) UpdateConnection(connection *model2.ConnectionsDBModel) - MountSmaba(username, host, directory, port, mountPoint, password string) string + MountSmaba(username, host, directory, port, mountPoint, password string) error UnmountSmaba(mountPoint string) error } @@ -56,9 +57,17 @@ func (s *connectionsStruct) DeleteConnection(id string) { s.db.Where("id= ?", id).Delete(&model.ConnectionsDBModel{}) } -func (s *connectionsStruct) MountSmaba(username, host, directory, port, mountPoint, password string) string { - str := command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;MountCIFS " + username + " " + host + " " + directory + " " + port + " " + mountPoint + " " + password) - return str +func (s *connectionsStruct) MountSmaba(username, host, directory, port, mountPoint, password string) error { + err := unix.Mount( + fmt.Sprintf("//%s/%s", host, directory), + mountPoint, + "cifs", + unix.MS_NOATIME|unix.MS_NODEV|unix.MS_NOSUID, + fmt.Sprintf("username=%s,password=%s", username, password), + ) + return err + //str := command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;MountCIFS " + username + " " + host + " " + directory + " " + port + " " + mountPoint + " " + password) + //return str } func (s *connectionsStruct) UnmountSmaba(mountPoint string) error { return mount.Unmount(mountPoint)