优化错误处理,替换 errors.Wrap 为 fmt.Errorf
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user