You've already forked CasaOS
mirror of
https://github.com/IceWhaleTech/CasaOS.git
synced 2025-07-06 23:37:26 +02:00
76 lines
1.4 KiB
Go
76 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
|
||
|
}
|