/* * @Author: LinkLeong link@icewhale.org * @Date: 2022-07-26 18:13:22 * @LastEditors: LinkLeong * @LastEditTime: 2022-08-04 20:10:31 * @FilePath: /CasaOS/service/connections.go * @Description: * @Website: https://www.casaos.io * Copyright (c) 2022 by icewhale, All Rights Reserved. */ package service import ( "github.com/IceWhaleTech/CasaOS/pkg/config" 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" ) type ConnectionsService interface { GetConnectionsList() (connections []model2.ConnectionsDBModel) GetConnectionByHost(host string) (connections []model2.ConnectionsDBModel) GetConnectionByID(id string) (connections model2.ConnectionsDBModel) CreateConnection(connection *model2.ConnectionsDBModel) DeleteConnection(id string) UpdateConnection(connection *model2.ConnectionsDBModel) MountSmaba(username, host, directory, port, mountPoint, password string) string UnmountSmaba(mountPoint string) error } type connectionsStruct struct { db *gorm.DB } func (s *connectionsStruct) GetConnectionByHost(host string) (connections []model2.ConnectionsDBModel) { s.db.Select("username,host,status,id").Where("host = ?", host).Find(&connections) return } func (s *connectionsStruct) GetConnectionByID(id string) (connections model2.ConnectionsDBModel) { s.db.Select("username,password,host,status,id,directories,mount_point,port").Where("id = ?", id).First(&connections) return } func (s *connectionsStruct) GetConnectionsList() (connections []model2.ConnectionsDBModel) { s.db.Select("username,host,port,status,id,mount_point").Find(&connections) return } func (s *connectionsStruct) CreateConnection(connection *model2.ConnectionsDBModel) { s.db.Create(connection) } func (s *connectionsStruct) UpdateConnection(connection *model2.ConnectionsDBModel) { s.db.Save(connection) } 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) UnmountSmaba(mountPoint string) error { return mount.Unmount(mountPoint) } func NewConnectionsService(db *gorm.DB) ConnectionsService { return &connectionsStruct{db: db} }