WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit b083a2f

Browse files
committed
feat:allow ignore SSL Verification for proxy
1 parent f2b80a5 commit b083a2f

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

deepl.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package deepl
22

33
import (
44
"bytes"
5+
"crypto/tls"
56
"encoding/json"
67
"github.com/abadojack/whatlanggo"
78
"github.com/andybalholm/brotli"
@@ -158,7 +159,7 @@ func Translate(sourceLanguage, targetLanguage, textToTranslate string, options .
158159
request.Header.Set("Connection", "keep-alive")
159160

160161
client := &http.Client{}
161-
if transport := createHttpProxyTransport(clientOpt); transport != nil {
162+
if transport := createProxyTransportWith(clientOpt); transport != nil {
162163
client.Transport = transport
163164
}
164165
resp, err := client.Do(request)
@@ -193,14 +194,14 @@ func Translate(sourceLanguage, targetLanguage, textToTranslate string, options .
193194
return jsonRpcResponse, nil
194195
}
195196

196-
func createHttpProxyTransport(clientOpt *deepLClientOption) *http.Transport {
197+
func createProxyTransportWith(clientOpt *deepLClientOption) *http.Transport {
198+
var transport *http.Transport
197199
if clientOpt.httpProxy != "" {
198200
httpProxy, _ := url.Parse(clientOpt.httpProxy)
199201
if httpProxy != nil {
200-
return &http.Transport{Proxy: http.ProxyURL(httpProxy)}
202+
transport = &http.Transport{Proxy: http.ProxyURL(httpProxy)}
201203
}
202204
}
203-
204205
if clientOpt.socket5Proxy != "" {
205206
var auth *proxy.Auth
206207
if clientOpt.socket5ProxyUser != "" || clientOpt.socket5proxyPassword != "" {
@@ -211,8 +212,11 @@ func createHttpProxyTransport(clientOpt *deepLClientOption) *http.Transport {
211212
dialContext := func(ctx context.Context, network, address string) (net.Conn, error) {
212213
return dialer.Dial(network, address)
213214
}
214-
return &http.Transport{DialContext: dialContext}
215+
transport = &http.Transport{DialContext: dialContext}
215216
}
216217
}
218+
if clientOpt.ignoreSSLVerification && transport != nil {
219+
transport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
220+
}
217221
return nil
218222
}

options.go

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,46 @@
11
package deepl
22

33
type deepLClientOption struct {
4-
httpProxy string
5-
socket5Proxy string
6-
socket5ProxyUser string
7-
socket5proxyPassword string
4+
httpProxy string
5+
socket5Proxy string
6+
socket5ProxyUser string
7+
socket5proxyPassword string
8+
ignoreSSLVerification bool
89
}
910

1011
type Option func(option *deepLClientOption)
1112

1213
// WithHttpProxy set http proxy.if both httpProxy and sock5 proxy are set,
1314
// http proxy will be over-wrote by sock5 proxy .example http://127.0.0.1:1080
1415
func WithHttpProxy(proxy string) Option {
16+
return WithHttpProxyEx(proxy, false)
17+
}
18+
19+
// WithHttpProxyEx set http proxy.if both httpProxy and sock5 proxy are set,
20+
// http proxy will be over-wrote by sock5 proxy .example http://http://127.0.0.1:1080
21+
// ignoreSSLVerification: ignore SSL verification
22+
func WithHttpProxyEx(proxy string, ignoreSSLVerification bool) Option {
1523
return func(option *deepLClientOption) {
1624
option.httpProxy = proxy
25+
option.ignoreSSLVerification = ignoreSSLVerification
1726
}
1827
}
1928

2029
// WithSocket5Proxy set socket5Proxy.if both httpProxy and sock5 proxy are set,
2130
// http proxy will be over-wrote by sock5 proxy example 127.0.0.1:1080
2231
func WithSocket5Proxy(socket5Proxy string, userName string, password string) Option {
32+
return WithSocket5ProxyEx(socket5Proxy, userName, password, false)
33+
}
34+
35+
// WithSocket5ProxyEx set socket5Proxy.if both httpProxy and sock5 proxy are set,
36+
// http proxy will be over-wrote by sock5 proxy example 127.0.0.1:1080
37+
// ignoreSSLVerification: ignore SSL verification
38+
func WithSocket5ProxyEx(socket5Proxy string, userName string, password string, ignoreSSLVerification bool) Option {
2339
return func(option *deepLClientOption) {
2440
option.socket5Proxy = socket5Proxy
2541
option.socket5ProxyUser = userName
2642
option.socket5proxyPassword = password
43+
option.ignoreSSLVerification = ignoreSSLVerification
2744
}
45+
2846
}

0 commit comments

Comments
 (0)