diff options
author | Bryan McNulty <bryanmcnulty@protonmail.com> | 2025-04-17 14:19:46 -0500 |
---|---|---|
committer | Bryan McNulty <bryanmcnulty@protonmail.com> | 2025-04-17 14:19:46 -0500 |
commit | 4310ece7b67fe43944f143ad73bab82aa3662ce2 (patch) | |
tree | 7cdc3710a03faea9725970703c72a0c9fd1038d9 /pkg | |
parent | c3c2dda30081cda7b0cab820b2e3e15e3c895b77 (diff) | |
download | goexec-4310ece7b67fe43944f143ad73bab82aa3662ce2.tar.gz goexec-4310ece7b67fe43944f143ad73bab82aa3662ce2.zip |
More logging options
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/goexec/smb/client.go | 151 |
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 } |