优化错误处理,替换 errors.Wrap 为 fmt.Errorf

This commit is contained in:
2025-05-15 09:53:23 +08:00
parent 75569d2d6d
commit 8b7dc9e4ff
11 changed files with 80 additions and 92 deletions

View File

@@ -3,13 +3,14 @@ package fwd
import (
"bufio"
"encoding/binary"
"fmt"
"io"
"log/slog"
"proxy-server/pkg/utils"
"proxy-server/server/fwd/core"
"strings"
"github.com/pkg/errors"
"errors"
)
func analysisAndLog(conn *core.Conn, reader io.Reader) error {
@@ -17,7 +18,7 @@ func analysisAndLog(conn *core.Conn, reader io.Reader) error {
domain, proto, err := sniffing(buf)
if err != nil {
err = errors.Wrap(err, "analysis sniffing error")
err = fmt.Errorf("sniffing error: %w", err)
} else {
slog.Debug(
"用户访问记录",
@@ -39,7 +40,7 @@ func analysisAndLog(conn *core.Conn, reader io.Reader) error {
func sniffing(reader *bufio.Reader) (string, string, error) {
peek, err := reader.Peek(8)
if err != nil {
return "", "", errors.Wrap(err, "sniffing peek error")
return "", "", fmt.Errorf("sniffing peek error: %w", err)
}
method, ok := isHttp(peek)
@@ -126,7 +127,7 @@ func analysisHttp(reader *bufio.Reader) (string, error) {
// reade top
top, err := httpReadLine(reader)
if err != nil {
return "", errors.Wrap(err, "analysis http read top error")
return "", fmt.Errorf("http read top error: %w", err)
}
// read header
@@ -153,7 +154,7 @@ func httpReadLine(reader *bufio.Reader) (line string, err error) {
for {
line, prefix, err := reader.ReadLine()
if err != nil {
return "", errors.Wrap(err, "analysis http read line error")
return "", fmt.Errorf("http read line error: %w", err)
}
lineStr.Write(line)
if !prefix {
@@ -168,13 +169,13 @@ func analysisTls(reader *bufio.Reader) (string, error) {
// tls record
_, err := utils.ReadBuffer(reader, 5)
if err != nil {
return "", errors.Wrap(err, "analysis https read head error")
return "", fmt.Errorf("https read head error: %w", err)
}
// tls type
hsType, err := reader.ReadByte()
if err != nil {
return "", errors.Wrap(err, "analysis https read hsType error")
return "", fmt.Errorf("https read hsType error: %w", err)
}
switch hsType {
@@ -183,59 +184,59 @@ func analysisTls(reader *bufio.Reader) (string, error) {
// length
_, err = utils.ReadBuffer(reader, 3)
if err != nil {
return "", errors.Wrap(err, "analysis https read tls length error")
return "", fmt.Errorf("https read tls length error: %w", err)
}
// version
_, err = utils.ReadBuffer(reader, 2)
if err != nil {
return "", errors.Wrap(err, "analysis https read version error")
return "", fmt.Errorf("https read version error: %w", err)
}
// random
_, err = utils.ReadBuffer(reader, 32)
if err != nil {
return "", errors.Wrap(err, "analysis https read random error")
return "", fmt.Errorf("https read random error: %w", err)
}
// session id length
sessionIdLen, err := reader.ReadByte()
if err != nil {
return "", errors.Wrap(err, "analysis https read sessionIdLen error")
return "", fmt.Errorf("https read sessionIdLen error: %w", err)
}
// session id
_, err = utils.ReadBuffer(reader, int(sessionIdLen))
if err != nil {
return "", errors.Wrap(err, "analysis https read sessionId error")
return "", fmt.Errorf("https read sessionId error: %w", err)
}
// cipher suites length
cLenBuf, err := utils.ReadBuffer(reader, 2)
if err != nil {
return "", errors.Wrap(err, "analysis https read cLen error")
return "", fmt.Errorf("https read cLen error: %w", err)
}
cLen := binary.BigEndian.Uint16(cLenBuf)
// cipher suites
_, err = utils.ReadBuffer(reader, int(cLen))
if err != nil {
return "", errors.Wrap(err, "analysis https read c error")
return "", fmt.Errorf("https read c error: %w", err)
}
// compression methods length
cmLen, err := reader.ReadByte()
if err != nil {
return "", errors.Wrap(err, "analysis https read cmLen error")
return "", fmt.Errorf("https read cmLen error: %w", err)
}
// compression methods
_, err = utils.ReadBuffer(reader, int(cmLen))
if err != nil {
return "", errors.Wrap(err, "analysis https read cm error")
return "", fmt.Errorf("https read cm error: %w", err)
}
// extensions length
eLenBuf, err := utils.ReadBuffer(reader, 2)
if err != nil {
return "", errors.Wrap(err, "analysis https read eLen error")
return "", fmt.Errorf("https read eLen error: %w", err)
}
eLen := binary.BigEndian.Uint16(eLenBuf)
@@ -247,14 +248,14 @@ func analysisTls(reader *bufio.Reader) (string, error) {
// extension type
eTypeBuf, err := utils.ReadBuffer(reader, 2)
if err != nil {
return "", errors.Wrap(err, "analysis https read extension type error")
return "", fmt.Errorf("https read extension type error: %w", err)
}
eType := binary.BigEndian.Uint16(eTypeBuf)
// extension length
eLenBuf, err := utils.ReadBuffer(reader, 2)
if err != nil {
return "", errors.Wrap(err, "analysis https read extension length error")
return "", fmt.Errorf("https read extension length error: %w", err)
}
eLen := binary.BigEndian.Uint16(eLenBuf)
@@ -263,23 +264,23 @@ func analysisTls(reader *bufio.Reader) (string, error) {
// server name list length
_, err = utils.ReadBuffer(reader, 2)
if err != nil {
return "", errors.Wrap(err, "analysis https read server name list length error")
return "", fmt.Errorf("https read server name list length error: %w", err)
}
// server name type
_, err = reader.ReadByte()
if err != nil {
return "", errors.Wrap(err, "analysis https read server name type error")
return "", fmt.Errorf("https read server name type error: %w", err)
}
// server name length
sLenBuf, err := utils.ReadBuffer(reader, 2)
if err != nil {
return "", errors.Wrap(err, "analysis https read server name length error")
return "", fmt.Errorf("https read server name length error: %w", err)
}
sLen := binary.BigEndian.Uint16(sLenBuf)
// server name
bytes, err := utils.ReadBuffer(reader, int(sLen))
if err != nil {
return "", errors.Wrap(err, "analysis https read server name error")
return "", fmt.Errorf("https read server name error: %w", err)
}
host = string(bytes)
@@ -289,7 +290,7 @@ func analysisTls(reader *bufio.Reader) (string, error) {
// other extension
_, err = utils.ReadBuffer(reader, int(eLen))
if err != nil {
return "", errors.Wrap(err, "analysis https read extension error")
return "", fmt.Errorf("https read extension error: %w", err)
}
}
i += 4 + int(eLen)