mirror of https://github.com/XTLS/Xray-core
Add NewClient()
parent
f42a518bf6
commit
8351ccb625
|
@ -0,0 +1,34 @@
|
|||
package http
|
||||
|
||||
import (
|
||||
"context"
|
||||
gohttp "net/http"
|
||||
|
||||
"github.com/xtls/xray-core/common/net"
|
||||
"github.com/xtls/xray-core/transport/internet"
|
||||
)
|
||||
|
||||
// NewClient creates an HTTP client with with internal dialer and using the given sockopt.
|
||||
// sockopt can only have one or empty.
|
||||
func NewClient(sockopt ...*internet.SocketConfig) *gohttp.Client {
|
||||
var Sockopt *internet.SocketConfig
|
||||
switch len(sockopt) {
|
||||
case 0:
|
||||
case 1:
|
||||
Sockopt = sockopt[0]
|
||||
default:
|
||||
panic("sockopt can only be nil or have one")
|
||||
}
|
||||
httpClient := &gohttp.Client{
|
||||
Transport: &gohttp.Transport{
|
||||
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
|
||||
dest, err := net.ParseDestination(network + ":" + addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return internet.DialSystem(ctx, dest, Sockopt)
|
||||
},
|
||||
},
|
||||
}
|
||||
return httpClient
|
||||
}
|
|
@ -2,16 +2,14 @@ package vtime
|
|||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"runtime"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
"runtime"
|
||||
|
||||
"github.com/xtls/xray-core/common/errors"
|
||||
"github.com/xtls/xray-core/common/net"
|
||||
"github.com/xtls/xray-core/common/platform"
|
||||
"github.com/xtls/xray-core/transport/internet"
|
||||
"github.com/xtls/xray-core/common/protocol/http"
|
||||
)
|
||||
|
||||
var timeOffset atomic.Pointer[time.Duration]
|
||||
|
@ -32,17 +30,7 @@ func updateTimeMonitor(ctx context.Context, domain string) {
|
|||
}
|
||||
|
||||
func updateTime(domain string) error {
|
||||
httpClient := &http.Client{
|
||||
Transport: &http.Transport{
|
||||
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
|
||||
dest, err := net.ParseDestination(network + ":" + addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return internet.DialSystem(ctx, dest, nil)
|
||||
},
|
||||
},
|
||||
}
|
||||
httpClient := http.NewClient()
|
||||
resp, err := httpClient.Get(domain)
|
||||
if err != nil {
|
||||
return errors.New("Failed to access monitor domain").Base(err)
|
||||
|
|
Loading…
Reference in New Issue