add proxyProtocol support for dialer

This commit is contained in:
ginuerzh
2025-08-03 15:36:29 +08:00
parent f71351f5ef
commit ad5cf6fd61
23 changed files with 260 additions and 48 deletions
+9 -1
View File
@@ -3,12 +3,14 @@ package sshd
import (
"context"
"net"
"os"
"sync"
"time"
"os"
"github.com/go-gost/core/dialer"
md "github.com/go-gost/core/metadata"
ctxvalue "github.com/go-gost/x/ctx"
"github.com/go-gost/x/internal/net/proxyproto"
ssh_util "github.com/go-gost/x/internal/util/ssh"
"github.com/go-gost/x/registry"
"golang.org/x/crypto/ssh"
@@ -76,6 +78,12 @@ func (d *sshdDialer) Dial(ctx context.Context, addr string, opts ...dialer.DialO
defer conn.SetDeadline(time.Time{})
}
conn = proxyproto.WrapClientConn(
d.options.ProxyProtocol,
ctxvalue.SrcAddrFromContext(ctx),
ctxvalue.DstAddrFromContext(ctx),
conn)
session, err = d.initSession(ctx, addr, conn)
if err != nil {
conn.Close()