@prosopo/provider 5.0.4 → 5.1.0

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 (95) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +17 -16
  2. package/.turbo/turbo-build$colon$tsc.log +24 -24
  3. package/.turbo/turbo-build.log +18 -17
  4. package/CHANGELOG.md +74 -0
  5. package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
  6. package/dist/api/blacklistRequestInspector.js +3 -2
  7. package/dist/api/blacklistRequestInspector.js.map +1 -1
  8. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts +2 -2
  9. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts.map +1 -1
  10. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +2 -0
  11. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js.map +1 -1
  12. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  13. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +12 -0
  14. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  15. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  16. package/dist/api/captcha/getImageCaptchaChallenge.js +13 -1
  17. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  18. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  19. package/dist/api/captcha/getPoWCaptchaChallenge.js +12 -1
  20. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  21. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  22. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +12 -1
  23. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  24. package/dist/api/captcha/trafficFilterRequestTime.d.ts +38 -0
  25. package/dist/api/captcha/trafficFilterRequestTime.d.ts.map +1 -0
  26. package/dist/api/captcha/trafficFilterRequestTime.js +109 -0
  27. package/dist/api/captcha/trafficFilterRequestTime.js.map +1 -0
  28. package/dist/cjs/api/blacklistRequestInspector.cjs +2 -1
  29. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +2 -0
  30. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +13 -0
  31. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +13 -1
  32. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +12 -1
  33. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +12 -1
  34. package/dist/cjs/api/captcha/trafficFilterRequestTime.cjs +111 -0
  35. package/dist/cjs/tasks/captchaManager.cjs +13 -6
  36. package/dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs +10 -8
  37. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +19 -4
  38. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +5 -1
  39. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +5 -1
  40. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +5 -4
  41. package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +101 -75
  42. package/dist/tasks/captchaManager.d.ts +3 -3
  43. package/dist/tasks/captchaManager.d.ts.map +1 -1
  44. package/dist/tasks/captchaManager.js +14 -7
  45. package/dist/tasks/captchaManager.js.map +1 -1
  46. package/dist/tasks/dnsEvent/enrichDnsEvent.d.ts.map +1 -1
  47. package/dist/tasks/dnsEvent/enrichDnsEvent.js +10 -8
  48. package/dist/tasks/dnsEvent/enrichDnsEvent.js.map +1 -1
  49. package/dist/tasks/frictionless/frictionlessTasks.d.ts +2 -1
  50. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  51. package/dist/tasks/frictionless/frictionlessTasks.js +19 -4
  52. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  53. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +1 -1
  54. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  55. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +5 -1
  56. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  57. package/dist/tasks/powCaptcha/powTasks.d.ts +1 -1
  58. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  59. package/dist/tasks/powCaptcha/powTasks.js +5 -1
  60. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  61. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts +1 -1
  62. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  63. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +5 -4
  64. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  65. package/dist/tasks/spam/checkTrafficFilter.d.ts +18 -1
  66. package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
  67. package/dist/tasks/spam/checkTrafficFilter.js +101 -77
  68. package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
  69. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +24 -17
  70. package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -1
  71. package/dist/tests/integration/trafficFilterHierarchy.integration.test.d.ts +2 -0
  72. package/dist/tests/integration/trafficFilterHierarchy.integration.test.d.ts.map +1 -0
  73. package/dist/tests/integration/trafficFilterHierarchy.integration.test.js +215 -0
  74. package/dist/tests/integration/trafficFilterHierarchy.integration.test.js.map +1 -0
  75. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +6 -0
  76. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -1
  77. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js +58 -0
  78. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js.map +1 -1
  79. package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.d.ts +2 -0
  80. package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.d.ts.map +1 -0
  81. package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.js +255 -0
  82. package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.js.map +1 -0
  83. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +2 -0
  84. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  85. package/dist/tests/unit/tasks/dnsEvent/enrichDnsEvent.unit.test.js +6 -9
  86. package/dist/tests/unit/tasks/dnsEvent/enrichDnsEvent.unit.test.js.map +1 -1
  87. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +49 -0
  88. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -1
  89. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +7 -0
  90. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
  91. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +130 -0
  92. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
  93. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +272 -98
  94. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
  95. package/package.json +14 -14
@@ -5,6 +5,7 @@ import { Tasks } from "../../tasks/tasks.js";
5
5
  import { getMaintenanceMode } from "../admin/apiToggleMaintenanceModeEndpoint.js";
6
6
  import { normalizeRequestIp } from "../../utils/normalizeRequestIp.js";
7
7
  import { buildImageMaintenanceResponse } from "./maintenanceModeResponses.js";
8
+ import { applyTrafficFilterAtRequestTime } from "./trafficFilterRequestTime.js";
8
9
  import { ProsopoApiError } from "@prosopo/common";
9
10
  import { ApiParams, CaptchaRequestBody, CaptchaType, SimdReadingsStage, imageMaxRoundsDefault } from "@prosopo/types";
10
11
  import { flatten, getIPAddress } from "@prosopo/util";
@@ -83,8 +84,19 @@ var getImageCaptchaChallenge_default = (env, userAccessRulesStorage) => async (r
83
84
  i18n: req.i18n,
84
85
  logger: req.logger
85
86
  }));
87
+ const trafficVerdict = applyTrafficFilterAtRequestTime(req.ipInfo, clientRecord.settings?.trafficFilter, req.logger);
88
+ if (trafficVerdict.kind === "block") return next(new ProsopoApiError(trafficVerdict.reason, {
89
+ context: {
90
+ code: 401,
91
+ siteKey: dapp,
92
+ user
93
+ },
94
+ i18n: req.i18n,
95
+ logger: req.logger
96
+ }));
97
+ const trafficSolvedImagesCount = trafficVerdict.kind === "challenge" ? trafficVerdict.solvedImagesCount : void 0;
86
98
  const captchaConfig = {
87
- solved: { count: Math.min(solvedImagesCount || userAccessPolicy?.solvedImagesCount || env.config.captchas.solved.count, clientRecord.settings.imageMaxRounds ?? imageMaxRoundsDefault) },
99
+ solved: { count: Math.min(trafficSolvedImagesCount || solvedImagesCount || userAccessPolicy?.solvedImagesCount || env.config.captchas.solved.count, clientRecord.settings.imageMaxRounds ?? imageMaxRoundsDefault) },
88
100
  unsolved: { count: userAccessPolicy?.unsolvedImagesCount || env.config.captchas.unsolved.count }
89
101
  };
90
102
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, SimdReadingsStage.challenge).catch((updateErr) => {
@@ -1 +1 @@
1
- {"version":3,"file":"getImageCaptchaChallenge.js","sourceRoot":"","sources":["../../../src/api/captcha/getImageCaptchaChallenge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getImageCaptchaChallenge.js","sourceRoot":"","sources":["../../../src/api/captcha/getImageCaptchaChallenge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPoWCaptchaChallenge.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/getPoWCaptchaChallenge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAUnD,mBAAmB,0BACA,kBAAkB,WAGpC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAPpB,wBAiPG"}
1
+ {"version":3,"file":"getPoWCaptchaChallenge.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/getPoWCaptchaChallenge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAWnD,mBAAmB,0BACA,kBAAkB,WAGpC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAPpB,wBAwQG"}
@@ -6,6 +6,7 @@ import { Tasks } from "../../tasks/tasks.js";
6
6
  import { getMaintenanceMode } from "../admin/apiToggleMaintenanceModeEndpoint.js";
7
7
  import { normalizeRequestIp } from "../../utils/normalizeRequestIp.js";
8
8
  import { buildPowMaintenanceResponse } from "./maintenanceModeResponses.js";
9
+ import { applyTrafficFilterAtRequestTime } from "./trafficFilterRequestTime.js";
9
10
  import { ProsopoApiError } from "@prosopo/common";
10
11
  import { ApiParams, CaptchaType, GetPowCaptchaChallengeRequestBody, SimdReadingsStage } from "@prosopo/types";
11
12
  import { flatten } from "@prosopo/util";
@@ -77,7 +78,17 @@ var getPoWCaptchaChallenge_default = (env, userAccessRulesStorage) => async (req
77
78
  i18n: req.i18n,
78
79
  logger: req.logger
79
80
  }));
80
- const difficulty = powDifficulty || userAccessPolicy?.powDifficulty || clientSettings?.settings?.powDifficulty;
81
+ const trafficVerdict = applyTrafficFilterAtRequestTime(req.ipInfo, clientSettings.settings?.trafficFilter, req.logger);
82
+ if (trafficVerdict.kind === "block") return next(new ProsopoApiError(trafficVerdict.reason, {
83
+ context: {
84
+ code: 401,
85
+ siteKey: dapp,
86
+ user
87
+ },
88
+ i18n: req.i18n,
89
+ logger: req.logger
90
+ }));
91
+ const difficulty = (trafficVerdict.kind === "challenge" ? trafficVerdict.powDifficulty : void 0) || powDifficulty || userAccessPolicy?.powDifficulty || clientSettings?.settings?.powDifficulty;
81
92
  const challenge = await tasks.powCaptchaManager.getPowCaptchaChallenge(user, dapp, origin, difficulty);
82
93
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, SimdReadingsStage.challenge).catch((updateErr) => {
83
94
  req.logger.warn(() => ({
@@ -1 +1 @@
1
- {"version":3,"file":"getPoWCaptchaChallenge.js","sourceRoot":"","sources":["../../../src/api/captcha/getPoWCaptchaChallenge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getPoWCaptchaChallenge.js","sourceRoot":"","sources":["../../../src/api/captcha/getPoWCaptchaChallenge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPuzzleCaptchaChallenge.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/getPuzzleCaptchaChallenge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAUnD,mBAAmB,0BACA,kBAAkB,WAGpC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAPpB,wBA6OG"}
1
+ {"version":3,"file":"getPuzzleCaptchaChallenge.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/getPuzzleCaptchaChallenge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAWnD,mBAAmB,0BACA,kBAAkB,WAGpC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAPpB,wBAqQG"}
@@ -6,6 +6,7 @@ import { Tasks } from "../../tasks/tasks.js";
6
6
  import { getMaintenanceMode } from "../admin/apiToggleMaintenanceModeEndpoint.js";
7
7
  import { normalizeRequestIp } from "../../utils/normalizeRequestIp.js";
8
8
  import { buildPuzzleMaintenanceResponse } from "./maintenanceModeResponses.js";
9
+ import { applyTrafficFilterAtRequestTime } from "./trafficFilterRequestTime.js";
9
10
  import { ProsopoApiError } from "@prosopo/common";
10
11
  import { ApiParams, CaptchaType, GetPuzzleCaptchaChallengeRequestBody, SimdReadingsStage } from "@prosopo/types";
11
12
  import { flatten } from "@prosopo/util";
@@ -77,7 +78,17 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
77
78
  i18n: req.i18n,
78
79
  logger: req.logger
79
80
  }));
80
- const tolerance = clientSettings?.settings?.puzzleTolerance;
81
+ const trafficVerdict = applyTrafficFilterAtRequestTime(req.ipInfo, clientSettings.settings?.trafficFilter, req.logger);
82
+ if (trafficVerdict.kind === "block") return next(new ProsopoApiError(trafficVerdict.reason, {
83
+ context: {
84
+ code: 401,
85
+ siteKey: dapp,
86
+ user
87
+ },
88
+ i18n: req.i18n,
89
+ logger: req.logger
90
+ }));
91
+ const tolerance = (trafficVerdict.kind === "challenge" ? trafficVerdict.puzzleTolerance : void 0) ?? clientSettings?.settings?.puzzleTolerance;
81
92
  const challenge = await tasks.puzzleCaptchaManager.getPuzzleCaptchaChallenge(user, dapp, origin, tolerance);
82
93
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, SimdReadingsStage.challenge).catch((updateErr) => {
83
94
  req.logger.warn(() => ({
@@ -1 +1 @@
1
- {"version":3,"file":"getPuzzleCaptchaChallenge.js","sourceRoot":"","sources":["../../../src/api/captcha/getPuzzleCaptchaChallenge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getPuzzleCaptchaChallenge.js","sourceRoot":"","sources":["../../../src/api/captcha/getPuzzleCaptchaChallenge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Logger } from "@prosopo/logger";
2
+ import { CaptchaType, type IPInfoResponse, type ITrafficFilter } from "@prosopo/types";
3
+ import type { ClientRecord } from "@prosopo/types-database";
4
+ import type { Response } from "express";
5
+ import type { FrictionlessManager } from "../../tasks/frictionless/frictionlessTasks.js";
6
+ import { type ResolvedChallengePolicy, type TrafficBlockReason } from "../../tasks/spam/checkTrafficFilter.js";
7
+ export type RequestTimeTrafficVerdict = {
8
+ kind: "pass";
9
+ } | {
10
+ kind: "block";
11
+ reason: TrafficBlockReason;
12
+ } | {
13
+ kind: "challenge";
14
+ captchaType: CaptchaType | undefined;
15
+ powDifficulty?: number;
16
+ solvedImagesCount?: number;
17
+ puzzleTolerance?: number;
18
+ sourceCategories: ResolvedChallengePolicy["sourceCategories"];
19
+ };
20
+ export declare const applyTrafficFilterAtRequestTime: (ipInfo: IPInfoResponse | undefined, trafficFilter: Partial<ITrafficFilter> | undefined, logger?: Logger) => RequestTimeTrafficVerdict;
21
+ export type FrictionlessTrafficFilterOutcome = {
22
+ handled: false;
23
+ } | {
24
+ handled: true;
25
+ response: Response;
26
+ };
27
+ export type FrictionlessTrafficFilterInput = {
28
+ verdict: RequestTimeTrafficVerdict;
29
+ frictionlessManager: FrictionlessManager;
30
+ clientRecord: ClientRecord;
31
+ userSitekeyIpHash: string;
32
+ dapp: string;
33
+ ipInfo: IPInfoResponse | undefined;
34
+ flatHeaders: Record<string, string>;
35
+ logger: Logger;
36
+ };
37
+ export declare const handleFrictionlessTrafficFilter: (input: FrictionlessTrafficFilterInput, res: Response) => Promise<FrictionlessTrafficFilterOutcome>;
38
+ //# sourceMappingURL=trafficFilterRequestTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trafficFilterRequestTime.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,WAAW,EAEX,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACN,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EAGvB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC7C;IACA,IAAI,EAAE,WAAW,CAAC;IAGlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;CAC7D,CAAC;AAeL,eAAO,MAAM,+BAA+B,WACnC,cAAc,GAAG,SAAS,iBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,WACzC,MAAM,KACb,yBAwCF,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACzC;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,yBAAyB,CAAC;IACnC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,eAAO,MAAM,+BAA+B,UACpC,8BAA8B,OAChC,QAAQ,KACX,OAAO,CAAC,gCAAgC,CAgE1C,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { checkTrafficFilter, resolveChallengePolicy } from "../../tasks/spam/checkTrafficFilter.js";
2
+ import { CaptchaType, TrafficFilterAction } from "@prosopo/types";
3
+ //#region src/api/captcha/trafficFilterRequestTime.ts
4
+ /**
5
+ * Evaluate the site's `trafficFilter` against the current request's IP info
6
+ * at challenge-request time. Runs before captcha issuance so that a matched
7
+ * `block` policy short-circuits with 401 (no captcha issued, mirroring the
8
+ * `blockMiddleware` semantics) and a matched `challenge` policy hands back
9
+ * an override bundle for the caller to fold into its captcha-type +
10
+ * parameter selection.
11
+ *
12
+ * The verdict is authoritative for the request-time gate. Callers still run
13
+ * `resolveTrafficFilterCheck` at submit time to catch `block` policies that
14
+ * apply to the current (verify-time) IP even when the challenge-time IP
15
+ * passed.
16
+ */
17
+ var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
18
+ if (!trafficFilter) return { kind: "pass" };
19
+ const result = checkTrafficFilter(ipInfo, {
20
+ abuser: { action: TrafficFilterAction.Block },
21
+ ...trafficFilter
22
+ });
23
+ if (result.isBlocked) {
24
+ logger?.info(() => ({
25
+ msg: "Traffic filter rejected challenge request",
26
+ data: { reason: result.reason }
27
+ }));
28
+ return {
29
+ kind: "block",
30
+ reason: result.reason
31
+ };
32
+ }
33
+ const resolved = resolveChallengePolicy(result.matches);
34
+ if (!resolved) return { kind: "pass" };
35
+ logger?.info(() => ({
36
+ msg: "Traffic filter applied challenge overrides",
37
+ data: {
38
+ categories: resolved.sourceCategories,
39
+ captchaType: resolved.captchaType,
40
+ powDifficulty: resolved.powDifficulty,
41
+ solvedImagesCount: resolved.solvedImagesCount,
42
+ puzzleTolerance: resolved.puzzleTolerance
43
+ }
44
+ }));
45
+ return {
46
+ kind: "challenge",
47
+ captchaType: resolved.captchaType,
48
+ powDifficulty: resolved.powDifficulty,
49
+ solvedImagesCount: resolved.solvedImagesCount,
50
+ puzzleTolerance: resolved.puzzleTolerance,
51
+ sourceCategories: resolved.sourceCategories
52
+ };
53
+ };
54
+ /**
55
+ * Frictionless-flow companion to `applyTrafficFilterAtRequestTime`. When the
56
+ * verdict is `block`, respond 401 and short-circuit. When the verdict is
57
+ * `challenge` and names a concrete captchaType, dispatch to the matching
58
+ * `send{Image,Pow,Puzzle}Captcha` helper with the resolved parameter
59
+ * overrides. Otherwise returns `{ handled: false }` so the caller falls
60
+ * through to the normal decision machine.
61
+ */
62
+ var handleFrictionlessTrafficFilter = async (input, res) => {
63
+ const { verdict } = input;
64
+ if (verdict.kind === "pass") return { handled: false };
65
+ if (verdict.kind === "block") return {
66
+ handled: true,
67
+ response: res.status(401).json({ error: "Unauthorized" })
68
+ };
69
+ const baseParams = {
70
+ userSitekeyIpHash: input.userSitekeyIpHash,
71
+ siteKey: input.dapp,
72
+ ipInfo: input.ipInfo,
73
+ headers: input.flatHeaders
74
+ };
75
+ const logDispatch = (captchaType) => {
76
+ input.logger.info(() => ({
77
+ msg: "Frictionless decision",
78
+ data: {
79
+ decision: "traffic_filter",
80
+ captchaType,
81
+ categories: verdict.sourceCategories
82
+ }
83
+ }));
84
+ };
85
+ let response;
86
+ if (verdict.captchaType === CaptchaType.image) {
87
+ logDispatch(CaptchaType.image);
88
+ response = await input.frictionlessManager.sendImageCaptcha({
89
+ ...baseParams,
90
+ solvedImagesCount: verdict.solvedImagesCount ? Math.min(verdict.solvedImagesCount, input.clientRecord.settings.imageMaxRounds) : input.clientRecord.settings.imageMaxRounds
91
+ });
92
+ } else if (verdict.captchaType === CaptchaType.pow) {
93
+ logDispatch(CaptchaType.pow);
94
+ response = await input.frictionlessManager.sendPowCaptcha({
95
+ ...baseParams,
96
+ ...verdict.powDifficulty !== void 0 && { powDifficulty: verdict.powDifficulty }
97
+ });
98
+ } else if (verdict.captchaType === CaptchaType.puzzle) {
99
+ logDispatch(CaptchaType.puzzle);
100
+ response = await input.frictionlessManager.sendPuzzleCaptcha(baseParams);
101
+ }
102
+ if (response) return {
103
+ handled: true,
104
+ response: res.json(response)
105
+ };
106
+ return { handled: false };
107
+ };
108
+ //#endregion
109
+ export { applyTrafficFilterAtRequestTime, handleFrictionlessTrafficFilter };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trafficFilterRequestTime.js","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"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"}
@@ -281,7 +281,8 @@ var BlacklistRequestInspector = class {
281
281
  },
282
282
  ruleHash,
283
283
  ruleType,
284
- ruleDescription
284
+ ruleDescription,
285
+ matchedRule: (0, _prosopo_user_access_policy.describeMatchedRule)(accessPolicy)
285
286
  };
286
287
  this.db.storeBlockedSession(session);
287
288
  }
@@ -1,5 +1,6 @@
1
1
  const require_honeypotResponse = require("./honeypotResponse.cjs");
2
2
  let _prosopo_types = require("@prosopo/types");
3
+ let _prosopo_user_access_policy = require("@prosopo/user-access-policy");
3
4
  //#region src/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.ts
4
5
  var handleAccessPolicy = async (input, res) => {
5
6
  if (!input.userAccessPolicy) return {
@@ -8,6 +9,7 @@ var handleAccessPolicy = async (input, res) => {
8
9
  scoreComponents: input.scoreComponents
9
10
  };
10
11
  const { tasks, clientRecord, userAccessPolicy, logger } = input;
12
+ tasks.frictionlessManager.setMatchedRule((0, _prosopo_user_access_policy.describeMatchedRule)(userAccessPolicy));
11
13
  logger.info(() => ({
12
14
  msg: "User access policy matched",
13
15
  data: {
@@ -10,6 +10,7 @@ const require_hashUserIp = require("../../../utils/hashUserIp.cjs");
10
10
  const require_normalizeRequestIp = require("../../../utils/normalizeRequestIp.cjs");
11
11
  const require_testSiteKey = require("../../testSiteKey.cjs");
12
12
  const require_maintenanceModeResponses = require("../maintenanceModeResponses.cjs");
13
+ const require_trafficFilterRequestTime = require("../trafficFilterRequestTime.cjs");
13
14
  const require_honeypotResponse = require("./honeypotResponse.cjs");
14
15
  const require_accessPolicy = require("./accessPolicy.cjs");
15
16
  require("./constants.cjs");
@@ -313,6 +314,18 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
313
314
  if (accessPolicyOutcome.handled) return accessPolicyOutcome.response;
314
315
  botScore = accessPolicyOutcome.botScore;
315
316
  scoreComponents = accessPolicyOutcome.scoreComponents;
317
+ const trafficFilterVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientRecord.settings?.trafficFilter, req.logger);
318
+ const trafficFilterOutcome = await require_trafficFilterRequestTime.handleFrictionlessTrafficFilter({
319
+ verdict: trafficFilterVerdict,
320
+ frictionlessManager: tasks.frictionlessManager,
321
+ clientRecord,
322
+ userSitekeyIpHash,
323
+ dapp,
324
+ ipInfo: req.ipInfo,
325
+ flatHeaders,
326
+ logger: req.logger
327
+ }, res);
328
+ if (trafficFilterOutcome.handled) return trafficFilterOutcome.response;
316
329
  return await require_decisionMachine.runDecisionMachine({
317
330
  tasks,
318
331
  env,
@@ -5,6 +5,7 @@ const require_tasks = require("../../tasks/tasks.cjs");
5
5
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
6
6
  const require_normalizeRequestIp = require("../../utils/normalizeRequestIp.cjs");
7
7
  const require_maintenanceModeResponses = require("./maintenanceModeResponses.cjs");
8
+ const require_trafficFilterRequestTime = require("./trafficFilterRequestTime.cjs");
8
9
  let _prosopo_common = require("@prosopo/common");
9
10
  let _prosopo_types = require("@prosopo/types");
10
11
  let _prosopo_util = require("@prosopo/util");
@@ -83,8 +84,19 @@ var getImageCaptchaChallenge_default = (env, userAccessRulesStorage) => async (r
83
84
  i18n: req.i18n,
84
85
  logger: req.logger
85
86
  }));
87
+ const trafficVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientRecord.settings?.trafficFilter, req.logger);
88
+ if (trafficVerdict.kind === "block") return next(new _prosopo_common.ProsopoApiError(trafficVerdict.reason, {
89
+ context: {
90
+ code: 401,
91
+ siteKey: dapp,
92
+ user
93
+ },
94
+ i18n: req.i18n,
95
+ logger: req.logger
96
+ }));
97
+ const trafficSolvedImagesCount = trafficVerdict.kind === "challenge" ? trafficVerdict.solvedImagesCount : void 0;
86
98
  const captchaConfig = {
87
- solved: { count: Math.min(solvedImagesCount || userAccessPolicy?.solvedImagesCount || env.config.captchas.solved.count, clientRecord.settings.imageMaxRounds ?? _prosopo_types.imageMaxRoundsDefault) },
99
+ solved: { count: Math.min(trafficSolvedImagesCount || solvedImagesCount || userAccessPolicy?.solvedImagesCount || env.config.captchas.solved.count, clientRecord.settings.imageMaxRounds ?? _prosopo_types.imageMaxRoundsDefault) },
88
100
  unsolved: { count: userAccessPolicy?.unsolvedImagesCount || env.config.captchas.unsolved.count }
89
101
  };
90
102
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, _prosopo_types.SimdReadingsStage.challenge).catch((updateErr) => {
@@ -6,6 +6,7 @@ const require_tasks = require("../../tasks/tasks.cjs");
6
6
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
7
7
  const require_normalizeRequestIp = require("../../utils/normalizeRequestIp.cjs");
8
8
  const require_maintenanceModeResponses = require("./maintenanceModeResponses.cjs");
9
+ const require_trafficFilterRequestTime = require("./trafficFilterRequestTime.cjs");
9
10
  let _prosopo_common = require("@prosopo/common");
10
11
  let _prosopo_types = require("@prosopo/types");
11
12
  let _prosopo_util = require("@prosopo/util");
@@ -77,7 +78,17 @@ var getPoWCaptchaChallenge_default = (env, userAccessRulesStorage) => async (req
77
78
  i18n: req.i18n,
78
79
  logger: req.logger
79
80
  }));
80
- const difficulty = powDifficulty || userAccessPolicy?.powDifficulty || clientSettings?.settings?.powDifficulty;
81
+ const trafficVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientSettings.settings?.trafficFilter, req.logger);
82
+ if (trafficVerdict.kind === "block") return next(new _prosopo_common.ProsopoApiError(trafficVerdict.reason, {
83
+ context: {
84
+ code: 401,
85
+ siteKey: dapp,
86
+ user
87
+ },
88
+ i18n: req.i18n,
89
+ logger: req.logger
90
+ }));
91
+ const difficulty = (trafficVerdict.kind === "challenge" ? trafficVerdict.powDifficulty : void 0) || powDifficulty || userAccessPolicy?.powDifficulty || clientSettings?.settings?.powDifficulty;
81
92
  const challenge = await tasks.powCaptchaManager.getPowCaptchaChallenge(user, dapp, origin, difficulty);
82
93
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, _prosopo_types.SimdReadingsStage.challenge).catch((updateErr) => {
83
94
  req.logger.warn(() => ({
@@ -6,6 +6,7 @@ const require_tasks = require("../../tasks/tasks.cjs");
6
6
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
7
7
  const require_normalizeRequestIp = require("../../utils/normalizeRequestIp.cjs");
8
8
  const require_maintenanceModeResponses = require("./maintenanceModeResponses.cjs");
9
+ const require_trafficFilterRequestTime = require("./trafficFilterRequestTime.cjs");
9
10
  let _prosopo_common = require("@prosopo/common");
10
11
  let _prosopo_types = require("@prosopo/types");
11
12
  let _prosopo_util = require("@prosopo/util");
@@ -77,7 +78,17 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
77
78
  i18n: req.i18n,
78
79
  logger: req.logger
79
80
  }));
80
- const tolerance = clientSettings?.settings?.puzzleTolerance;
81
+ const trafficVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientSettings.settings?.trafficFilter, req.logger);
82
+ if (trafficVerdict.kind === "block") return next(new _prosopo_common.ProsopoApiError(trafficVerdict.reason, {
83
+ context: {
84
+ code: 401,
85
+ siteKey: dapp,
86
+ user
87
+ },
88
+ i18n: req.i18n,
89
+ logger: req.logger
90
+ }));
91
+ const tolerance = (trafficVerdict.kind === "challenge" ? trafficVerdict.puzzleTolerance : void 0) ?? clientSettings?.settings?.puzzleTolerance;
81
92
  const challenge = await tasks.puzzleCaptchaManager.getPuzzleCaptchaChallenge(user, dapp, origin, tolerance);
82
93
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, _prosopo_types.SimdReadingsStage.challenge).catch((updateErr) => {
83
94
  req.logger.warn(() => ({
@@ -0,0 +1,111 @@
1
+ const require_checkTrafficFilter = require("../../tasks/spam/checkTrafficFilter.cjs");
2
+ let _prosopo_types = require("@prosopo/types");
3
+ //#region src/api/captcha/trafficFilterRequestTime.ts
4
+ /**
5
+ * Evaluate the site's `trafficFilter` against the current request's IP info
6
+ * at challenge-request time. Runs before captcha issuance so that a matched
7
+ * `block` policy short-circuits with 401 (no captcha issued, mirroring the
8
+ * `blockMiddleware` semantics) and a matched `challenge` policy hands back
9
+ * an override bundle for the caller to fold into its captcha-type +
10
+ * parameter selection.
11
+ *
12
+ * The verdict is authoritative for the request-time gate. Callers still run
13
+ * `resolveTrafficFilterCheck` at submit time to catch `block` policies that
14
+ * apply to the current (verify-time) IP even when the challenge-time IP
15
+ * passed.
16
+ */
17
+ var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
18
+ if (!trafficFilter) return { kind: "pass" };
19
+ const effective = {
20
+ abuser: { action: _prosopo_types.TrafficFilterAction.Block },
21
+ ...trafficFilter
22
+ };
23
+ const result = require_checkTrafficFilter.checkTrafficFilter(ipInfo, effective);
24
+ if (result.isBlocked) {
25
+ logger?.info(() => ({
26
+ msg: "Traffic filter rejected challenge request",
27
+ data: { reason: result.reason }
28
+ }));
29
+ return {
30
+ kind: "block",
31
+ reason: result.reason
32
+ };
33
+ }
34
+ const resolved = require_checkTrafficFilter.resolveChallengePolicy(result.matches);
35
+ if (!resolved) return { kind: "pass" };
36
+ logger?.info(() => ({
37
+ msg: "Traffic filter applied challenge overrides",
38
+ data: {
39
+ categories: resolved.sourceCategories,
40
+ captchaType: resolved.captchaType,
41
+ powDifficulty: resolved.powDifficulty,
42
+ solvedImagesCount: resolved.solvedImagesCount,
43
+ puzzleTolerance: resolved.puzzleTolerance
44
+ }
45
+ }));
46
+ return {
47
+ kind: "challenge",
48
+ captchaType: resolved.captchaType,
49
+ powDifficulty: resolved.powDifficulty,
50
+ solvedImagesCount: resolved.solvedImagesCount,
51
+ puzzleTolerance: resolved.puzzleTolerance,
52
+ sourceCategories: resolved.sourceCategories
53
+ };
54
+ };
55
+ /**
56
+ * Frictionless-flow companion to `applyTrafficFilterAtRequestTime`. When the
57
+ * verdict is `block`, respond 401 and short-circuit. When the verdict is
58
+ * `challenge` and names a concrete captchaType, dispatch to the matching
59
+ * `send{Image,Pow,Puzzle}Captcha` helper with the resolved parameter
60
+ * overrides. Otherwise returns `{ handled: false }` so the caller falls
61
+ * through to the normal decision machine.
62
+ */
63
+ var handleFrictionlessTrafficFilter = async (input, res) => {
64
+ const { verdict } = input;
65
+ if (verdict.kind === "pass") return { handled: false };
66
+ if (verdict.kind === "block") return {
67
+ handled: true,
68
+ response: res.status(401).json({ error: "Unauthorized" })
69
+ };
70
+ const baseParams = {
71
+ userSitekeyIpHash: input.userSitekeyIpHash,
72
+ siteKey: input.dapp,
73
+ ipInfo: input.ipInfo,
74
+ headers: input.flatHeaders
75
+ };
76
+ const logDispatch = (captchaType) => {
77
+ input.logger.info(() => ({
78
+ msg: "Frictionless decision",
79
+ data: {
80
+ decision: "traffic_filter",
81
+ captchaType,
82
+ categories: verdict.sourceCategories
83
+ }
84
+ }));
85
+ };
86
+ let response;
87
+ if (verdict.captchaType === _prosopo_types.CaptchaType.image) {
88
+ logDispatch(_prosopo_types.CaptchaType.image);
89
+ response = await input.frictionlessManager.sendImageCaptcha({
90
+ ...baseParams,
91
+ solvedImagesCount: verdict.solvedImagesCount ? Math.min(verdict.solvedImagesCount, input.clientRecord.settings.imageMaxRounds) : input.clientRecord.settings.imageMaxRounds
92
+ });
93
+ } else if (verdict.captchaType === _prosopo_types.CaptchaType.pow) {
94
+ logDispatch(_prosopo_types.CaptchaType.pow);
95
+ response = await input.frictionlessManager.sendPowCaptcha({
96
+ ...baseParams,
97
+ ...verdict.powDifficulty !== void 0 && { powDifficulty: verdict.powDifficulty }
98
+ });
99
+ } else if (verdict.captchaType === _prosopo_types.CaptchaType.puzzle) {
100
+ logDispatch(_prosopo_types.CaptchaType.puzzle);
101
+ response = await input.frictionlessManager.sendPuzzleCaptcha(baseParams);
102
+ }
103
+ if (response) return {
104
+ handled: true,
105
+ response: res.json(response)
106
+ };
107
+ return { handled: false };
108
+ };
109
+ //#endregion
110
+ exports.applyTrafficFilterAtRequestTime = applyTrafficFilterAtRequestTime;
111
+ exports.handleFrictionlessTrafficFilter = handleFrictionlessTrafficFilter;