@netacea/akamai 5.0.49 → 5.0.51

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.
Files changed (86) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/package.json +3 -3
  3. package/dist/src/AkamaiV1.d.ts +1 -1
  4. package/dist/src/AkamaiV2.js +16 -0
  5. package/dist/src/AkamaiV2.js.map +1 -1
  6. package/dist/src/CachedEncryption.d.ts +5 -2
  7. package/dist/src/CachedEncryption.js +11 -0
  8. package/dist/src/CachedEncryption.js.map +1 -1
  9. package/dist/src/ConfigLoader.d.ts +1 -6
  10. package/dist/src/ConfigLoader.js +8 -1
  11. package/dist/src/ConfigLoader.js.map +1 -1
  12. package/dist/src/captchaGet.d.ts +4 -0
  13. package/dist/src/captchaGet.js +63 -0
  14. package/dist/src/captchaGet.js.map +1 -0
  15. package/dist/src/errors/APIError.d.ts +4 -0
  16. package/dist/src/errors/APIError.js +24 -0
  17. package/dist/src/errors/APIError.js.map +1 -0
  18. package/dist/src/helpers/buildCookieFromValues.d.ts +2 -0
  19. package/dist/src/helpers/buildCookieFromValues.js +13 -0
  20. package/dist/src/helpers/buildCookieFromValues.js.map +1 -0
  21. package/dist/src/helpers/buildCookieHeader.d.ts +3 -0
  22. package/dist/src/helpers/buildCookieHeader.js +7 -0
  23. package/dist/src/helpers/buildCookieHeader.js.map +1 -0
  24. package/dist/src/helpers/constructWebLog.d.ts +3 -0
  25. package/dist/src/helpers/constructWebLog.js +60 -0
  26. package/dist/src/helpers/constructWebLog.js.map +1 -0
  27. package/dist/src/helpers/createMitata.d.ts +13 -0
  28. package/dist/src/helpers/createMitata.js +15 -0
  29. package/dist/src/helpers/createMitata.js.map +1 -0
  30. package/dist/src/helpers/createProtoMitata.d.ts +1 -0
  31. package/dist/src/helpers/createProtoMitata.js +13 -0
  32. package/dist/src/helpers/createProtoMitata.js.map +1 -0
  33. package/dist/src/helpers/encryptionCheck.d.ts +1 -0
  34. package/dist/src/helpers/encryptionCheck.js +5 -0
  35. package/dist/src/helpers/encryptionCheck.js.map +1 -0
  36. package/dist/src/helpers/findBestMitigation.d.ts +3 -0
  37. package/dist/src/helpers/findBestMitigation.js +35 -0
  38. package/dist/src/helpers/findBestMitigation.js.map +1 -0
  39. package/dist/src/helpers/getHeaderValueOrDefault.d.ts +3 -0
  40. package/dist/src/helpers/getHeaderValueOrDefault.js +5 -0
  41. package/dist/src/helpers/getHeaderValueOrDefault.js.map +1 -0
  42. package/dist/src/helpers/getMitataCaptchaFromHeaders.d.ts +4 -0
  43. package/dist/src/helpers/getMitataCaptchaFromHeaders.js +14 -0
  44. package/dist/src/helpers/getMitataCaptchaFromHeaders.js.map +1 -0
  45. package/dist/src/helpers/getProtoMitataFromRequestVar.d.ts +3 -0
  46. package/dist/src/helpers/getProtoMitataFromRequestVar.js +13 -0
  47. package/dist/src/helpers/getProtoMitataFromRequestVar.js.map +1 -0
  48. package/dist/src/helpers/getQuery.d.ts +1 -0
  49. package/dist/src/helpers/getQuery.js +11 -0
  50. package/dist/src/helpers/getQuery.js.map +1 -0
  51. package/dist/src/helpers/getResponseHeaders.d.ts +5 -0
  52. package/dist/src/helpers/getResponseHeaders.js +9 -0
  53. package/dist/src/helpers/getResponseHeaders.js.map +1 -0
  54. package/dist/src/helpers/getVariable.d.ts +2 -0
  55. package/dist/src/helpers/getVariable.js +4 -0
  56. package/dist/src/helpers/getVariable.js.map +1 -0
  57. package/dist/src/helpers/logToDataStream.d.ts +3 -0
  58. package/dist/src/helpers/logToDataStream.js +31 -0
  59. package/dist/src/helpers/logToDataStream.js.map +1 -0
  60. package/dist/src/helpers/makeRequest.d.ts +3 -0
  61. package/dist/src/helpers/makeRequest.js +38 -0
  62. package/dist/src/helpers/makeRequest.js.map +1 -0
  63. package/dist/src/helpers/readCookie.d.ts +2 -0
  64. package/dist/src/helpers/readCookie.js +28 -0
  65. package/dist/src/helpers/readCookie.js.map +1 -0
  66. package/dist/src/index.d.ts +2 -1
  67. package/dist/src/index.js.map +1 -1
  68. package/dist/src/ingest/ingest.d.ts +3 -0
  69. package/dist/src/ingest/ingest.js +47 -0
  70. package/dist/src/ingest/ingest.js.map +1 -0
  71. package/dist/src/ingest/makeIngestAPICall.d.ts +6 -0
  72. package/dist/src/ingest/makeIngestAPICall.js +28 -0
  73. package/dist/src/ingest/makeIngestAPICall.js.map +1 -0
  74. package/dist/src/mitigation/getApiCallResponseFromResponse.d.ts +3 -0
  75. package/dist/src/mitigation/getApiCallResponseFromResponse.js +43 -0
  76. package/dist/src/mitigation/getApiCallResponseFromResponse.js.map +1 -0
  77. package/dist/src/mitigation/mitigationApiCall.d.ts +15 -0
  78. package/dist/src/mitigation/mitigationApiCall.js +45 -0
  79. package/dist/src/mitigation/mitigationApiCall.js.map +1 -0
  80. package/dist/src/netaceaPaths.d.ts +1 -0
  81. package/dist/src/netaceaPaths.js +6 -0
  82. package/dist/src/netaceaPaths.js.map +1 -1
  83. package/dist/src/types.d.ts +57 -0
  84. package/dist/src/types.js +2 -0
  85. package/dist/src/types.js.map +1 -0
  86. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProtoMitataFromRequestVar.js","sourceRoot":"","sources":["../../../src/helpers/getProtoMitataFromRequestVar.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAC1C,OAAgC,EAChC,MAAoC;IAEpC,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;IAG7E,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;QAC/D,OAAO,SAAS,CAAA;KACjB;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;KACrC;IAAC,MAAM;QACN,OAAO,SAAS,CAAA;KACjB;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getQuery(queryStr: string, key: string): string | undefined;
@@ -0,0 +1,11 @@
1
+ export function getQuery(queryStr, key) {
2
+ const queries = queryStr.split('&');
3
+ for (const query of queries) {
4
+ const [queryKey, queryValue] = query.split('=');
5
+ if (queryKey === key) {
6
+ return queryValue;
7
+ }
8
+ }
9
+ return undefined;
10
+ }
11
+ //# sourceMappingURL=getQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getQuery.js","sourceRoot":"","sources":["../../../src/helpers/getQuery.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAE,QAAgB,EAAE,GAAW;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC/C,IAAI,QAAQ,KAAK,GAAG,EAAE;YACpB,OAAO,UAAU,CAAA;SAClB;KACF;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="akamai-edgeworkers" />
2
+ import type { HttpResponse } from 'http-request';
3
+ export declare function getResponseHeaders(response: HttpResponse): {
4
+ [key: string]: string;
5
+ };
@@ -0,0 +1,9 @@
1
+ export function getResponseHeaders(response) {
2
+ const responseHeadersEntries = Object.entries(response.getHeaders());
3
+ const responseHeaders = {};
4
+ for (const [key, value] of responseHeadersEntries) {
5
+ responseHeaders[key] = value[0];
6
+ }
7
+ return responseHeaders;
8
+ }
9
+ //# sourceMappingURL=getResponseHeaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getResponseHeaders.js","sourceRoot":"","sources":["../../../src/helpers/getResponseHeaders.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAE,QAAsB;IACxD,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IACpE,MAAM,eAAe,GAA4B,EAAE,CAAA;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,sBAAsB,EAAE;QACjD,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;KAChC;IACD,OAAO,eAAe,CAAA;AACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ /// <reference types="akamai-edgeworkers" />
2
+ export declare function getVariableOrDefault(request: EW.IngressClientRequest, variable: string, defaultValue?: string): string;
@@ -0,0 +1,4 @@
1
+ export function getVariableOrDefault(request, variable, defaultValue = '') {
2
+ return request.getVariable(variable) ?? defaultValue;
3
+ }
4
+ //# sourceMappingURL=getVariable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getVariable.js","sourceRoot":"","sources":["../../../src/helpers/getVariable.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAAE,OAAgC,EAAE,QAAgB,EAAE,YAAY,GAAG,EAAE;IACzG,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAA;AACtD,CAAC"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="akamai-edgeworkers" />
2
+ import type { AkamaiWorkerConfig } from '../types';
3
+ export declare function logToDataStream(request: EW.IngressClientRequest, config: Readonly<AkamaiWorkerConfig>): Promise<void>;
@@ -0,0 +1,31 @@
1
+ import { logger } from 'log';
2
+ import { matchMitataCookie } from '@netacea/netaceaintegrationbase';
3
+ import { getHeaderValueOrDefault } from './getHeaderValueOrDefault';
4
+ import { readCookie } from './readCookie';
5
+ import { isUrlCaptchaPost } from '../netaceaPaths';
6
+ import { findBestMitigation } from './findBestMitigation';
7
+ import { getProtoMitataFromRequestVar } from './getProtoMitataFromRequestVar';
8
+ import * as pack from '../../package.json';
9
+ export async function logToDataStream(request, config) {
10
+ try {
11
+ const protoMitata = getProtoMitataFromRequestVar(request, config);
12
+ const cookieHeader = getHeaderValueOrDefault(request, 'cookie');
13
+ const mitataCookie = await readCookie(config.netaceaCookieName, cookieHeader, config);
14
+ const cookieInfo = matchMitataCookie(mitataCookie);
15
+ const userId = protoMitata?.userId ?? cookieInfo?.userId ?? '';
16
+ const match = protoMitata?.match ?? cookieInfo?.match ?? 0;
17
+ const mitigate = protoMitata?.mitigate ?? cookieInfo?.mitigate ?? 0;
18
+ const captcha = protoMitata?.captcha ?? cookieInfo?.captcha ?? 0;
19
+ const { sessionStatus } = findBestMitigation(match, mitigate, captcha, isUrlCaptchaPost(request.path, request.method), config);
20
+ const dataStreamLogValue = [
21
+ userId,
22
+ sessionStatus,
23
+ pack.version
24
+ ].join(';');
25
+ request.setVariable('PMUSER_NETACEA_DS2_CUSTOM_FIELD', dataStreamLogValue);
26
+ }
27
+ catch (e) {
28
+ logger.log(`Error setting PMUSER_NETACEA_DS2_CUSTOM_FIELD ${e}`);
29
+ }
30
+ }
31
+ //# sourceMappingURL=logToDataStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logToDataStream.js","sourceRoot":"","sources":["../../../src/helpers/logToDataStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAgC,EAChC,MAAoC;IAGpC,IAAI;QACF,MAAM,WAAW,GAAG,4BAA4B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACjE,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,iBAA2B,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;QAC/F,MAAM,UAAU,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;QAElD,MAAM,MAAM,GAAG,WAAW,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,IAAI,EAAE,CAAA;QAC9D,MAAM,KAAK,GAAG,WAAW,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,IAAI,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,IAAI,UAAU,EAAE,QAAQ,IAAI,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG,WAAW,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,IAAI,CAAC,CAAA;QAEhE,MAAM,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAC1C,KAAK,EACL,QAAQ,EACR,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAC9C,MAAM,CACP,CAAA;QAGD,MAAM,kBAAkB,GAAG;YACzB,MAAM;YACN,aAAa;YACb,IAAI,CAAC,OAAO;SACb,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEX,OAAO,CAAC,WAAW,CAAC,iCAAiC,EAAE,kBAAkB,CAAC,CAAA;KAC3E;IAAC,OAAO,CAAC,EAAE;QAEV,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAA;KACjE;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MakeRequestArgs, MakeRequestResponse } from '@netacea/netaceaintegrationbase';
2
+ import type { AkamaiWorkerConfig } from '../types';
3
+ export declare function makeRequest(args: MakeRequestArgs, config: Readonly<AkamaiWorkerConfig>): Promise<MakeRequestResponse>;
@@ -0,0 +1,38 @@
1
+ import { httpRequest } from 'http-request';
2
+ import { getResponseHeaders } from './getResponseHeaders';
3
+ export async function makeRequest(args, config) {
4
+ const { enableMitigationProxyPass, enableIngestProxyPass } = config;
5
+ const { method, path, headers, body, timeout } = args;
6
+ let { host } = args;
7
+ const isMitigationsProxyPassRequest = (enableMitigationProxyPass &&
8
+ host.includes('mitigations'));
9
+ const isIngestProxyPassRequest = (enableIngestProxyPass &&
10
+ host.includes('ingest'));
11
+ let url;
12
+ if (isMitigationsProxyPassRequest) {
13
+ headers['X-Netacea-ProxyPass'] = 'mitigation';
14
+ url = path;
15
+ }
16
+ else if (isIngestProxyPassRequest) {
17
+ headers['X-Netacea-ProxyPass'] = 'ingest';
18
+ url = path;
19
+ }
20
+ else {
21
+ if (host.endsWith('/')) {
22
+ host = host.slice(0, -1);
23
+ }
24
+ url = host + path;
25
+ }
26
+ const response = await httpRequest(url, {
27
+ body,
28
+ headers,
29
+ method,
30
+ timeout: timeout ?? 3000
31
+ });
32
+ return {
33
+ status: response.status,
34
+ body: await response.text(),
35
+ headers: getResponseHeaders(response)
36
+ };
37
+ }
38
+ //# sourceMappingURL=makeRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeRequest.js","sourceRoot":"","sources":["../../../src/helpers/makeRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAIzD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAqB,EACrB,MAAoC;IAEpC,MAAM,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAA;IACnE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IACrD,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IAKnB,MAAM,6BAA6B,GAAG,CACpC,yBAAyB;QACzB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAC7B,CAAA;IACD,MAAM,wBAAwB,GAAG,CAC/B,qBAAqB;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACxB,CAAA;IAED,IAAI,GAAG,CAAA;IACP,IAAI,6BAA6B,EAAE;QACjC,OAAO,CAAC,qBAAqB,CAAC,GAAG,YAAY,CAAA;QAC7C,GAAG,GAAG,IAAI,CAAA;KACX;SAAM,IAAI,wBAAwB,EAAE;QACnC,OAAO,CAAC,qBAAqB,CAAC,GAAG,QAAQ,CAAA;QACzC,GAAG,GAAG,IAAI,CAAA;KACX;SAAM;QAEL,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;SACzB;QAED,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;KAClB;IAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI;QACJ,OAAO;QACP,MAAM;QACN,OAAO,EAAE,OAAO,IAAI,IAAI;KACzB,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC;KACtC,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { AkamaiWorkerConfig } from '../types';
2
+ export declare function readCookie(cookieName: string, cookies: string | string[] | null | undefined, config: Readonly<AkamaiWorkerConfig>): Promise<string | undefined>;
@@ -0,0 +1,28 @@
1
+ import { CachedEncryption } from '../CachedEncryption';
2
+ import { isJweEncrypted } from './encryptionCheck';
3
+ export async function readCookie(cookieName, cookies, config) {
4
+ if (cookies === null || cookies === undefined) {
5
+ return undefined;
6
+ }
7
+ if (typeof cookies === 'string') {
8
+ return await readCookie(cookieName, cookies.split(';'), config);
9
+ }
10
+ const valuePrefix = `${cookieName}=`;
11
+ for (const cookie of cookies) {
12
+ const trimmedCookie = cookie.split(';')[0].trimStart();
13
+ if (trimmedCookie.startsWith(valuePrefix)) {
14
+ const cookieValue = trimmedCookie.slice(valuePrefix.length);
15
+ if (isJweEncrypted(cookieName)) {
16
+ try {
17
+ return await CachedEncryption.getInstance(config).decrypt(cookieValue);
18
+ }
19
+ catch (_e) {
20
+ return undefined;
21
+ }
22
+ }
23
+ return cookieValue;
24
+ }
25
+ }
26
+ return undefined;
27
+ }
28
+ //# sourceMappingURL=readCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readCookie.js","sourceRoot":"","sources":["../../../src/helpers/readCookie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,OAA6C,EAC7C,MAAoC;IAEpC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;QAC7C,OAAO,SAAS,CAAA;KACjB;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,MAAM,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;KAChE;IAED,MAAM,WAAW,GAAG,GAAG,UAAU,GAAG,CAAA;IACpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAE5B,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;QAEtD,IAAI,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YACzC,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAE3D,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE;gBAC9B,IAAI;oBACF,OAAO,MAAM,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;iBACvE;gBAAC,OAAO,EAAE,EAAE;oBACX,OAAO,SAAS,CAAA;iBACjB;aACF;YAED,OAAO,WAAW,CAAA;SACnB;KACF;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import Akamai from './AkamaiV2';
2
- export { LegacyAkamaiConstructorArgs as AkamaiConstructorArgs, AkamaiMitigateResponse } from './AkamaiV1';
2
+ export type { AkamaiHttpRequestFn, AkamaiHttpRequestOptions, AkamaiMitigateResponse, InjectedDependencies, Logger, ProtoMitata, RequestArgs, Response, ResponseProperties, UpstreamMitHeaders, AkamaiWorkerConfig } from './types';
3
+ export { LegacyAkamaiConstructorArgs as AkamaiConstructorArgs } from './AkamaiV1';
3
4
  export { NetaceaMitigationType, InjectResponse } from '@netacea/netaceaintegrationbase';
4
5
  export default Akamai;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAA;AAE/B,OAAO,EAAE,qBAAqB,EAAkB,MAAM,iCAAiC,CAAA;AACvF,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAA;AAe/B,OAAO,EAAE,qBAAqB,EAAkB,MAAM,iCAAiC,CAAA;AACvF,eAAe,MAAM,CAAA"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="akamai-edgeworkers" />
2
+ import type { AkamaiWorkerConfig } from '../types';
3
+ export declare function ingest(request: EW.IngressClientRequest, response: EW.EgressClientResponse, config: Readonly<AkamaiWorkerConfig>): Promise<void>;
@@ -0,0 +1,47 @@
1
+ import { getHeaderValueOrDefault } from '../helpers/getHeaderValueOrDefault';
2
+ import { readCookie } from '../helpers/readCookie';
3
+ import { matchMitataCookie } from '@netacea/netaceaintegrationbase';
4
+ import { isUrlCaptchaPost } from '../netaceaPaths';
5
+ import { findBestMitigation } from '../helpers/findBestMitigation';
6
+ import { callIngest } from './makeIngestAPICall';
7
+ import * as pack from '../../package.json';
8
+ import { getVariableOrDefault } from '../helpers/getVariable';
9
+ import { logger } from 'log';
10
+ export async function ingest(request, response, config) {
11
+ const setCookie = response.getHeader('set-cookie') ?? [];
12
+ const cookieString = setCookie.length !== 0
13
+ ? setCookie?.join('; ')
14
+ : getHeaderValueOrDefault(request, 'cookie');
15
+ let mitata = await readCookie(config.netaceaCookieName, cookieString, config) ?? '';
16
+ if (mitata === undefined || mitata === '') {
17
+ const cookieString = getHeaderValueOrDefault(request, 'cookie');
18
+ mitata = await readCookie(config.netaceaCookieName, cookieString, config) ?? '';
19
+ }
20
+ const { match, mitigate, captcha } = matchMitataCookie(mitata) ?? {
21
+ match: 0,
22
+ mitigate: 0,
23
+ captcha: 0
24
+ };
25
+ const { sessionStatus } = findBestMitigation(match, mitigate, captcha, isUrlCaptchaPost(request.path, request.method), config);
26
+ try {
27
+ callIngest({
28
+ bytesSent: getHeaderValueOrDefault(response, 'content-length', '0'),
29
+ ip: getVariableOrDefault(request, 'PMUSER_CLIENT_IP', ''),
30
+ method: request.method,
31
+ path: request.url,
32
+ protocol: getHeaderValueOrDefault(request, 'protocol', 'HTTP/1.1'),
33
+ referer: getHeaderValueOrDefault(request, 'referer', ''),
34
+ requestTime: '0',
35
+ sessionStatus,
36
+ status: String(response.status),
37
+ userAgent: getHeaderValueOrDefault(request, 'user-agent', '-'),
38
+ mitataCookie: mitata,
39
+ integrationType: pack.name.replace('@netacea/', ''),
40
+ integrationVersion: pack.version
41
+ }, config);
42
+ }
43
+ catch (e) {
44
+ logger.log('Error in callIngest():', e);
45
+ }
46
+ }
47
+ //# sourceMappingURL=ingest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../src/ingest/ingest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAG5B,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAgC,EAChC,QAAiC,EACjC,MAAoC;IAEpC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;IACxD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC;QACzC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC9C,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,iBAA2B,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7F,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;QACzC,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC/D,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,iBAA2B,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;KAC1F;IAED,MAAM,EACJ,KAAK,EACL,QAAQ,EACR,OAAO,EACR,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI;QAC/B,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;KACX,CAAA;IAED,MAAM,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAC1C,KAAK,EACL,QAAQ,EACR,OAAO,EACP,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAC9C,MAAM,CACP,CAAA;IAED,IAAI;QAEF,UAAU,CAAC;YACT,SAAS,EAAE,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,CAAC;YACnE,EAAE,EAAE,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC;YACzD,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,QAAQ,EAAE,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;YAClE,OAAO,EAAE,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC;YACxD,WAAW,EAAE,GAAG;YAChB,aAAa;YACb,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/B,SAAS,EAAE,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC;YAC9D,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACnD,kBAAkB,EAAE,IAAI,CAAC,OAAO;SACjC,EAAE,MAAM,CAAC,CAAA;KACX;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAA;KACxC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { AkamaiWorkerConfig } from '../types';
2
+ import type { WebLog, V2WebLog, IngestArgs } from '@netacea/netaceaintegrationbase';
3
+ export declare function callIngest(args: IngestArgs, config: Readonly<AkamaiWorkerConfig>): Promise<void>;
4
+ export declare function makeIngestApiCall(headers: {
5
+ [key: string]: string;
6
+ }, body: WebLog | V2WebLog, config: Readonly<AkamaiWorkerConfig>): Promise<any>;
@@ -0,0 +1,28 @@
1
+ import { makeRequest } from '../helpers/makeRequest';
2
+ import { constructWebLog } from '../helpers/constructWebLog';
3
+ import { NetaceaIngestType } from '@netacea/netaceaintegrationbase';
4
+ import { APIError } from '../errors/APIError';
5
+ export async function callIngest(args, config) {
6
+ const body = constructWebLog(args, config);
7
+ if (config.ingestType !== NetaceaIngestType.KINESIS) {
8
+ const headers = {
9
+ 'X-Netacea-API-Key': config.apiKey ?? '',
10
+ 'content-type': 'application/json'
11
+ };
12
+ const res = await makeIngestApiCall(headers, body, config);
13
+ if (res.status !== 200) {
14
+ throw APIError.fromResponse(res);
15
+ }
16
+ }
17
+ }
18
+ export async function makeIngestApiCall(headers, body, config) {
19
+ return await makeRequest({
20
+ host: config.ingestServiceUrl,
21
+ method: 'POST',
22
+ path: '/',
23
+ headers,
24
+ body: JSON.stringify(body),
25
+ timeout: config.timeout
26
+ }, config);
27
+ }
28
+ //# sourceMappingURL=makeIngestAPICall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeIngestAPICall.js","sourceRoot":"","sources":["../../../src/ingest/makeIngestAPICall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGnE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAE,IAAgB,EAAE,MAAoC;IACtF,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC1C,IAAI,MAAM,CAAC,UAAU,KAAK,iBAAiB,CAAC,OAAO,EAAE;QACnD,MAAM,OAAO,GAAG;YACd,mBAAmB,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YACxC,cAAc,EAAE,kBAAkB;SACnC,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;YACtB,MAAM,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;SACjC;KACF;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAgC,EAChC,IAAuB,EACvB,MAAoC;IAEpC,OAAO,MAAM,WAAW,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC,gBAA0B;QACvC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG;QACT,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,EAAE,MAAM,CAAC,CAAA;AACZ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MakeRequestResponse, MakeMitigateAPICallResponse } from '@netacea/netaceaintegrationbase';
2
+ import type { AkamaiWorkerConfig, CookieCodes } from '../types';
3
+ export declare function getApiCallResponseFromResponse(response: MakeRequestResponse, userId: string | undefined, clientIP: string, config: Readonly<AkamaiWorkerConfig>, defaultMitataCodes?: CookieCodes): Promise<MakeMitigateAPICallResponse>;
@@ -0,0 +1,43 @@
1
+ import { dictionary } from '@netacea/netaceaintegrationbase';
2
+ import { createProtoMitata } from '../helpers/createProtoMitata';
3
+ import { getMitataCaptchaFromHeaders } from '../helpers/getMitataCaptchaFromHeaders';
4
+ import { APIError } from '../errors/APIError';
5
+ export async function getApiCallResponseFromResponse(response, userId, clientIP, config, defaultMitataCodes) {
6
+ if (response.status !== 200) {
7
+ throw APIError.fromResponse(response);
8
+ }
9
+ let match = parseInt(response.headers[dictionary.netaceaHeaders.match]);
10
+ let mitigate = parseInt(response.headers[dictionary.netaceaHeaders.mitigate]);
11
+ let captcha = parseInt(response.headers[dictionary.netaceaHeaders.captcha]);
12
+ if (isNaN(match)) {
13
+ match = defaultMitataCodes?.match ?? 0;
14
+ }
15
+ if (isNaN(mitigate)) {
16
+ mitigate = defaultMitataCodes?.mitigate ?? 0;
17
+ }
18
+ if (isNaN(captcha)) {
19
+ captcha = defaultMitataCodes?.captcha ?? 0;
20
+ }
21
+ let mitataMaxAge = parseInt(response.headers[dictionary.netaceaHeaders.mitataExpiry]);
22
+ if (isNaN(mitataMaxAge)) {
23
+ mitataMaxAge = 86400;
24
+ }
25
+ const mitata = await createProtoMitata(clientIP, userId, match, mitigate, captcha);
26
+ const mitataCaptcha = await getMitataCaptchaFromHeaders(response.headers, config);
27
+ const setCookie = [
28
+ mitata,
29
+ mitataCaptcha
30
+ ].filter(c => c !== undefined);
31
+ const eventId = response.headers[dictionary.netaceaHeaders.eventId];
32
+ return {
33
+ status: response.status,
34
+ match,
35
+ mitigate,
36
+ captcha,
37
+ setCookie,
38
+ body: response.body,
39
+ eventId,
40
+ mitataMaxAge
41
+ };
42
+ }
43
+ //# sourceMappingURL=getApiCallResponseFromResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getApiCallResponseFromResponse.js","sourceRoot":"","sources":["../../../src/mitigation/getApiCallResponseFromResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAC9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,QAA6B,EAC7B,MAA0B,EAC1B,QAAgB,EAChB,MAAoC,EACpC,kBAAgC;IAEhC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;QAC3B,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;KACtC;IACD,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IACvE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC7E,IAAI,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IAE3E,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;QAChB,KAAK,GAAG,kBAAkB,EAAE,KAAK,IAAI,CAAC,CAAA;KACvC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QACnB,QAAQ,GAAG,kBAAkB,EAAE,QAAQ,IAAI,CAAC,CAAA;KAC7C;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;QAClB,OAAO,GAAG,kBAAkB,EAAE,OAAO,IAAI,CAAC,CAAA;KAC3C;IAED,IAAI,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAA;IACrF,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;QACvB,YAAY,GAAG,KAAK,CAAA;KACrB;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAClF,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAEjF,MAAM,SAAS,GAAG;QAChB,MAAM;QACN,aAAa;KACd,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAa,CAAA;IAE1C,MAAM,OAAO,GAAuB,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACvF,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK;QACL,QAAQ;QACR,OAAO;QACP,SAAS;QACT,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO;QACP,YAAY;KACb,CAAA;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { MakeMitigateAPICallResponse } from '@netacea/netaceaintegrationbase';
2
+ import { AkamaiWorkerConfig, CookieCodes } from '../types';
3
+ interface MitigationAPICallOptions {
4
+ apiKey: string;
5
+ userId: string | undefined;
6
+ clientIP: string;
7
+ userAgent: string;
8
+ captchaCookie: string | undefined;
9
+ captchaSiteKey: string | undefined;
10
+ captchaSecretKey: string | undefined;
11
+ trackingId: string | undefined;
12
+ }
13
+ export declare function captchaGetAPICall(opts: MitigationAPICallOptions, config: Readonly<AkamaiWorkerConfig>, defaultMitataCodes?: CookieCodes): Promise<MakeMitigateAPICallResponse>;
14
+ export declare function mitigationAPICall(opts: MitigationAPICallOptions, config: Readonly<AkamaiWorkerConfig>): Promise<MakeMitigateAPICallResponse>;
15
+ export {};
@@ -0,0 +1,45 @@
1
+ import { makeRequest } from '../helpers/makeRequest';
2
+ import { buildCookieHeader } from '../helpers/buildCookieHeader';
3
+ import { getApiCallResponseFromResponse } from './getApiCallResponseFromResponse';
4
+ export async function captchaGetAPICall(opts, config, defaultMitataCodes) {
5
+ const trackingIdQuery = opts.trackingId !== undefined ? `?trackingId=${opts.trackingId}` : '';
6
+ return await mitigationAPICallBase(`/captcha${trackingIdQuery}`, 'GET', opts, config, defaultMitataCodes);
7
+ }
8
+ export async function mitigationAPICall(opts, config) {
9
+ return await mitigationAPICallBase('/', 'GET', opts, config);
10
+ }
11
+ async function mitigationAPICallBase(path, method, opts, config, defaultMitataCodes) {
12
+ const { userId, clientIP } = opts;
13
+ const { mitigationServiceUrl, timeout } = config;
14
+ if (mitigationServiceUrl === undefined) {
15
+ throw new Error('Mitigation Service URL is not defined!');
16
+ }
17
+ const res = await makeRequest({
18
+ host: mitigationServiceUrl,
19
+ path,
20
+ headers: composeHeaders(opts),
21
+ method,
22
+ timeout
23
+ }, config);
24
+ return await getApiCallResponseFromResponse(res, userId, clientIP, config, defaultMitataCodes);
25
+ }
26
+ function composeHeaders(opts) {
27
+ const { apiKey, userId, userAgent, captchaCookie, clientIP, captchaSiteKey, captchaSecretKey } = opts;
28
+ const headers = {
29
+ 'X-Netacea-API-Key': apiKey,
30
+ 'X-Netacea-Client-IP': clientIP,
31
+ 'user-agent': userAgent,
32
+ 'cookie': buildCookieHeader({
33
+ _mitatacaptcha: captchaCookie
34
+ })
35
+ };
36
+ if (userId !== undefined) {
37
+ headers['X-Netacea-UserId'] = userId;
38
+ }
39
+ if (captchaSiteKey !== undefined && captchaSecretKey !== undefined) {
40
+ headers['X-Netacea-Captcha-Site-Key'] = captchaSiteKey;
41
+ headers['X-Netacea-Captcha-Secret-Key'] = captchaSecretKey;
42
+ }
43
+ return headers;
44
+ }
45
+ //# sourceMappingURL=mitigationApiCall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mitigationApiCall.js","sourceRoot":"","sources":["../../../src/mitigation/mitigationApiCall.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAA;AAajF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAA8B,EAC9B,MAAoC,EACpC,kBAAgC;IAEhC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7F,OAAO,MAAM,qBAAqB,CAAC,WAAW,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAC3G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAA8B,EAC9B,MAAoC;IAEpC,OAAO,MAAM,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAC9D,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,IAAY,EACZ,MAAyC,EACzC,IAA8B,EAC9B,MAAoC,EACpC,kBAAgC;IAEhC,MAAM,EACJ,MAAM,EACN,QAAQ,EACT,GAAG,IAAI,CAAA;IACR,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAEhD,IAAI,oBAAoB,KAAK,SAAS,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;KAC1D;IAED,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;QAC5B,IAAI,EAAE,oBAAoB;QAC1B,IAAI;QACJ,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;QAC7B,MAAM;QACN,OAAO;KACR,EAAE,MAAM,CAAC,CAAA;IAEV,OAAO,MAAM,8BAA8B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAChG,CAAC;AAED,SAAS,cAAc,CACrB,IAA8B;IAE9B,MAAM,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EACR,cAAc,EACd,gBAAgB,EACjB,GAAG,IAAI,CAAA;IAER,MAAM,OAAO,GAA4B;QACvC,mBAAmB,EAAE,MAAM;QAC3B,qBAAqB,EAAE,QAAQ;QAC/B,YAAY,EAAE,SAAS;QACvB,QAAQ,EAAE,iBAAiB,CAAC;YAC1B,cAAc,EAAE,aAAa;SAC9B,CAAC;KACH,CAAA;IAED,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAA;KACrC;IAED,IAAI,cAAc,KAAK,SAAS,IAAI,gBAAgB,KAAK,SAAS,EAAE;QAClE,OAAO,CAAC,4BAA4B,CAAC,GAAG,cAAc,CAAA;QACtD,OAAO,CAAC,8BAA8B,CAAC,GAAG,gBAAgB,CAAA;KAC3D;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export declare function isUrlCaptchaAssetsGet(path: string, method: string, useCaptchaRelAssets: boolean): boolean;
2
2
  export declare function isUrlCaptchaPost(path: string, method: string): boolean;
3
+ export declare function isUrlCaptchaGet(path: string, method: string, captchaPath: string | undefined): boolean;
@@ -11,4 +11,10 @@ export function isUrlCaptchaPost(path, method) {
11
11
  return (/\/?ataverifycaptcha$/.test(path.toLowerCase()) &&
12
12
  method.toLowerCase() === 'post');
13
13
  }
14
+ export function isUrlCaptchaGet(path, method, captchaPath) {
15
+ return (captchaPath !== undefined &&
16
+ captchaPath.length > 0 &&
17
+ path === captchaPath &&
18
+ method.toLowerCase() === 'get');
19
+ }
14
20
  //# sourceMappingURL=netaceaPaths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"netaceaPaths.js","sourceRoot":"","sources":["../../src/netaceaPaths.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,MAAc,EACd,mBAA4B;IAE5B,IAAI,CAAC,mBAAmB,EAAE;QACxB,OAAO,KAAK,CAAA;KACb;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACxC,OAAO,CACL,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;QACtC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;QACjC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,IAAY,EAAE,MAAc;IAC5D,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAChC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"netaceaPaths.js","sourceRoot":"","sources":["../../src/netaceaPaths.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,MAAc,EACd,mBAA4B;IAE5B,IAAI,CAAC,mBAAmB,EAAE;QACxB,OAAO,KAAK,CAAA;KACb;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACxC,OAAO,CACL,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;QACtC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;QACjC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,IAAY,EAAE,MAAc;IAC5D,OAAO,CACL,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAChC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAE,IAAY,EAAE,MAAc,EAAE,WAA+B;IAC5F,OAAO,CACL,WAAW,KAAK,SAAS;QACzB,WAAW,CAAC,MAAM,GAAG,CAAC;QACtB,IAAI,KAAK,WAAW;QACpB,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAC/B,CAAA;AACH,CAAC"}
@@ -0,0 +1,57 @@
1
+ /// <reference types="akamai-edgeworkers" />
2
+ import type { RequestBody, HttpResponse } from 'http-request';
3
+ import type { MitigateResponse } from '@netacea/netaceaintegrationbase';
4
+ import type { LegacyAkamaiConstructorArgs } from './AkamaiV1';
5
+ export interface AkamaiWorkerConfig extends LegacyAkamaiConstructorArgs {
6
+ enableMitigationProxyPass: boolean;
7
+ enableIngestProxyPass: boolean;
8
+ netaceaCookieAttributes: string;
9
+ netaceaCaptchaCookieAttributes: string;
10
+ netaceaCaptchaPath?: string;
11
+ protoMitataVariableName: string;
12
+ }
13
+ export interface CookieCodes {
14
+ match: number;
15
+ mitigate: number;
16
+ captcha: number;
17
+ }
18
+ export interface ProtoMitata {
19
+ clientIP: string;
20
+ userId: string;
21
+ match: number;
22
+ mitigate: number;
23
+ captcha: number;
24
+ mitataMaxAge: number;
25
+ }
26
+ export declare type AkamaiMitigateResponse = MitigateResponse<ResponseProperties>;
27
+ export interface UpstreamMitHeaders {
28
+ 'X-Netacea-UserId': string;
29
+ 'X-Netacea-BC-Type': string;
30
+ 'X-Netacea-Integration-Type': string;
31
+ 'X-Netacea-Integration-Version': string;
32
+ }
33
+ export interface ResponseProperties {
34
+ headers: Record<string, string>;
35
+ body?: string | undefined;
36
+ status?: number;
37
+ statusText?: string;
38
+ mitigation?: string;
39
+ }
40
+ export declare type RequestArgs = EW.IngressClientRequest;
41
+ export declare type Response = ResponseProperties;
42
+ export interface Logger {
43
+ log(format: string, ...values: any): void;
44
+ }
45
+ export interface AkamaiHttpRequestOptions {
46
+ method?: string | undefined;
47
+ headers?: {
48
+ [others: string]: string | string[];
49
+ } | undefined;
50
+ body?: RequestBody | undefined;
51
+ timeout?: number | undefined;
52
+ }
53
+ export declare type AkamaiHttpRequestFn = (url: string, options?: AkamaiHttpRequestOptions) => Promise<HttpResponse>;
54
+ export interface InjectedDependencies {
55
+ logger: Logger;
56
+ httpRequest: AkamaiHttpRequestFn;
57
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netacea/akamai",
3
- "version": "5.0.49",
3
+ "version": "5.0.51",
4
4
  "description": "Netacea Akamai CDN Integration",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "license": "ISC",
22
22
  "dependencies": {
23
- "@netacea/netaceaintegrationbase": "^1.16.55",
23
+ "@netacea/netaceaintegrationbase": "^1.16.57",
24
24
  "buffer": "^6.0.3",
25
25
  "jssha": "^3.3.0"
26
26
  },
@@ -67,5 +67,5 @@
67
67
  "tslib": "^2.0.3",
68
68
  "typescript": "^4.0.3"
69
69
  },
70
- "gitHead": "1f90b04e1b62d284d335a48cd135637b05f371c2"
70
+ "gitHead": "fdb4cad4779fd74b53828f42777ff3725399350f"
71
71
  }