mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-06 00:25:43 +00:00
feat(http): add option to skip SSL certificate verification (#801)
This commit is contained in:
1 parent
3384f5197a
commit
2523282a89
19 files changed
+48
-1
No files matched your search
@@ -3,6 +3,7 @@ package http
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
@@ -449,6 +450,9 @@ func (f *Fetcher) splitChunk() (chunks []*chunk) {
|
||||
func (f *Fetcher) buildClient() *http.Client {
|
||||
transport := &http.Transport{
|
||||
Proxy: f.ctl.GetProxy(f.meta.Req.Proxy),
|
||||
TLSClientConfig: &tls.Config{
|
||||
InsecureSkipVerify: f.meta.Req.SkipVerifyCert,
|
||||
},
|
||||
}
|
||||
// Cookie handle
|
||||
jar, _ := cookiejar.New(nil)
|
||||
|
||||
@@ -18,6 +18,8 @@ type Request struct {
|
||||
Labels map[string]string `json:"labels"`
|
||||
// Proxy is special proxy config for request
|
||||
Proxy *RequestProxy `json:"proxy"`
|
||||
// SkipVerifyCert is the flag that skip verify cert
|
||||
SkipVerifyCert bool `json:"skipVerifyCert"`
|
||||
}
|
||||
|
||||
func (r *Request) Validate() error {
|
||||
|
||||
@@ -8,12 +8,14 @@ class Request {
|
||||
Object? extra;
|
||||
Map<String, String>? labels = {};
|
||||
RequestProxy? proxy;
|
||||
bool skipVerifyCert = false;
|
||||
|
||||
Request({
|
||||
required this.url,
|
||||
this.extra,
|
||||
this.labels,
|
||||
this.proxy,
|
||||
this.skipVerifyCert = false,
|
||||
});
|
||||
|
||||
factory Request.fromJson(Map<String, dynamic> json) =>
|
||||
|
||||
@@ -15,6 +15,7 @@ Request _$RequestFromJson(Map<String, dynamic> json) => Request(
|
||||
proxy: json['proxy'] == null
|
||||
? null
|
||||
: RequestProxy.fromJson(json['proxy'] as Map<String, dynamic>),
|
||||
skipVerifyCert: json['skipVerifyCert'] as bool? ?? false,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$RequestToJson(Request instance) {
|
||||
@@ -31,6 +32,7 @@ Map<String, dynamic> _$RequestToJson(Request instance) {
|
||||
writeNotNull('extra', instance.extra);
|
||||
writeNotNull('labels', instance.labels);
|
||||
writeNotNull('proxy', instance.proxy?.toJson());
|
||||
val['skipVerifyCert'] = instance.skipVerifyCert;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
@@ -43,6 +43,8 @@ class CreateView extends GetView<CreateController> {
|
||||
|
||||
final _availableSchemes = ["http:", "https:", "magnet:"];
|
||||
|
||||
final _skipVerifyCertController = false.obs;
|
||||
|
||||
CreateView({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -454,6 +456,22 @@ class CreateView extends GetView<CreateController> {
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Referer',
|
||||
)),
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(top: 10),
|
||||
child: CompactCheckbox(
|
||||
label: 'skipVerifyCert'.tr,
|
||||
value:
|
||||
_skipVerifyCertController.value,
|
||||
onChanged: (bool? value) {
|
||||
_skipVerifyCertController.value =
|
||||
value ?? false;
|
||||
},
|
||||
textStyle: const TextStyle(
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Column(
|
||||
@@ -578,7 +596,11 @@ class CreateView extends GetView<CreateController> {
|
||||
await Future.wait(urls.map((url) {
|
||||
return createTask(CreateTask(
|
||||
req: Request(
|
||||
url: url, extra: parseReqExtra(url), proxy: parseProxy()),
|
||||
url: url,
|
||||
extra: parseReqExtra(url),
|
||||
proxy: parseProxy(),
|
||||
skipVerifyCert: _skipVerifyCertController.value,
|
||||
),
|
||||
opt: Options(
|
||||
name: isMultiLine ? "" : _renameController.text,
|
||||
path: _pathController.text,
|
||||
@@ -592,6 +614,7 @@ class CreateView extends GetView<CreateController> {
|
||||
url: submitUrl,
|
||||
extra: parseReqExtra(_urlController.text),
|
||||
proxy: parseProxy(),
|
||||
skipVerifyCert: _skipVerifyCertController.value,
|
||||
));
|
||||
await _showResolveDialog(rr);
|
||||
}
|
||||
|
||||
@@ -107,5 +107,6 @@ const enUS = {
|
||||
'taskName': 'Task Name',
|
||||
'taskUrl': 'Task URL',
|
||||
'downloadPath': 'Download Path',
|
||||
'skipVerifyCert': 'Skip Certificate Verification',
|
||||
},
|
||||
};
|
||||
@@ -103,5 +103,6 @@ const esES = {
|
||||
'taskName': 'Nombre de la Tarea',
|
||||
'taskUrl': 'URL de la Tarea',
|
||||
'downloadPath': 'Ruta de Descarga',
|
||||
'skipVerifyCert': 'Omitir Verificación de Certificado',
|
||||
},
|
||||
};
|
||||
@@ -61,5 +61,6 @@ const faIR = {
|
||||
'thanksDesc':
|
||||
'از تمامی افرادی که در ساخت و توسعهی جامعهی Gopeed مشارکت کردهاند، سپاسگزاری میکنیم!',
|
||||
'browserExtension': 'فایل های دانلود شده را نگه دارد',
|
||||
'skipVerifyCert': 'رد کردن تأیید گواهینامه',
|
||||
}
|
||||
};
|
||||
@@ -92,5 +92,6 @@ const frFR = {
|
||||
'thanksDesc': 'Merci à tous les contributeurs qui ont aidé à construire et développer la communauté Gopeed !',
|
||||
'browserExtension': 'Extension du navigateur',
|
||||
'launchAtStartup': 'Lancer au démarrage',
|
||||
'skipVerifyCert': 'Bypass Verifikasi Sertifikat',
|
||||
},
|
||||
};
|
||||
@@ -107,5 +107,6 @@ const idID = {
|
||||
'taskName': 'Nama Tugas',
|
||||
'taskUrl': 'URL Tugas',
|
||||
'downloadPath': 'Direktori Unduhan',
|
||||
'skipVerifyCert': 'Lupakan verifikasi sertifikat',
|
||||
},
|
||||
};
|
||||
@@ -96,5 +96,6 @@ const itIT = {
|
||||
'Grazie a tutti i contributori che hanno contribuito a costruire e sviluppare la comunità Gopeed!',
|
||||
'browserExtension': 'Estensione del browser',
|
||||
'launchAtStartup': "Lancia all'avvio",
|
||||
'skipVerifyCert': 'Salta la verifica del certificato',
|
||||
},
|
||||
};
|
||||
@@ -62,5 +62,6 @@ const jaJP = {
|
||||
'thanks': '感謝',
|
||||
'thanksDesc': 'Gopeedコミュニティの建設に協力してくださったすべての貢献者の方々に感謝します!',
|
||||
'browserExtension': 'ブラウザ拡張機能',
|
||||
'skipVerifyCert': '証明書の検証をスキップ',
|
||||
}
|
||||
};
|
||||
@@ -94,5 +94,6 @@ const plPL = {
|
||||
'Dziękuję wszystkim za pomoc przy powstawaniu aplikacji Gopeed!',
|
||||
'browserExtension': 'Wtyczka dla przeglądarki',
|
||||
'launchAtStartup': 'Uruchom na starcie',
|
||||
'skipVerifyCert': 'Pomiń weryfikację certyfikatu',
|
||||
},
|
||||
};
|
||||
@@ -77,5 +77,6 @@ const ruRU = {
|
||||
'thanksDesc':
|
||||
'Благодарим всех участников за их вклад в строительство и развитие сообщества Gopeed!',
|
||||
'browserExtension': 'Расширение браузера',
|
||||
'skipVerifyCert': 'Пропустить проверку сертификата',
|
||||
}
|
||||
};
|
||||
@@ -95,5 +95,6 @@ const taTA = {
|
||||
'Gopeed சமூகத்தை உருவாக்கவும் மற்றும் மேம்படுத்த உதவிய அனைத்து பங்களிப்பாளர்களுக்கும் நன்றி!',
|
||||
'browserExtension': 'உலாவி நீட்டிப்பு',
|
||||
'launchAtStartup': 'தொடக்கத்தின் போது இயங்கு',
|
||||
'skipVerifyCert': 'திருத்தி சான்று சரிபார்க்கவும்',
|
||||
},
|
||||
};
|
||||
@@ -104,5 +104,6 @@ const trTR = {
|
||||
'taskName': 'Görev adı',
|
||||
'taskUrl': 'Görev URL',
|
||||
'downloadPath': 'İndirme yolu',
|
||||
'skipVerifyCert': 'Sertifika doğrulamasını atla',
|
||||
},
|
||||
};
|
||||
@@ -89,5 +89,6 @@ const viVN = {
|
||||
'thanksDesc':
|
||||
'Cảm ơn tất cả những người đóng góp đã giúp xây dựng và phát triển cộng đồng Gopeed!',
|
||||
'browserExtension': 'Tiện ích mở rộng trình duyệt',
|
||||
'skipVerifyCert': 'Bỏ qua xác thực chứng chỉ',
|
||||
},
|
||||
};
|
||||
@@ -104,5 +104,6 @@ const zhCN = {
|
||||
'taskName': '任务名称',
|
||||
'taskUrl': '任务链接',
|
||||
'downloadPath': '下载路径',
|
||||
'skipVerifyCert': '跳过证书验证',
|
||||
}
|
||||
};
|
||||
@@ -104,5 +104,6 @@ const zhTW = {
|
||||
'taskName': '任務名稱',
|
||||
'taskUrl': '任務連結',
|
||||
'downloadPath': '下載路徑',
|
||||
'skipVerifyCert': '跳過憑證驗證',
|
||||
}
|
||||
};
|
||||
Reference in new issue
Block a user