1
This commit is contained in:
@@ -35,7 +35,6 @@ type Server struct {
|
||||
activeConns sync.WaitGroup // 活动连接计数
|
||||
upstreamDialer *UpstreamDialer // 上游代理拨号器
|
||||
shutdownTimeout time.Duration // 关闭超时时间
|
||||
directList *ProxyList // 直连域名管理器
|
||||
}
|
||||
|
||||
// NewServer 创建新的代理服务器实例
|
||||
@@ -56,7 +55,6 @@ func NewServer(config ServerConfig, upstreamConfig config.UpstreamConfig) *Serve
|
||||
done: make(chan struct{}),
|
||||
upstreamDialer: upstreamDialer,
|
||||
shutdownTimeout: 30 * time.Second,
|
||||
directList: NewProxyList("proxy.txt"),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -618,77 +616,22 @@ func (s *Server) dialTarget(addr string) (net.Conn, error) {
|
||||
log.Debugf("[PROXY] =====================================================")
|
||||
log.Debugf("[PROXY] 开始处理连接请求: %s", addr)
|
||||
|
||||
// 提取域名和端口
|
||||
host := addr
|
||||
port := ""
|
||||
if idx := strings.LastIndex(addr, ":"); idx != -1 {
|
||||
host = addr[:idx]
|
||||
port = addr[idx+1:]
|
||||
}
|
||||
|
||||
// 检查是否是IP地址
|
||||
if ip := net.ParseIP(host); ip != nil {
|
||||
log.Debugf("[PROXY] 目标是IP地址: %s", host)
|
||||
log.Debugf("[PROXY] - 端口: %s", port)
|
||||
// IP地址默认直连
|
||||
log.Debugf("[PROXY] IP地址默认使用直连")
|
||||
conn, err := net.Dial("tcp", addr)
|
||||
if err != nil {
|
||||
log.Errorf("[PROXY] 直接连接失败: %v", err)
|
||||
log.Debugf("[PROXY] =====================================================")
|
||||
return nil, err
|
||||
}
|
||||
log.Debugf("[PROXY] 直接连接成功")
|
||||
log.Debugf("[PROXY] 连接详情:")
|
||||
log.Debugf("[PROXY] - 本地地址: %s", conn.LocalAddr())
|
||||
log.Debugf("[PROXY] - 远程地址: %s", conn.RemoteAddr())
|
||||
log.Debugf("[PROXY] =====================================================")
|
||||
return conn, nil
|
||||
}
|
||||
|
||||
// 检查是否在代理列表中
|
||||
useProxy := s.directList.Match(host)
|
||||
log.Debugf("[PROXY] 域名检查:")
|
||||
log.Debugf("[PROXY] - 目标地址: %s", addr)
|
||||
log.Debugf("[PROXY] - 域名: %s", host)
|
||||
log.Debugf("[PROXY] - 端口: %s", port)
|
||||
log.Debugf("[PROXY] - 是否在代理列表: %v", useProxy)
|
||||
|
||||
if useProxy {
|
||||
// 使用代理连接
|
||||
log.Debugf("[PROXY] 使用代理连接:")
|
||||
log.Debugf("[PROXY] - 上游代理: %s", s.upstreamDialer.config.Server)
|
||||
log.Debugf("[PROXY] - 代理类型: %s", s.upstreamDialer.config.Type)
|
||||
conn, err := s.upstreamDialer.Dial("tcp", addr)
|
||||
if err != nil {
|
||||
log.Errorf("[PROXY] 代理连接失败: %v", err)
|
||||
log.Debugf("[PROXY] =====================================================")
|
||||
return nil, err
|
||||
}
|
||||
log.Debugf("[PROXY] 代理连接成功")
|
||||
log.Debugf("[PROXY] 连接详情:")
|
||||
log.Debugf("[PROXY] - 本地地址: %s", conn.LocalAddr())
|
||||
log.Debugf("[PROXY] - 远程地址: %s", conn.RemoteAddr())
|
||||
log.Debugf("[PROXY] - 连接方式: 代理")
|
||||
log.Debugf("[PROXY] - 判断依据: 域名在代理列表中")
|
||||
log.Debugf("[PROXY] =====================================================")
|
||||
return conn, nil
|
||||
}
|
||||
|
||||
// 不在代理列表中的域名直连
|
||||
log.Debugf("[PROXY] 使用直接连接")
|
||||
conn, err := net.Dial("tcp", addr)
|
||||
// 使用代理连接
|
||||
log.Debugf("[PROXY] 使用代理连接:")
|
||||
log.Debugf("[PROXY] - 上游代理: %s", s.upstreamDialer.config.Server)
|
||||
log.Debugf("[PROXY] - 代理类型: %s", s.upstreamDialer.config.Type)
|
||||
|
||||
conn, err := s.upstreamDialer.Dial("tcp", addr)
|
||||
if err != nil {
|
||||
log.Errorf("[PROXY] 直接连接失败: %v", err)
|
||||
log.Errorf("[PROXY] 代理连接失败: %v", err)
|
||||
log.Debugf("[PROXY] =====================================================")
|
||||
return nil, err
|
||||
}
|
||||
log.Debugf("[PROXY] 直接连接成功")
|
||||
|
||||
log.Debugf("[PROXY] 代理连接成功")
|
||||
log.Debugf("[PROXY] 连接详情:")
|
||||
log.Debugf("[PROXY] - 本地地址: %s", conn.LocalAddr())
|
||||
log.Debugf("[PROXY] - 远程地址: %s", conn.RemoteAddr())
|
||||
log.Debugf("[PROXY] - 连接方式: 直连")
|
||||
log.Debugf("[PROXY] - 判断依据: 域名不在代理列表中")
|
||||
log.Debugf("[PROXY] =====================================================")
|
||||
|
||||
return conn, nil
|
||||
|
||||
Reference in New Issue
Block a user