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