@netacea/akamai 4.5.3 → 4.5.5

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
+ ## 4.5.5 (2023-03-23)
7
+
8
+ **Note:** Version bump only for package @netacea/akamai
9
+
10
+
11
+
12
+
13
+
14
+ ## 4.5.4 (2023-03-22)
15
+
16
+ **Note:** Version bump only for package @netacea/akamai
17
+
18
+
19
+
20
+
21
+
6
22
  ## 4.5.3 (2023-03-17)
7
23
 
8
24
  **Note:** Version bump only for package @netacea/akamai
package/README.md CHANGED
@@ -9,6 +9,8 @@ In this readme you will find guidance on implementation and validity checking.
9
9
 
10
10
  # Installation
11
11
 
12
+ Note: it is recommended to follow these installation instructions using NodeJs version `18.x`.
13
+
12
14
  ### 🌻 Starting fresh
13
15
 
14
16
  Quickest way to get started, is pulling the Netacea Akamai template repository from github and following the steps in there to get up and running.
@@ -54,10 +56,10 @@ export async function onClientResponse (
54
56
  }
55
57
  ```
56
58
 
57
- Akamai does not provide some crytography functions that are required by the integration. In order for the sample integration to work we have included these in the [rollup config](https://github.com/Netacea/akamai-edgeworker-template-typescript) of the edgeworker template.
59
+ Akamai does not provide some crytography functions that are required by the integration. In order for the sample integration to work we have included these in the [rollup config](https://github.com/Netacea/akamai-edgeworker-template-typescript) of the edgeworker template.
58
60
 
59
61
  Akamai does provide some functionality that should be imported into your code bundle. These need to be included in the main.js bundled file in the following way:
60
- ``` javascript
62
+ ``` javascript
61
63
  import { httpRequest } from 'http-request';
62
64
  import { logger } from 'log';
63
65
  ```
package/dist/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@netacea/akamai",
3
- "version": "4.5.3",
3
+ "version": "4.5.5",
4
4
  "description": "Netacea Akamai CDN Integration",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "npm run test:unit && npm run test:integration",
9
- "test:integration": "npx nyc -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './tests/*.test.ts'",
10
- "test:unit": "npx nyc -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './unit_tests/*.test.ts'",
11
- "test:regression": "npx nyc -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './regression_tests/*.test.ts'",
9
+ "test:integration": "npx nyc -r=lcov -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './tests/*.test.ts'",
10
+ "test:unit": "npx nyc -r=lcov -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './unit_tests/*.test.ts'",
11
+ "test:regression": "npx nyc -r=lcov -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './regression_tests/*.test.ts'",
12
12
  "lint": "npx eslint . --ext ts",
13
13
  "lint:fix": "npx eslint . --ext ts --fix",
14
14
  "prepublishOnly": "npx tsc --project tsconfig.build.json"
@@ -19,20 +19,19 @@
19
19
  },
20
20
  "license": "ISC",
21
21
  "dependencies": {
22
- "@netacea/netaceaintegrationbase": "^1.16.3",
23
- "@netacea/netaceaintegrationtestrunner": "^1.7.3",
22
+ "@netacea/netaceaintegrationbase": "^1.16.5",
23
+ "@netacea/netaceaintegrationtestrunner": "^1.7.5",
24
24
  "buffer": "^6.0.3",
25
- "crypto-js": "^4.1.1",
26
- "http-request": "^0.7.0"
25
+ "jssha": "^3.3.0"
27
26
  },
28
27
  "devDependencies": {
29
28
  "@rollup/plugin-commonjs": "^21.0.0",
30
29
  "@rollup/plugin-node-resolve": "^13.0.5",
31
30
  "@rollup/plugin-typescript": "^8.2.5",
32
- "@types/akamai-edgeworkers": "^1.0.3",
31
+ "@types/akamai-edgeworkers": "^1.1.6",
33
32
  "@types/aws4": "^1.11.0",
34
33
  "@types/crypto-js": "^4.0.2",
35
- "@types/node": "^14.17.29",
34
+ "@types/node": "^18.15.3",
36
35
  "@types/node-fetch": "^2.5.7",
37
36
  "@types/proxyquire": "^1.3.28",
38
37
  "@types/sinon": "^9.0.8",
@@ -63,5 +62,5 @@
63
62
  "tslib": "^2.0.3",
64
63
  "typescript": "^4.0.3"
65
64
  },
66
- "gitHead": "e3c3deaf80b4506bbdc397977a49faf1ad4b3663"
65
+ "gitHead": "22e8f380fd92710eb202a945b58829c91c99d0b3"
67
66
  }
@@ -25,13 +25,13 @@ export default class Akamai implements NetaceaWorker<RequestArgs, Response> {
25
25
  protected secretKey?: string;
26
26
  protected mitigationServiceUrl: string;
27
27
  protected ingestServiceUrl: string;
28
+ protected netaceaCookieName: string;
29
+ protected netaceaCaptchaCookieName: string;
28
30
  protected readonly timeout: number;
29
31
  protected readonly captchaSiteKey?: string;
30
32
  protected readonly captchaSecretKey?: string;
31
33
  protected readonly logVersion: NetaceaLogVersion;
32
34
  protected readonly encryptedCookies: string[];
33
- protected readonly netaceaCookieName: string;
34
- protected readonly netaceaCaptchaCookieName: string;
35
35
  protected ingestType: NetaceaIngestType;
36
36
  protected mitigationType: NetaceaMitigationType;
37
37
  enableMitigationProxyPass: boolean;
@@ -39,16 +39,12 @@ export default class Akamai implements NetaceaWorker<RequestArgs, Response> {
39
39
  useSecretKeyFromAkamaiVariable: boolean;
40
40
  useApiKeyFromAkamaiVariable: boolean;
41
41
  constructor(args: AkamaiConstructorArgs);
42
- /**
43
- *
44
- * @param request The request object provided by akamai
45
- * @returns An object containing the body, headers and status to be returned to client
46
- */
47
42
  requestHandler(request: EW.IngressClientRequest): Promise<void>;
48
43
  private logToDataStream;
49
44
  private populateKeys;
50
45
  private configureApiEndpoints;
51
46
  private configureIngestAndMitigationTypes;
47
+ private configureCookieNames;
52
48
  private initConfiguration;
53
49
  private handleMitResult;
54
50
  inject(request: EW.IngressClientRequest): Promise<InjectResponse>;
@@ -72,19 +68,7 @@ export default class Akamai implements NetaceaWorker<RequestArgs, Response> {
72
68
  protected verifyCaptcha(request: EW.IngressClientRequest): Promise<void>;
73
69
  protected filterCookies(response: EW.EgressClientResponse): void;
74
70
  protected removeNetaceaHeaders(response: EW.EgressClientResponse): void;
75
- /**
76
- * START -- NETACEA BASE METHODS
77
- */
78
71
  runMitigation(args: RequestArgs): Promise<NetaceaMitigationResponse<Response>>;
79
- /**
80
- * Returns the value of the cookie with the given name from a string or list of cookies.
81
- * If the cookie name is included in the encryptedCookies class property,
82
- * then the cookie value will be decrypted automatically.
83
- * The method may operate of either the HTTP Cookie or Set-Cookie headers.
84
- * @param cookieName the name of the cookie to find.
85
- * @param cookies the full list of cookies, either as a string or an array of strings.
86
- * @returns the value of the cookie, if found.
87
- */
88
72
  protected readCookie(cookieName: string, cookies: string | string[] | null | undefined): Promise<string | undefined>;
89
73
  protected callIngest(args: IngestArgs): Promise<void>;
90
74
  private makeIngestApiCall;
@@ -23,8 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- /* eslint-disable max-lines */
27
26
  const netaceaintegrationbase_1 = require("@netacea/netaceaintegrationbase");
27
+ const mitataCookie_1 = require("./mitataCookie");
28
28
  const pack = __importStar(require("../package.json"));
29
29
  const http_request_1 = require("http-request");
30
30
  const log_1 = require("log");
@@ -40,18 +40,11 @@ function configureMitataExpiry(mitigationType, expirySeconds) {
40
40
  return expirySeconds;
41
41
  }
42
42
  class Akamai {
43
- // eslint-disable-next-line complexity, max-lines-per-function
44
43
  constructor(args) {
45
- // protected readonly kinesis?: NetaceaKinesis
46
44
  this.encryptedCookies = [];
47
- // Akamai specific
48
45
  this.enableMitigationProxyPass = true;
49
46
  this.enableIngestProxyPass = true;
50
47
  const { apiKey, secretKey, timeout = 3000, mitigationServiceUrl = 'https://mitigations.netacea.net', ingestServiceUrl = 'https://ingest.netacea.net', mitigationType = netaceaintegrationbase_1.NetaceaMitigationType.INGEST, captchaSiteKey, captchaSecretKey, ingestType = netaceaintegrationbase_1.NetaceaIngestType.HTTP, kinesis, logVersion, mitataCookieExpirySeconds, netaceaCookieExpirySeconds, netaceaCookieName, netaceaCaptchaCookieName } = args;
51
- // API key and secret key are not loaded until a request comes in.
52
- // if (apiKey === null || apiKey === undefined) {
53
- // throw new Error('apiKey is a required parameter')
54
- // }
55
48
  this.apiKey = apiKey ?? '';
56
49
  this.secretKey = secretKey ?? '';
57
50
  this.mitigationServiceUrl = mitigationServiceUrl;
@@ -61,14 +54,9 @@ class Akamai {
61
54
  this.logVersion = logVersion ?? netaceaintegrationbase_1.NetaceaLogVersion.V1;
62
55
  if (this.ingestType === netaceaintegrationbase_1.NetaceaIngestType.KINESIS) {
63
56
  if (kinesis === undefined) {
64
- // eslint-disable-next-line no-console
65
57
  console.warn(`NETACEA WARN: no kinesis args provided, when ingestType is ${this.ingestType}`);
66
58
  }
67
59
  else {
68
- // this.kinesis = new NetaceaKinesis({
69
- // ...kinesis,
70
- // apiKey: this.apiKey
71
- // })
72
60
  }
73
61
  }
74
62
  if (captchaSiteKey !== undefined || captchaSecretKey !== undefined) {
@@ -87,14 +75,8 @@ class Akamai {
87
75
  this.ingestType = args.ingestType ?? DEFAULT_INGEST_TYPE;
88
76
  this.useSecretKeyFromAkamaiVariable = !Boolean(args.secretKey);
89
77
  this.useApiKeyFromAkamaiVariable = !Boolean(args.apiKey);
90
- // Warm up expensive code during init phase
91
- (0, netaceaintegrationbase_1.checkMitataCookie)(netaceaintegrationbase_1.warmupCookie.cookie, netaceaintegrationbase_1.warmupCookie.clientIP, netaceaintegrationbase_1.warmupCookie.secretKey);
92
- }
93
- /**
94
- *
95
- * @param request The request object provided by akamai
96
- * @returns An object containing the body, headers and status to be returned to client
97
- */
78
+ (0, mitataCookie_1.checkMitataCookie)(netaceaintegrationbase_1.warmupCookie.cookie, netaceaintegrationbase_1.warmupCookie.clientIP, netaceaintegrationbase_1.warmupCookie.secretKey);
79
+ }
98
80
  async requestHandler(request) {
99
81
  this.initConfiguration(request);
100
82
  if (this.isUrlCaptchaPost(request.path, request.method)) {
@@ -106,18 +88,16 @@ class Akamai {
106
88
  await this.logToDataStream(request);
107
89
  }
108
90
  async logToDataStream(request) {
109
- // Set a variable to enrich data ingested by DataStreamV2
110
91
  try {
111
92
  const protoMitata = this.getProtoMitataFromRequestVar(request);
112
93
  const cookieHeader = this.getHeaderValueOrDefault(request, 'cookie');
113
- const mitataCookie = await this.readCookie('_mitata', cookieHeader);
94
+ const mitataCookie = await this.readCookie(this.netaceaCookieName, cookieHeader);
114
95
  const cookieInfo = (0, netaceaintegrationbase_1.matchMitataCookie)(mitataCookie);
115
96
  const userId = protoMitata?.userId ?? cookieInfo?.userId ?? '';
116
97
  const match = protoMitata?.match ?? cookieInfo?.match ?? 0;
117
98
  const mitigate = protoMitata?.mitigate ?? cookieInfo?.mitigate ?? 0;
118
99
  const captcha = protoMitata?.captcha ?? cookieInfo?.captcha ?? 0;
119
100
  const { sessionStatus } = this.findBestMitigation(match, mitigate, captcha, this.isUrlCaptchaPost(request.url, request.method));
120
- // Note: there is a 128 bytes limit so we should keep this value short.
121
101
  const dataStreamLogValue = [
122
102
  userId,
123
103
  sessionStatus,
@@ -126,7 +106,6 @@ class Akamai {
126
106
  request.setVariable('PMUSER_NETACEA_DS2_CUSTOM_FIELD', dataStreamLogValue);
127
107
  }
128
108
  catch (e) {
129
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
130
109
  this.logError(`Error setting PMUSER_NETACEA_DS2_CUSTOM_FIELD ${e}`);
131
110
  }
132
111
  }
@@ -159,10 +138,17 @@ class Akamai {
159
138
  this.mitataCookieExpirySeconds = configureMitataExpiry(this.mitigationType, undefined);
160
139
  }
161
140
  }
141
+ configureCookieNames(request) {
142
+ const fetchedCookieName = request.getVariable('PMUSER_NETACEA_COOKIE_NAME');
143
+ const fetchedCaptchaCookieName = request.getVariable('PMUSER_NETACEA_CAPT_COOKIE_NAME');
144
+ this.netaceaCookieName = fetchedCookieName ?? this.netaceaCookieName;
145
+ this.netaceaCaptchaCookieName = fetchedCaptchaCookieName ?? this.netaceaCaptchaCookieName;
146
+ }
162
147
  initConfiguration(request) {
163
148
  this.populateKeys(request);
164
149
  this.configureApiEndpoints(request);
165
150
  this.configureIngestAndMitigationTypes(request);
151
+ this.configureCookieNames(request);
166
152
  }
167
153
  async handleMitResult(request) {
168
154
  const mitResult = await this.runMitigation(request);
@@ -178,7 +164,6 @@ class Akamai {
178
164
  request.setVariable(protoMitataVariableName, protoMitataJson);
179
165
  }
180
166
  const body = mitResult.response?.body ?? '';
181
- // respondWith needs to be the last thing called by the worker as it will end the request.
182
167
  request.respondWith(status, headers, body);
183
168
  }
184
169
  else {
@@ -207,11 +192,10 @@ class Akamai {
207
192
  body = result;
208
193
  status = 403;
209
194
  if (result.mitigation === 'captcha') {
210
- responseHeaders['content-type'] = 'text/html; charset=UTF-8'; // We return captcha html
195
+ responseHeaders['content-type'] = 'text/html; charset=UTF-8';
211
196
  body = result.body;
212
197
  }
213
198
  else {
214
- // Blocked
215
199
  body = 'Forbidden';
216
200
  }
217
201
  }
@@ -227,16 +211,15 @@ class Akamai {
227
211
  setCookie: result.setCookie
228
212
  };
229
213
  }
230
- // eslint-disable-next-line
231
214
  async ingest(request, response) {
232
215
  const setCookie = response.getHeader('set-cookie') ?? [];
233
216
  const cookieString = setCookie.length !== 0
234
217
  ? setCookie?.join('; ')
235
218
  : this.getHeaderValueOrDefault(request, 'cookie');
236
- let mitata = await this.readCookie('_mitata', cookieString) ?? '';
219
+ let mitata = await this.readCookie(this.netaceaCookieName, cookieString) ?? '';
237
220
  if (mitata === undefined || mitata === '') {
238
221
  const cookieString = this.getHeaderValueOrDefault(request, 'cookie');
239
- mitata = await this.readCookie('_mitata', cookieString) ?? '';
222
+ mitata = await this.readCookie(this.netaceaCookieName, cookieString) ?? '';
240
223
  }
241
224
  const { match, mitigate, captcha } = (0, netaceaintegrationbase_1.matchMitataCookie)(mitata) ?? {
242
225
  match: 0,
@@ -262,7 +245,6 @@ class Akamai {
262
245
  });
263
246
  }
264
247
  catch (e) {
265
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
266
248
  this.logError(`Error in callIngest(): ${e}`);
267
249
  }
268
250
  }
@@ -272,9 +254,6 @@ class Akamai {
272
254
  }
273
255
  }
274
256
  async makeRequest({ host, method, path, headers, body }) {
275
- // "ProxyPass" may be used to allow Mitigation and/or Ingest endpoints
276
- // to be configured in the same Akamai Property as the edge worker.
277
- // We pass a X-Netacea-ProxyPass header to describe the destination origin.
278
257
  const isMitigationsProxyPassRequest = (this.enableMitigationProxyPass &&
279
258
  host.includes('mitigations'));
280
259
  const isIngestProxyPassRequest = (this.enableIngestProxyPass &&
@@ -294,11 +273,9 @@ class Akamai {
294
273
  url = path;
295
274
  }
296
275
  else {
297
- // guard against 404 when host ends with /
298
276
  if (host.endsWith('/')) {
299
277
  host = host.slice(0, -1);
300
278
  }
301
- // path is assumed to always start with /
302
279
  url = host + path;
303
280
  }
304
281
  const response = await (0, http_request_1.httpRequest)(url, {
@@ -317,7 +294,7 @@ class Akamai {
317
294
  const responseHeadersEntries = Object.entries(response.getHeaders());
318
295
  const responseHeaders = {};
319
296
  for (const [key, value] of responseHeadersEntries) {
320
- responseHeaders[key] = value[0]; // For some reason akamai header values are string[]
297
+ responseHeaders[key] = value[0];
321
298
  }
322
299
  return responseHeaders;
323
300
  }
@@ -326,7 +303,6 @@ class Akamai {
326
303
  }
327
304
  getProtoMitataFromRequestVar(request) {
328
305
  const protoMitataString = request.getVariable(protoMitataVariableName);
329
- // variable may be an empty string when unset
330
306
  if (protoMitataString === undefined || protoMitataString === '') {
331
307
  return undefined;
332
308
  }
@@ -364,7 +340,7 @@ class Akamai {
364
340
  ? this.buildProtoMitataFromNetaceaHeaders(request, response)
365
341
  : this.getProtoMitataFromRequestVar(request);
366
342
  if (protoMitata !== undefined) {
367
- const cookie = this.createAkamaiMitata(protoMitata.clientIP, protoMitata.userId, protoMitata.match, protoMitata.mitigate, protoMitata.captcha, protoMitata.mitataMaxAge);
343
+ const cookie = await this.createAkamaiMitata(protoMitata.clientIP, protoMitata.userId, protoMitata.match, protoMitata.mitigate, protoMitata.captcha, protoMitata.mitataMaxAge);
368
344
  const responseCookies = response.getHeader('set-cookie') ?? [];
369
345
  response.setHeader('set-cookie', [
370
346
  ...responseCookies.filter(c => !c.startsWith('_proto-mitata=')),
@@ -379,7 +355,6 @@ class Akamai {
379
355
  async addHeadersToRequest(mitResult, request) {
380
356
  let injectHeaders = {};
381
357
  if (mitResult?.setCookie !== undefined) {
382
- // Avoid using set-cookie header. All mitigation data should be passed by proto-mitata
383
358
  const protoMitata = await this.readCookie('_proto-mitata', mitResult.setCookie);
384
359
  if (protoMitata !== undefined) {
385
360
  request.setVariable(protoMitataVariableName, protoMitata);
@@ -399,7 +374,6 @@ class Akamai {
399
374
  }
400
375
  getHeaderValueOrDefault(readable, key, defaultVal = '') {
401
376
  const header = (readable.getHeader(key)?.[0] ?? '').trim();
402
- // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
403
377
  return header || defaultVal;
404
378
  }
405
379
  getIP(request) {
@@ -407,8 +381,8 @@ class Akamai {
407
381
  }
408
382
  async getMitigationResponse(request) {
409
383
  const cookies = this.getHeaderValueOrDefault(request, 'cookie');
410
- const mitataCookie = await this.readCookie('_mitata', cookies) ?? '';
411
- const mitataCaptcha = await this.readCookie('_mitatacaptcha', cookies);
384
+ const mitataCookie = await this.readCookie(this.netaceaCookieName, cookies) ?? '';
385
+ const mitataCaptcha = await this.readCookie(this.netaceaCaptchaCookieName, cookies);
412
386
  const clientIp = this.getIP(request);
413
387
  const userAgent = this.getHeaderValueOrDefault(request, 'user-agent');
414
388
  return await this.processMitigateRequest({
@@ -422,11 +396,9 @@ class Akamai {
422
396
  });
423
397
  }
424
398
  async getMitHeaders(request, mitSvcResponse) {
425
- // Is there an existing mitata cookie?
426
399
  const cookieString = this.getHeaderValueOrDefault(request, 'cookie');
427
- const mitataString = await this.readCookie('_mitata', cookieString) ?? '';
400
+ const mitataString = await this.readCookie(this.netaceaCookieName, cookieString) ?? '';
428
401
  const mitata = (0, netaceaintegrationbase_1.matchMitataCookie)(mitataString);
429
- // Or are we setting a new mitata cookie (not yet hashed, so will be a _protoMitata)
430
402
  const protoMitata = this.getProtoMitataFromRequestVar(request);
431
403
  const { match, mitigate, captcha, userId } = protoMitata ?? mitata ?? {
432
404
  match: 0,
@@ -442,8 +414,7 @@ class Akamai {
442
414
  'X-Netacea-Integration-Version': pack.version
443
415
  };
444
416
  }
445
- createAkamaiMitata(clientIP, userId, match, mitigate, captcha, maxAge = 86400, expiry = undefined) {
446
- // serve, fail, cookiefail
417
+ async createAkamaiMitata(clientIP, userId, match, mitigate, captcha, maxAge = 86400, expiry = undefined) {
447
418
  const isCaptchaServe = [1, 3, 5].includes(captcha);
448
419
  const expiryDelta = isCaptchaServe ? -this.mitataCookieExpirySeconds : this.mitataCookieExpirySeconds;
449
420
  const mitataExpiry = expiry ?? Math.floor(Date.now() / 1000) + expiryDelta;
@@ -451,17 +422,16 @@ class Akamai {
451
422
  throw new Error('Cannot build cookie without secret key.');
452
423
  }
453
424
  const mitataCode = [match, mitigate, captcha].join('');
454
- const mitataValue = (0, netaceaintegrationbase_1.createMitataCookie)(clientIP, userId, mitataExpiry, this.secretKey, mitataCode);
455
- return this.buildAkamaiCookieFromValues('_mitata', mitataValue, maxAge, '/');
425
+ const mitataValue = await (0, mitataCookie_1.createMitataCookie)(clientIP, userId, mitataExpiry, this.secretKey, mitataCode);
426
+ return this.buildAkamaiCookieFromValues(this.netaceaCookieName, mitataValue, maxAge, '/');
456
427
  }
457
428
  buildAkamaiCookieFromValues(cookieName, value, maxAge, path = '/') {
458
429
  return `${cookieName}=${value}; Max-Age=${maxAge}; Path=${path}`;
459
430
  }
460
- // Override createMitata so we can handle the expensive hash in onClientResponse
461
431
  async createMitata(clientIP, userId, match, mitigate, captcha, maxAge = 86400, expiry = undefined) {
462
432
  const AkamaiCookieObj = {
463
433
  clientIP,
464
- userId: userId ?? (0, netaceaintegrationbase_1.generateId)(),
434
+ userId: userId ?? (0, mitataCookie_1.generateId)(),
465
435
  match,
466
436
  mitigate,
467
437
  captcha,
@@ -474,9 +444,9 @@ class Akamai {
474
444
  request.setHeader('x-netacea-api-key', this.apiKey);
475
445
  request.setHeader('x-netacea-client-ip', IP);
476
446
  const cookies = this.getHeaderValueOrDefault(request, 'cookie');
477
- const mitataCookie = await this.readCookie('_mitata', cookies) ?? '';
447
+ const mitataCookie = await this.readCookie(this.netaceaCookieName, cookies) ?? '';
478
448
  let userId = '';
479
- const cookieInfo = (0, netaceaintegrationbase_1.checkMitataCookie)(mitataCookie, IP, this.secretKey ?? '');
449
+ const cookieInfo = await (0, mitataCookie_1.checkMitataCookie)(mitataCookie, IP, this.secretKey ?? '');
480
450
  if (cookieInfo.isPrimaryHashValid) {
481
451
  userId = cookieInfo.mitata?.userId ?? '';
482
452
  }
@@ -485,7 +455,7 @@ class Akamai {
485
455
  }
486
456
  filterCookies(response) {
487
457
  const resCookies = response.getHeader('set-cookie');
488
- const mitataCaptchaCookie = resCookies?.filter(cookie => cookie.startsWith('_mitatacaptcha'));
458
+ const mitataCaptchaCookie = resCookies?.filter(cookie => cookie.startsWith('_mitatacaptcha=')).map(cookie => cookie.replace('_mitatacaptcha=', `${this.netaceaCaptchaCookieName}=`));
489
459
  if (mitataCaptchaCookie !== undefined) {
490
460
  response.setHeader('set-cookie', mitataCaptchaCookie);
491
461
  }
@@ -499,9 +469,6 @@ class Akamai {
499
469
  response.removeHeader('x-netacea-mitatacaptcha-expiry');
500
470
  response.removeHeader('x-netacea-mitatacaptcha-value');
501
471
  }
502
- /**
503
- * START -- NETACEA BASE METHODS
504
- */
505
472
  async runMitigation(args) {
506
473
  try {
507
474
  switch (this.mitigationType) {
@@ -512,12 +479,10 @@ class Akamai {
512
479
  case netaceaintegrationbase_1.NetaceaMitigationType.INGEST:
513
480
  return await this.processIngest(args);
514
481
  default:
515
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
516
482
  throw new Error(`Netacea Error: Mitigation type ${this.mitigationType} not recognised`);
517
483
  }
518
484
  }
519
485
  catch (e) {
520
- // eslint-disable-next-line no-console
521
486
  console.error('Netacea FAILOPEN Error:', e);
522
487
  return {
523
488
  injectHeaders: {
@@ -529,15 +494,6 @@ class Akamai {
529
494
  };
530
495
  }
531
496
  }
532
- /**
533
- * Returns the value of the cookie with the given name from a string or list of cookies.
534
- * If the cookie name is included in the encryptedCookies class property,
535
- * then the cookie value will be decrypted automatically.
536
- * The method may operate of either the HTTP Cookie or Set-Cookie headers.
537
- * @param cookieName the name of the cookie to find.
538
- * @param cookies the full list of cookies, either as a string or an array of strings.
539
- * @returns the value of the cookie, if found.
540
- */
541
497
  async readCookie(cookieName, cookies) {
542
498
  if (cookies === null || cookies === undefined) {
543
499
  return undefined;
@@ -547,7 +503,6 @@ class Akamai {
547
503
  }
548
504
  const valuePrefix = `${cookieName}=`;
549
505
  for (const cookie of cookies) {
550
- // split again on ; to handle Set-Cookie header format.
551
506
  const trimmedCookie = cookie.split(';')[0].trimStart();
552
507
  if (trimmedCookie.startsWith(valuePrefix)) {
553
508
  const cookieValue = trimmedCookie.slice(valuePrefix.length);
@@ -567,20 +522,6 @@ class Akamai {
567
522
  async callIngest(args) {
568
523
  const body = this.constructWebLog(args);
569
524
  if (this.ingestType === netaceaintegrationbase_1.NetaceaIngestType.KINESIS) {
570
- // if (this.kinesis === undefined) {
571
- // // eslint-disable-next-line no-console
572
- // console.error('Netacea Error: Unable to log as Kinesis has not been defined.')
573
- // return
574
- // }
575
- // try {
576
- // await this.kinesis.ingest({
577
- // ...body,
578
- // apiKey: this.apiKey
579
- // }, this.makeRequest)
580
- // } catch (e) {
581
- // // eslint-disable-next-line no-console
582
- // console.error('NETACEA Error: ', (e as Error).message)
583
- // }
584
525
  }
585
526
  else {
586
527
  const headers = {
@@ -605,7 +546,6 @@ class Akamai {
605
546
  }
606
547
  constructV2WebLog({ ip, userAgent, status, method, path, protocol, referer, bytesSent, requestTime, mitataCookie, sessionStatus, integrationType, integrationVersion }) {
607
548
  const now = new Date();
608
- // Paths must be prefixed with '/'
609
549
  if (path[0] !== '/') {
610
550
  path = `/${path}`;
611
551
  }
@@ -630,7 +570,6 @@ class Akamai {
630
570
  'bc_type': sessionStatus === '' ? undefined : sessionStatus,
631
571
  'hour': now.getUTCHours(),
632
572
  'minute': now.getUTCMinutes(),
633
- // '2021-08-04T14:22:41.155Z' = toISOString()
634
573
  '@timestamp': now.toISOString().replace('Z', '+00:00'),
635
574
  'path': actualPath,
636
575
  protocol,
@@ -668,9 +607,8 @@ class Akamai {
668
607
  if (this.secretKey === undefined) {
669
608
  throw new Error('Secret key is required to mitigate');
670
609
  }
671
- const cookieInfo = (0, netaceaintegrationbase_1.checkMitataCookie)(netaceaCookie, clientIP, this.secretKey);
610
+ const cookieInfo = await (0, mitataCookie_1.checkMitataCookie)(netaceaCookie, clientIP, this.secretKey);
672
611
  if (!cookieInfo.isPrimaryHashValid || cookieInfo.requiresReissue) {
673
- // Get latest mitigation information
674
612
  const result = await this.makeMitigateAPICall(cookieInfo.mitata?.userId, clientIP, userAgent, captchaCookie);
675
613
  status = result.status;
676
614
  match = result.match;
@@ -908,7 +846,7 @@ class Akamai {
908
846
  }
909
847
  const cookies = this.getCookieHeader(args);
910
848
  const netaceaCookie = await this.readCookie(this.netaceaCookieName, cookies);
911
- const cookieInfo = (0, netaceaintegrationbase_1.checkMitataCookie)(netaceaCookie, netaceaintegrationbase_1.ingestIgnoredIpValue, this.secretKey);
849
+ const cookieInfo = await (0, mitataCookie_1.checkMitataCookie)(netaceaCookie, netaceaintegrationbase_1.ingestIgnoredIpValue, this.secretKey);
912
850
  if (!cookieInfo.isPrimaryHashValid) {
913
851
  return await this.setIngestOnlyMitataCookie(undefined);
914
852
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Akamai.js","sourceRoot":"","sources":["../../src/Akamai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Akamai.js","sourceRoot":"","sources":["../../src/Akamai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: Crypto;
2
+ export default _default;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const cryptoModule = __importStar(require("crypto"));
27
+ exports.default = (cryptoModule.crypto ?? cryptoModule);
28
+ //# sourceMappingURL=akamaiCrypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"akamaiCrypto.js","sourceRoot":"","sources":["../../src/akamaiCrypto.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsC;AAItC,kBAAe,CAAC,YAAY,CAAC,MAAM,IAAI,YAAY,CAAW,CAAA"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="@types/akamai-edgeworkers" />
2
+ import * as encodingModule from 'encoding';
3
+ export declare const TextEncoder: typeof encodingModule.TextEncoder;
4
+ export declare const TextDecoder: typeof encodingModule.TextDecoder;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.TextDecoder = exports.TextEncoder = void 0;
27
+ const encodingModule = __importStar(require("encoding"));
28
+ exports.TextEncoder = encodingModule.TextEncoder ?? global.TextEncoder;
29
+ exports.TextDecoder = encodingModule.TextDecoder ?? global.TextDecoder;
30
+ //# sourceMappingURL=akamaiEncoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"akamaiEncoding.js","sourceRoot":"","sources":["../../src/akamaiEncoding.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA0C;AAG7B,QAAA,WAAW,GAAG,cAAc,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAA;AAC9D,QAAA,WAAW,GAAG,cAAc,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function sha256Hmac(value: Uint8Array, saltKey: string): Promise<Uint8Array>;
2
+ export declare function isValidSha256Hmac(signature: Uint8Array, data: Uint8Array, secret: string): Promise<boolean>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isValidSha256Hmac = exports.sha256Hmac = void 0;
7
+ const akamaiEncoding_1 = require("./akamaiEncoding");
8
+ const akamaiCrypto_1 = __importDefault(require("./akamaiCrypto"));
9
+ const jssha_1 = __importDefault(require("jssha"));
10
+ async function sha256Hmac(value, saltKey) {
11
+ const shaObj = new jssha_1.default('SHA-256', 'UINT8ARRAY', {
12
+ hmacKey: {
13
+ value: saltKey,
14
+ format: 'TEXT'
15
+ }
16
+ });
17
+ shaObj.update(value);
18
+ return shaObj.getHash('UINT8ARRAY');
19
+ }
20
+ exports.sha256Hmac = sha256Hmac;
21
+ async function getSubtleCryptoHmacKey(secret) {
22
+ return await akamaiCrypto_1.default.subtle.importKey('raw', new akamaiEncoding_1.TextEncoder().encode(secret), {
23
+ name: 'HMAC',
24
+ hash: 'SHA-256'
25
+ }, false, ['sign', 'verify']);
26
+ }
27
+ async function isValidSha256Hmac(signature, data, secret) {
28
+ const key = await getSubtleCryptoHmacKey(secret);
29
+ return await akamaiCrypto_1.default.subtle.verify('HMAC', key, signature, data);
30
+ }
31
+ exports.isValidSha256Hmac = isValidSha256Hmac;
32
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/hash.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA8C;AAC9C,kEAAmC;AACnC,kDAAyB;AAGlB,KAAK,UAAU,UAAU,CAAE,KAAiB,EAAE,OAAe;IAClE,MAAM,MAAM,GAAG,IAAI,eAAK,CAAC,SAAS,EAAE,YAAY,EAAE;QAChD,OAAO,EAAE;YACP,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,MAAM;SACf;KACF,CAAC,CAAA;IACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AACrC,CAAC;AATD,gCASC;AAED,KAAK,UAAU,sBAAsB,CAAE,MAAc;IACnD,OAAO,MAAM,sBAAM,CAAC,MAAM,CAAC,SAAS,CAClC,KAAK,EACL,IAAI,4BAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAChC;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;KAChB,EACD,KAAK,EACL,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnB,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,SAAqB,EACrB,IAAgB,EAChB,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO,MAAM,sBAAM,CAAC,MAAM,CAAC,MAAM,CAC/B,MAAM,EACN,GAAG,EACH,SAAS,EACT,IAAI,CACL,CAAA;AACH,CAAC;AAbD,8CAaC"}
@@ -1,5 +1,4 @@
1
1
  import Akamai from './Akamai';
2
2
  export { AkamaiConstructorArgs, AkamaiMitigateResponse } from './Akamai';
3
3
  export { NetaceaMitigationType, InjectResponse } from '@netacea/netaceaintegrationbase';
4
- export { createHmac, randomBytes } from './crypto_polyfill';
5
4
  export default Akamai;
package/dist/src/index.js CHANGED
@@ -3,12 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.randomBytes = exports.createHmac = exports.NetaceaMitigationType = void 0;
6
+ exports.NetaceaMitigationType = void 0;
7
7
  const Akamai_1 = __importDefault(require("./Akamai"));
8
8
  var netaceaintegrationbase_1 = require("@netacea/netaceaintegrationbase");
9
9
  Object.defineProperty(exports, "NetaceaMitigationType", { enumerable: true, get: function () { return netaceaintegrationbase_1.NetaceaMitigationType; } });
10
- var crypto_polyfill_1 = require("./crypto_polyfill");
11
- Object.defineProperty(exports, "createHmac", { enumerable: true, get: function () { return crypto_polyfill_1.createHmac; } });
12
- Object.defineProperty(exports, "randomBytes", { enumerable: true, get: function () { return crypto_polyfill_1.randomBytes; } });
13
10
  exports.default = Akamai_1.default;
14
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA6B;AAE7B,0EAAuF;AAA9E,+HAAA,qBAAqB,OAAA;AAC9B,qDAA2D;AAAlD,6GAAA,UAAU,OAAA;AAAE,8GAAA,WAAW,OAAA;AAChC,kBAAe,gBAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA6B;AAE7B,0EAAuF;AAA9E,+HAAA,qBAAqB,OAAA;AAC9B,kBAAe,gBAAM,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { CheckCookieResponse } from '@netacea/netaceaintegrationbase';
2
+ export declare const ingestIgnoredIpValue = "ignored";
3
+ export declare const COOKIEDELIMITER: string;
4
+ export declare function createMitataCookie(clientIP: string, userId: string | undefined, expiryTime: number, saltKey: string, mitCode?: string): Promise<string>;
5
+ export declare function generateId(length?: number, charset?: string[]): string;
6
+ export declare function checkMitataCookie(netaceaCookie: string | undefined, clientIP: string, secretKey: string): Promise<CheckCookieResponse>;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.checkMitataCookie = exports.generateId = exports.createMitataCookie = exports.COOKIEDELIMITER = exports.ingestIgnoredIpValue = void 0;
7
+ const netaceaintegrationbase_1 = require("@netacea/netaceaintegrationbase");
8
+ const hash_1 = require("./hash");
9
+ const akamaiCrypto_1 = __importDefault(require("./akamaiCrypto"));
10
+ const buffer_1 = require("buffer/");
11
+ exports.ingestIgnoredIpValue = 'ignored';
12
+ exports.COOKIEDELIMITER = '_/@#/';
13
+ const BASE_62_CHARSET = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
14
+ async function createMitataCookie(clientIP, userId, expiryTime, saltKey, mitCode = '000') {
15
+ if (userId === undefined) {
16
+ userId = generateId();
17
+ }
18
+ const ipHash = await createMitataHash(clientIP + '|' + String(expiryTime), saltKey);
19
+ const originCookieValue = [
20
+ expiryTime,
21
+ userId,
22
+ ipHash,
23
+ mitCode
24
+ ].join(exports.COOKIEDELIMITER);
25
+ const value = await createMitataHash(originCookieValue, saltKey);
26
+ const cookieValue = `${value}${exports.COOKIEDELIMITER}${originCookieValue}`;
27
+ return cookieValue;
28
+ }
29
+ exports.createMitataCookie = createMitataCookie;
30
+ function generateId(length = 16, charset = BASE_62_CHARSET) {
31
+ const randomBytesBuffer = new Uint16Array(length - 1);
32
+ akamaiCrypto_1.default.getRandomValues(randomBytesBuffer);
33
+ const randomString = Array.from(randomBytesBuffer)
34
+ .map(byte => charset[byte % charset.length])
35
+ .join('');
36
+ return `c${randomString}`;
37
+ }
38
+ exports.generateId = generateId;
39
+ function defaultInvalidResponse() {
40
+ return {
41
+ mitata: undefined,
42
+ requiresReissue: false,
43
+ isExpired: false,
44
+ shouldExpire: false,
45
+ isSameIP: false,
46
+ isPrimaryHashValid: false,
47
+ captcha: 0,
48
+ match: 0,
49
+ mitigate: 0
50
+ };
51
+ }
52
+ async function checkMitataCookie(netaceaCookie, clientIP, secretKey) {
53
+ if (typeof netaceaCookie !== 'string' || netaceaCookie === '') {
54
+ return defaultInvalidResponse();
55
+ }
56
+ const mitata = (0, netaceaintegrationbase_1.matchMitataCookie)(netaceaCookie);
57
+ if (mitata !== undefined) {
58
+ const currentUnixTime = Math.floor(Date.now() / 1000);
59
+ const isExpired = parseInt(mitata.expiry) < currentUnixTime;
60
+ const shouldExpire = [1, 3, 5].includes(mitata.captcha);
61
+ const ipHashData = clientIP + '|' + mitata.expiry;
62
+ const isSameIP = await isValidMitataHash(mitata.ipHash, ipHashData, secretKey);
63
+ const cookieHashData = [
64
+ mitata.expiry,
65
+ mitata.userId,
66
+ mitata.ipHash,
67
+ mitata.mitigationType
68
+ ].join(exports.COOKIEDELIMITER);
69
+ const valid = await isValidMitataHash(mitata.signature, cookieHashData, secretKey);
70
+ return {
71
+ mitata,
72
+ requiresReissue: isExpired || !isSameIP,
73
+ isExpired,
74
+ shouldExpire,
75
+ isSameIP,
76
+ isPrimaryHashValid: valid,
77
+ match: mitata.match,
78
+ mitigate: mitata.mitigate,
79
+ captcha: mitata.captcha
80
+ };
81
+ }
82
+ return defaultInvalidResponse();
83
+ }
84
+ exports.checkMitataCookie = checkMitataCookie;
85
+ async function createMitataHash(data, secret) {
86
+ const hash = await (0, hash_1.sha256Hmac)(buffer_1.Buffer.from(data), secret);
87
+ const hexHash = buffer_1.Buffer.from(hash).toString('hex');
88
+ return buffer_1.Buffer.from(hexHash).toString('base64');
89
+ }
90
+ async function isValidMitataHash(signature, data, secret) {
91
+ const b64Bytes = buffer_1.Buffer.from(signature, 'base64');
92
+ const utf8String = b64Bytes.toString('utf-8');
93
+ const hexBytes = buffer_1.Buffer.from(utf8String, 'hex');
94
+ return await (0, hash_1.isValidSha256Hmac)(hexBytes, buffer_1.Buffer.from(data), secret);
95
+ }
96
+ //# sourceMappingURL=mitataCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mitataCookie.js","sourceRoot":"","sources":["../../src/mitataCookie.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@netacea/akamai",
3
- "version": "4.5.3",
3
+ "version": "4.5.5",
4
4
  "description": "Netacea Akamai CDN Integration",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "npm run test:unit && npm run test:integration",
9
- "test:integration": "npx nyc -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './tests/*.test.ts'",
10
- "test:unit": "npx nyc -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './unit_tests/*.test.ts'",
11
- "test:regression": "npx nyc -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './regression_tests/*.test.ts'",
9
+ "test:integration": "npx nyc -r=lcov -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './tests/*.test.ts'",
10
+ "test:unit": "npx nyc -r=lcov -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './unit_tests/*.test.ts'",
11
+ "test:regression": "npx nyc -r=lcov -r=html -r=text tape -r ts-node/register -r tsconfig-paths/register './regression_tests/*.test.ts'",
12
12
  "lint": "npx eslint . --ext ts",
13
13
  "lint:fix": "npx eslint . --ext ts --fix",
14
14
  "prepublishOnly": "npx tsc --project tsconfig.build.json"
@@ -19,20 +19,19 @@
19
19
  },
20
20
  "license": "ISC",
21
21
  "dependencies": {
22
- "@netacea/netaceaintegrationbase": "^1.16.3",
23
- "@netacea/netaceaintegrationtestrunner": "^1.7.3",
22
+ "@netacea/netaceaintegrationbase": "^1.16.5",
23
+ "@netacea/netaceaintegrationtestrunner": "^1.7.5",
24
24
  "buffer": "^6.0.3",
25
- "crypto-js": "^4.1.1",
26
- "http-request": "^0.7.0"
25
+ "jssha": "^3.3.0"
27
26
  },
28
27
  "devDependencies": {
29
28
  "@rollup/plugin-commonjs": "^21.0.0",
30
29
  "@rollup/plugin-node-resolve": "^13.0.5",
31
30
  "@rollup/plugin-typescript": "^8.2.5",
32
- "@types/akamai-edgeworkers": "^1.0.3",
31
+ "@types/akamai-edgeworkers": "^1.1.6",
33
32
  "@types/aws4": "^1.11.0",
34
33
  "@types/crypto-js": "^4.0.2",
35
- "@types/node": "^14.17.29",
34
+ "@types/node": "^18.15.3",
36
35
  "@types/node-fetch": "^2.5.7",
37
36
  "@types/proxyquire": "^1.3.28",
38
37
  "@types/sinon": "^9.0.8",
@@ -63,5 +62,5 @@
63
62
  "tslib": "^2.0.3",
64
63
  "typescript": "^4.0.3"
65
64
  },
66
- "gitHead": "e3c3deaf80b4506bbdc397977a49faf1ad4b3663"
65
+ "gitHead": "22e8f380fd92710eb202a945b58829c91c99d0b3"
67
66
  }
@@ -1,5 +0,0 @@
1
- export default class Base64 {
2
- private readonly _keyStr;
3
- encode(input: string): string;
4
- private utf8Encode;
5
- }
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Base64 {
4
- constructor() {
5
- this._keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
6
- }
7
- encode(input) {
8
- let output = '';
9
- let chr1, chr2, chr3, enc1, enc2, enc3, enc4;
10
- let i = 0;
11
- input = this.utf8Encode(input);
12
- while (i < input.length) {
13
- chr1 = input.charCodeAt(i++);
14
- chr2 = input.charCodeAt(i++);
15
- chr3 = input.charCodeAt(i++);
16
- enc1 = chr1 >> 2;
17
- enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
18
- enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
19
- enc4 = chr3 & 63;
20
- if (isNaN(chr2)) {
21
- enc3 = enc4 = 64;
22
- }
23
- else if (isNaN(chr3)) {
24
- enc4 = 64;
25
- }
26
- output = output +
27
- this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
28
- this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
29
- }
30
- return output;
31
- }
32
- utf8Encode(input) {
33
- input = input.replace(/\r\n/g, '\n');
34
- let utftext = '';
35
- for (let n = 0; n < input.length; n++) {
36
- const c = input.charCodeAt(n);
37
- if (c < 128) {
38
- utftext += String.fromCharCode(c);
39
- }
40
- else if ((c > 127) && (c < 2048)) {
41
- utftext += String.fromCharCode((c >> 6) | 192);
42
- utftext += String.fromCharCode((c & 63) | 128);
43
- }
44
- else {
45
- utftext += String.fromCharCode((c >> 12) | 224);
46
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
47
- utftext += String.fromCharCode((c & 63) | 128);
48
- }
49
- }
50
- return utftext;
51
- }
52
- }
53
- exports.default = Base64;
54
- //# sourceMappingURL=Base64.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Base64.js","sourceRoot":"","sources":["../../src/Base64.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { Buffer } from 'buffer';
2
- declare type Algorithm = 'sha256';
3
- export declare const createHmac: (algorithm: Algorithm, key: any, options?: any) => any;
4
- export declare const randomBytes: (size: number) => Buffer;
5
- declare const _default: {
6
- createHmac: (algorithm: "sha256", key: any, options?: any) => any;
7
- randomBytes: (size: number) => Buffer;
8
- };
9
- export default _default;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.randomBytes = exports.createHmac = void 0;
7
- const hmac_sha256_1 = __importDefault(require("crypto-js/hmac-sha256"));
8
- const enc_hex_1 = __importDefault(require("crypto-js/enc-hex"));
9
- const buffer_1 = require("buffer");
10
- class HMac {
11
- constructor(algorithm, key = '') {
12
- this.plainText = '';
13
- this.algorithm = algorithm;
14
- this.key = key;
15
- }
16
- update(plainText, encoding) {
17
- this.plainText = plainText;
18
- return this;
19
- }
20
- digest(encoding) {
21
- if (this.algorithm === 'sha256' || encoding !== 'hex') {
22
- const { message, key } = { message: this.plainText, key: this.key };
23
- return (0, hmac_sha256_1.default)(message, key).toString(enc_hex_1.default);
24
- }
25
- throw new Error(`algorithm and encoding pair not supported ${String(this.algorithm)} ${String(encoding)}`);
26
- }
27
- }
28
- const createHmac = (algorithm, key, options) => {
29
- return new HMac(algorithm, key);
30
- };
31
- exports.createHmac = createHmac;
32
- const randomBytes = (size) => {
33
- let randomBytes = new Uint8Array(size).fill(255);
34
- randomBytes = randomBytes.map(val => val * Math.random());
35
- return buffer_1.Buffer.from(randomBytes);
36
- };
37
- exports.randomBytes = randomBytes;
38
- exports.default = {
39
- createHmac: exports.createHmac,
40
- randomBytes: exports.randomBytes
41
- };
42
- //# sourceMappingURL=crypto_polyfill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto_polyfill.js","sourceRoot":"","sources":["../../src/crypto_polyfill.ts"],"names":[],"mappings":";;;;;;AAAA,wEAA8C;AAC9C,gEAAmC;AACnC,mCAA+B;AAK/B,MAAM,IAAI;IAIR,YAAa,SAAoB,EAAE,MAAW,EAAE;QADhD,cAAS,GAAG,EAAE,CAAA;QAEZ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,MAAM,CAAE,SAAiB,EAAE,QAAiB;QAC1C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAE,QAAkB;QACxB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK,EAAE;YACrD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAA;YACnE,OAAO,IAAA,qBAAU,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,iBAAG,CAAC,CAAA;SAC9C;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC5G,CAAC;CACF;AAEM,MAAM,UAAU,GAAG,CAAC,SAAoB,EAAE,GAAQ,EAAE,OAAa,EAAO,EAAE;IAC/E,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB;AACM,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;IAClD,IAAI,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChD,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACzD,OAAO,eAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACjC,CAAC,CAAA;AAJY,QAAA,WAAW,eAIvB;AAED,kBAAe;IACb,UAAU,EAAV,kBAAU;IACV,WAAW,EAAX,mBAAW;CACZ,CAAA"}