Skip to content

Commit f3428e6

Browse files
Copilotjyxjjj
andauthored
fix(net): honor proxy settings when uploading to 115/115 Open/PikPak OSS (#2222)
* Initial plan * fix: honor HTTPS proxy for OSS uploads Co-authored-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com> * Honor HTTPS proxy settings for 115/115 Open/PikPak OSS uploads Co-authored-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com> * revert * chore --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com> Co-authored-by: jyxjjj <773933146@qq.com>
1 parent 5eaef96 commit f3428e6

File tree

6 files changed

+73
-7
lines changed

6 files changed

+73
-7
lines changed

drivers/115/util.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"github.com/OpenListTeam/OpenList/v4/internal/conf"
2020
"github.com/OpenListTeam/OpenList/v4/internal/driver"
2121
"github.com/OpenListTeam/OpenList/v4/internal/model"
22+
netutil "github.com/OpenListTeam/OpenList/v4/internal/net"
2223
"github.com/OpenListTeam/OpenList/v4/pkg/http_range"
2324
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
2425
cipher "github.com/SheltonZhu/115driver/pkg/crypto/ec115"
@@ -222,7 +223,7 @@ func (c *Pan115) UploadByOSS(ctx context.Context, params *driver115.UploadOSSPar
222223
if err != nil {
223224
return nil, err
224225
}
225-
ossClient, err := oss.New(driver115.OSSEndpoint, ossToken.AccessKeyID, ossToken.AccessKeySecret)
226+
ossClient, err := netutil.NewOSSClient(driver115.OSSEndpoint, ossToken.AccessKeyID, ossToken.AccessKeySecret)
226227
if err != nil {
227228
return nil, err
228229
}
@@ -283,7 +284,7 @@ func (d *Pan115) UploadByMultipart(ctx context.Context, params *driver115.Upload
283284
return nil, err
284285
}
285286

286-
if ossClient, err = oss.New(driver115.OSSEndpoint, ossToken.AccessKeyID, ossToken.AccessKeySecret, oss.EnableMD5(true), oss.EnableCRC(true)); err != nil {
287+
if ossClient, err = netutil.NewOSSClient(driver115.OSSEndpoint, ossToken.AccessKeyID, ossToken.AccessKeySecret, oss.EnableMD5(true), oss.EnableCRC(true)); err != nil {
287288
return nil, err
288289
}
289290

drivers/115_open/upload.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
sdk "github.com/OpenListTeam/115-sdk-go"
1010
"github.com/OpenListTeam/OpenList/v4/internal/driver"
1111
"github.com/OpenListTeam/OpenList/v4/internal/model"
12+
netutil "github.com/OpenListTeam/OpenList/v4/internal/net"
1213
streamPkg "github.com/OpenListTeam/OpenList/v4/internal/stream"
1314
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
1415
"github.com/aliyun/aliyun-oss-go-sdk/oss"
@@ -36,7 +37,7 @@ func calPartSize(fileSize int64) int64 {
3637
}
3738

3839
func (d *Open115) singleUpload(ctx context.Context, tempF model.File, tokenResp *sdk.UploadGetTokenResp, initResp *sdk.UploadInitResp) error {
39-
ossClient, err := oss.New(tokenResp.Endpoint, tokenResp.AccessKeyId, tokenResp.AccessKeySecret, oss.SecurityToken(tokenResp.SecurityToken))
40+
ossClient, err := netutil.NewOSSClient(tokenResp.Endpoint, tokenResp.AccessKeyId, tokenResp.AccessKeySecret, oss.SecurityToken(tokenResp.SecurityToken))
4041
if err != nil {
4142
return err
4243
}
@@ -70,7 +71,7 @@ func (d *Open115) singleUpload(ctx context.Context, tempF model.File, tokenResp
7071
// }
7172

7273
func (d *Open115) multpartUpload(ctx context.Context, stream model.FileStreamer, up driver.UpdateProgress, tokenResp *sdk.UploadGetTokenResp, initResp *sdk.UploadInitResp) error {
73-
ossClient, err := oss.New(tokenResp.Endpoint, tokenResp.AccessKeyId, tokenResp.AccessKeySecret, oss.SecurityToken(tokenResp.SecurityToken))
74+
ossClient, err := netutil.NewOSSClient(tokenResp.Endpoint, tokenResp.AccessKeyId, tokenResp.AccessKeySecret, oss.SecurityToken(tokenResp.SecurityToken))
7475
if err != nil {
7576
return err
7677
}

drivers/pikpak/util.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"github.com/OpenListTeam/OpenList/v4/drivers/base"
2020
"github.com/OpenListTeam/OpenList/v4/internal/driver"
2121
"github.com/OpenListTeam/OpenList/v4/internal/model"
22+
netutil "github.com/OpenListTeam/OpenList/v4/internal/net"
2223
"github.com/OpenListTeam/OpenList/v4/internal/op"
2324
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
2425
"github.com/aliyun/aliyun-oss-go-sdk/oss"
@@ -418,7 +419,7 @@ func (d *PikPak) refreshCaptchaToken(action string, metas map[string]string) err
418419
}
419420

420421
func (d *PikPak) UploadByOSS(ctx context.Context, params *S3Params, s model.FileStreamer, up driver.UpdateProgress) error {
421-
ossClient, err := oss.New(params.Endpoint, params.AccessKeyID, params.AccessKeySecret)
422+
ossClient, err := netutil.NewOSSClient(params.Endpoint, params.AccessKeyID, params.AccessKeySecret)
422423
if err != nil {
423424
return err
424425
}
@@ -451,7 +452,7 @@ func (d *PikPak) UploadByMultipart(ctx context.Context, params *S3Params, fileSi
451452
bucket *oss.Bucket
452453
)
453454

454-
if ossClient, err = oss.New(params.Endpoint, params.AccessKeyID, params.AccessKeySecret); err != nil {
455+
if ossClient, err = netutil.NewOSSClient(params.Endpoint, params.AccessKeyID, params.AccessKeySecret); err != nil {
455456
return err
456457
}
457458

internal/net/oss.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package net
2+
3+
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
4+
5+
func NewOSSClient(endpoint, accessKeyID, accessKeySecret string, options ...oss.ClientOption) (*oss.Client, error) {
6+
clientOptions := []oss.ClientOption{oss.HTTPClient(NewHttpClient())}
7+
clientOptions = append(clientOptions, options...)
8+
return oss.New(endpoint, accessKeyID, accessKeySecret, clientOptions...)
9+
}

internal/net/oss_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package net
2+
3+
import (
4+
"net/http"
5+
"net/url"
6+
"testing"
7+
8+
"github.com/OpenListTeam/OpenList/v4/internal/conf"
9+
)
10+
11+
func TestNewOSSClientUsesEnvironmentHTTPSProxy(t *testing.T) {
12+
oldConf := conf.Conf
13+
conf.Conf = conf.DefaultConfig("data")
14+
defer func() {
15+
conf.Conf = oldConf
16+
}()
17+
18+
t.Setenv("HTTP_PROXY", "")
19+
t.Setenv("http_proxy", "")
20+
t.Setenv("HTTPS_PROXY", "http://127.0.0.1:7890")
21+
t.Setenv("https_proxy", "")
22+
t.Setenv("NO_PROXY", "")
23+
t.Setenv("no_proxy", "")
24+
25+
client, err := NewOSSClient("https://oss-cn-hangzhou.aliyuncs.com", "test-access-key", "test-access-secret")
26+
if err != nil {
27+
t.Fatalf("expected no error, got %v", err)
28+
}
29+
30+
if client.HTTPClient == nil {
31+
t.Fatal("expected OSS client to use a custom HTTP client")
32+
}
33+
34+
transport, ok := client.HTTPClient.Transport.(*http.Transport)
35+
if !ok {
36+
t.Fatalf("expected *http.Transport, got %T", client.HTTPClient.Transport)
37+
}
38+
39+
if transport.Proxy == nil {
40+
t.Fatal("expected proxy function to be configured")
41+
}
42+
43+
req := &http.Request{URL: &url.URL{Scheme: "https", Host: "oss-cn-hangzhou.aliyuncs.com"}}
44+
proxyURL, err := transport.Proxy(req)
45+
if err != nil {
46+
t.Fatalf("expected no proxy lookup error, got %v", err)
47+
}
48+
if proxyURL == nil {
49+
t.Fatal("expected HTTPS proxy to be used")
50+
}
51+
if got, want := proxyURL.String(), "http://127.0.0.1:7890"; got != want {
52+
t.Fatalf("expected proxy %q, got %q", want, got)
53+
}
54+
}

internal/net/request_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ func (c *downloadCaptureClient) HttpRequest(ctx context.Context, params *HttpReq
153153

154154
c.GetObjectInvocations++
155155

156-
if &params.Range != nil {
156+
if params.Range.Length != 0 {
157157
c.RetrievedRanges = append(c.RetrievedRanges, fmt.Sprintf("%d-%d", params.Range.Start, params.Range.Length))
158158
}
159159

0 commit comments

Comments
 (0)