mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-05-08 14:13:22 +00:00
refactor: remove browser dialer env reload path and refresh proto metadata
Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/e3502f01-e171-4e6f-9ae7-dc29b6682951 Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
2fdfa727b4
commit
27b8b29ef8
@@ -7,13 +7,13 @@ import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
stderrors "errors"
|
||||
"net"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/xtls/xray-core/common/errors"
|
||||
"github.com/xtls/xray-core/common/platform"
|
||||
"github.com/xtls/xray-core/common/uuid"
|
||||
)
|
||||
|
||||
@@ -27,8 +27,6 @@ type task struct {
|
||||
StreamResponse bool `json:"streamResponse"`
|
||||
}
|
||||
|
||||
var conns chan *websocket.Conn
|
||||
var server *http.Server
|
||||
var sockoptDialers map[string]*dialerInstance
|
||||
var mu sync.Mutex
|
||||
|
||||
@@ -41,32 +39,12 @@ var upgrader = &websocket.Upgrader{
|
||||
},
|
||||
}
|
||||
|
||||
// Used by external projects when using xray as a go module
|
||||
func Reload() {
|
||||
addr := getEnvAddress()
|
||||
mu.Lock()
|
||||
|
||||
closeDialerInstance(&dialerInstance{conns: conns, server: server})
|
||||
conns = nil
|
||||
server = nil
|
||||
|
||||
var dialer *dialerInstance
|
||||
if addr != "" {
|
||||
dialer = newDialerInstance(addr)
|
||||
conns = dialer.conns
|
||||
server = dialer.server
|
||||
}
|
||||
mu.Unlock()
|
||||
|
||||
startDialerInstance(dialer)
|
||||
}
|
||||
|
||||
func HasBrowserDialer() bool {
|
||||
return conns != nil
|
||||
}
|
||||
|
||||
func HasBrowserDialerWithAddress(addr string) bool {
|
||||
return connsByAddress(addr) != nil
|
||||
if addr == "" {
|
||||
return false
|
||||
}
|
||||
_, _, err := net.SplitHostPort(addr)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
type webSocketExtra struct {
|
||||
@@ -78,10 +56,6 @@ type dialerInstance struct {
|
||||
server *http.Server
|
||||
}
|
||||
|
||||
func getEnvAddress() string {
|
||||
return platform.NewEnvFlag(platform.BrowserDialerAddress).GetValue(func() string { return "" })
|
||||
}
|
||||
|
||||
func newDialerInstance(addr string) *dialerInstance {
|
||||
token := uuid.New()
|
||||
csrfToken := token.String()
|
||||
@@ -275,7 +249,7 @@ func dialTaskWithAddress(addr string, task task) (*websocket.Conn, error) {
|
||||
if addr != "" {
|
||||
return nil, errors.New("browser dialer is not configured for sockopt.browserDialer: ", addr)
|
||||
}
|
||||
return nil, errors.New("browser dialer is not configured; set sockopt.browserDialer or env ", platform.BrowserDialerAddress)
|
||||
return nil, errors.New("browser dialer is not configured; set sockopt.browserDialer")
|
||||
}
|
||||
|
||||
var conn *websocket.Conn
|
||||
@@ -308,19 +282,12 @@ func CheckOK(conn *websocket.Conn) error {
|
||||
}
|
||||
|
||||
func connsByAddress(addr string) chan *websocket.Conn {
|
||||
if addr != "" {
|
||||
dialer := getDialerByAddress(addr)
|
||||
if dialer == nil {
|
||||
return nil
|
||||
}
|
||||
return dialer.conns
|
||||
if addr == "" {
|
||||
return nil
|
||||
}
|
||||
if HasBrowserDialer() {
|
||||
return conns
|
||||
dialer := getDialerByAddress(addr)
|
||||
if dialer == nil {
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
Reload()
|
||||
return dialer.conns
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.36.11
|
||||
// protoc v3.21.12
|
||||
// protoc v6.33.5
|
||||
// source: transport/internet/config.proto
|
||||
|
||||
package internet
|
||||
|
||||
Reference in New Issue
Block a user