添加 HTTP 代理连接处理逻辑

This commit is contained in:
2025-03-01 18:06:04 +08:00
parent 76139d28c4
commit d8c8b22123
2 changed files with 63 additions and 0 deletions

View File

@@ -124,6 +124,8 @@ func (s *Server) acceptSocks(ls net.Listener) error {
conn, err := socks.Process(s.ctx, conn)
if err != nil {
slog.Error("处理 socks 连接失败", "err", err)
utils.Close(conn)
return
}
select {
case <-s.ctx.Done():

View File

@@ -1 +1,62 @@
package http
import (
"bufio"
"context"
"net"
"net/textproto"
"proxy-server/server/fwd/core"
"strings"
"github.com/pkg/errors"
)
type Request struct {
auth *core.AuthContext
dest *core.FwdAddr
}
func Process(ctx context.Context, conn net.Conn) (*core.Conn, error) {
reader := bufio.NewReader(conn)
textReader := textproto.NewReader(reader)
// 首行
line, err := textReader.ReadLine()
if err != nil {
return nil, err
}
parts := strings.Split(line, " ")
if len(parts) != 3 {
return nil, errors.New("invalid http request")
}
var req Request
if parts[0] == "CONNECT" {
req, err = processHttps(ctx, textReader)
if err != nil {
return nil, err
}
} else {
req, err = processHttp(ctx, textReader)
if err != nil {
return nil, err
}
}
return &core.Conn{
Conn: conn,
Reader: reader,
Tag: conn.RemoteAddr().String() + "_" + conn.LocalAddr().String(),
Protocol: "http",
Dest: req.dest,
Auth: req.auth,
}, nil
}
func processHttps(ctx context.Context, reader *textproto.Reader) (Request, error) {
panic("not implemented")
}
func processHttp(ctx context.Context, reader *textproto.Reader) (Request, error) {
panic("not implemented")
}