mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-05-14 10:00:34 +00:00
Add NewClient()
This commit is contained in:
@@ -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 (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"net/http"
|
"runtime"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
"runtime"
|
|
||||||
|
|
||||||
"github.com/xtls/xray-core/common/errors"
|
"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/common/platform"
|
||||||
"github.com/xtls/xray-core/transport/internet"
|
"github.com/xtls/xray-core/common/protocol/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
var timeOffset atomic.Pointer[time.Duration]
|
var timeOffset atomic.Pointer[time.Duration]
|
||||||
@@ -32,17 +30,7 @@ func updateTimeMonitor(ctx context.Context, domain string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func updateTime(domain string) error {
|
func updateTime(domain string) error {
|
||||||
httpClient := &http.Client{
|
httpClient := http.NewClient()
|
||||||
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)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
resp, err := httpClient.Get(domain)
|
resp, err := httpClient.Get(domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.New("Failed to access monitor domain").Base(err)
|
return errors.New("Failed to access monitor domain").Base(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user