cee34ec1c2
* initial completion of the sharing function * Adjusting multi-partition disk mounts * Add file sharing function * update usb auto mount shell * update samba config * add umount disk function * update change log * update usb auto mount \ * update usb auto mount * Update periodical.go
75 lines
1.4 KiB
Go
75 lines
1.4 KiB
Go
/*
|
|
* @Author: LinkLeong link@icewhale.org
|
|
* @Date: 2022-07-27 10:35:29
|
|
* @LastEditors: LinkLeong
|
|
* @LastEditTime: 2022-08-01 13:56:44
|
|
* @FilePath: /CasaOS/pkg/samba/smaba.go
|
|
* @Description:
|
|
* @Website: https://www.casaos.io
|
|
* Copyright (c) 2022 by icewhale, All Rights Reserved.
|
|
*/
|
|
package samba
|
|
|
|
import (
|
|
"errors"
|
|
"net"
|
|
|
|
"github.com/hirochachacha/go-smb2"
|
|
)
|
|
|
|
func ConnectSambaService(host, port, username, password, directory string) error {
|
|
conn, err := net.Dial("tcp", host+":"+port)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer conn.Close()
|
|
d := &smb2.Dialer{
|
|
Initiator: &smb2.NTLMInitiator{
|
|
User: username,
|
|
Password: password,
|
|
},
|
|
}
|
|
|
|
s, err := d.Dial(conn)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer s.Logoff()
|
|
names, err := s.ListSharenames()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, name := range names {
|
|
if name == directory {
|
|
return nil
|
|
}
|
|
}
|
|
return errors.New("directory not found")
|
|
}
|
|
|
|
//get share name list
|
|
func GetSambaSharesList(host, port, username, password string) ([]string, error) {
|
|
conn, err := net.Dial("tcp", host+":"+port)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer conn.Close()
|
|
d := &smb2.Dialer{
|
|
Initiator: &smb2.NTLMInitiator{
|
|
User: username,
|
|
Password: password,
|
|
},
|
|
}
|
|
|
|
s, err := d.Dial(conn)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer s.Logoff()
|
|
names, err := s.ListSharenames()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return names, err
|
|
}
|