aboutsummaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorBryan McNulty <bryanmcnulty@protonmail.com>2025-04-17 14:19:46 -0500
committerBryan McNulty <bryanmcnulty@protonmail.com>2025-04-17 14:19:46 -0500
commit4310ece7b67fe43944f143ad73bab82aa3662ce2 (patch)
tree7cdc3710a03faea9725970703c72a0c9fd1038d9 /pkg
parentc3c2dda30081cda7b0cab820b2e3e15e3c895b77 (diff)
downloadgoexec-4310ece7b67fe43944f143ad73bab82aa3662ce2.tar.gz
goexec-4310ece7b67fe43944f143ad73bab82aa3662ce2.zip
More logging options
Diffstat (limited to 'pkg')
-rw-r--r--pkg/goexec/smb/client.go151
1 files changed, 74 insertions, 77 deletions
diff --git a/pkg/goexec/smb/client.go b/pkg/goexec/smb/client.go
index 35fe5c8..3b41e39 100644
--- a/pkg/goexec/smb/client.go
+++ b/pkg/goexec/smb/client.go
@@ -1,115 +1,112 @@
package smb
import (
- "context"
- "errors"
- "fmt"
- "github.com/oiweiwei/go-smb2.fork"
- "github.com/rs/zerolog"
- "net"
+ "context"
+ "errors"
+ "fmt"
+ "github.com/oiweiwei/go-smb2.fork"
+ "github.com/rs/zerolog"
+ "net"
)
type Client struct {
- ClientOptions
+ ClientOptions
- conn net.Conn
- sess *smb2.Session
- mount *smb2.Share
+ conn net.Conn
+ sess *smb2.Session
+ mount *smb2.Share
}
func (c *Client) Session() (sess *smb2.Session) {
- return c.sess
+ return c.sess
}
func (c *Client) String() string {
- return ClientName
+ return ClientName
}
func (c *Client) Logger(ctx context.Context) zerolog.Logger {
- return zerolog.Ctx(ctx).With().Str("client", c.String()).Logger()
+ return zerolog.Ctx(ctx).With().Str("client", c.String()).Logger()
}
func (c *Client) Mount(ctx context.Context, share string) (err error) {
- if c.sess == nil {
- return errors.New("SMB session not initialized")
- }
+ if c.sess == nil {
+ return errors.New("SMB session not initialized")
+ }
- c.mount, err = c.sess.Mount(share)
- zerolog.Ctx(ctx).Debug().Str("share", share).Msg("Mounted SMB share")
+ c.mount, err = c.sess.Mount(share)
+ zerolog.Ctx(ctx).Debug().Str("share", share).Msg("Mounted SMB share")
- return
+ return
}
func (c *Client) Connect(ctx context.Context) (err error) {
- log := c.Logger(ctx)
- {
- if c.netDialer == nil {
- panic(fmt.Errorf("TCP dialer not initialized"))
- }
- if c.dialer == nil {
- panic(fmt.Errorf("%s dialer not initialized", c.String()))
- }
- }
+ log := c.Logger(ctx)
+ {
+ if c.netDialer == nil {
+ panic(fmt.Errorf("TCP dialer not initialized"))
+ }
+ if c.dialer == nil {
+ panic(fmt.Errorf("%s dialer not initialized", c.String()))
+ }
+ }
- // Establish TCP connection
- c.conn, err = c.netDialer.Dial("tcp", net.JoinHostPort(c.Host, fmt.Sprintf("%d", c.Port)))
+ // Establish TCP connection
+ c.conn, err = c.netDialer.Dial("tcp", net.JoinHostPort(c.Host, fmt.Sprintf("%d", c.Port)))
- if err != nil {
- return err
- }
+ if err != nil {
+ return err
+ }
- log = log.With().Str("address", c.conn.RemoteAddr().String()).Logger()
- log.Debug().Msgf("Connected to %s server", c.String())
+ log = log.With().Str("address", c.conn.RemoteAddr().String()).Logger()
+ log.Debug().Msgf("Connected to %s server", c.String())
- // Open SMB session
- c.sess, err = c.dialer.DialContext(ctx, c.conn)
+ // Open SMB session
+ c.sess, err = c.dialer.DialContext(ctx, c.conn)
- if err != nil {
- log.Error().Err(err).Msgf("Failed to open %s session", c.String())
- return fmt.Errorf("dial %s: %w", c.String(), err)
- }
+ if err != nil {
+ log.Error().Err(err).Msgf("Failed to open %s session", c.String())
+ return fmt.Errorf("dial %s: %w", c.String(), err)
+ }
- log.Debug().Msgf("Opened %s session", c.String())
+ log.Debug().Msgf("Opened %s session", c.String())
- return
+ return
}
func (c *Client) Close(ctx context.Context) (err error) {
- log := c.Logger(ctx)
-
- // Close TCP connection - Not needed?
- /*
- if c.conn != nil {
- defer func() {
- if err = c.conn.Close(); err != nil {
- log.Debug().Err(err).Msgf("Failed to close %s connection", c.String())
- }
- log.Debug().Msgf("Closed %s connection", c.String())
- }()
- }
- */
-
- // Close SMB session
- if c.sess != nil {
- defer func() {
- if err = c.sess.Logoff(); err != nil {
- log.Debug().Err(err).Msgf("Failed to discard %s session", c.String())
- }
- log.Debug().Msgf("Discarded %s session", c.String())
- }()
- }
-
- // Unmount SMB share
- if c.mount != nil {
- defer func() {
- if err = c.mount.Umount(); err != nil {
- log.Debug().Err(err).Msg("Failed to unmount share")
- }
- log.Debug().Msg("Unmounted file share")
- }()
- }
- return
+ log := c.Logger(ctx)
+
+ // Close SMB session
+ if c.sess != nil {
+ defer func() {
+ if err = c.sess.Logoff(); err != nil {
+ log.Debug().Err(err).Msgf("Failed to discard SMB session")
+ }
+ log.Debug().Msgf("Discarded SMB session")
+ }()
+
+ } else if c.conn != nil {
+
+ defer func() {
+ if err = c.conn.Close(); err != nil {
+ log.Debug().Err(err).Msgf("Failed to disconnect SMB client")
+ }
+ log.Debug().Msgf("Disconnected SMB session")
+ }()
+ }
+
+ // Unmount SMB share
+ if c.mount != nil {
+ defer func() {
+ if err = c.mount.Umount(); err != nil {
+ log.Debug().Err(err).Msg("Failed to unmount share")
+ }
+ log.Debug().Msg("Unmounted file share")
+ }()
+ }
+ return
}