@netacea/captchafeedback 1.2.10 → 1.2.14
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
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
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.14](https://github.com/Netacea/JavascriptATAIntegration/compare/@netacea/captchafeedback@1.2.13...@netacea/captchafeedback@1.2.14) (2023-01-16)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @netacea/captchafeedback
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [1.2.13](https://github.com/Netacea/JavascriptATAIntegration/compare/@netacea/captchafeedback@1.2.10...@netacea/captchafeedback@1.2.13) (2023-01-03)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @netacea/captchafeedback
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
## [1.2.10](https://github.com/Netacea/JavascriptATAIntegration/compare/@netacea/captchafeedback@1.2.9...@netacea/captchafeedback@1.2.10) (2022-12-07)
|
|
7
23
|
|
|
8
24
|
|
package/README.md
CHANGED
|
@@ -37,6 +37,6 @@ const { cookies } = await netacea.updateCaptcha({
|
|
|
37
37
|
result: true, // Result from captcha
|
|
38
38
|
userAgent: 'client-user-agent' // Client's user-agent
|
|
39
39
|
})
|
|
40
|
-
// TODO:
|
|
41
|
-
|
|
40
|
+
// TODO: Add the returned cookies to the set-cookie header of the response, for example:
|
|
41
|
+
response.header('set-cookie', cookies)
|
|
42
42
|
```
|
|
@@ -50,6 +50,35 @@ export interface UpdateCaptchaArgs {
|
|
|
50
50
|
*/
|
|
51
51
|
result: boolean;
|
|
52
52
|
}
|
|
53
|
+
export interface MitSvcUpdateCaptchaArgs {
|
|
54
|
+
/**
|
|
55
|
+
* Incoming clients IP Address
|
|
56
|
+
*/
|
|
57
|
+
clientIp: string;
|
|
58
|
+
/**
|
|
59
|
+
* Event ID that Netacea provided on the `x-netacea-event-id` header
|
|
60
|
+
* This should be the eventID in realtion to the event when a user was served captcha
|
|
61
|
+
*/
|
|
62
|
+
eventId: string;
|
|
63
|
+
/**
|
|
64
|
+
* The entire `cookie` header received from the client
|
|
65
|
+
*/
|
|
66
|
+
cookieHeader: string;
|
|
67
|
+
/**
|
|
68
|
+
* Client's user-agent header
|
|
69
|
+
*/
|
|
70
|
+
userAgent: string;
|
|
71
|
+
/**
|
|
72
|
+
* Result of the captcha
|
|
73
|
+
* Captcha Passed = true
|
|
74
|
+
* Captcha Failed = false
|
|
75
|
+
*/
|
|
76
|
+
result: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Client's user ID, required so the mitata captcha cookie is generated correctly
|
|
79
|
+
*/
|
|
80
|
+
userId: string;
|
|
81
|
+
}
|
|
53
82
|
export interface UpdateCaptchaResponse {
|
|
54
83
|
/**
|
|
55
84
|
* The cookies object should be set as a set-cookie header in your origin server's response
|
|
@@ -99,6 +128,7 @@ export default class CaptchaFeedback {
|
|
|
99
128
|
constructor({ apiKey, secretKey, mitigationServiceUrl, makeRequest, createMitataCookie, matchMitataCookie }: CaptchaFeedbackArgs);
|
|
100
129
|
private makeUpdateCaptchaCall;
|
|
101
130
|
updateCaptcha({ clientIp, eventId, cookieHeader, result, userAgent }: UpdateCaptchaArgs): Promise<UpdateCaptchaResponse>;
|
|
131
|
+
private parseCookie;
|
|
102
132
|
private getAxios;
|
|
103
133
|
private makeAxiosRequest;
|
|
104
134
|
private makeOutboundCall;
|
|
@@ -13,7 +13,7 @@ class CaptchaFeedback {
|
|
|
13
13
|
this.createMitataCookie = createMitataCookie;
|
|
14
14
|
this.matchMitataCookie = matchMitataCookie;
|
|
15
15
|
}
|
|
16
|
-
async makeUpdateCaptchaCall({ eventId, result, clientIp, userAgent, cookieHeader }) {
|
|
16
|
+
async makeUpdateCaptchaCall({ eventId, result, clientIp, userAgent, cookieHeader, userId }) {
|
|
17
17
|
const response = await this.makeOutboundCall({
|
|
18
18
|
body: {
|
|
19
19
|
eventId,
|
|
@@ -24,7 +24,8 @@ class CaptchaFeedback {
|
|
|
24
24
|
'x-netacea-api-key': this.apiKey,
|
|
25
25
|
'x-netacea-client-ip': clientIp,
|
|
26
26
|
'user-agent': userAgent,
|
|
27
|
-
'cookie': cookieHeader
|
|
27
|
+
'cookie': cookieHeader,
|
|
28
|
+
'x-netacea-userId': userId
|
|
28
29
|
},
|
|
29
30
|
method: 'POST',
|
|
30
31
|
url: `${this.mitigationServiceUrl}/UpdateCaptcha`
|
|
@@ -34,29 +35,34 @@ class CaptchaFeedback {
|
|
|
34
35
|
}
|
|
35
36
|
return response;
|
|
36
37
|
}
|
|
38
|
+
/* eslint-disable max-lines-per-function */
|
|
39
|
+
// disabling max line per function as a lot of these lines come
|
|
40
|
+
// from getting values out of headers which isn't adding complex logic
|
|
37
41
|
async updateCaptcha({ clientIp, eventId, cookieHeader, result, userAgent }) {
|
|
38
42
|
var _a;
|
|
39
43
|
if (cookieHeader === undefined || cookieHeader.length === 0 || !cookieHeader.includes('_mitata=')) {
|
|
40
44
|
throw new Error('The cookie header must have a mitata cookie');
|
|
41
45
|
}
|
|
42
46
|
try {
|
|
47
|
+
const trimedParsedCookieHeader = this.parseCookie(cookieHeader);
|
|
48
|
+
const { userId } = (_a = this.matchCookie(trimedParsedCookieHeader)) !== null && _a !== void 0 ? _a : {};
|
|
49
|
+
if (userId === undefined) {
|
|
50
|
+
throw new Error('The cookie header must have a mitata cookie with a valid user Id');
|
|
51
|
+
}
|
|
43
52
|
const response = await this.makeUpdateCaptchaCall({
|
|
44
53
|
eventId,
|
|
45
54
|
result,
|
|
46
55
|
clientIp,
|
|
47
56
|
userAgent,
|
|
48
|
-
cookieHeader
|
|
57
|
+
cookieHeader,
|
|
58
|
+
userId
|
|
49
59
|
});
|
|
50
|
-
const parsedCookieHeader = cookieHeader.substring('_mitata='.length);
|
|
51
|
-
const trimedParsedCookieHeader = parsedCookieHeader.includes('; Max-Age=')
|
|
52
|
-
? parsedCookieHeader.split(';')[0] : parsedCookieHeader;
|
|
53
60
|
const mitataExpiry = response.headers['x-netacea-mitata-expiry'];
|
|
54
61
|
const mitataCaptchaValue = response.headers['x-netacea-mitatacaptcha-value'];
|
|
55
62
|
const mitataCaptchaExpiry = response.headers['x-netacea-mitatacaptcha-expiry'];
|
|
56
63
|
const mitataMatch = response.headers['x-netacea-match'];
|
|
57
64
|
const mitataMitigate = response.headers['x-netacea-mitigate'];
|
|
58
65
|
const mitataCaptcha = response.headers['x-netacea-captcha'];
|
|
59
|
-
const { userId } = (_a = this.matchCookie(trimedParsedCookieHeader)) !== null && _a !== void 0 ? _a : {};
|
|
60
66
|
const newCookie = this.createCookie(clientIp, userId, Math.floor(Date.now() / 1000) + 60, this.secretKey, `${mitataMatch}${mitataMitigate}${mitataCaptcha}`);
|
|
61
67
|
return {
|
|
62
68
|
cookies: [
|
|
@@ -71,6 +77,13 @@ class CaptchaFeedback {
|
|
|
71
77
|
return { cookies: [] };
|
|
72
78
|
}
|
|
73
79
|
}
|
|
80
|
+
/* eslint-enable max-lines-per-function */
|
|
81
|
+
parseCookie(cookieHeader) {
|
|
82
|
+
const parsedCookieHeader = cookieHeader.substring('_mitata='.length);
|
|
83
|
+
const trimedParsedCookieHeader = parsedCookieHeader.includes('; Max-Age=')
|
|
84
|
+
? parsedCookieHeader.split(';')[0] : parsedCookieHeader;
|
|
85
|
+
return trimedParsedCookieHeader;
|
|
86
|
+
}
|
|
74
87
|
async getAxios() {
|
|
75
88
|
return await Promise.resolve().then(() => require('axios'));
|
|
76
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaptchaFeedback.js","sourceRoot":"","sources":["../../../src/CaptchaFeedback.ts"],"names":[],"mappings":";;AAGA,4EAAqG;
|
|
1
|
+
{"version":3,"file":"CaptchaFeedback.js","sourceRoot":"","sources":["../../../src/CaptchaFeedback.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@netacea/captchafeedback",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.14",
|
|
4
4
|
"description": "CAPTCHA feedback module to send CAPTCHA results back to Netacea.",
|
|
5
5
|
"main": "dist/captchafeedback/src/index.js",
|
|
6
6
|
"types": "dist/captchafeedback/src/index.d.ts",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"axios": "^0.21.1"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@netacea/netaceaintegrationbase": "^1.
|
|
41
|
+
"@netacea/netaceaintegrationbase": "^1.12.0"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "32dde29b6f0392cf6b3e1c066be22d2dbc478929"
|
|
44
44
|
}
|