package bridge

import (
	
	
	
	
	

	
)

// OpenSmbConnection creates a new smb connection session
func (, ,  string) (*smb2.Session, error) {
	 := net.Dialer{Timeout: time.Second * 5}
	,  := .Dial("tcp", +":445")
	if  != nil {
		return nil, 
	}

	 := &smb2.Dialer{
		Initiator: &smb2.NTLMInitiator{
			User:     ,
			Password: ,
		},
	}

	,  := .Dial()
	if  != nil {
		return nil, 
	}
	return , nil
}

// SmbPutFile uploads file from local path to remote path
func ( *Session) (, ,  string) error {
	if .SMB == nil {
		return errors.New("smb connection does not exist")
	}

	,  := .SMB.Mount( + "$")
	if  != nil {
		return 
	}
	defer .Umount()

	,  := .Create()
	if  != nil {
		return 
	}
	defer .Close()

	,  := os.Open()
	if  != nil {
		return 
	}
	defer .Close()

	_,  = io.Copy(, )
	if  != nil {
		return 
	}

	return nil
}

// SmbGetFile downloads file from remote path to local path
func ( *Session) (, ,  string) error {
	if .SMB == nil {
		return errors.New("smb connection does not exist")
	}

	,  := .SMB.Mount( + "$")
	if  != nil {
		return 
	}
	defer .Umount()

	,  := .Open()
	if  != nil {
		return 
	}
	defer .Close()

	_,  = os.Stat()
	if os.IsNotExist() {
		_,  = os.Create()
		if  != nil {
			return 
		}
	}

	,  := os.OpenFile(, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
	if  != nil {
		return 
	}
	defer .Close()

	_,  = io.Copy(, )
	if  != nil {
		return 
	}

	return nil
}