added proxy protocol

This commit is contained in:
ginuerzh
2022-09-08 21:31:11 +08:00
parent 54e1801e74
commit efd8838c18
22 changed files with 150 additions and 37 deletions

View File

@ -2,12 +2,14 @@ package grpc
import (
"net"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
pb "github.com/go-gost/x/internal/util/grpc/proto"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
@ -57,6 +59,7 @@ func (l *grpcListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
var opts []grpc.ServerOption
if !l.md.insecure {

View File

@ -6,12 +6,14 @@ import (
"net"
"net/http"
"net/http/httputil"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
"github.com/go-gost/x/registry"
@ -79,6 +81,7 @@ func (l *h2Listener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
if l.h2c {
l.server.Handler = h2c.NewHandler(

View File

@ -4,12 +4,14 @@ import (
"crypto/tls"
"net"
"net/http"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
limiter "github.com/go-gost/x/limiter/wrapper"
mdx "github.com/go-gost/x/metadata"
metrics "github.com/go-gost/x/metrics/wrapper"
@ -68,6 +70,7 @@ func (l *http2Listener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
ln = tls.NewListener(
ln,

View File

@ -3,12 +3,14 @@ package mtls
import (
"crypto/tls"
"net"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
"github.com/go-gost/x/registry"
@ -56,6 +58,7 @@ func (l *mtlsListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
l.Listener = tls.NewListener(ln, l.options.TLSConfig)
l.cqueue = make(chan net.Conn, l.md.backlog)

View File

@ -5,12 +5,14 @@ import (
"net"
"net/http"
"net/http/httputil"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
ws_util "github.com/go-gost/x/internal/util/ws"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
@ -98,6 +100,7 @@ func (l *mwsListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
if l.tlsEnabled {
ln = tls.NewListener(ln, l.options.TLSConfig)

View File

@ -2,6 +2,7 @@ package http
import (
"net"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
@ -11,6 +12,7 @@ import (
metrics "github.com/go-gost/x/metrics/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
"github.com/go-gost/x/registry"
)
@ -52,6 +54,7 @@ func (l *obfsListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
l.Listener = ln
return

View File

@ -2,12 +2,14 @@ package tls
import (
"net"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
"github.com/go-gost/x/registry"
@ -51,6 +53,7 @@ func (l *obfsListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
l.Listener = ln
return

View File

@ -3,12 +3,14 @@ package tcp
import (
"context"
"net"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
"github.com/go-gost/x/registry"
@ -59,6 +61,7 @@ func (l *redirectListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
l.ln = ln
return
}

View File

@ -10,6 +10,7 @@ import (
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
ssh_util "github.com/go-gost/x/internal/util/ssh"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
@ -59,6 +60,7 @@ func (l *sshListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
l.Listener = ln
config := &ssh.ServerConfig{

View File

@ -12,6 +12,7 @@ import (
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
ssh_util "github.com/go-gost/x/internal/util/ssh"
sshd_util "github.com/go-gost/x/internal/util/sshd"
limiter "github.com/go-gost/x/limiter/wrapper"
@ -68,6 +69,7 @@ func (l *sshdListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
l.Listener = ln
config := &ssh.ServerConfig{

View File

@ -2,12 +2,14 @@ package tcp
import (
"net"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
"github.com/go-gost/x/registry"
@ -49,9 +51,13 @@ func (l *tcpListener) Init(md md.Metadata) (err error) {
return
}
l.logger.Debugf("pp: %d", l.options.ProxyProtocol)
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
l.ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
l.ln = ln
return
}

View File

@ -3,12 +3,14 @@ package tls
import (
"crypto/tls"
"net"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
"github.com/go-gost/x/registry"
@ -52,6 +54,7 @@ func (l *tlsListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
l.ln = tls.NewListener(ln, l.options.TLSConfig)

View File

@ -5,12 +5,14 @@ import (
"net"
"net/http"
"net/http/httputil"
"time"
"github.com/go-gost/core/listener"
"github.com/go-gost/core/logger"
md "github.com/go-gost/core/metadata"
admission "github.com/go-gost/x/admission/wrapper"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/proxyproto"
ws_util "github.com/go-gost/x/internal/util/ws"
limiter "github.com/go-gost/x/limiter/wrapper"
metrics "github.com/go-gost/x/metrics/wrapper"
@ -93,6 +95,7 @@ func (l *wsListener) Init(md md.Metadata) (err error) {
ln = metrics.WrapListener(l.options.Service, ln)
ln = admission.WrapListener(l.options.Admission, ln)
ln = limiter.WrapListener(l.options.RateLimiter, ln)
ln = proxyproto.WrapListener(l.options.ProxyProtocol, ln, 10*time.Second)
if l.tlsEnabled {
ln = tls.NewListener(ln, l.options.TLSConfig)