Skip to content

Commit fe4483e

Browse files
authored
fix error type with fmt.Errorf format (#1)
1 parent 6abfdce commit fe4483e

2 files changed

Lines changed: 29 additions & 11 deletions

File tree

keycert_pool.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"github.com/josexy/mitmpgo/internal/cert"
1212
)
1313

14-
var errNoPriKey = errors.New("no private key available")
14+
var errNoPriKey = errors.New("no available private key")
1515

1616
type priKeyPool struct {
1717
rand *rand.Rand

mitm.go

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"crypto/tls"
77
"crypto/x509"
88
"errors"
9+
"fmt"
910
"io"
1011
"net"
1112
"net/http"
@@ -143,7 +144,7 @@ func NewMitmProxyHandler(opt ...Option) (MitmProxyHandler, error) {
143144
var err error
144145
opts.caCert, err = cert.LoadCACertificate(opts.caCertPath, opts.caKeyPath)
145146
if err != nil {
146-
return nil, err
147+
return nil, fmt.Errorf("failed to load ca cert: %s", err)
147148
}
148149
if len(opts.rootCAs) > 0 {
149150
opts.rootCACertPool, err = x509.SystemCertPool()
@@ -153,7 +154,7 @@ func NewMitmProxyHandler(opt ...Option) (MitmProxyHandler, error) {
153154
for _, path := range opts.rootCAs {
154155
ca, err := os.ReadFile(path)
155156
if err != nil {
156-
return nil, err
157+
return nil, fmt.Errorf("failed to read root ca file: %s", err)
157158
}
158159
if ok := opts.rootCACertPool.AppendCertsFromPEM(ca); !ok {
159160
return nil, errors.New("failed to append ca file to cert pool")
@@ -162,7 +163,7 @@ func NewMitmProxyHandler(opt ...Option) (MitmProxyHandler, error) {
162163
}
163164
proxyURL, err := parseProxyFrom(opts.disableProxy, opts.proxy)
164165
if err != nil {
165-
return nil, err
166+
return nil, fmt.Errorf("failed to parse proxy url: %s", err)
166167
}
167168

168169
dialFn := func(ctx context.Context, network, addr string) (net.Conn, error) {
@@ -274,7 +275,7 @@ func (r *mitmProxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
274275
err = ErrInvalidProxyRequest
275276
return
276277
}
277-
err = r.Serve(AppendToRequestContext(req.Context(), hostport, request), conn)
278+
_ = r.Serve(AppendToRequestContext(req.Context(), hostport, request), conn)
278279
}
279280

280281
func (r *mitmProxyHandler) ServeSOCKS5(ctx context.Context, conn net.Conn) error {
@@ -283,7 +284,7 @@ func (r *mitmProxyHandler) ServeSOCKS5(ctx context.Context, conn net.Conn) error
283284
defer func() {
284285
if err != nil {
285286
r.handleError(ErrorContext{
286-
RemoteAddr: conn.RemoteAddr().String(),
287+
RemoteAddr: remoteAddrOrDefault(conn.RemoteAddr()),
287288
Hostport: hostport,
288289
Error: err,
289290
})
@@ -295,16 +296,26 @@ func (r *mitmProxyHandler) ServeSOCKS5(ctx context.Context, conn net.Conn) error
295296
if hostport, err = r.handleSocks5Request(ctx, conn); err != nil {
296297
return err
297298
}
298-
err = r.Serve(AppendToRequestContext(ctx, hostport, nil), conn)
299-
return err
299+
retErr := r.Serve(AppendToRequestContext(ctx, hostport, nil), conn)
300+
return retErr
300301
}
301302

302-
func (r *mitmProxyHandler) Serve(ctx context.Context, conn net.Conn) error {
303+
func (r *mitmProxyHandler) Serve(ctx context.Context, conn net.Conn) (err error) {
303304
reqCtx, ok := FromRequestContext(ctx)
304305
if !ok {
305306
return ErrRequestContextMissing
306307
}
307308

309+
defer func() {
310+
if err != nil {
311+
r.handleError(ErrorContext{
312+
RemoteAddr: remoteAddrOrDefault(conn.RemoteAddr()),
313+
Hostport: reqCtx.Hostport,
314+
Error: err,
315+
})
316+
}
317+
}()
318+
308319
nowTs := time.Now()
309320

310321
if r.shouldPassthroughRequest(reqCtx.Hostport) {
@@ -482,7 +493,7 @@ func (r *mitmProxyHandler) handleTunnelRequest(ctx context.Context, conn net.Con
482493
bufConn := newBufConn(conn)
483494
data, err = bufConn.Peek(6)
484495
if err != nil {
485-
return err
496+
return fmt.Errorf("short buffer to peek: %s", err)
486497
}
487498
conn = bufConn
488499
}
@@ -531,7 +542,7 @@ func (r *mitmProxyHandler) handleTunnelRequest(ctx context.Context, conn net.Con
531542
default:
532543
// tls handshake failed if GetConfigForClient() failed
533544
}
534-
return err
545+
return fmt.Errorf("tls server handshake failed: %s", err)
535546
}
536547
// wait for tls handshake
537548
dstConn = <-tlsConnCh
@@ -833,3 +844,10 @@ func getAddrPortFromConn(conn net.Conn) (addrport netip.AddrPort) {
833844
}
834845
return
835846
}
847+
848+
func remoteAddrOrDefault(addr net.Addr) string {
849+
if addr == nil {
850+
return ""
851+
}
852+
return addr.String()
853+
}

0 commit comments

Comments
 (0)