Add REALITY support to H2 server

Now you are able to configure REALITY H2 server directly
Before: REALITY VLESS fallbacks -> H2C inbound
This commit is contained in:
RPRX 2023-02-27 16:20:19 +00:00 committed by GitHub
parent c38179a67f
commit 9401d65ef1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 5 deletions

View file

@ -7,6 +7,7 @@ import (
"strings"
"time"
goreality "github.com/xtls/reality"
"github.com/xtls/xray-core/common"
"github.com/xtls/xray-core/common/net"
"github.com/xtls/xray-core/common/net/cnc"
@ -15,6 +16,7 @@ import (
"github.com/xtls/xray-core/common/session"
"github.com/xtls/xray-core/common/signal/done"
"github.com/xtls/xray-core/transport/internet"
"github.com/xtls/xray-core/transport/internet/reality"
"github.com/xtls/xray-core/transport/internet/tls"
"golang.org/x/net/http2"
"golang.org/x/net/http2/h2c"
@ -187,14 +189,17 @@ func Listen(ctx context.Context, address net.Address, port net.Port, streamSetti
}
if config == nil {
if config := reality.ConfigFromStreamSettings(streamSettings); config != nil {
streamListener = goreality.NewListener(streamListener, config.GetREALITYConfig())
}
err = server.Serve(streamListener)
if err != nil {
newError("stopping serving H2C").Base(err).WriteToLog(session.ExportIDToError(ctx))
newError("stopping serving H2C or REALITY H2").Base(err).WriteToLog(session.ExportIDToError(ctx))
}
} else {
err = server.ServeTLS(streamListener, "", "")
if err != nil {
newError("stopping serving TLS").Base(err).WriteToLog(session.ExportIDToError(ctx))
newError("stopping serving TLS H2").Base(err).WriteToLog(session.ExportIDToError(ctx))
}
}
}()