|
|
@@ -1,6 +1,7 @@
|
|
|
package config
|
|
|
|
|
|
import (
|
|
|
+ "context"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"io"
|
|
|
@@ -12,7 +13,8 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"cfa/native/app"
|
|
|
- "github.com/Dreamacro/clash/component/dialer"
|
|
|
+
|
|
|
+ clashHttp "github.com/Dreamacro/clash/component/http"
|
|
|
)
|
|
|
|
|
|
type Status struct {
|
|
|
@@ -22,26 +24,11 @@ type Status struct {
|
|
|
MaxProgress int `json:"max"`
|
|
|
}
|
|
|
|
|
|
-var client = &http.Client{
|
|
|
- Transport: &http.Transport{
|
|
|
- DisableKeepAlives: true,
|
|
|
- TLSHandshakeTimeout: 10 * time.Second,
|
|
|
- ExpectContinueTimeout: 1 * time.Second,
|
|
|
- DialContext: dialer.DialTunnelContext,
|
|
|
- },
|
|
|
- Timeout: 60 * time.Second,
|
|
|
-}
|
|
|
-
|
|
|
func openUrl(url string) (io.ReadCloser, error) {
|
|
|
- request, err := http.NewRequest(http.MethodGet, url, nil)
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
-
|
|
|
- request.Header.Set("User-Agent", "ClashMetaForAndroid/"+app.VersionName())
|
|
|
+ ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
|
|
+ defer cancel()
|
|
|
+ response, err := clashHttp.HttpRequest(ctx, url, http.MethodGet, http.Header{"User-Agent": {"ClashMetaForAndroid/" + app.VersionName()}}, nil)
|
|
|
|
|
|
- response, err := client.Do(request)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|