优化错误处理,替换 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

@@ -4,6 +4,7 @@ import (
"bufio"
"context"
"encoding/binary"
"errors"
"fmt"
"io"
"log/slog"
@@ -12,8 +13,6 @@ import (
"proxy-server/server/fwd/auth"
"proxy-server/server/fwd/core"
"slices"
"github.com/pkg/errors"
)
const (
@@ -63,18 +62,18 @@ func Process(ctx context.Context, conn net.Conn) (*core.Conn, error) {
// 认证
authCtx, err := authenticate(ctx, reader, conn)
if err != nil {
return nil, errors.Wrap(err, "认证失败")
return nil, fmt.Errorf("认证失败: %w", err)
}
// 处理连接请求
request, err := request(ctx, reader, conn)
if err != nil {
return nil, errors.Wrap(err, "处理连接请求失败")
return nil, fmt.Errorf("处理连接请求失败: %w", err)
}
// 代理连接
if request.Command != ConnectCommand {
return nil, errors.New("不支持的连接指令")
return nil, fmt.Errorf("不支持的连接指令: %d", request.Command)
}
// 响应成功
@@ -127,56 +126,56 @@ func authenticate(ctx context.Context, reader *bufio.Reader, conn net.Conn) (*co
if slices.Contains(methods, UserPassAuth) {
_, err := conn.Write([]byte{Version, byte(UserPassAuth)})
if err != nil {
return nil, errors.Wrap(err, "响应认证方式失败")
return nil, fmt.Errorf("响应认证方式失败: %w", err)
}
// 检查认证版本
slog.Debug("验证认证版本")
v, err := utils.ReadByte(reader)
if err != nil {
return nil, errors.Wrap(err, "读取版本号失败")
return nil, fmt.Errorf("读取版本号失败: %w", err)
}
if v != AuthVersion {
_, err := conn.Write([]byte{Version, AuthFailure})
if err != nil {
return nil, errors.Wrap(err, "响应认证失败")
return nil, fmt.Errorf("响应认证失败: %w", err)
}
return nil, errors.New("认证版本参数不正确")
return nil, fmt.Errorf("认证版本参数不正确: %w", err)
}
// 读取账号
slog.Debug("验证用户账号")
uLen, err := utils.ReadByte(reader)
if err != nil {
return nil, errors.Wrap(err, "读取用户名长度失败")
return nil, fmt.Errorf("读取用户名长度失败: %w", err)
}
usernameBuf, err := utils.ReadBuffer(reader, int(uLen))
if err != nil {
return nil, errors.Wrap(err, "读取用户名失败")
return nil, fmt.Errorf("读取用户名失败: %w", err)
}
username := string(usernameBuf)
// 读取密码
pLen, err := utils.ReadByte(reader)
if err != nil {
return nil, errors.Wrap(err, "读取密码长度失败")
return nil, fmt.Errorf("读取密码长度失败: %w", err)
}
passwordBuf, err := utils.ReadBuffer(reader, int(pLen))
if err != nil {
return nil, errors.Wrap(err, "读取密码失败")
return nil, fmt.Errorf("读取密码失败: %w", err)
}
password := string(passwordBuf)
// 检查权限
authContext, err := auth.CheckPass(conn, auth.Socks5, username, password)
if err != nil {
return nil, errors.Wrap(err, "权限检查失败")
return nil, fmt.Errorf("权限检查失败: %w", err)
}
// 响应认证成功
_, err = conn.Write([]byte{AuthVersion, AuthSuccess})
if err != nil {
return nil, errors.Wrap(err, "响应认证成功失败")
return nil, fmt.Errorf("响应认证成功失败: %w", err)
}
return authContext, nil
@@ -186,12 +185,12 @@ func authenticate(ctx context.Context, reader *bufio.Reader, conn net.Conn) (*co
if slices.Contains(methods, NoAuth) {
_, err = conn.Write([]byte{Version, NoAuth})
if err != nil {
return nil, errors.Wrap(err, "响应认证方式失败")
return nil, fmt.Errorf("响应认证方式失败: %w", err)
}
authCtx, err := auth.CheckIp(conn, auth.Socks5)
if err != nil {
return nil, errors.Wrap(err, "权限检查失败")
return nil, fmt.Errorf("权限检查失败: %w", err)
}
return authCtx, nil