From ca8c027264a875e56f2740fa88b45dd562c2b809 Mon Sep 17 00:00:00 2001 From: YunZZY <1263206327@qq.com> Date: Tue, 26 Nov 2024 09:42:10 +0800 Subject: [PATCH] feat: support PostObject policy v4 signature and restore archive object set days (#1340) Co-authored-by: zhengzuoyu.zzy --- README.md | 110 +++++++- karma.conf.js | 2 +- lib/browser/object.js | 25 +- lib/common/object/index.js | 1 + lib/common/object/signPostObjectPolicyV4.d.ts | 1 + lib/common/object/signPostObjectPolicyV4.js | 27 ++ lib/common/object/signPostObjectPolicyV4.ts | 20 ++ lib/common/object/signatureUrlV4.js | 2 +- lib/common/signUtils.js | 21 +- lib/common/utils/parseRestoreInfo.d.ts | 10 + lib/common/utils/parseRestoreInfo.ts | 10 + lib/object.js | 24 +- package-lock.json | 19 +- package.json | 4 +- task/dingding.jpg | Bin 151183 -> 0 bytes test/browser/browser.test.js | 207 +++++++++++---- test/node/object.test.js | 244 ++++++++++++------ 17 files changed, 539 insertions(+), 188 deletions(-) create mode 100644 lib/common/object/signPostObjectPolicyV4.d.ts create mode 100644 lib/common/object/signPostObjectPolicyV4.js create mode 100644 lib/common/object/signPostObjectPolicyV4.ts delete mode 100644 task/dingding.jpg diff --git a/README.md b/README.md index abf2225cb..ba7c10889 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,7 @@ Node.js >= 8.0.0 required. You can use 4.x in Node.js < 8. ### QA -You can join DingDing Talk Group, [Group Link](https://qr.dingtalk.com/action/joingroup?code=v1,k1,E60EuCmxajfilkaR/kknRcGR9UissskPEXu/1td36z0=) - - +Please log in to the official website and contact technical support. ## License @@ -162,6 +160,7 @@ All operation use es7 async/await to implement. All api is async function. - [.listUploads(query[, options])](#listuploadsquery-options) - [.abortMultipartUpload(name, uploadId[, options])](#abortmultipartuploadname-uploadid-options) - [.calculatePostSignature(policy)](#calculatePostSignaturepolicy) + - [.signPostObjectPolicyV4(policy, date)](#signpostobjectpolicyv4policy-date) - [.getObjectTagging(name, [, options])](#getObjectTaggingname-options) - [.putObjectTagging(name, tag[, options])](#putObjectTaggingname-tag-options) - [.deleteObjectTagging(name, [, options])](#deleteObjectTaggingname-options) @@ -2450,7 +2449,7 @@ Success will return objects list on `objects` properties. - storageClass {String} storage class type, e.g.: `Standard` - owner {Object} object owner, including `id` and `displayName` - restoreInfo {Object|undefined} The restoration status of the object - - ongoingRequest {Boolean} Whether the restoration is complete + - ongoingRequest {Boolean} Whether the restoration is ongoing - expireDate {Date|undefined} The time before which the restored object can be read - prefixes {Array} prefix list - isTruncated {Boolean} truncate or not @@ -2519,7 +2518,7 @@ Success will return objects list on `objects` properties. - storageClass {String} storage class type, e.g.: `Standard` - owner {Object|null} object owner, including `id` and `displayName` - restoreInfo {Object|undefined} The restoration status of the object - - ongoingRequest {Boolean} Whether the restoration is complete + - ongoingRequest {Boolean} Whether the restoration is ongoing - expireDate {Date|undefined} The time before which the restored object can be read - prefixes {Array} prefix list - isTruncated {Boolean} truncate or not @@ -2602,7 +2601,7 @@ Success will return objects list on `objects` properties. - storageClass {String} storage class type, e.g.: `Standard` - owner {Object} object owner, including `id` and `displayName` - restoreInfo {Object|undefined} The restoration status of the object - - ongoingRequest {Boolean} Whether the restoration is complete + - ongoingRequest {Boolean} Whether the restoration is ongoing - expireDate {Date|undefined} The time before which the restored object can be read - deleteMarker {Array} object delete marker info list Each `ObjectDeleteMarker` @@ -2963,6 +2962,8 @@ parameters: - [timeout] {Number} the operation timeout - [versionId] {String} the version id of history object - [type] {String} the default type is Archive + - [Days] {number} The duration within which the object remains in the restored state. The default value is 2. + - [JobParameters] {string} The container that stores the restoration priority. This parameter is valid only when you restore Cold Archive or Deep Cold Archive objects. The default value is Standard. Success will return: @@ -2974,48 +2975,48 @@ Success will return: example: -- Restore an object with Archive type +- Restore an Archive object ```js const result = await store.restore('ossdemo.txt'); console.log(result.status); ``` -- Restore an object with ColdArchive type +- Restore a Cold Archive object ```js const result = await store.restore('ossdemo.txt', { type: 'ColdArchive' }); console.log(result.status); ``` -- Days for unfreezing Specifies the days for unfreezing +- Restore a Cold Archive object with Days ```js const result = await store.restore('ossdemo.txt', { type: 'ColdArchive', Days: 2 }); console.log(result.status); ``` -- JobParameters for unfreezing Specifies the JobParameters for unfreezing +- Restore a Cold Archive object with Days and JobParameters ```js const result = await store.restore('ossdemo.txt', { type: 'ColdArchive', Days: 2, JobParameters: 'Standard' }); console.log(result.status); ``` -- Restore an object with DeepColdArchive type +- Restore a Deep Cold Archive object ```js const result = await store.restore('ossdemo.txt', { type: 'DeepColdArchive' }); console.log(result.status); ``` -- Days for unfreezing Specifies the days for unfreezing +- Restore a Deep Cold Archive object with Days ```js const result = await store.restore('ossdemo.txt', { type: 'DeepColdArchive', Days: 2 }); console.log(result.status); ``` -- JobParameters for unfreezing Specifies the JobParameters for unfreezing +- Restore a Deep Cold Archive object with Days and JobParameters ```js const result = await store.restore('ossdemo.txt', { type: 'DeepColdArchive', Days: 2, JobParameters: 'Standard' }); @@ -3852,6 +3853,89 @@ Object: - Signature {String} - policy {Object} response info +### .signPostObjectPolicyV4(policy, date) + +Get a V4 signature of the PostObject request. + +parameters: + +- policy {string | Object} The policy form field in a PostObject request is used to specify the expiration time and conditions of the PostObject request that you initiate to upload an object by using an HTML form. The value of the policy form field is a JSON string or an object. +- date {Date} The time when the request was initiated. + +Success will return a V4 signature of the PostObject request. + +example: + +```js +const axios = require('axios'); +const dateFormat = require('dateformat'); +const FormData = require('form-data'); +const { getCredential } = require('ali-oss/lib/common/signUtils'); +const { getStandardRegion } = require('ali-oss/lib/common/utils/getStandardRegion'); +const { policy2Str } = require('ali-oss/lib/common/utils/policy2Str'); +const OSS = require('ali-oss'); + +const client = new OSS({ + accessKeyId: 'yourAccessKeyId', + accessKeySecret: 'yourAccessKeySecret', + stsToken: 'yourSecurityToken', + bucket: 'yourBucket', + region: 'oss-cn-hangzhou' +}); +const name = 'yourObjectName'; +const formData = new FormData(); +formData.append('key', name); +formData.append('Content-Type', 'yourObjectContentType'); +// your object cache control +formData.append('Cache-Control', 'max-age=30'); +const url = client.generateObjectUrl(name).replace(name, ''); +const date = new Date(); +// The expiration parameter specifies the expiration time of the request. +const expirationDate = new Date(date); +expirationDate.setMinutes(date.getMinutes() + 1); +// The time must follow the ISO 8601 standard +const formattedDate = dateFormat(date, "UTC:yyyymmdd'T'HHMMss'Z'"); +const credential = getCredential(formattedDate.split('T')[0], getStandardRegion(client.options.region), client.options.accessKeyId); +formData.append('x-oss-date', formattedDate); +formData.append('x-oss-credential', credential); +formData.append('x-oss-signature-version', 'OSS4-HMAC-SHA256'); +const policy = { + expiration: expirationDate.toISOString(), + conditions: [ + { bucket: client.options.bucket }, + {'x-oss-credential': credential}, + {'x-oss-date': formattedDate}, + {'x-oss-signature-version': 'OSS4-HMAC-SHA256'}, + ['content-length-range', 1, 10], + ['eq', '$success_action_status', '200'], + ['starts-with', '$key', 'yourObjectName'], + ['in', '$content-type', ['image/jpg', 'text/plain']], + ['not-in', '$cache-control', ['no-cache']] + ] +}; + +if (client.options.stsToken) { + policy.conditions.push({'x-oss-security-token': client.options.stsToken}); + formData.append('x-oss-security-token', client.options.stsToken); +} + +const signature = client.signPostObjectPolicyV4(policy, date); +formData.append('policy', Buffer.from(policy2Str(policy), 'utf8').toString('base64')); +formData.append('x-oss-signature', signature); +formData.append('success_action_status', '200'); +formData.append('file', 'yourFileContent'); + +axios.post(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } +}).then((result) => { + console.log(result.status); +}).catch((e) => { + console.log(e); +}); +``` + ### .getObjectTagging(name[, options]) Obtains the tags of an object. diff --git a/karma.conf.js b/karma.conf.js index e69c46e42..92c43328d 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -34,7 +34,7 @@ module.exports = function (config) { concurrency: 1, client: { mocha: { - timeout: 6000 + timeout: 10000 } } }); diff --git a/lib/browser/object.js b/lib/browser/object.js index df202f6ff..c569ea4b5 100644 --- a/lib/browser/object.js +++ b/lib/browser/object.js @@ -167,6 +167,7 @@ merge(proto, require('../common/object/generateObjectUrl')); merge(proto, require('../common/object/signatureUrl')); merge(proto, require('../common/object/asyncSignatureUrl')); merge(proto, require('../common/object/signatureUrlV4')); +merge(proto, require('../common/object/signPostObjectPolicyV4')); proto.putMeta = async function putMeta(name, meta, options) { const copyResult = await this.copy(name, name, { @@ -301,20 +302,22 @@ proto.restore = async function restore(name, options = { type: 'Archive' }) { options.subres.versionId = options.versionId; } const params = this._objectRequestParams('POST', name, options); + const paramsXMLObj = { + RestoreRequest: { + Days: options.Days ? options.Days : 2 + } + }; + if (options.type === 'ColdArchive' || options.type === 'DeepColdArchive') { - const paramsXMLObj = { - RestoreRequest: { - Days: options.Days ? options.Days : 2, - JobParameters: { - Tier: options.JobParameters ? options.JobParameters : 'Standard' - } - } + paramsXMLObj.RestoreRequest.JobParameters = { + Tier: options.JobParameters ? options.JobParameters : 'Standard' }; - params.content = obj2xml(paramsXMLObj, { - headers: true - }); - params.mime = 'xml'; } + + params.content = obj2xml(paramsXMLObj, { + headers: true + }); + params.mime = 'xml'; params.successStatuses = [202]; const result = await this.request(params); diff --git a/lib/common/object/index.js b/lib/common/object/index.js index d0091b359..45a4194d2 100644 --- a/lib/common/object/index.js +++ b/lib/common/object/index.js @@ -24,3 +24,4 @@ merge(proto, require('./getObjectUrl')); merge(proto, require('./signatureUrl')); merge(proto, require('./asyncSignatureUrl')); merge(proto, require('./signatureUrlV4')); +merge(proto, require('./signPostObjectPolicyV4')); diff --git a/lib/common/object/signPostObjectPolicyV4.d.ts b/lib/common/object/signPostObjectPolicyV4.d.ts new file mode 100644 index 000000000..fd2f3b852 --- /dev/null +++ b/lib/common/object/signPostObjectPolicyV4.d.ts @@ -0,0 +1 @@ +export declare function signPostObjectPolicyV4(this: any, policy: string | object, date: Date): string; diff --git a/lib/common/object/signPostObjectPolicyV4.js b/lib/common/object/signPostObjectPolicyV4.js new file mode 100644 index 000000000..c58ad084d --- /dev/null +++ b/lib/common/object/signPostObjectPolicyV4.js @@ -0,0 +1,27 @@ +'use strict'; + +const __importDefault = + (this && this.__importDefault) || + function (mod) { + return mod && mod.__esModule ? mod : { default: mod }; + }; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.signPostObjectPolicyV4 = void 0; +const dateformat_1 = __importDefault(require('dateformat')); +const getStandardRegion_1 = require('../utils/getStandardRegion'); +const policy2Str_1 = require('../utils/policy2Str'); +const signUtils_1 = require('../signUtils'); + +function signPostObjectPolicyV4(policy, date) { + const policyStr = Buffer.from(policy2Str_1.policy2Str(policy), 'utf8').toString('base64'); + const formattedDate = dateformat_1.default(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + const onlyDate = formattedDate.split('T')[0]; + const signature = signUtils_1.getSignatureV4( + this.options.accessKeySecret, + onlyDate, + getStandardRegion_1.getStandardRegion(this.options.region), + policyStr + ); + return signature; +} +exports.signPostObjectPolicyV4 = signPostObjectPolicyV4; diff --git a/lib/common/object/signPostObjectPolicyV4.ts b/lib/common/object/signPostObjectPolicyV4.ts new file mode 100644 index 000000000..4a3729b65 --- /dev/null +++ b/lib/common/object/signPostObjectPolicyV4.ts @@ -0,0 +1,20 @@ +import dateFormat from 'dateformat'; + +import { getStandardRegion } from '../utils/getStandardRegion'; +import { policy2Str } from '../utils/policy2Str'; +import { getSignatureV4 } from '../signUtils'; + +export function signPostObjectPolicyV4(this: any, policy: string | object, date: Date): string { + const policyStr = Buffer.from(policy2Str(policy), 'utf8').toString('base64'); + const formattedDate = dateFormat(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + const onlyDate = formattedDate.split('T')[0]; + + const signature = getSignatureV4( + this.options.accessKeySecret, + onlyDate, + getStandardRegion(this.options.region), + policyStr + ); + + return signature; +} diff --git a/lib/common/object/signatureUrlV4.js b/lib/common/object/signatureUrlV4.js index 01dfebcb1..8417557b7 100644 --- a/lib/common/object/signatureUrlV4.js +++ b/lib/common/object/signatureUrlV4.js @@ -31,7 +31,7 @@ proto.signatureUrlV4 = async function signatureUrlV4(method, expires, request, o if (fixedAdditionalHeaders.length > 0) { queries['x-oss-additional-headers'] = fixedAdditionalHeaders.join(';'); } - queries['x-oss-credential'] = `${this.options.accessKeyId}/${onlyDate}/${region}/oss/aliyun_v4_request`; + queries['x-oss-credential'] = signHelper.getCredential(onlyDate, region, this.options.accessKeyId); queries['x-oss-date'] = formattedDate; queries['x-oss-expires'] = expires; queries['x-oss-signature-version'] = 'OSS4-HMAC-SHA256'; diff --git a/lib/common/signUtils.js b/lib/common/signUtils.js index fcc3a3cd9..8f0509168 100644 --- a/lib/common/signUtils.js +++ b/lib/common/signUtils.js @@ -180,6 +180,23 @@ exports.getCanonicalRequest = function getCanonicalRequest(method, request, buck return signContent.join('\n'); }; +/** + * @param {string} date yyyymmdd + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} [accessKeyId] Access Key ID + * @param {string} [product] Product name, default is oss + * @returns {string} + */ +exports.getCredential = function getCredential(date, region, accessKeyId, product = 'oss') { + const tempCredential = `${date}/${region}/${product}/aliyun_v4_request`; + + if (accessKeyId) { + return `${accessKeyId}/${tempCredential}`; + } + + return tempCredential; +}; + /** * @param {string} region Standard region, e.g. cn-hangzhou * @param {string} date ISO8601 UTC:yyyymmdd'T'HHMMss'Z' @@ -190,7 +207,7 @@ exports.getStringToSign = function getStringToSign(region, date, canonicalReques const stringToSign = [ 'OSS4-HMAC-SHA256', date, // TimeStamp - `${date.split('T')[0]}/${region}/oss/aliyun_v4_request`, // Scope + this.getCredential(date.split('T')[0], region), // Scope crypto.createHash('sha256').update(canonicalRequest).digest('hex') // Hashed Canonical Request ]; @@ -261,7 +278,7 @@ exports.authorizationV4 = function authorizationV4( const additionalHeadersValue = fixedAdditionalHeaders.length > 0 ? `AdditionalHeaders=${fixedAdditionalHeaders.join(';')},` : ''; - return `OSS4-HMAC-SHA256 Credential=${accessKeyId}/${onlyDate}/${region}/oss/aliyun_v4_request,${additionalHeadersValue}Signature=${signatureValue}`; + return `OSS4-HMAC-SHA256 Credential=${this.getCredential(onlyDate, region, accessKeyId)},${additionalHeadersValue}Signature=${signatureValue}`; }; /** diff --git a/lib/common/utils/parseRestoreInfo.d.ts b/lib/common/utils/parseRestoreInfo.d.ts index 53f08b406..cf3590e09 100644 --- a/lib/common/utils/parseRestoreInfo.d.ts +++ b/lib/common/utils/parseRestoreInfo.d.ts @@ -1,5 +1,15 @@ interface IRestoreInfo { + /** + * Whether the restoration is ongoing + * If a RestoreObject request is sent but the restoration is not complete, the value is true. + * If a RestoreObject request is sent and the restoration is complete, the value is false. + */ ongoingRequest: boolean; + /** + * The time before which the restored object can be read. + * If a RestoreObject request is sent but the restoration is not complete, the value is undefined. + * If a RestoreObject request is sent and the restoration is complete, the value is Date. + */ expiryDate?: Date; } export declare const parseRestoreInfo: (originalRestoreInfo?: string | undefined) => IRestoreInfo | undefined; diff --git a/lib/common/utils/parseRestoreInfo.ts b/lib/common/utils/parseRestoreInfo.ts index 75149fe50..e97f4f739 100644 --- a/lib/common/utils/parseRestoreInfo.ts +++ b/lib/common/utils/parseRestoreInfo.ts @@ -1,5 +1,15 @@ interface IRestoreInfo { + /** + * Whether the restoration is ongoing + * If a RestoreObject request is sent but the restoration is not complete, the value is true. + * If a RestoreObject request is sent and the restoration is complete, the value is false. + */ ongoingRequest: boolean; + /** + * The time before which the restored object can be read. + * If a RestoreObject request is sent but the restoration is not complete, the value is undefined. + * If a RestoreObject request is sent and the restoration is complete, the value is Date. + */ expiryDate?: Date; } diff --git a/lib/object.js b/lib/object.js index 21770ec01..a48f46a29 100644 --- a/lib/object.js +++ b/lib/object.js @@ -324,20 +324,22 @@ proto.restore = async function restore(name, options = { type: 'Archive' }) { options.subres.versionId = options.versionId; } const params = this._objectRequestParams('POST', name, options); + const paramsXMLObj = { + RestoreRequest: { + Days: options.Days ? options.Days : 2 + } + }; + if (options.type === 'ColdArchive' || options.type === 'DeepColdArchive') { - const paramsXMLObj = { - RestoreRequest: { - Days: options.Days ? options.Days : 2, - JobParameters: { - Tier: options.JobParameters ? options.JobParameters : 'Standard' - } - } + paramsXMLObj.RestoreRequest.JobParameters = { + Tier: options.JobParameters ? options.JobParameters : 'Standard' }; - params.content = obj2xml(paramsXMLObj, { - headers: true - }); - params.mime = 'xml'; } + + params.content = obj2xml(paramsXMLObj, { + headers: true + }); + params.mime = 'xml'; params.successStatuses = [202]; const result = await this.request(params); diff --git a/package-lock.json b/package-lock.json index 1cf44052e..628971f0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,14 +55,14 @@ "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "aliasify": "^2.0.0", - "axios": "0.27.2", + "axios": "^0.27.2", "babelify": "^10.0.0", "beautify-benchmark": "^0.2.4", "benchmark": "^2.1.1", "bluebird": "^3.1.5", "browserify": "^17.0.0", "core-js": "^3.6.5", - "crypto-js": "^3.1.9-1", + "crypto-js": "^4.2.0", "dotenv": "^8.2.0", "eslint": "^8.44.0", "eslint-config-airbnb": "^19.0.4", @@ -4407,8 +4407,9 @@ }, "node_modules/axios": { "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "dev": true, - "license": "MIT", "dependencies": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" @@ -6064,9 +6065,10 @@ } }, "node_modules/crypto-js": { - "version": "3.3.0", - "dev": true, - "license": "MIT" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "dev": true }, "node_modules/crypto-random-string": { "version": "4.0.0", @@ -7801,7 +7803,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.5", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -7809,7 +7813,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, diff --git a/package.json b/package.json index 3e6722170..b226e6430 100644 --- a/package.json +++ b/package.json @@ -88,14 +88,14 @@ "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "aliasify": "^2.0.0", - "axios": "0.27.2", + "axios": "^0.27.2", "babelify": "^10.0.0", "beautify-benchmark": "^0.2.4", "benchmark": "^2.1.1", "bluebird": "^3.1.5", "browserify": "^17.0.0", "core-js": "^3.6.5", - "crypto-js": "^3.1.9-1", + "crypto-js": "^4.2.0", "dotenv": "^8.2.0", "eslint": "^8.44.0", "eslint-config-airbnb": "^19.0.4", diff --git a/task/dingding.jpg b/task/dingding.jpg deleted file mode 100644 index 385d413a781dd936eea7d20c83bc0fd560610252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151183 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

MFW(9zCTBElYCK* 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≷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 z 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 bwNc$lW?BA@dg9#&fa2fKOn>(4yTN||S%ZCI diff --git a/test/browser/browser.test.js b/test/browser/browser.test.js index 034ab04d2..86e6b69d8 100644 --- a/test/browser/browser.test.js +++ b/test/browser/browser.test.js @@ -1,5 +1,8 @@ const assert = require('assert'); const mm = require('mm'); +const axios = require('axios'); +const dateFormat = require('dateformat'); +const timemachine = require('timemachine'); /* eslint no-undef: [0] */ const oss = OSS; const urllib = require('urllib'); @@ -13,9 +16,11 @@ const platform = require('platform'); const crypto1 = require('crypto'); const { Readable } = require('stream'); const { prefix } = require('./browser-utils'); +const { getCredential } = require('../../lib/common/signUtils'); +const { getStandardRegion } = require('../../lib/common/utils/getStandardRegion'); +const { policy2Str } = require('../../lib/common/utils/policy2Str'); let ossConfig; -const timemachine = require('timemachine'); timemachine.reset(); @@ -2658,10 +2663,12 @@ describe('browser', () => { try { await store.restore(name); + assert.fail('Expect throw an error'); } catch (e) { - assert.equal(e.status, 400); + assert.strictEqual(e.status, 400); } }); + it('Should return 202 when restore is called first', async () => { const name = '/oss/restore.js'; await store.put(name, Buffer.from('abc'), { @@ -2671,115 +2678,137 @@ describe('browser', () => { }); const info = await store.restore(name); - assert.equal(info.res.status, 202); + assert.strictEqual(info.res.status, 202); // in 1 minute verify RestoreAlreadyInProgressError. try { await store.restore(name); + assert.fail('Expect throw an error'); } catch (err) { - assert.equal(err.name, 'RestoreAlreadyInProgressError'); + assert.strictEqual(err.name, 'RestoreAlreadyInProgressError'); } }); - // - it('Category should be Archive', async () => { + it('Restore Archive object with setting of Days', async () => { + const name = '/oss/restore2.js'; + await store.put(name, Buffer.from('abc'), { + headers: { + 'x-oss-storage-class': 'Archive' + } + }); + + const info = await store.restore(name, { + Days: 1 + }); + assert.strictEqual(info.res.status, 202); + }); + + it('Should not set JobParameters when restore Archive object', async () => { const name = '/oss/restore.js'; - await store.put(name, Buffer.from('abc')); + try { await store.restore(name, { type: 'ColdArchive' }); + assert.fail('expect Error'); } catch (err) { - assert.equal(err.code, 'OperationNotSupported'); + assert.strictEqual(err.code, 'MalformedXML'); } }); - it('ColdArchive choice Days', async () => { + it('Restore Cold Archive object with default settings', async () => { + const name = '/oss/coldRestore.js'; + await store.put(name, Buffer.from('abc'), { + headers: { + 'x-oss-storage-class': 'ColdArchive' + } + }); + const result = await store.restore(name, { + type: 'ColdArchive' + }); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Standard'); + }); + + it('Restore Cold Archive object with setting of Days', async () => { const name = '/oss/daysColdRestore.js'; - const options = { + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'ColdArchive' } - }; - await store.put(name, Buffer.from('abc'), options); + }); const result = await store.restore(name, { type: 'ColdArchive', - Days: 2 + Days: 1 }); - assert.equal(result.res.status, 202); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Standard'); }); - it('ColdArchive choice JobParameters', async () => { + it('Restore Cold Archive object with settings of Days and JobParameters', async () => { const name = '/oss/JobParametersColdRestore.js'; - const options = { + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'ColdArchive' } - }; - await store.put(name, Buffer.from('abc'), options); + }); const result = await store.restore(name, { type: 'ColdArchive', - Days: 2, - JobParameters: 'Standard' + Days: 3, + JobParameters: 'Expedited' }); - assert.equal(result.res.status, 202); - }); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Expedited'); - it('ColdArchive is Accepted', async () => { - const name = '/oss/coldRestore.js'; - const options = { + const name2 = 'oss/JobParametersColdRestore2.js'; + await store.put(name2, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'ColdArchive' } - }; - await store.put(name, Buffer.from(__filename), options); - const result = await store.restore(name, { - type: 'ColdArchive' }); - assert.equal(result.res.status, 202); + const result2 = await store.restore(name2, { + type: 'ColdArchive', + Days: 5, + JobParameters: 'Bulk' + }); + assert.strictEqual(result2.res.headers['x-oss-object-restore-priority'], 'Bulk'); }); - it('DeepColdArchive choice Days', async () => { - const name = '/oss/daysDeepColdRestore.js'; - const options = { + it('Restore Deep Cold Archive object with default settings', async () => { + const name = '/oss/deepColdRestore.js'; + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'DeepColdArchive' } - }; - await store.put(name, Buffer.from('abc'), options); + }); const result = await store.restore(name, { - type: 'DeepColdArchive', - Days: 2 + type: 'DeepColdArchive' }); - assert.equal(result.res.status, 202); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Standard'); }); - it('DeepColdArchive choice JobParameters', async () => { - const name = '/oss/JobParametersDeepColdRestore.js'; - const options = { + it('Restore Deep Cold Archive object with setting of Days', async () => { + const name = '/oss/daysDeepColdRestore.js'; + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'DeepColdArchive' } - }; - await store.put(name, Buffer.from('abc'), options); + }); const result = await store.restore(name, { type: 'DeepColdArchive', - Days: 2, - JobParameters: 'Standard' + Days: 1 }); - assert.equal(result.res.status, 202); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Standard'); }); - it('DeepColdArchive is Accepted', async () => { - const name = '/oss/deepColdRestore.js'; - const options = { + it('Restore Deep Cold Archive object with settings of Days and JobParameters', async () => { + const name = '/oss/JobParametersDeepColdRestore.js'; + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'DeepColdArchive' } - }; - await store.put(name, Buffer.from(__filename), options); + }); const result = await store.restore(name, { - type: 'DeepColdArchive' + type: 'DeepColdArchive', + Days: 3, + JobParameters: 'Expedited' }); - assert.equal(result.res.status, 202); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Expedited'); }); }); @@ -2910,6 +2939,78 @@ describe('browser', () => { } }); }); + + describe('signPostObjectPolicyV4()', () => { + it('should PostObject with V4 signature', async () => { + const store = oss({ ...ossConfig, ...moreConfigs }); + const name = 'testPostObjectUseV4Signature.txt'; + const formData = new FormData(); + formData.append('key', name); + formData.append('Content-Type', 'text/plain'); + formData.append('Cache-Control', 'max-age=30'); + const url = store.generateObjectUrl(name).replace(name, ''); + const date = new Date(); + const expirationDate = new Date(date); + expirationDate.setMinutes(date.getMinutes() + 1); + const formattedDate = dateFormat(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + const credential = getCredential( + formattedDate.split('T')[0], + getStandardRegion(store.options.region), + store.options.accessKeyId + ); + formData.append('x-oss-date', formattedDate); + formData.append('x-oss-credential', credential); + formData.append('x-oss-signature-version', 'OSS4-HMAC-SHA256'); + const policy = { + expiration: expirationDate.toISOString(), + conditions: [ + { bucket: store.options.bucket }, + { 'x-oss-credential': credential }, + { 'x-oss-date': formattedDate }, + { 'x-oss-signature-version': 'OSS4-HMAC-SHA256' }, + ['content-length-range', 1, 10], + ['eq', '$success_action_status', '200'], + ['starts-with', '$key', 'testPostObject'], + ['in', '$content-type', ['image/jpg', 'text/plain']], + ['not-in', '$cache-control', ['no-cache']] + ] + }; + + if (store.options.stsToken) { + policy.conditions.push({ 'x-oss-security-token': store.options.stsToken }); + formData.append('x-oss-security-token', store.options.stsToken); + } + + const signature = store.signPostObjectPolicyV4(policy, date); + const signature2 = store.signPostObjectPolicyV4(JSON.stringify(policy), date); + assert.strictEqual(signature, signature2); + + formData.append('policy', Buffer.from(policy2Str(policy), 'utf8').toString('base64')); + formData.append('x-oss-signature', signature); + formData.append('success_action_status', '200'); + formData.append('file', 'test'); + + const result = await axios.post(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); + assert.strictEqual(result.status, 200); + const headRes = await store.head(name); + assert.strictEqual(headRes.status, 200); + }); + + it('should throw error when policy is not legal JSON string or Object', () => { + const store = oss({ ...ossConfig, ...moreConfigs }); + + try { + store.signPostObjectPolicyV4('test', new Date()); + assert(false); + } catch (error) { + assert(error.message.startsWith('Policy string is not a valid JSON:')); + } + }); + }); }); }); }); diff --git a/test/node/object.test.js b/test/node/object.test.js index 9ecf3a318..9ae899a5d 100644 --- a/test/node/object.test.js +++ b/test/node/object.test.js @@ -15,6 +15,10 @@ const crypto = require('crypto'); const urlutil = require('url'); const axios = require('axios'); const FormData = require('form-data'); +const dateFormat = require('dateformat'); +const { getCredential } = require('../../lib/common/signUtils'); +const { getStandardRegion } = require('../../lib/common/utils/getStandardRegion'); +const { policy2Str } = require('../../lib/common/utils/policy2Str'); const tmpdir = path.join(__dirname, '.tmp'); if (!fs.existsSync(tmpdir)) { @@ -2421,159 +2425,158 @@ describe('test/object.test.js', () => { }); describe('restore()', () => { - before(async () => { - await store.put('/oss/coldRestore.js', __filename, { - headers: { - 'x-oss-storage-class': 'ColdArchive' - } - }); - await store.put('/oss/daysRestore.js', __filename, { - headers: { - 'x-oss-storage-class': 'ColdArchive' - } - }); - }); - after(async () => { - await store.useBucket(bucket); - }); - - it('Should return OperationNotSupportedError when the type of bucket is not archive', async () => { + it('Should return OperationNotSupportedError when the type of object is not archive', async () => { const name = '/oss/restore.js'; await store.put(name, __filename); try { await store.restore(name); - throw new Error('should not run this'); + assert.fail('Expect throw an error'); } catch (err) { - assert.equal(err.status, 400); + assert.strictEqual(err.status, 400); } }); + it('Should return 202 when restore is called first', async () => { - store.setBucket(archiveBucket); const name = '/oss/restore.js'; - await store.put(name, __filename); + await store.put(name, Buffer.from('abc'), { + headers: { + 'x-oss-storage-class': 'Archive' + } + }); const info = await store.restore(name); - assert.equal(info.res.status, 202); + assert.strictEqual(info.res.status, 202); // in 1 minute verify RestoreAlreadyInProgressError try { await store.restore(name); + assert.fail('Expect throw an error'); } catch (err) { - assert.equal(err.name, 'RestoreAlreadyInProgressError'); + assert.strictEqual(err.name, 'RestoreAlreadyInProgressError'); } }); - it('Category should be Archive', async () => { + it('Restore Archive object with setting of Days', async () => { + const name = '/oss/restore2.js'; + await store.put(name, Buffer.from('abc'), { + headers: { + 'x-oss-storage-class': 'Archive' + } + }); + + const info = await store.restore(name, { + Days: 1 + }); + assert.strictEqual(info.res.status, 202); + }); + + it('Should not set JobParameters when restore Archive object', async () => { const name = '/oss/restore.js'; + try { await store.restore(name, { type: 'ColdArchive' }); + assert.fail('expect Error'); } catch (err) { - assert.equal(err.code, 'MalformedXML'); + assert.strictEqual(err.code, 'MalformedXML'); } - await store.useBucket(bucket, bucketRegion); }); - it('ColdArchive choice Days', async () => { + it('Restore Cold Archive object with default settings', async () => { + const name = '/oss/coldRestore.js'; + await store.put(name, Buffer.from('abc'), { + headers: { + 'x-oss-storage-class': 'ColdArchive' + } + }); + const result = await store.restore(name, { + type: 'ColdArchive' + }); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Standard'); + }); + + it('Restore Cold Archive object with setting of Days', async () => { const name = '/oss/daysColdRestore.js'; - const options = { + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'ColdArchive' } - }; - await store.put(name, Buffer.from('abc'), options); + }); const result = await store.restore(name, { type: 'ColdArchive', - Days: 2 + Days: 1 }); - assert.equal( - ['Expedited', 'Standard', 'Bulk'].includes(result.res.headers['x-oss-object-restore-priority']), - true - ); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Standard'); }); - it('ColdArchive choice JobParameters', async () => { + it('Restore Cold Archive object with settings of Days and JobParameters', async () => { const name = '/oss/JobParametersColdRestore.js'; - const options = { + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'ColdArchive' } - }; - await store.put(name, Buffer.from('abc'), options); + }); const result = await store.restore(name, { type: 'ColdArchive', - Days: 2, - JobParameters: 'Standard' + Days: 3, + JobParameters: 'Expedited' }); - assert.equal( - ['Expedited', 'Standard', 'Bulk'].includes(result.res.headers['x-oss-object-restore-priority']), - true - ); - }); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Expedited'); - it('ColdArchive is Accepted', async () => { - const name = '/oss/coldRestore.js'; - const result = await store.restore(name, { - type: 'ColdArchive' + const name2 = 'oss/JobParametersColdRestore2.js'; + await store.put(name2, Buffer.from('abc'), { + headers: { + 'x-oss-storage-class': 'ColdArchive' + } }); - assert.equal( - ['Expedited', 'Standard', 'Bulk'].includes(result.res.headers['x-oss-object-restore-priority']), - true - ); + const result2 = await store.restore(name2, { + type: 'ColdArchive', + Days: 5, + JobParameters: 'Bulk' + }); + assert.strictEqual(result2.res.headers['x-oss-object-restore-priority'], 'Bulk'); }); - it('DeepColdArchive choice Days', async () => { - const name = '/oss/daysDeepColdRestore.js'; - const options = { + it('Restore Deep Cold Archive object with default settings', async () => { + const name = '/oss/deepColdRestore.js'; + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'DeepColdArchive' } - }; - await store.put(name, Buffer.from('abc'), options); + }); const result = await store.restore(name, { - type: 'DeepColdArchive', - Days: 2 + type: 'DeepColdArchive' }); - assert.equal( - ['Expedited', 'Standard', 'Bulk'].includes(result.res.headers['x-oss-object-restore-priority']), - true - ); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Standard'); }); - it('DeepColdArchive choice JobParameters', async () => { - const name = '/oss/JobParametersDeepColdRestore.js'; - const options = { + it('Restore Deep Cold Archive object with setting of Days', async () => { + const name = '/oss/daysDeepColdRestore.js'; + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'DeepColdArchive' } - }; - await store.put(name, Buffer.from('abc'), options); + }); const result = await store.restore(name, { type: 'DeepColdArchive', - Days: 2, - JobParameters: 'Standard' + Days: 1 }); - assert.equal( - ['Expedited', 'Standard', 'Bulk'].includes(result.res.headers['x-oss-object-restore-priority']), - true - ); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Standard'); }); - it('DeepColdArchive is Accepted', async () => { - const name = '/oss/deepColdRestore.js'; - const options = { + it('Restore Deep Cold Archive object with settings of Days and JobParameters', async () => { + const name = '/oss/JobParametersDeepColdRestore.js'; + await store.put(name, Buffer.from('abc'), { headers: { 'x-oss-storage-class': 'DeepColdArchive' } - }; - await store.put(name, Buffer.from(__filename), options); + }); const result = await store.restore(name, { - type: 'DeepColdArchive' + type: 'DeepColdArchive', + Days: 3, + JobParameters: 'Expedited' }); - assert.equal( - ['Expedited', 'Standard', 'Bulk'].includes(result.res.headers['x-oss-object-restore-priority']), - true - ); + assert.strictEqual(result.res.headers['x-oss-object-restore-priority'], 'Expedited'); }); }); @@ -2674,6 +2677,75 @@ describe('test/object.test.js', () => { }); }); + describe('signPostObjectPolicyV4()', () => { + it('should PostObject with V4 signature', async () => { + const name = 'testPostObjectUseV4Signature.txt'; + const formData = new FormData(); + formData.append('key', name); + formData.append('Content-Type', 'text/plain'); + formData.append('Cache-Control', 'max-age=30'); + const url = store.generateObjectUrl(name).replace(name, ''); + const date = new Date(); + const expirationDate = new Date(date); + expirationDate.setMinutes(date.getMinutes() + 1); + const formattedDate = dateFormat(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + const credential = getCredential( + formattedDate.split('T')[0], + getStandardRegion(store.options.region), + store.options.accessKeyId + ); + formData.append('x-oss-date', formattedDate); + formData.append('x-oss-credential', credential); + formData.append('x-oss-signature-version', 'OSS4-HMAC-SHA256'); + const policy = { + expiration: expirationDate.toISOString(), + conditions: [ + { bucket: store.options.bucket }, + { 'x-oss-credential': credential }, + { 'x-oss-date': formattedDate }, + { 'x-oss-signature-version': 'OSS4-HMAC-SHA256' }, + ['content-length-range', 1, 10], + ['eq', '$success_action_status', '200'], + ['starts-with', '$key', 'testPostObject'], + ['in', '$content-type', ['image/jpg', 'text/plain']], + ['not-in', '$cache-control', ['no-cache']] + ] + }; + + if (store.options.stsToken) { + policy.conditions.push({ 'x-oss-security-token': store.options.stsToken }); + formData.append('x-oss-security-token', store.options.stsToken); + } + + const signature = store.signPostObjectPolicyV4(policy, date); + const signature2 = store.signPostObjectPolicyV4(JSON.stringify(policy), date); + assert.strictEqual(signature, signature2); + + formData.append('policy', Buffer.from(policy2Str(policy), 'utf8').toString('base64')); + formData.append('x-oss-signature', signature); + formData.append('success_action_status', '200'); + formData.append('file', 'test'); + + const result = await axios.post(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); + assert.strictEqual(result.status, 200); + const headRes = await store.head(name); + assert.strictEqual(headRes.status, 200); + }); + + it('should throw error when policy is not legal JSON string or Object', () => { + try { + store.signPostObjectPolicyV4('test', new Date()); + assert(false); + } catch (error) { + assert(error.message.startsWith('Policy string is not a valid JSON:')); + } + }); + }); + describe('getObjectTagging() putObjectTagging() deleteObjectTagging()', () => { const name = '/oss/tagging.js';