From 3c9bf1fb011e9f8374e26fafa3130b2c34d6f4cc Mon Sep 17 00:00:00 2001 From: chenshungang Date: Tue, 6 Sep 2022 10:33:52 +0800 Subject: [PATCH 01/11] fix: when saving the code module, change the head encoding to gzip, causing SDK to fail to parse the response content --- app/components/services/oss2.js | 18 ++++++++++++------ app/main/files/modals/preview/code-modal.js | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/components/services/oss2.js b/app/components/services/oss2.js index 35f1c024..aec05a4e 100644 --- a/app/components/services/oss2.js +++ b/app/components/services/oss2.js @@ -180,7 +180,7 @@ angular.module('web').factory('ossSvs2', [ if (res.keyCount != 0) { return true; } - + return false; }); } @@ -337,7 +337,7 @@ angular.module('web').factory('ossSvs2', [ if (nextContinuationToken) { return listDeleteFolder(nextContinuationToken); } - + listFinish = true; return ''; @@ -1170,7 +1170,7 @@ angular.module('web').factory('ossSvs2', [ }); } - function saveContent(region, bucket, key, content) { + function saveContent(region, bucket, key, content, isCodeSave) { return new Promise(function(resolve, reject) { // aliyun sdk, browser const client = getClient({ @@ -1204,12 +1204,18 @@ angular.module('web').factory('ossSvs2', [ }).join('&'); } + let encoding = headResult.ContentEncoding; + // code-modal保存时,如果encoding=gzip,就不变更gzip,避免内容未做gzip压缩,导致sdk中的urllib响应内容解析失败 + if(isCodeSave && encoding === 'gzip'){ + encoding=undefined; + } + client3.put(key, new Buffer(content), { mime: headResult.ContentType, meta: headResult.Metadata, headers: { 'Content-Disposition': headResult.ContentDisposition, - 'Content-Encoding': headResult.ContentEncoding, + 'Content-Encoding': encoding, 'Cache-Control': headResult.CacheControl, 'Content-Language': headResult.ContentLanguage, 'x-oss-storage-class': headResult.StorageClass, @@ -1777,7 +1783,7 @@ angular.module('web').factory('ossSvs2', [ if (resp.nextContinuationToken) { return listMore(resp.nextContinuationToken); } - + return all_dirs.concat(all_objects); }); } @@ -1993,7 +1999,7 @@ angular.module('web').factory('ossSvs2', [ protocol + '//' + bucket + '.' + region + '.aliyuncs.com' + '/' + key ); } - + let domain; if (eptpl.indexOf('https://') == 0) { diff --git a/app/main/files/modals/preview/code-modal.js b/app/main/files/modals/preview/code-modal.js index 1301ee55..b0f60de8 100644 --- a/app/main/files/modals/preview/code-modal.js +++ b/app/main/files/modals/preview/code-modal.js @@ -76,7 +76,8 @@ angular.module('web').controller('codeModalCtrl', [ bucketInfo.region, bucketInfo.bucket, objectInfo.path, - v + v, + true ) .then(function() { Toast.success(T('save.successfully')); // '保存成功' From 73497da7da7260d7fb3aa5c39e4c8aea550d0052 Mon Sep 17 00:00:00 2001 From: chenshungang Date: Wed, 26 Oct 2022 17:07:29 +0800 Subject: [PATCH 02/11] fix: the latest mac operating system login requestId compatibility error --- all-releases.md | 1 + app/components/services/auth.js | 13 ++++--- app/const.js | 66 +++++++++++++++++++++++---------- node/i18n/en-US.js | 14 +++++-- node/i18n/ja-JP.js | 12 ++++-- node/i18n/zh-CN.js | 17 ++++++--- vendor/aliyun-sdk-oss.js | 7 ++-- 7 files changed, 91 insertions(+), 39 deletions(-) diff --git a/all-releases.md b/all-releases.md index 77262b96..cada6239 100644 --- a/all-releases.md +++ b/all-releases.md @@ -4,6 +4,7 @@ ||Windows ia32|Windows x64| Mac(zip) |Linux ia32|Linux x64|Release note| |-----|-----|-----|-----|--------|--------|---| +|1.16.0|[Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.16.0/oss-browser-win32-ia32.zip) |[Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.16.0/oss-browser-win32-x64.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.16.0/oss-browser-darwin-x64.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.16.0/oss-browser-linux-ia32.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.16.0/oss-browser-linux-x64.zip)|[1.16.0.md](release-notes/1.16.0.en-US.md)| |1.15.0|[Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.15.0/oss-browser-win32-ia32.zip) |[Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.15.0/oss-browser-win32-x64.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.15.0/oss-browser-darwin-x64.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.15.0/oss-browser-linux-ia32.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.15.0/oss-browser-linux-x64.zip)|[1.15.0.md](release-notes/1.15.0.en-US.md)| |1.14.0|[Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.14.0/oss-browser-win32-ia32.zip) |[Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.14.0/oss-browser-win32-x64.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.14.0/oss-browser-darwin-x64.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.14.0/oss-browser-linux-ia32.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.14.0/oss-browser-linux-x64.zip)|[1.14.0.md](release-notes/1.14.0.en-US.md)| |1.13.0|[Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.13.0/oss-browser-win32-ia32.zip) |[Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.13.0/oss-browser-win32-x64.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.13.0/oss-browser-darwin-x64.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.13.0/oss-browser-linux-ia32.zip) | [Download](https://oss-attachment.cn-hangzhou.oss.aliyun-inc.com/oss-browser/1.13.0/oss-browser-linux-x64.zip)|[1.13.0.md](release-notes/1.13.0.en-US.md)| diff --git a/app/components/services/auth.js b/app/components/services/auth.js index d0de03e7..366846b9 100644 --- a/app/components/services/auth.js +++ b/app/components/services/auth.js @@ -18,7 +18,9 @@ angular.module('web').factory('Auth', [ var df = $q.defer(); - data.httpOptions = { timeout: 15000 }; + data.httpOptions = { + timeout: 15000 + }; if (data.id.indexOf('STS.') != 0) { delete data.stoken; @@ -51,8 +53,7 @@ angular.module('web').factory('Auth', [ message: T('login.endpoint.error') }); // '请确定Endpoint是否正确' } - }) - ['catch']((err) => { + })['catch']((err) => { df.reject(err); }); } else { @@ -66,12 +67,14 @@ angular.module('web').factory('Auth', [ // 失败 df.reject(err); } - } else if (result.RequestId && result.Buckets) { + } else if (result.Buckets) { // 登录成功 AuthInfo.save(data); df.resolve(); } else { - df.reject({ code: 'Error', message: T('login.endpoint.error') }); + df.reject({ + code: 'Error', message: T('login.endpoint.error') + }); } }); } diff --git a/app/const.js b/app/const.js index 2c6ed124..1d1eba86 100644 --- a/app/const.js +++ b/app/const.js @@ -86,6 +86,16 @@ angular.module('web').factory('Const', [ label: '华东2(上海)', storageClasses: getStorageClasses(3) }, + { + id: 'oss-cn-nanjing', + label: '华东5(南京本地地域)', + storageClasses: getStorageClasses(3) + }, + { + id: 'oss-cn-fuzhou', + label: '华东6(福州本地地域)', + storageClasses: getStorageClasses(3) + }, { id: 'oss-cn-qingdao', label: '华北1(青岛)', @@ -106,6 +116,11 @@ angular.module('web').factory('Const', [ label: '华北5(呼和浩特)', storageClasses: getStorageClasses(3) }, + { + id: 'oss-cn-wulanchabu', + label: '华北6(乌兰察布)', + storageClasses: getStorageClasses(3) + }, { id: 'oss-cn-shenzhen', label: '华南1(深圳)', @@ -128,10 +143,29 @@ angular.module('web').factory('Const', [ }, { id: 'oss-cn-hongkong', - label: '香港', + label: '中国(香港)', + storageClasses: getStorageClasses(3) + }, + { + id: 'oss-us-west-1', + label: '美国西部1(硅谷)', + storageClasses: getStorageClasses(3) + }, + { + id: 'oss-us-east-1', + label: '美国东部1(弗吉尼亚)', + storageClasses: getStorageClasses(3) + }, + { + id: 'oss-ap-northeast-1', + label: '日本(东京)', + storageClasses: getStorageClasses(3) + }, + { + id: 'oss-ap-northeast-2', + label: '韩国(首尔)', storageClasses: getStorageClasses(3) }, - { id: 'oss-ap-southeast-1', label: '亚太东南1(新加坡)', @@ -153,39 +187,33 @@ angular.module('web').factory('Const', [ storageClasses: getStorageClasses(3) }, { - id: 'oss-ap-northeast-1', - label: '亚太东北1(东京)', + id: 'oss-ap-southeast-6', + label: '菲律宾(马尼拉)', storageClasses: getStorageClasses(3) }, { - id: 'oss-ap-south-1', - label: '亚太南部(孟买)', + id: 'oss-ap-southeast-7', + label: '泰国(曼谷)', storageClasses: getStorageClasses(3) }, - { - id: 'oss-us-west-1', - label: '美国西部1(硅谷)', - storageClasses: getStorageClasses(3) - }, - { - id: 'oss-us-east-1', - label: '美国东部1(弗吉尼亚)', + id: 'oss-ap-south-1', + label: '印度(孟买)', storageClasses: getStorageClasses(3) }, { id: 'oss-eu-central-1', - label: '欧洲中部1(法兰克福)', + label: '德国(法兰克福)', storageClasses: getStorageClasses(3) }, { - id: 'oss-me-east-1', - label: '中东东部1(迪拜)', + id: 'oss-eu-west-1', + label: '英国(伦敦)', storageClasses: getStorageClasses(3) }, { - id: 'oss-eu-west-1', - label: '英国(伦敦)', + id: 'oss-me-east-1', + label: '阿联酋(迪拜)', storageClasses: getStorageClasses(3) } ], diff --git a/node/i18n/en-US.js b/node/i18n/en-US.js index 35b16ea7..7403ddb3 100644 --- a/node/i18n/en-US.js +++ b/node/i18n/en-US.js @@ -8,27 +8,33 @@ module.exports = { "region.oss-cn-hangzhou": "East China 1(Hangzhou)", "region.oss-cn-shanghai": "East China 2(Shanghai)", + "region.oss-cn-nanjing": "East China 5(Nanjing Local Region)", + "region.oss-cn-fuzhou": "East China 6(Local area of Fuzhou)", "region.oss-cn-qingdao": "North China 1(Qingdao)", "region.oss-cn-beijing": "North China 2(Beijing)", "region.oss-cn-zhangjiakou": "North China 3(Zhangjiakou)", "region.oss-cn-huhehaote": "North China 5(Huhehaote)", + "region.oss-cn-wulanchabu": "North China 6(Ulanchap)", "region.oss-cn-shenzhen": "South China 1(Shenzhen)", "region.oss-cn-heyuan": "South China 2(Heyuan)", "region.oss-cn-chengdu": "Southwest China 1(Chengdu)", - "region.oss-cn-hongkong": "Hongkong", + "region.oss-cn-hongkong": "China (Hong Kong)", "region.oss-cn-guangzhou": "South China 3(Guangzhou)", "region.oss-ap-southeast-1": "Asia Pacific Southeast 1(Singapore)", "region.oss-ap-southeast-2": "Asia Pacific Southeast 2(Sydney)", "region.oss-ap-southeast-3": "Asia Pacific Southeast 3(Kuala Lumpur)", "region.oss-ap-southeast-5": "Asia Pacific Southeast 5(Jakarta)", - "region.oss-ap-northeast-1": "Asia Pacific Northeast 1(Tokyo)", + "region.oss-ap-northeast-1": "Japan (Tokyo)", + "region.oss-ap-northeast-2": "South Korea (Seoul)", "region.oss-ap-south-1": "Asia Pacific South 1(Mumbai)", + "region.oss-ap-southeast-6": "Philippines (Manila)", + "region.oss-ap-southeast-7": "Thailand (Bangkok)", "region.oss-us-west-1": "Western US 1(Silicon Valley)", "region.oss-us-east-1": "Eastern US 1(Virginia)", - "region.oss-eu-central-1": "Central Europe 1(Frankfurt)", - "region.oss-me-east-1": "Middle East East 1(Dubai)", + "region.oss-eu-central-1": "CGermany (Frankfurt)", + "region.oss-me-east-1": "United Arab Emirates (Dubai)", "region.oss-eu-west-1": "England (LonDon)", optional: "Optional", diff --git a/node/i18n/ja-JP.js b/node/i18n/ja-JP.js index b63fd2c4..1c6702cd 100644 --- a/node/i18n/ja-JP.js +++ b/node/i18n/ja-JP.js @@ -8,27 +8,33 @@ module.exports = { "region.oss-cn-hangzhou": "杭州 (中国東部 1)", "region.oss-cn-shanghai": "上海 (中国東部 2)", + "region.oss-cn-nanjing": "南京の地域 (中国東部 5)", + "region.oss-cn-fuzhou": "福州地域 (中国東部 6)", "region.oss-cn-qingdao": "青島 (中国北部 1)", "region.oss-cn-beijing": "北京 (中国北部 2)", "region.oss-cn-zhangjiakou": "張家口 (中国北部 3)", "region.oss-cn-huhehaote": "フフホト (中国北部 5)", + "region.oss-cn-wulanchabu": "ウラン・チャブ (中国北部 6)", "region.oss-cn-shenzhen": "深セン (中国南部 1)", "region.oss-cn-heyuan": "河源(中国南部 2)", "region.oss-cn-chengdu": "成都(中国西部 1)", - "region.oss-cn-hongkong": "香港", + "region.oss-cn-hongkong": "中国(香港)", "region.oss-cn-guangzhou": "广州(中国南部 3)", "region.oss-ap-southeast-1": "アジア東南 1 (シンガポール)", "region.oss-ap-southeast-2": "アジア東南 2 (シドニー)", "region.oss-ap-southeast-3": "アジア東南 3 (クアラルンプール)", "region.oss-ap-southeast-5": "アジア東南 5 (ジャカルタ)", - "region.oss-ap-northeast-1": "アジア東北 1 (日本)", + "region.oss-ap-northeast-1": "日本 (東京)", + "region.oss-ap-northeast-2": "韓国 (ソウル)", "region.oss-ap-south-1": "アジア南部 1 (ムンバイ)", + "region.oss-ap-southeast-6": "フィリピン(マニラ)", + "region.oss-ap-southeast-7": "タイ(バンコク)", "region.oss-us-west-1": "シリコンバレー (米国西部 1)", "region.oss-us-east-1": "バージニア (米国東部 1)", "region.oss-eu-central-1": "フランクフルト (ドイツ)", - "region.oss-me-east-1": "ドバイ (UAE)", + "region.oss-me-east-1": "アラブ首長国連邦(ドバイ)", "region.oss-eu-west-1": "イングランド (ロンドン)", optional: "オプション", diff --git a/node/i18n/zh-CN.js b/node/i18n/zh-CN.js index b64f8a3a..2f7ba911 100644 --- a/node/i18n/zh-CN.js +++ b/node/i18n/zh-CN.js @@ -8,27 +8,34 @@ module.exports = { "region.oss-cn-hangzhou": "华东1(杭州)", "region.oss-cn-shanghai": "华东2(上海)", + "region.oss-cn-nanjing": "华东5(南京本地地域)", + "region.oss-cn-fuzhou": "华东6(福州本地地域)", "region.oss-cn-qingdao": "华北1(青岛)", "region.oss-cn-beijing": "华北2(北京)", "region.oss-cn-zhangjiakou": "华北3(张家口)", "region.oss-cn-huhehaote": "华北5(呼和浩特)", + "region.oss-cn-wulanchabu": "华北6(乌兰察布)", "region.oss-cn-shenzhen": "华南1(深圳)", "region.oss-cn-heyuan": "华南2(河源)", "region.oss-cn-chengdu": "西南1(成都)", - "region.oss-cn-hongkong": "香港", + "region.oss-cn-hongkong": "中国(香港)", "region.oss-cn-guangzhou": "华南3(广州)", "region.oss-ap-southeast-1": "亚太东南1(新加坡)", "region.oss-ap-southeast-2": "亚太东南2(悉尼)", "region.oss-ap-southeast-3": "亚太东南3(吉隆坡)", "region.oss-ap-southeast-5": "亚太东南5(雅加达)", - "region.oss-ap-northeast-1": "亚太东北1(东京)", - "region.oss-ap-south-1": "亚太南部(孟买)", + "region.oss-ap-northeast-1": "日本(东京)", + "region.oss-ap-northeast-2": "韩国(首尔)", + "region.oss-ap-southeast-6": "菲律宾(马尼拉)", + "region.oss-ap-southeast-7": "泰国(曼谷)", + "region.oss-ap-south-1": "印度(孟买)", + "region.oss-us-west-1": "美国西部1(硅谷)", "region.oss-us-east-1": "美国东部1(弗吉尼亚)", - "region.oss-eu-central-1": "欧洲中部1(法兰克福)", - "region.oss-me-east-1": "中东东部1(迪拜)", + "region.oss-eu-central-1": "德国(法兰克福)", + "region.oss-me-east-1": "阿联酋(迪拜)", "region.oss-eu-west-1": "英国 (伦敦)", optional: "可选", diff --git a/vendor/aliyun-sdk-oss.js b/vendor/aliyun-sdk-oss.js index af1b4dfb..4042a445 100644 --- a/vendor/aliyun-sdk-oss.js +++ b/vendor/aliyun-sdk-oss.js @@ -3253,7 +3253,8 @@ ALY.ServiceInterface.RestXml = { // extract request id resp.data.RequestId = httpResponse.headers['x-oss-request-id'] || - httpResponse.headers['x-oss-requestid']; + httpResponse.headers['x-oss-requestid']|| + httpResponse.headers['X-Oss-Request-Id']; }, populateBody: function populateBody(req) { @@ -3857,7 +3858,7 @@ ALY.OSS = ALY.Service.defineService('oss', ['2013-10-15'], { populateURI: function populateURI(req) { var httpRequest = req.httpRequest; var b = req.params.Bucket; - + if (b) { // support cname var cname = req.service.config.cname || false @@ -3879,7 +3880,7 @@ ALY.OSS = ALY.Service.defineService('oss', ['2013-10-15'], { httpRequest.virtualHostedBucket = b; httpRequest.path = httpRequest.path.replace(new RegExp('^/' + b), ''); } - + if (httpRequest.path[0] !== '/') { httpRequest.path = '/' + httpRequest.path; } From befdb9bb960cda1986c0d061640c24aafcb0a443 Mon Sep 17 00:00:00 2001 From: chenshungang Date: Wed, 26 Oct 2022 17:34:13 +0800 Subject: [PATCH 03/11] fix: Repair the Japanese name habit --- node/i18n/ja-JP.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/node/i18n/ja-JP.js b/node/i18n/ja-JP.js index 1c6702cd..a32eaefb 100644 --- a/node/i18n/ja-JP.js +++ b/node/i18n/ja-JP.js @@ -18,23 +18,23 @@ module.exports = { "region.oss-cn-shenzhen": "深セン (中国南部 1)", "region.oss-cn-heyuan": "河源(中国南部 2)", "region.oss-cn-chengdu": "成都(中国西部 1)", - "region.oss-cn-hongkong": "中国(香港)", + "region.oss-cn-hongkong": "香港(中国)", "region.oss-cn-guangzhou": "广州(中国南部 3)", "region.oss-ap-southeast-1": "アジア東南 1 (シンガポール)", "region.oss-ap-southeast-2": "アジア東南 2 (シドニー)", "region.oss-ap-southeast-3": "アジア東南 3 (クアラルンプール)", "region.oss-ap-southeast-5": "アジア東南 5 (ジャカルタ)", - "region.oss-ap-northeast-1": "日本 (東京)", - "region.oss-ap-northeast-2": "韓国 (ソウル)", + "region.oss-ap-northeast-1": "東京 (日本)", + "region.oss-ap-northeast-2": "ソウル (韓国)", "region.oss-ap-south-1": "アジア南部 1 (ムンバイ)", - "region.oss-ap-southeast-6": "フィリピン(マニラ)", - "region.oss-ap-southeast-7": "タイ(バンコク)", + "region.oss-ap-southeast-6": "マニラ(フィリピン)", + "region.oss-ap-southeast-7": "バンコク(タイ)", "region.oss-us-west-1": "シリコンバレー (米国西部 1)", "region.oss-us-east-1": "バージニア (米国東部 1)", "region.oss-eu-central-1": "フランクフルト (ドイツ)", - "region.oss-me-east-1": "アラブ首長国連邦(ドバイ)", + "region.oss-me-east-1": "ドバイ(アラブ首長国連邦)", "region.oss-eu-west-1": "イングランド (ロンドン)", optional: "オプション", From b4c9cde09117713ad719541aa8d5f372c6a121ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=A1=BA=E5=88=9A?= Date: Thu, 20 Apr 2023 10:50:55 +0800 Subject: [PATCH 04/11] =?UTF-8?q?fix:=20to=20#48424264=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E4=BC=A0=E9=94=99=E8=AF=AF=E6=97=B6=E5=B1=95?= =?UTF-8?q?=E7=A4=BAec=20code=20=E5=92=8C=20request=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.json | 36 ++++++- .gitignore | 2 +- .vscode/settings.json | 16 +++ app/components/filters/formater.js | 1 - app/components/filters/list-filter.js | 1 - app/components/services/cipher.js | 2 +- app/components/services/diff-modal.js | 1 - .../services/oss-download-manager.js | 1 + app/components/services/oss-upload-manager.js | 4 +- app/components/services/oss2.js | 99 ++++++++++--------- app/main/files/transfer/uploads.html | 15 ++- app/main/files/transfer/uploads.js | 12 ++- node/ossstore/lib/upload-job-util.js | 8 +- node/ossstore/lib/upload-job.js | 7 ++ node/ossstore/lib/util.js | 12 +-- 15 files changed, 146 insertions(+), 71 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.eslintrc.json b/.eslintrc.json index f2d6a6a3..c1213839 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -8,7 +8,41 @@ } }, "rules": { - "semi": 2 + "semi": 2, + "quotes": 0, + "strict": 0, + "padding-line-between-statements": 0, + "spaced-comment": 0, + "no-console": 0, + "comma-dangle": 0, + "no-unneeded-ternary": 0, + "space-before-function-paren": 0, + "indent": 0, + "curly": 0, + "no-unused-vars": 0, + "guard-for-in": 0, + "radix": 0, + "no-param-reassign": 0, + "no-else-return": 0, + "eqeqeq": 0, + "dot-notation": 0, + "object-curly-newline": 0, + "operator-assignment": 0, + "no-shadow": 0, + "require-atomic-updates": 0, + "nonblock-statement-body-position": 0, + "no-empty": 0, + "no-lonely-if": 0, + "one-var": 0, + "block-scoped-var": 0, + "no-redeclare": 0, + "no-useless-return": 0, + "no-loop-func": 0, + "default-case": 0, + "no-fallthrough": 0, + "prefer-promise-reject-errors": 0, + "no-throw-literal": 0, + "brace-style": 0 }, "extends": ["@alicloud/eslint-config/es5"], "ignorePatterns": ["static/", "vendor/", "dist/", "node_modules/", "test/"], diff --git a/.gitignore b/.gitignore index c1d5c9c7..e59790b7 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,4 @@ app.asar #tool -.vscode/ +#.vscode/ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..5545d3e5 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,16 @@ +{ + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue" + ], + "stylelint.validate": ["css", "scss", "less", "acss"], + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true, + "source.fixAll.stylelint": true, + "source.fixAll.markdownlint": true + }, + "editor.formatOnSave": false +} diff --git a/app/components/filters/formater.js b/app/components/filters/formater.js index 5fc2d0e5..2195b853 100644 --- a/app/components/filters/formater.js +++ b/app/components/filters/formater.js @@ -1,4 +1,3 @@ - angular .module('web') .filter('trustAsResourceUrl', [ diff --git a/app/components/filters/list-filter.js b/app/components/filters/list-filter.js index a0bd4b30..e692d39b 100644 --- a/app/components/filters/list-filter.js +++ b/app/components/filters/list-filter.js @@ -1,4 +1,3 @@ - angular.module('web').filter('listFilter', function() { return function(arr, keyFn, value) { if (!value) { return arr; } diff --git a/app/components/services/cipher.js b/app/components/services/cipher.js index f720f04a..0f3e808a 100644 --- a/app/components/services/cipher.js +++ b/app/components/services/cipher.js @@ -9,7 +9,7 @@ angular.module('web').factory('Cipher', function() { }; function cipher(buf, key, algorithm) { - if (!buf instanceof Buffer) { + if (!(buf instanceof Buffer)) { buf = new Buffer(buf); } diff --git a/app/components/services/diff-modal.js b/app/components/services/diff-modal.js index ab02ef10..fa13344d 100644 --- a/app/components/services/diff-modal.js +++ b/app/components/services/diff-modal.js @@ -1,4 +1,3 @@ - angular .module('web') .factory('DiffModal', [ diff --git a/app/components/services/oss-download-manager.js b/app/components/services/oss-download-manager.js index a30e36ea..137841f1 100644 --- a/app/components/services/oss-download-manager.js +++ b/app/components/services/oss-download-manager.js @@ -259,6 +259,7 @@ angular.module('web').factory('ossDownloadManager', [ // 文件 if (process.platform == 'win32') { // 修复window下,文件名含非法字符需要转义 + // eslint-disable-next-line no-useless-escape if (/[\/\\\:\<\>\?\*\"\|]/.test(fileName)) { fileName = encodeURIComponent(fileName); filePath = path.join( diff --git a/app/components/services/oss-upload-manager.js b/app/components/services/oss-upload-manager.js index 31b9dfb5..06fb5da3 100644 --- a/app/components/services/oss-upload-manager.js +++ b/app/components/services/oss-upload-manager.js @@ -367,13 +367,13 @@ angular.module('web').factory('ossUploadManager', [ from: n.from, status: n.status, message: n.message, + ecCode: n.ecCode, + requestId: n.requestId, prog: n.prog }); }); // console.log('request save upload:', t); - - // console.log('-save') fs.writeFileSync(getUpProgFilePath(), JSON.stringify(t)); $scope.calcTotalProg(); }, diff --git a/app/components/services/oss2.js b/app/components/services/oss2.js index aec05a4e..f5031d76 100644 --- a/app/components/services/oss2.js +++ b/app/components/services/oss2.js @@ -1,3 +1,4 @@ +/* eslint-disable no-unexpected-multiline */ angular.module('web').factory('ossSvs2', [ '$q', '$rootScope', @@ -245,6 +246,7 @@ angular.module('web').factory('ossSvs2', [ if (i.status === 'fulfilled') { fulfilled.push(i.value); } else { + // eslint-disable-next-line no-unused-expressions i.status === 'rejected'; if (Array.isArray(i.reason)) { @@ -1200,14 +1202,15 @@ angular.module('web').factory('ossSvs2', [ if (taggingResult && taggingResult.tag) { tagging = Object.keys(taggingResult.tag).map(function(k) { + // eslint-disable-next-line no-undef return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]); }).join('&'); } let encoding = headResult.ContentEncoding; // code-modal保存时,如果encoding=gzip,就不变更gzip,避免内容未做gzip压缩,导致sdk中的urllib响应内容解析失败 - if(isCodeSave && encoding === 'gzip'){ - encoding=undefined; + if (isCodeSave && encoding === 'gzip') { + encoding = undefined; } client3.put(key, new Buffer(content), { @@ -1689,50 +1692,50 @@ angular.module('web').factory('ossSvs2', [ list(marker); }); - return client.listV2(Object.assign({}, options, { 'continuation-token': marker })) - .then((resp) => { - const dirs = (resp.prefixes || []) - .filter((n) => n !== key) - .map((n) => { - const arr = n.split('/').filter((k) => !!k); - const name = arr[arr.length - 1]; - - return { - isFolder: true, - itemType: 'folder', - path: n, - name: name === '/' ? name : name.replace(/\/$/, '') - }; - }); - const objects = (resp.objects || []) - .filter((n) => n.name !== key) - .map((n) => { - const arr = n.name.split('/').filter((k) => !!k); - const name = arr[arr.length - 1]; - - return Object.assign(n, { - isFile: true, - itemType: 'file', - path: n.name, - name: name - }); - }); - - return { - data: { - dirs, - objects - }, - marker: resp.nextContinuationToken, - truncated: resp.isTruncated, - maxKeys: +resp.keyCount - }; - }) - ['catch']((e) => { - handleError(e); - - return Promise.reject(e); - }); + // return client.listV2(Object.assign({}, options, { 'continuation-token': marker })) + // .then((resp) => { + // const dirs = (resp.prefixes || []) + // .filter((n) => n !== key) + // .map((n) => { + // const arr = n.split('/').filter((k) => !!k); + // const name = arr[arr.length - 1]; + + // return { + // isFolder: true, + // itemType: 'folder', + // path: n, + // name: name === '/' ? name : name.replace(/\/$/, '') + // }; + // }); + // const objects = (resp.objects || []) + // .filter((n) => n.name !== key) + // .map((n) => { + // const arr = n.name.split('/').filter((k) => !!k); + // const name = arr[arr.length - 1]; + + // return Object.assign(n, { + // isFile: true, + // itemType: 'file', + // path: n.name, + // name: name + // }); + // }); + + // return { + // data: { + // dirs, + // objects + // }, + // marker: resp.nextContinuationToken, + // truncated: resp.isTruncated, + // maxKeys: +resp.keyCount + // }; + // }) + // ['catch']((e) => { + // handleError(e); + + // return Promise.reject(e); + // }); } function listAllFiles(region, bucket, key, folderOnly) { @@ -1996,7 +1999,7 @@ angular.module('web').factory('ossSvs2', [ } return ( - protocol + '//' + bucket + '.' + region + '.aliyuncs.com' + '/' + key + protocol + '//' + bucket + '.' + region + '.aliyuncs.com/' + key ); } @@ -2017,7 +2020,7 @@ angular.module('web').factory('ossSvs2', [ } return ( - protocol + '//' + bucket + '.' + region + '.aliyuncs.com' + '/' + key + protocol + '//' + bucket + '.' + region + '.aliyuncs.com/' + key ); } diff --git a/app/main/files/transfer/uploads.html b/app/main/files/transfer/uploads.html index 32508526..f75e394f 100644 --- a/app/main/files/transfer/uploads.html +++ b/app/main/files/transfer/uploads.html @@ -119,10 +119,12 @@ {{item.status|status:1}} @@ -185,7 +187,14 @@ + diff --git a/app/main/files/transfer/uploads.js b/app/main/files/transfer/uploads.js index 2de62b91..4206302e 100644 --- a/app/main/files/transfer/uploads.js +++ b/app/main/files/transfer/uploads.js @@ -1,4 +1,3 @@ - angular.module('web').controller('transferUploadsCtrl', [ '$scope', '$timeout', @@ -43,7 +42,8 @@ angular.module('web').controller('transferUploadsCtrl', [ ); }, limitToNum: 100, - loadMoreUploadItems: loadMoreItems + loadMoreUploadItems: loadMoreItems, + copyMessage: copyMessage }); function loadMoreItems() { @@ -206,5 +206,13 @@ angular.module('web').controller('transferUploadsCtrl', [ ); } } + + /** 复制到剪贴板 */ + function copyMessage(item) { + const { clipboard } = require('electron'); + const { message, ecCode, requestId } = item; + clipboard.writeText(`Message: ${message}${ecCode ? '\nEC Code: ' + ecCode : ''}${requestId ? '\nRequest Id: ' + requestId : '' }`); + Toast.success(T('copy.successfully')); + } } ]); diff --git a/node/ossstore/lib/upload-job-util.js b/node/ossstore/lib/upload-job-util.js index 04139802..a1ac9d28 100644 --- a/node/ossstore/lib/upload-job-util.js +++ b/node/ossstore/lib/upload-job-util.js @@ -76,6 +76,7 @@ function completeMultipartUpload(self, doneParams, fn) { var retryTimes = 0; setTimeout(_dig, 10); function _dig() { + console.log("self.oss", self); self.oss.completeMultipartUpload(doneParams, function (err, data) { if (err) { if (err.message.indexOf("The specified upload does not exist") != -1) { @@ -87,7 +88,7 @@ function completeMultipartUpload(self, doneParams, fn) { function (err2, data2) { //console.log('headobject: ', err2, err2.message, data); if (err2) { - fn(err2); + fn(err2, data2); } else { fn(null, data2); } @@ -97,7 +98,7 @@ function completeMultipartUpload(self, doneParams, fn) { } if (retryTimes > RETRYTIMES) { - fn(err); + fn(err, data); } else { retryTimes++; self._changeStatus("retrying", retryTimes); @@ -148,7 +149,6 @@ function getUploadId(checkPoints, self, params, fn) { if (!self.stopFlag) _dig(); }, 2000); } - return; } else { checkPoints.uploadId = res.UploadId; fn(null, res.UploadId); @@ -195,7 +195,7 @@ function prepareChunks(filePath, checkPoints, fn) { fs.stat(filePath, function (err, state) { if (err) { - callback(err); + // callback(err); return; } diff --git a/node/ossstore/lib/upload-job.js b/node/ossstore/lib/upload-job.js index 2500f228..23719b5f 100644 --- a/node/ossstore/lib/upload-job.js +++ b/node/ossstore/lib/upload-job.js @@ -65,6 +65,8 @@ class UploadJob extends Base { }; this.message = this._config.message; + this.ecCode = this._config.ecCode; + this.requestId = this._config.requestId; this.status = this._config.status || "waiting"; this.stopFlag = this.status != "running"; @@ -95,6 +97,8 @@ UploadJob.prototype.start = function () { } self.message = ""; + self.ecCode = ""; + self.requestId = ""; this.startTime = new Date().getTime(); this.endTime = null; this._changeStatus("running"); @@ -756,7 +760,10 @@ UploadJob.prototype.uploadMultipart = function (checkPoints) { ); if (err) { console.error("[" + doneParams.UploadId + "]", err, doneParams); + var headers = err.headers; self.message = err.message; + self.ecCode = headers["x-oss-ec"]; + self.requestId = headers["x-oss-request-id"]; self._changeStatus("failed"); self.emit("error", err); } else { diff --git a/node/ossstore/lib/util.js b/node/ossstore/lib/util.js index e14fd966..dab73aef 100644 --- a/node/ossstore/lib/util.js +++ b/node/ossstore/lib/util.js @@ -147,7 +147,7 @@ function getBigFileMd5(p, fn) { md5sum.update(chunk); }); stream.on("end", function () { - str = md5sum.digest("base64"); + var str = md5sum.digest("base64"); console.timeEnd("get md5 hash for [" + p + "]"); fn(null, str); }); @@ -260,11 +260,11 @@ function getBufferCrc64(buffer, fn) { }); } -function getStreamCrc64(s, fn) { - CRC64.crc64Stream(s, function (err, data) { - fn(err, data); - }); -} +// function getStreamCrc64(s, fn) { +// CRC64.crc64Stream(s, function (err, data) { +// fn(err, data); +// }); +// } function closeFD(fd) { fs.close(fd, (err) => { From 185e1361fea31bfd621e1e72c1a99bc7b12194a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=A1=BA=E5=88=9A?= Date: Wed, 26 Apr 2023 16:21:55 +0800 Subject: [PATCH 05/11] =?UTF-8?q?feat:=20to=20#49342210=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=88=97=E4=B8=BEobject=E6=9C=80=E5=A4=A7=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/services/oss2.js | 49 ++------------------------ app/components/services/settings.js | 10 ++++++ app/main/files/files.js | 4 +-- app/main/modals/settings.html | 24 +++++++++++++ app/main/modals/settings.js | 2 +- node/i18n/en-US.js | 2 ++ node/i18n/ja-JP.js | 2 ++ node/i18n/zh-CN.js | 4 ++- node/ossstore/lib/download-job-util.js | 2 ++ 9 files changed, 49 insertions(+), 50 deletions(-) diff --git a/app/components/services/oss2.js b/app/components/services/oss2.js index f5031d76..ce834b40 100644 --- a/app/components/services/oss2.js +++ b/app/components/services/oss2.js @@ -1614,7 +1614,9 @@ angular.module('web').factory('ossSvs2', [ }); } - function _listFilesOrigion(region, bucket, key, marker = '', length = 1000) { + function _listFilesOrigion(region, bucket, key, marker = '', length) { + if (!length) length = localStorage.getItem("listObjectNum") || 500; + console.log('list-object-max-length', length); const client = getClient3({ region, bucket @@ -1691,51 +1693,6 @@ angular.module('web').factory('ossSvs2', [ list(marker); }); - - // return client.listV2(Object.assign({}, options, { 'continuation-token': marker })) - // .then((resp) => { - // const dirs = (resp.prefixes || []) - // .filter((n) => n !== key) - // .map((n) => { - // const arr = n.split('/').filter((k) => !!k); - // const name = arr[arr.length - 1]; - - // return { - // isFolder: true, - // itemType: 'folder', - // path: n, - // name: name === '/' ? name : name.replace(/\/$/, '') - // }; - // }); - // const objects = (resp.objects || []) - // .filter((n) => n.name !== key) - // .map((n) => { - // const arr = n.name.split('/').filter((k) => !!k); - // const name = arr[arr.length - 1]; - - // return Object.assign(n, { - // isFile: true, - // itemType: 'file', - // path: n.name, - // name: name - // }); - // }); - - // return { - // data: { - // dirs, - // objects - // }, - // marker: resp.nextContinuationToken, - // truncated: resp.isTruncated, - // maxKeys: +resp.keyCount - // }; - // }) - // ['catch']((e) => { - // handleError(e); - - // return Promise.reject(e); - // }); } function listAllFiles(region, bucket, key, folderOnly) { diff --git a/app/components/services/settings.js b/app/components/services/settings.js index f2ef0896..3d689496 100644 --- a/app/components/services/settings.js +++ b/app/components/services/settings.js @@ -112,6 +112,16 @@ angular.module('web').factory('settingsSvs', [ return localStorage.setItem('downloadConcurrecyPartSize', v); } }, + listObjectNum: { + get: function() { + return parseInt( + localStorage.getItem('listObjectNum') || 500 + ); + }, + set: function(v) { + return localStorage.setItem('listObjectNum', v); + } + }, uploadAndDownloadRetryTimes: { get: function() { return parseInt( diff --git a/app/main/files/files.js b/app/main/files/files.js index 357d91e2..68e0e5a8 100644 --- a/app/main/files/files.js +++ b/app/main/files/files.js @@ -648,6 +648,7 @@ angular function(result) { const arr = result.data; + // eslint-disable-next-line no-unused-expressions settingsSvs.showImageSnapshot.get() == 1 ? signPicURL(info, arr) : null; @@ -726,8 +727,7 @@ angular `) ); safeApply($scope); - }) - ['finally'](() => { + }).finally(() => { $timeout(() => { isLoadingObjectSymlinkMeta = false; }, 500); diff --git a/app/main/modals/settings.html b/app/main/modals/settings.html index d20695f6..799bda09 100644 --- a/app/main/modals/settings.html +++ b/app/main/modals/settings.html @@ -385,6 +385,30 @@
{{'settings.log'|translate}}
+
+ +
{{'settings.other'|translate}}
+
+
+ +
+ +
+
+