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/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
stderrors "errors"
|
stderrors "errors"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
"github.com/xtls/xray-core/common/errors"
|
"github.com/xtls/xray-core/common/errors"
|
||||||
"github.com/xtls/xray-core/common/platform"
|
|
||||||
"github.com/xtls/xray-core/common/uuid"
|
"github.com/xtls/xray-core/common/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -27,8 +27,6 @@ type task struct {
|
|||||||
StreamResponse bool `json:"streamResponse"`
|
StreamResponse bool `json:"streamResponse"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var conns chan *websocket.Conn
|
|
||||||
var server *http.Server
|
|
||||||
var sockoptDialers map[string]*dialerInstance
|
var sockoptDialers map[string]*dialerInstance
|
||||||
var mu sync.Mutex
|
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 {
|
func HasBrowserDialerWithAddress(addr string) bool {
|
||||||
return connsByAddress(addr) != nil
|
if addr == "" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
_, _, err := net.SplitHostPort(addr)
|
||||||
|
return err == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type webSocketExtra struct {
|
type webSocketExtra struct {
|
||||||
@@ -78,10 +56,6 @@ type dialerInstance struct {
|
|||||||
server *http.Server
|
server *http.Server
|
||||||
}
|
}
|
||||||
|
|
||||||
func getEnvAddress() string {
|
|
||||||
return platform.NewEnvFlag(platform.BrowserDialerAddress).GetValue(func() string { return "" })
|
|
||||||
}
|
|
||||||
|
|
||||||
func newDialerInstance(addr string) *dialerInstance {
|
func newDialerInstance(addr string) *dialerInstance {
|
||||||
token := uuid.New()
|
token := uuid.New()
|
||||||
csrfToken := token.String()
|
csrfToken := token.String()
|
||||||
@@ -275,7 +249,7 @@ func dialTaskWithAddress(addr string, task task) (*websocket.Conn, error) {
|
|||||||
if addr != "" {
|
if addr != "" {
|
||||||
return nil, errors.New("browser dialer is not configured for sockopt.browserDialer: ", 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
|
var conn *websocket.Conn
|
||||||
@@ -308,19 +282,12 @@ func CheckOK(conn *websocket.Conn) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func connsByAddress(addr string) chan *websocket.Conn {
|
func connsByAddress(addr string) chan *websocket.Conn {
|
||||||
if addr != "" {
|
if addr == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
dialer := getDialerByAddress(addr)
|
dialer := getDialerByAddress(addr)
|
||||||
if dialer == nil {
|
if dialer == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return dialer.conns
|
return dialer.conns
|
||||||
}
|
}
|
||||||
if HasBrowserDialer() {
|
|
||||||
return conns
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
Reload()
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.36.11
|
// protoc-gen-go v1.36.11
|
||||||
// protoc v3.21.12
|
// protoc v6.33.5
|
||||||
// source: transport/internet/config.proto
|
// source: transport/internet/config.proto
|
||||||
|
|
||||||
package internet
|
package internet
|
||||||
|
|||||||
Reference in New Issue
Block a user