@netacea/captchafeedback 1.2.1 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +2 -1
- package/dist/{CaptchaFeedback.d.ts → captchafeedback/src/CaptchaFeedback.d.ts} +16 -1
- package/dist/captchafeedback/src/CaptchaFeedback.js +120 -0
- package/dist/captchafeedback/src/CaptchaFeedback.js.map +1 -0
- package/dist/{index.d.ts → captchafeedback/src/index.d.ts} +0 -0
- package/dist/{index.js → captchafeedback/src/index.js} +0 -0
- package/dist/captchafeedback/src/index.js.map +1 -0
- package/package.json +16 -6
- package/dist/CaptchaFeedback.js +0 -85
- package/dist/CaptchaFeedback.js.map +0 -1
- package/dist/index.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.2.10](https://github.com/Netacea/JavascriptATAIntegration/compare/@netacea/captchafeedback@1.2.9...@netacea/captchafeedback@1.2.10) (2022-12-07)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **captchafeedback:** INT-381: package correct captchafeedback files ([2cbe2ae](https://github.com/Netacea/JavascriptATAIntegration/commit/2cbe2ae52024104ca1271132d221441e8e6abc58))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [1.2.9](https://github.com/Netacea/JavascriptATAIntegration/compare/@netacea/captchafeedback@1.2.1...@netacea/captchafeedback@1.2.9) (2022-11-22)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **captchafeedback:** INT-337: create private makeUpdateCaptchaCall method ([602a94b](https://github.com/Netacea/JavascriptATAIntegration/commit/602a94b6946d3478959e641b17d7f1a1815e15fa))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
## [1.2.1](https://github.com/Netacea/JavascriptATAIntegration/compare/@netacea/captchafeedback@1.2.0...@netacea/captchafeedback@1.2.1) (2022-05-26)
|
|
7
29
|
|
|
8
30
|
**Note:** Version bump only for package @netacea/captchafeedback
|
package/README.md
CHANGED
|
@@ -26,7 +26,8 @@ yarn add @netacea/captchafeedback
|
|
|
26
26
|
```typescript
|
|
27
27
|
import Netacea from '@netacea/captchafeedback'
|
|
28
28
|
const netacea = new Netacea({
|
|
29
|
-
apiKey: 'your-api-key'
|
|
29
|
+
apiKey: 'your-api-key',
|
|
30
|
+
secretKey: 'your-secret-key'
|
|
30
31
|
})
|
|
31
32
|
|
|
32
33
|
const { cookies } = await netacea.updateCaptcha({
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
import { MitataCookie } from '@netacea/netaceaintegrationbase';
|
|
1
2
|
export declare type MakeRequest = (args: MakeRequestArgs) => Promise<MakeRequestResponse>;
|
|
3
|
+
export declare type CreateMitataCookie = (clientIP: string, userId: string | undefined, expiryTime: number, saltKey: string, mitCode: string) => string;
|
|
4
|
+
export declare type MatchMitataCookie = (cookie: string | undefined) => MitataCookie;
|
|
2
5
|
export interface CaptchaFeedbackArgs {
|
|
3
6
|
/**
|
|
4
7
|
* API Key provided by Netacea
|
|
5
8
|
*/
|
|
6
9
|
apiKey: string;
|
|
10
|
+
/**
|
|
11
|
+
* Secret Key provided by Netacea
|
|
12
|
+
*/
|
|
13
|
+
secretKey: string;
|
|
7
14
|
/**
|
|
8
15
|
* OPTIONAL - Mitigation Service URL provided by Netacea
|
|
9
16
|
*/
|
|
@@ -15,6 +22,8 @@ export interface CaptchaFeedbackArgs {
|
|
|
15
22
|
* Install axios with `npm i axios --save`
|
|
16
23
|
*/
|
|
17
24
|
makeRequest?: MakeRequest;
|
|
25
|
+
createMitataCookie?: CreateMitataCookie;
|
|
26
|
+
matchMitataCookie?: MatchMitataCookie;
|
|
18
27
|
}
|
|
19
28
|
export interface UpdateCaptchaArgs {
|
|
20
29
|
/**
|
|
@@ -81,12 +90,18 @@ export interface MakeRequestResponse {
|
|
|
81
90
|
}
|
|
82
91
|
export default class CaptchaFeedback {
|
|
83
92
|
private readonly apiKey;
|
|
93
|
+
private readonly secretKey;
|
|
84
94
|
private readonly mitigationServiceUrl;
|
|
85
95
|
private readonly makeRequest?;
|
|
96
|
+
private readonly createMitataCookie?;
|
|
97
|
+
private readonly matchMitataCookie?;
|
|
86
98
|
private axios;
|
|
87
|
-
constructor({ apiKey, mitigationServiceUrl, makeRequest }: CaptchaFeedbackArgs);
|
|
99
|
+
constructor({ apiKey, secretKey, mitigationServiceUrl, makeRequest, createMitataCookie, matchMitataCookie }: CaptchaFeedbackArgs);
|
|
100
|
+
private makeUpdateCaptchaCall;
|
|
88
101
|
updateCaptcha({ clientIp, eventId, cookieHeader, result, userAgent }: UpdateCaptchaArgs): Promise<UpdateCaptchaResponse>;
|
|
89
102
|
private getAxios;
|
|
90
103
|
private makeAxiosRequest;
|
|
91
104
|
private makeOutboundCall;
|
|
105
|
+
private createCookie;
|
|
106
|
+
private matchCookie;
|
|
92
107
|
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const netaceaintegrationbase_1 = require("@netacea/netaceaintegrationbase");
|
|
4
|
+
class CaptchaFeedback {
|
|
5
|
+
constructor({ apiKey, secretKey, mitigationServiceUrl = 'https://mitigations.netacea.net', makeRequest, createMitataCookie, matchMitataCookie }) {
|
|
6
|
+
if (apiKey === null || apiKey === undefined) {
|
|
7
|
+
throw new Error('Netacea: apiKey is a required parameter');
|
|
8
|
+
}
|
|
9
|
+
this.apiKey = apiKey;
|
|
10
|
+
this.secretKey = secretKey;
|
|
11
|
+
this.mitigationServiceUrl = mitigationServiceUrl;
|
|
12
|
+
this.makeRequest = makeRequest;
|
|
13
|
+
this.createMitataCookie = createMitataCookie;
|
|
14
|
+
this.matchMitataCookie = matchMitataCookie;
|
|
15
|
+
}
|
|
16
|
+
async makeUpdateCaptchaCall({ eventId, result, clientIp, userAgent, cookieHeader }) {
|
|
17
|
+
const response = await this.makeOutboundCall({
|
|
18
|
+
body: {
|
|
19
|
+
eventId,
|
|
20
|
+
result
|
|
21
|
+
},
|
|
22
|
+
headers: {
|
|
23
|
+
'content-type': 'application/json; charset=utf-8',
|
|
24
|
+
'x-netacea-api-key': this.apiKey,
|
|
25
|
+
'x-netacea-client-ip': clientIp,
|
|
26
|
+
'user-agent': userAgent,
|
|
27
|
+
'cookie': cookieHeader
|
|
28
|
+
},
|
|
29
|
+
method: 'POST',
|
|
30
|
+
url: `${this.mitigationServiceUrl}/UpdateCaptcha`
|
|
31
|
+
});
|
|
32
|
+
if (response.status !== 200) {
|
|
33
|
+
throw new Error(`Netacea: Non-200 status code returned from XHR call. Code was ${response.status}`);
|
|
34
|
+
}
|
|
35
|
+
return response;
|
|
36
|
+
}
|
|
37
|
+
async updateCaptcha({ clientIp, eventId, cookieHeader, result, userAgent }) {
|
|
38
|
+
var _a;
|
|
39
|
+
if (cookieHeader === undefined || cookieHeader.length === 0 || !cookieHeader.includes('_mitata=')) {
|
|
40
|
+
throw new Error('The cookie header must have a mitata cookie');
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const response = await this.makeUpdateCaptchaCall({
|
|
44
|
+
eventId,
|
|
45
|
+
result,
|
|
46
|
+
clientIp,
|
|
47
|
+
userAgent,
|
|
48
|
+
cookieHeader
|
|
49
|
+
});
|
|
50
|
+
const parsedCookieHeader = cookieHeader.substring('_mitata='.length);
|
|
51
|
+
const trimedParsedCookieHeader = parsedCookieHeader.includes('; Max-Age=')
|
|
52
|
+
? parsedCookieHeader.split(';')[0] : parsedCookieHeader;
|
|
53
|
+
const mitataExpiry = response.headers['x-netacea-mitata-expiry'];
|
|
54
|
+
const mitataCaptchaValue = response.headers['x-netacea-mitatacaptcha-value'];
|
|
55
|
+
const mitataCaptchaExpiry = response.headers['x-netacea-mitatacaptcha-expiry'];
|
|
56
|
+
const mitataMatch = response.headers['x-netacea-match'];
|
|
57
|
+
const mitataMitigate = response.headers['x-netacea-mitigate'];
|
|
58
|
+
const mitataCaptcha = response.headers['x-netacea-captcha'];
|
|
59
|
+
const { userId } = (_a = this.matchCookie(trimedParsedCookieHeader)) !== null && _a !== void 0 ? _a : {};
|
|
60
|
+
const newCookie = this.createCookie(clientIp, userId, Math.floor(Date.now() / 1000) + 60, this.secretKey, `${mitataMatch}${mitataMitigate}${mitataCaptcha}`);
|
|
61
|
+
return {
|
|
62
|
+
cookies: [
|
|
63
|
+
`_mitata=${newCookie}; Max-Age=${mitataExpiry}; Path=/;`,
|
|
64
|
+
`_mitatacaptcha=${mitataCaptchaValue}; Max-Age=${mitataCaptchaExpiry}; Path=/;`
|
|
65
|
+
]
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
// eslint-disable-next-line no-console
|
|
70
|
+
console.error(e);
|
|
71
|
+
return { cookies: [] };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async getAxios() {
|
|
75
|
+
return await Promise.resolve().then(() => require('axios'));
|
|
76
|
+
}
|
|
77
|
+
async makeAxiosRequest({ body, headers, method, url }) {
|
|
78
|
+
if (this.axios === undefined) {
|
|
79
|
+
try {
|
|
80
|
+
// try to lazyload axios
|
|
81
|
+
this.axios = await this.getAxios();
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Throw error as axios req wasn't met by `peerDependencies` and makeRequest was not implemented
|
|
85
|
+
throw new Error(['Netacea: Axios must be installed `(npm i axios --save)`',
|
|
86
|
+
'or makeRequest must be provided to override the default of axios being used.'].join(' '));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (method === 'POST') {
|
|
90
|
+
const response = await this.axios.post(url, body, {
|
|
91
|
+
headers
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
status: response.status,
|
|
95
|
+
headers: response.headers
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
throw new Error('Netacea: method not supported');
|
|
99
|
+
}
|
|
100
|
+
async makeOutboundCall(args) {
|
|
101
|
+
if (this.makeRequest !== undefined) {
|
|
102
|
+
return await this.makeRequest(args);
|
|
103
|
+
}
|
|
104
|
+
return await this.makeAxiosRequest(args);
|
|
105
|
+
}
|
|
106
|
+
createCookie(clientIP, userId, expiryTime, saltKey, mitCode) {
|
|
107
|
+
if (this.createMitataCookie !== undefined) {
|
|
108
|
+
return this.createMitataCookie(clientIP, userId, expiryTime, saltKey, mitCode);
|
|
109
|
+
}
|
|
110
|
+
return netaceaintegrationbase_1.createMitataCookie(clientIP, userId, expiryTime, saltKey, mitCode);
|
|
111
|
+
}
|
|
112
|
+
matchCookie(cookie) {
|
|
113
|
+
if (this.matchMitataCookie !== undefined) {
|
|
114
|
+
return this.matchMitataCookie(cookie);
|
|
115
|
+
}
|
|
116
|
+
return netaceaintegrationbase_1.matchMitataCookie(cookie);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.default = CaptchaFeedback;
|
|
120
|
+
//# sourceMappingURL=CaptchaFeedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CaptchaFeedback.js","sourceRoot":"","sources":["../../../src/CaptchaFeedback.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;AAAA,uDAA+C;AAC/C,kBAAe,yBAAe,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@netacea/captchafeedback",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.10",
|
|
4
4
|
"description": "CAPTCHA feedback module to send CAPTCHA results back to Netacea.",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
5
|
+
"main": "dist/captchafeedback/src/index.js",
|
|
6
|
+
"types": "dist/captchafeedback/src/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"test": "npx nyc tape -r ts-node/register -r tsconfig-paths/register './tests/*.test.ts'",
|
|
9
9
|
"lint": "npx eslint . --ext ts",
|
|
10
|
-
"prepublishOnly": "npx tsc --project tsconfig.build.json"
|
|
10
|
+
"prepublishOnly": "npx tsc --project tsconfig.build.json",
|
|
11
|
+
"aws-sso-setup": "node ./scripts/aws_sso_setup.js",
|
|
12
|
+
"login": "bash ./scripts/codeartifact_login.bash"
|
|
11
13
|
},
|
|
12
14
|
"author": "Jack Scotson <jack.scotson@netacea.com> (https://netacea.com)",
|
|
13
15
|
"publishConfig": {
|
|
14
16
|
"access": "public"
|
|
15
17
|
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist/captchafeedback/src",
|
|
20
|
+
"CHANGELOG.md"
|
|
21
|
+
],
|
|
16
22
|
"license": "ISC",
|
|
17
23
|
"devDependencies": {
|
|
18
24
|
"@types/node": "^14.11.2",
|
|
@@ -20,8 +26,9 @@
|
|
|
20
26
|
"@types/tape": "^4.13.0",
|
|
21
27
|
"axios": "^0.21.1",
|
|
22
28
|
"eslint": "^6.8.0",
|
|
29
|
+
"ini": "^3.0.1",
|
|
23
30
|
"nyc": "^15.1.0",
|
|
24
|
-
"sinon": "^9.
|
|
31
|
+
"sinon": "^9.2.4",
|
|
25
32
|
"tape": "^5.0.1",
|
|
26
33
|
"ts-node": "^9.0.0",
|
|
27
34
|
"tsconfig-paths": "^3.9.0",
|
|
@@ -30,5 +37,8 @@
|
|
|
30
37
|
"peerDependencies": {
|
|
31
38
|
"axios": "^0.21.1"
|
|
32
39
|
},
|
|
33
|
-
"
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@netacea/netaceaintegrationbase": "^1.11.1"
|
|
42
|
+
},
|
|
43
|
+
"gitHead": "0e101cc53cbdb313b787aa91f5ddba30828b9e8b"
|
|
34
44
|
}
|
package/dist/CaptchaFeedback.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class CaptchaFeedback {
|
|
4
|
-
constructor({ apiKey, mitigationServiceUrl = 'https://mitigations.netacea.net', makeRequest }) {
|
|
5
|
-
if (apiKey === null || apiKey === undefined) {
|
|
6
|
-
throw new Error('Netacea: apiKey is a required parameter');
|
|
7
|
-
}
|
|
8
|
-
this.apiKey = apiKey;
|
|
9
|
-
this.mitigationServiceUrl = mitigationServiceUrl;
|
|
10
|
-
this.makeRequest = makeRequest;
|
|
11
|
-
}
|
|
12
|
-
async updateCaptcha({ clientIp, eventId, cookieHeader, result, userAgent }) {
|
|
13
|
-
try {
|
|
14
|
-
const response = await this.makeOutboundCall({
|
|
15
|
-
body: {
|
|
16
|
-
eventId,
|
|
17
|
-
result
|
|
18
|
-
},
|
|
19
|
-
headers: {
|
|
20
|
-
'content-type': 'application/json; charset=utf-8',
|
|
21
|
-
'x-netacea-api-key': this.apiKey,
|
|
22
|
-
'x-netacea-client-ip': clientIp,
|
|
23
|
-
'user-agent': userAgent,
|
|
24
|
-
'cookie': cookieHeader
|
|
25
|
-
},
|
|
26
|
-
method: 'POST',
|
|
27
|
-
url: `${this.mitigationServiceUrl}/UpdateCaptcha`
|
|
28
|
-
});
|
|
29
|
-
if (response.status !== 200) {
|
|
30
|
-
throw new Error(`Netacea: Non-200 status code returned from XHR call. Code was ${response.status}`);
|
|
31
|
-
}
|
|
32
|
-
const mitata = response.headers['x-netacea-mitata-value'];
|
|
33
|
-
const mitataExpiry = response.headers['x-netacea-mitata-expiry'];
|
|
34
|
-
const mitataCaptcha = response.headers['x-netacea-mitatacaptcha-value'];
|
|
35
|
-
const mitataCaptchaExpiry = response.headers['x-netacea-mitatacaptcha-expiry'];
|
|
36
|
-
return {
|
|
37
|
-
cookies: [
|
|
38
|
-
`_mitata=${mitata}; Max-Age=${mitataExpiry}; Path=/;`,
|
|
39
|
-
`_mitatacaptcha=${mitataCaptcha}; Max-Age=${mitataCaptchaExpiry}; Path=/;`
|
|
40
|
-
]
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
// eslint-disable-next-line no-console
|
|
45
|
-
console.error(e);
|
|
46
|
-
return {
|
|
47
|
-
cookies: []
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
async getAxios() {
|
|
52
|
-
return await Promise.resolve().then(() => require('axios'));
|
|
53
|
-
}
|
|
54
|
-
async makeAxiosRequest({ body, headers, method, url }) {
|
|
55
|
-
if (this.axios === undefined) {
|
|
56
|
-
try {
|
|
57
|
-
// try to lazyload axios
|
|
58
|
-
this.axios = await this.getAxios();
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// Throw error as axios req wasn't met by `peerDependencies` and makeRequest was not implemented
|
|
62
|
-
throw new Error(['Netacea: Axios must be installed `(npm i axios --save)`',
|
|
63
|
-
'or makeRequest must be provided to override the default of axios being used.'].join(' '));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (method === 'POST') {
|
|
67
|
-
const response = await this.axios.post(url, body, {
|
|
68
|
-
headers
|
|
69
|
-
});
|
|
70
|
-
return {
|
|
71
|
-
status: response.status,
|
|
72
|
-
headers: response.headers
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
throw new Error('Netacea: method not supported');
|
|
76
|
-
}
|
|
77
|
-
async makeOutboundCall(args) {
|
|
78
|
-
if (this.makeRequest !== undefined) {
|
|
79
|
-
return await this.makeRequest(args);
|
|
80
|
-
}
|
|
81
|
-
return await this.makeAxiosRequest(args);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.default = CaptchaFeedback;
|
|
85
|
-
//# sourceMappingURL=CaptchaFeedback.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CaptchaFeedback.js","sourceRoot":"","sources":["../src/CaptchaFeedback.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,uDAA+C;AAC/C,kBAAe,yBAAe,CAAA"}
|