@prosopo/provider 5.14.0 → 5.15.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 (134) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +20 -22
  2. package/.turbo/turbo-build$colon$tsc.log +27 -30
  3. package/.turbo/turbo-build.log +21 -26
  4. package/CHANGELOG.md +128 -0
  5. package/LICENSE +201 -0
  6. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +2 -1
  7. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -1
  8. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +11 -2
  9. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -1
  10. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  11. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +15 -8
  12. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  13. package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.d.ts +5 -0
  14. package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.d.ts.map +1 -0
  15. package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.js +20 -0
  16. package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.js.map +1 -0
  17. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  18. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +24 -0
  19. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  20. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts +4 -11
  21. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  22. package/dist/api/captcha/submitPoWCaptchaSolution.js +12 -17
  23. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  24. package/dist/api/rawTlsSignalsMiddleware.d.ts +14 -1
  25. package/dist/api/rawTlsSignalsMiddleware.d.ts.map +1 -1
  26. package/dist/api/rawTlsSignalsMiddleware.js +111 -23
  27. package/dist/api/rawTlsSignalsMiddleware.js.map +1 -1
  28. package/dist/api/startProviderApi.js +2 -2
  29. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +10 -0
  30. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +14 -7
  31. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.cjs +20 -0
  32. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +24 -0
  33. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +10 -15
  34. package/dist/cjs/api/rawTlsSignalsMiddleware.cjs +111 -22
  35. package/dist/cjs/api/startProviderApi.cjs +2 -2
  36. package/dist/cjs/compositeIpAddress.cjs +21 -7
  37. package/dist/cjs/tasks/captchaManager.cjs +15 -0
  38. package/dist/cjs/tasks/captchaTypeSelection.cjs +23 -2
  39. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +26 -23
  40. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +2 -9
  41. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +7 -11
  42. package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +2 -0
  43. package/dist/cjs/tasks/puzzle/backgroundBuffer.cjs +3 -3
  44. package/dist/cjs/tasks/puzzle/nativeBackground.cjs +12 -5
  45. package/dist/cjs/tasks/puzzle/puzzleRenderer.cjs +4 -3
  46. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +2 -9
  47. package/dist/compositeIpAddress.d.ts.map +1 -1
  48. package/dist/compositeIpAddress.js +21 -7
  49. package/dist/compositeIpAddress.js.map +1 -1
  50. package/dist/tasks/captchaManager.d.ts.map +1 -1
  51. package/dist/tasks/captchaManager.js +16 -1
  52. package/dist/tasks/captchaManager.js.map +1 -1
  53. package/dist/tasks/captchaTypeSelection.d.ts +3 -1
  54. package/dist/tasks/captchaTypeSelection.d.ts.map +1 -1
  55. package/dist/tasks/captchaTypeSelection.js +23 -3
  56. package/dist/tasks/captchaTypeSelection.js.map +1 -1
  57. package/dist/tasks/frictionless/frictionlessTasks.d.ts +3 -1
  58. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  59. package/dist/tasks/frictionless/frictionlessTasks.js +28 -25
  60. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  61. package/dist/tasks/frictionless/routingMachine.d.ts +1 -2
  62. package/dist/tasks/frictionless/routingMachine.d.ts.map +1 -1
  63. package/dist/tasks/frictionless/routingMachine.js.map +1 -1
  64. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  65. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +2 -9
  66. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  67. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  68. package/dist/tasks/powCaptcha/powTasks.js +8 -12
  69. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  70. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +1 -0
  71. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -1
  72. package/dist/tasks/powCaptcha/powTasksUtils.js +2 -1
  73. package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -1
  74. package/dist/tasks/puzzle/backgroundBuffer.d.ts +3 -2
  75. package/dist/tasks/puzzle/backgroundBuffer.d.ts.map +1 -1
  76. package/dist/tasks/puzzle/backgroundBuffer.js +3 -3
  77. package/dist/tasks/puzzle/backgroundBuffer.js.map +1 -1
  78. package/dist/tasks/puzzle/nativeBackground.d.ts +5 -1
  79. package/dist/tasks/puzzle/nativeBackground.d.ts.map +1 -1
  80. package/dist/tasks/puzzle/nativeBackground.js +12 -5
  81. package/dist/tasks/puzzle/nativeBackground.js.map +1 -1
  82. package/dist/tasks/puzzle/puzzleRenderer.d.ts +2 -0
  83. package/dist/tasks/puzzle/puzzleRenderer.d.ts.map +1 -1
  84. package/dist/tasks/puzzle/puzzleRenderer.js +4 -3
  85. package/dist/tasks/puzzle/puzzleRenderer.js.map +1 -1
  86. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  87. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +2 -9
  88. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  89. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +2 -0
  90. package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -1
  91. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js +35 -2
  92. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js.map +1 -1
  93. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.d.ts +2 -0
  94. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.d.ts.map +1 -0
  95. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.js +45 -0
  96. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.js.map +1 -0
  97. package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js +15 -1
  98. package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js.map +1 -1
  99. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +148 -0
  100. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  101. package/dist/tests/unit/api/rawTlsSignalsMiddleware.unit.test.js +96 -1
  102. package/dist/tests/unit/api/rawTlsSignalsMiddleware.unit.test.js.map +1 -1
  103. package/dist/tests/unit/compositeIpAddress.unit.test.js +12 -3
  104. package/dist/tests/unit/compositeIpAddress.unit.test.js.map +1 -1
  105. package/dist/tests/unit/tasks/captchaManager.unit.test.js +51 -0
  106. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  107. package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.js +20 -1
  108. package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.js.map +1 -1
  109. package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.d.ts +2 -0
  110. package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.d.ts.map +1 -0
  111. package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.js +94 -0
  112. package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.js.map +1 -0
  113. package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.d.ts +2 -0
  114. package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.d.ts.map +1 -0
  115. package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.js +103 -0
  116. package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.js.map +1 -0
  117. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +23 -1
  118. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
  119. package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js +1 -4
  120. package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js.map +1 -1
  121. package/dist/tests/unit/tasks/puzzle/nativeBackground.unit.test.js +10 -3
  122. package/dist/tests/unit/tasks/puzzle/nativeBackground.unit.test.js.map +1 -1
  123. package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.d.ts +2 -0
  124. package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.d.ts.map +1 -0
  125. package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.js +35 -0
  126. package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.js.map +1 -0
  127. package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.d.ts +2 -0
  128. package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.d.ts.map +1 -0
  129. package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.js +49 -0
  130. package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.js.map +1 -0
  131. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +17 -14
  132. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts.map +1 -1
  133. package/dist/tests/unit/testUtils/mockProviderEnv.js.map +1 -1
  134. package/package.json +105 -103
@@ -1,16 +1,16 @@
1
1
  import { validateAddr, validateSiteKey } from "../validateAddress.js";
2
+ import { rawTlsSignalsForSession, rawTlsSignalsFromRecord } from "../rawTlsSignalsMiddleware.js";
2
3
  import { coerceToEnabledCaptchaType } from "../../tasks/captchaTypeSelection.js";
3
4
  import { samplePuzzleDifficulty } from "../../tasks/puzzle/puzzleDifficulty.js";
4
5
  import { derivePlatform, deriveTrafficPolicies } from "../../utils/devicePlatform.js";
5
6
  import { Tasks } from "../../tasks/tasks.js";
6
7
  import { getMaintenanceMode } from "../admin/apiToggleMaintenanceModeEndpoint.js";
7
8
  import { resolveTestSiteKeyVerdict } from "../testSiteKey.js";
8
- import { rawTlsSignalsForSession } from "../rawTlsSignalsMiddleware.js";
9
9
  import { summariseRequestBody } from "../requestBodySummary.js";
10
10
  import { ProsopoApiError } from "@prosopo/common";
11
- import { CaptchaType, SubmitPowCaptchaSolutionBody, imageMaxRoundsDefault } from "@prosopo/types";
11
+ import { CaptchaType, SubmitPowCaptchaSolutionBody, imageMaxRoundsDefault, resolveAllowedCaptchaTypes } from "@prosopo/types";
12
12
  import { flatten, getIPAddress } from "@prosopo/util";
13
- import { severityToPuzzleDifficulty } from "@prosopo/captcha-severity";
13
+ import { resolveMaxEscalationLevel, severityToPuzzleDifficulty } from "@prosopo/captcha-severity";
14
14
  import { DEFAULT_RENDER_SETTINGS } from "@prosopo/puzzle-assets";
15
15
  //#region src/api/captcha/submitPoWCaptchaSolution.ts
16
16
  var submitPoWCaptchaSolution_default = (env) => async (req, res, next) => {
@@ -100,8 +100,9 @@ var submitPoWCaptchaSolution_default = (env) => async (req, res, next) => {
100
100
  chelloToHandshakeUs: req.chelloToHandshakeUs,
101
101
  ...rawTlsSignalsForSession(req)
102
102
  }, {
103
- frictionlessTypes: clientRecord.settings?.frictionlessTypes,
104
- imageMaxRounds: clientRecord.settings?.imageMaxRounds
103
+ allowedCaptchaTypes: resolveAllowedCaptchaTypes(clientRecord.settings),
104
+ imageMaxRounds: clientRecord.settings?.imageMaxRounds,
105
+ puzzleMaxDifficulty: clientRecord.settings?.puzzleMaxDifficulty
105
106
  });
106
107
  const response = {
107
108
  status: "ok",
@@ -144,17 +145,19 @@ var buildEscalation = async (tasks, result, challenge, perConnectionSignals, sit
144
145
  const originSession = await tasks.db.getSessionRecordBySessionId(powRecord.sessionId);
145
146
  if (!originSession) return void 0;
146
147
  const routed = result.routingOutput;
147
- const escalatedType = coerceToEnabledCaptchaType(routed.captchaType, siteConstraints?.frictionlessTypes);
148
+ const escalatedType = coerceToEnabledCaptchaType(routed.captchaType, siteConstraints?.allowedCaptchaTypes);
148
149
  if (escalatedType === CaptchaType.pow) return void 0;
149
150
  const imageMaxRounds = siteConstraints?.imageMaxRounds ?? imageMaxRoundsDefault;
150
151
  const escalationPuzzleOverrides = (() => {
151
152
  if (escalatedType !== CaptchaType.puzzle) return void 0;
152
- const level = severityToPuzzleDifficulty(routed.solvedImagesCount ?? originSession.solvedImagesCount, tasks.config.captchas.solved.count);
153
+ const { isMobile } = derivePlatform(originSession.headers?.["user-agent"] ?? "", originSession.webView);
154
+ const level = severityToPuzzleDifficulty(routed.solvedImagesCount ?? originSession.solvedImagesCount, tasks.config.captchas.solved.count, resolveMaxEscalationLevel(siteConstraints?.puzzleMaxDifficulty, isMobile));
153
155
  if (level === 0) return void 0;
154
156
  const difficulty = samplePuzzleDifficulty(level, DEFAULT_RENDER_SETTINGS.holeDarken);
155
157
  return {
156
158
  puzzleTolerance: difficulty.tolerance,
157
- puzzle: difficulty.puzzle
159
+ puzzle: difficulty.puzzle,
160
+ puzzleLevel: difficulty.level
158
161
  };
159
162
  })();
160
163
  const selectionReason = routed.reason ?? originSession.reason;
@@ -185,15 +188,7 @@ var buildEscalation = async (tasks, result, challenge, perConnectionSignals, sit
185
188
  originSessionId: originSession.sessionId,
186
189
  tcpToChelloUs: perConnectionSignals?.tcpToChelloUs,
187
190
  chelloToHandshakeUs: perConnectionSignals?.chelloToHandshakeUs,
188
- synNs: perConnectionSignals?.synNs,
189
- synackNs: perConnectionSignals?.synackNs,
190
- ackNs: perConnectionSignals?.ackNs,
191
- observedTtl: perConnectionSignals?.observedTtl,
192
- tcpMss: perConnectionSignals?.tcpMss,
193
- tcpWscale: perConnectionSignals?.tcpWscale,
194
- tcpOptsFlags: perConnectionSignals?.tcpOptsFlags,
195
- tcpOptsOrder: perConnectionSignals?.tcpOptsOrder,
196
- tcpWindow: perConnectionSignals?.tcpWindow,
191
+ ...rawTlsSignalsFromRecord(perConnectionSignals),
197
192
  puzzleTolerance: escalationPuzzleOverrides?.puzzleTolerance,
198
193
  puzzle: escalationPuzzleOverrides?.puzzle,
199
194
  clientMetaData: originSession.clientMetaData
@@ -1 +1 @@
1
- {"version":3,"file":"submitPoWCaptchaSolution.js","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submitPoWCaptchaSolution.js","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,24 @@ export interface RawTlsSignals {
9
9
  observedTtl?: number;
10
10
  tcpMss?: number;
11
11
  tcpWscale?: number;
12
+ tcpWindow?: number;
13
+ tcpOptsKinds?: number[];
14
+ tcpOptsPresent?: number;
15
+ tcpOptsCount?: number;
16
+ tcpTsval?: number;
17
+ tcpTsecr?: number;
18
+ tcpFlags?: number;
19
+ tcpDataOffsetResv?: number;
20
+ tcpUrgPtr?: number;
21
+ ipIdent?: number;
22
+ ipTotalLen?: number;
23
+ ipFragFlags?: number;
24
+ ipTos?: number;
12
25
  tcpOptsFlags?: number;
13
26
  tcpOptsOrder?: number;
14
- tcpWindow?: number;
15
27
  }
16
28
  export declare const getRawTlsSignals: (headers: IncomingHttpHeaders, logger?: Logger) => RawTlsSignals;
17
29
  export declare const rawTlsSignalsForSession: (req: Pick<Request, keyof RawTlsSignals>) => Partial<RawTlsSignals>;
30
+ export declare const rawTlsSignalsFromRecord: (record: Partial<RawTlsSignals> | undefined | null) => Partial<RawTlsSignals>;
18
31
  export declare const rawTlsSignalsMiddleware: (env: ProviderEnvironment) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
19
32
  //# sourceMappingURL=rawTlsSignalsMiddleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rawTlsSignalsMiddleware.d.ts","sourceRoot":"","sources":["../../src/api/rawTlsSignalsMiddleware.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAsB/D,MAAM,WAAW,aAAa;IAM7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAyCD,eAAO,MAAM,gBAAgB,YACnB,mBAAmB,WACnB,MAAM,KACb,aAgDF,CAAC;AAQF,eAAO,MAAM,uBAAuB,QAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,aAAa,CAAC,KACrC,OAAO,CAAC,aAAa,CAYvB,CAAC;AAMF,eAAO,MAAM,uBAAuB,QAAS,mBAAmB,WAC5C,OAAO,OAAO,QAAQ,QAAQ,YAAY,kBAyB7D,CAAC"}
1
+ {"version":3,"file":"rawTlsSignalsMiddleware.d.ts","sourceRoot":"","sources":["../../src/api/rawTlsSignalsMiddleware.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA2C/D,MAAM,WAAW,aAAa;IAM7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAcnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAKxB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,YAAY,CAAC,EAAE,MAAM,CAAC;IAQtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAwID,eAAO,MAAM,gBAAgB,YACnB,mBAAmB,WACnB,MAAM,KACb,aA8GF,CAAC;AAQF,eAAO,MAAM,uBAAuB,QAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,aAAa,CAAC,KACrC,OAAO,CAAC,aAAa,CAAiC,CAAC;AAW1D,eAAO,MAAM,uBAAuB,WAC3B,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,GAAG,IAAI,KAC/C,OAAO,CAAC,aAAa,CAYvB,CAAC;AAMF,eAAO,MAAM,uBAAuB,QAAS,mBAAmB,WAC5C,OAAO,OAAO,QAAQ,QAAQ,YAAY,kBAmB7D,CAAC"}
@@ -7,9 +7,44 @@ var HEADER_ACK_NS = "x-tls-ack-ns";
7
7
  var HEADER_OBSERVED_TTL = "x-tls-observed-ttl";
8
8
  var HEADER_TCP_MSS = "x-tls-tcp-mss";
9
9
  var HEADER_TCP_WSCALE = "x-tls-tcp-wscale";
10
+ var HEADER_TCP_WINDOW = "x-tls-tcp-window";
11
+ var HEADER_TCP_OPTS_KINDS = "x-tls-tcp-opts-kinds";
12
+ var HEADER_TCP_OPTS_PRESENT = "x-tls-tcp-opts-present";
13
+ var HEADER_TCP_OPTS_COUNT = "x-tls-tcp-opts-count";
14
+ var HEADER_TCP_TSVAL = "x-tls-tcp-tsval";
15
+ var HEADER_TCP_TSECR = "x-tls-tcp-tsecr";
16
+ var HEADER_TCP_FLAGS = "x-tls-tcp-flags";
17
+ var HEADER_TCP_DATA_OFFSET_RESV = "x-tls-tcp-data-offset-resv";
18
+ var HEADER_TCP_URG_PTR = "x-tls-tcp-urg-ptr";
19
+ var HEADER_IP_IDENT = "x-tls-ip-ident";
20
+ var HEADER_IP_TOTAL_LEN = "x-tls-ip-total-len";
21
+ var HEADER_IP_FRAG_FLAGS = "x-tls-ip-frag-flags";
22
+ var HEADER_IP_TOS = "x-tls-ip-tos";
10
23
  var HEADER_TCP_OPTS_FLAGS = "x-tls-tcp-opts-flags";
11
24
  var HEADER_TCP_OPTS_ORDER = "x-tls-tcp-opts-order";
12
- var HEADER_TCP_WINDOW = "x-tls-tcp-window";
25
+ var RAW_TLS_SIGNAL_KEYS = [
26
+ "synNs",
27
+ "synackNs",
28
+ "ackNs",
29
+ "observedTtl",
30
+ "tcpMss",
31
+ "tcpWscale",
32
+ "tcpWindow",
33
+ "tcpOptsKinds",
34
+ "tcpOptsPresent",
35
+ "tcpOptsCount",
36
+ "tcpTsval",
37
+ "tcpTsecr",
38
+ "tcpFlags",
39
+ "tcpDataOffsetResv",
40
+ "tcpUrgPtr",
41
+ "ipIdent",
42
+ "ipTotalLen",
43
+ "ipFragFlags",
44
+ "ipTos",
45
+ "tcpOptsFlags",
46
+ "tcpOptsOrder"
47
+ ];
13
48
  var parseIntHeader = (raw, logger, headerName, max) => {
14
49
  if (raw === void 0) return;
15
50
  const value = Array.isArray(raw) ? raw[0] : raw;
@@ -31,6 +66,46 @@ var MAX_NS = 2 ** 63;
31
66
  var MAX_U8 = 255;
32
67
  var MAX_U16 = 65535;
33
68
  var MAX_U32 = 4294967295;
69
+ var OPTS_KINDS_SLOTS = 8;
70
+ var MAX_U64 = (1n << 64n) - 1n;
71
+ var parseOptsKindsHeader = (raw, logger) => {
72
+ if (raw === void 0) return;
73
+ const value = Array.isArray(raw) ? raw[0] : raw;
74
+ if (value === void 0 || !/^\d+$/.test(value)) {
75
+ if (value !== void 0) logger.debug(() => ({
76
+ msg: "Ignoring malformed raw TLS signal header",
77
+ data: {
78
+ header: HEADER_TCP_OPTS_KINDS,
79
+ raw: value
80
+ }
81
+ }));
82
+ return;
83
+ }
84
+ let packed;
85
+ try {
86
+ packed = BigInt(value);
87
+ } catch {
88
+ return;
89
+ }
90
+ if (packed > MAX_U64) {
91
+ logger.debug(() => ({
92
+ msg: "Ignoring out-of-range raw TLS signal header",
93
+ data: {
94
+ header: HEADER_TCP_OPTS_KINDS,
95
+ raw: value
96
+ }
97
+ }));
98
+ return;
99
+ }
100
+ if (packed === 0n) return;
101
+ const kinds = [];
102
+ for (let slot = 0; slot < OPTS_KINDS_SLOTS; slot++) {
103
+ const kind = Number(packed >> BigInt(slot * 8) & 255n);
104
+ if (kind === 0) break;
105
+ kinds.push(kind);
106
+ }
107
+ return kinds.length > 0 ? kinds : void 0;
108
+ };
34
109
  var getRawTlsSignals = (headers, logger) => {
35
110
  const log = logger ?? getLogger("info", "provider:raw-tls-signals");
36
111
  return {
@@ -40,37 +115,50 @@ var getRawTlsSignals = (headers, logger) => {
40
115
  observedTtl: parseIntHeader(headers[HEADER_OBSERVED_TTL], log, HEADER_OBSERVED_TTL, MAX_U8),
41
116
  tcpMss: parseIntHeader(headers[HEADER_TCP_MSS], log, HEADER_TCP_MSS, MAX_U16),
42
117
  tcpWscale: parseIntHeader(headers[HEADER_TCP_WSCALE], log, HEADER_TCP_WSCALE, MAX_U8),
118
+ tcpWindow: parseIntHeader(headers[HEADER_TCP_WINDOW], log, HEADER_TCP_WINDOW, MAX_U16),
119
+ tcpOptsKinds: parseOptsKindsHeader(headers[HEADER_TCP_OPTS_KINDS], log),
120
+ tcpOptsPresent: parseIntHeader(headers[HEADER_TCP_OPTS_PRESENT], log, HEADER_TCP_OPTS_PRESENT, MAX_U16),
121
+ tcpOptsCount: parseIntHeader(headers[HEADER_TCP_OPTS_COUNT], log, HEADER_TCP_OPTS_COUNT, MAX_U8),
122
+ tcpTsval: parseIntHeader(headers[HEADER_TCP_TSVAL], log, HEADER_TCP_TSVAL, MAX_U32),
123
+ tcpTsecr: parseIntHeader(headers[HEADER_TCP_TSECR], log, HEADER_TCP_TSECR, MAX_U32),
124
+ tcpFlags: parseIntHeader(headers[HEADER_TCP_FLAGS], log, HEADER_TCP_FLAGS, MAX_U8),
125
+ tcpDataOffsetResv: parseIntHeader(headers[HEADER_TCP_DATA_OFFSET_RESV], log, HEADER_TCP_DATA_OFFSET_RESV, MAX_U8),
126
+ tcpUrgPtr: parseIntHeader(headers[HEADER_TCP_URG_PTR], log, HEADER_TCP_URG_PTR, MAX_U16),
127
+ ipIdent: parseIntHeader(headers[HEADER_IP_IDENT], log, HEADER_IP_IDENT, MAX_U16),
128
+ ipTotalLen: parseIntHeader(headers[HEADER_IP_TOTAL_LEN], log, HEADER_IP_TOTAL_LEN, MAX_U16),
129
+ ipFragFlags: parseIntHeader(headers[HEADER_IP_FRAG_FLAGS], log, HEADER_IP_FRAG_FLAGS, MAX_U16),
130
+ ipTos: parseIntHeader(headers[HEADER_IP_TOS], log, HEADER_IP_TOS, MAX_U8),
43
131
  tcpOptsFlags: parseIntHeader(headers[HEADER_TCP_OPTS_FLAGS], log, HEADER_TCP_OPTS_FLAGS, MAX_U8),
44
- tcpOptsOrder: parseIntHeader(headers[HEADER_TCP_OPTS_ORDER], log, HEADER_TCP_OPTS_ORDER, MAX_U32),
45
- tcpWindow: parseIntHeader(headers[HEADER_TCP_WINDOW], log, HEADER_TCP_WINDOW, MAX_U16)
132
+ tcpOptsOrder: parseIntHeader(headers[HEADER_TCP_OPTS_ORDER], log, HEADER_TCP_OPTS_ORDER, MAX_U32)
46
133
  };
47
134
  };
48
- var rawTlsSignalsForSession = (req) => {
135
+ var rawTlsSignalsForSession = (req) => rawTlsSignalsFromRecord(req);
136
+ /**
137
+ * Pull the raw TLS signals out of a persisted Session — or anything shaped
138
+ * like one — for a decision machine's `raw` bag, or to carry forward onto a
139
+ * new Session record.
140
+ *
141
+ * Six call sites used to name every field by hand, so adding one to the
142
+ * probe meant remembering six places; the fields that were forgotten read as
143
+ * `undefined` and the rules gating on them silently never fired.
144
+ */
145
+ var rawTlsSignalsFromRecord = (record) => {
49
146
  const out = {};
50
- if (req.synNs !== void 0) out.synNs = req.synNs;
51
- if (req.synackNs !== void 0) out.synackNs = req.synackNs;
52
- if (req.ackNs !== void 0) out.ackNs = req.ackNs;
53
- if (req.observedTtl !== void 0) out.observedTtl = req.observedTtl;
54
- if (req.tcpMss !== void 0) out.tcpMss = req.tcpMss;
55
- if (req.tcpWscale !== void 0) out.tcpWscale = req.tcpWscale;
56
- if (req.tcpOptsFlags !== void 0) out.tcpOptsFlags = req.tcpOptsFlags;
57
- if (req.tcpOptsOrder !== void 0) out.tcpOptsOrder = req.tcpOptsOrder;
58
- if (req.tcpWindow !== void 0) out.tcpWindow = req.tcpWindow;
147
+ if (!record) return out;
148
+ for (const key of RAW_TLS_SIGNAL_KEYS) {
149
+ const value = record[key];
150
+ if (value !== void 0) Object.assign(out, { [key]: value });
151
+ }
59
152
  return out;
60
153
  };
61
154
  var rawTlsSignalsMiddleware = (env) => {
62
155
  return async (req, res, next) => {
63
156
  try {
64
157
  const signals = getRawTlsSignals(req.headers, req.logger);
65
- if (signals.synNs !== void 0) req.synNs = signals.synNs;
66
- if (signals.synackNs !== void 0) req.synackNs = signals.synackNs;
67
- if (signals.ackNs !== void 0) req.ackNs = signals.ackNs;
68
- if (signals.observedTtl !== void 0) req.observedTtl = signals.observedTtl;
69
- if (signals.tcpMss !== void 0) req.tcpMss = signals.tcpMss;
70
- if (signals.tcpWscale !== void 0) req.tcpWscale = signals.tcpWscale;
71
- if (signals.tcpOptsFlags !== void 0) req.tcpOptsFlags = signals.tcpOptsFlags;
72
- if (signals.tcpOptsOrder !== void 0) req.tcpOptsOrder = signals.tcpOptsOrder;
73
- if (signals.tcpWindow !== void 0) req.tcpWindow = signals.tcpWindow;
158
+ for (const key of RAW_TLS_SIGNAL_KEYS) {
159
+ const value = signals[key];
160
+ if (value !== void 0) Object.assign(req, { [key]: value });
161
+ }
74
162
  if (Object.values(signals).some((v) => v !== void 0)) req.logger = req.logger.with(signals, "rawTlsSignals");
75
163
  next();
76
164
  } catch (err) {
@@ -79,4 +167,4 @@ var rawTlsSignalsMiddleware = (env) => {
79
167
  };
80
168
  };
81
169
  //#endregion
82
- export { getRawTlsSignals, rawTlsSignalsForSession, rawTlsSignalsMiddleware };
170
+ export { getRawTlsSignals, rawTlsSignalsForSession, rawTlsSignalsFromRecord, rawTlsSignalsMiddleware };
@@ -1 +1 @@
1
- {"version":3,"file":"rawTlsSignalsMiddleware.js","sourceRoot":"","sources":["../../src/api/rawTlsSignalsMiddleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rawTlsSignalsMiddleware.js","sourceRoot":"","sources":["../../src/api/rawTlsSignalsMiddleware.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { metricsMiddleware } from "./metrics.js";
2
+ import { rawTlsSignalsMiddleware } from "./rawTlsSignalsMiddleware.js";
2
3
  import { getVerdictCache } from "./blacklistRequestInspector.js";
3
4
  import { initDetectorBundlePool } from "../tasks/detection/bundlePool.js";
4
5
  import { blockMiddleware } from "./block.js";
5
- import { rawTlsSignalsMiddleware } from "./rawTlsSignalsMiddleware.js";
6
6
  import { prosopoRouter } from "./captcha.js";
7
7
  import { prosopoVerifyRouter } from "./verify.js";
8
8
  import { ja4Middleware } from "./ja4Middleware.js";
@@ -19,10 +19,10 @@ import { ipInfoMiddleware } from "./ipInfoMiddleware.js";
19
19
  import { robotsMiddleware } from "./robotsMiddleware.js";
20
20
  import { parseLogLevel } from "@prosopo/logger";
21
21
  import { AdminApiPaths, ClientApiPaths } from "@prosopo/types";
22
+ import { apiExpressRouterFactory, authMiddleware, createApiExpressDefaultEndpointAdapter, requestLoggerMiddleware } from "@prosopo/api-express-router";
22
23
  import fs from "node:fs";
23
24
  import path from "node:path";
24
25
  import https from "node:https";
25
- import { apiExpressRouterFactory, authMiddleware, createApiExpressDefaultEndpointAdapter, requestLoggerMiddleware } from "@prosopo/api-express-router";
26
26
  import express from "express";
27
27
  import { fileURLToPath } from "node:url";
28
28
  import { i18nMiddleware } from "@prosopo/locale";
@@ -13,6 +13,15 @@ var resolveScoreLadder = (configured) => {
13
13
  };
14
14
  };
15
15
  /**
16
+ * The types any session minted by /frictionless may be. The owner's
17
+ * `frictionlessTypes` only governs the frictionless flow, so a site pinned to
18
+ * a concrete `captchaType` is held to the feature flags alone.
19
+ */
20
+ var resolveSiteAllowedCaptchaTypes = (settings) => (0, _prosopo_types.resolveAllowedCaptchaTypes)({
21
+ captchaTypeFeatureFlags: settings.captchaTypeFeatureFlags,
22
+ ...(!settings.captchaType || settings.captchaType === _prosopo_types.CaptchaType.frictionless) && { frictionlessTypes: settings.frictionlessTypes }
23
+ });
24
+ /**
16
25
  * Size an image challenge by how much was actually found. `base` is the
17
26
  * sitekey's ordinary image round count; each triggered signal adds a round,
18
27
  * capped by `MAX_DETECTOR_EXTRA_IMAGE_ROUNDS`. A session with nothing
@@ -24,3 +33,4 @@ var getRoundsFromTriggeredDetectors = (base, triggeredDetectors) => base + Math.
24
33
  //#endregion
25
34
  exports.getRoundsFromTriggeredDetectors = getRoundsFromTriggeredDetectors;
26
35
  exports.resolveScoreLadder = resolveScoreLadder;
36
+ exports.resolveSiteAllowedCaptchaTypes = resolveSiteAllowedCaptchaTypes;
@@ -1,7 +1,9 @@
1
1
  const require_metrics = require("../../metrics.cjs");
2
2
  const require_dnsEventUrl = require("../../dnsEventUrl.cjs");
3
+ const require_rawTlsSignalsMiddleware = require("../../rawTlsSignalsMiddleware.cjs");
3
4
  const require_compositeIpAddress = require("../../../compositeIpAddress.cjs");
4
5
  const require_blacklistRequestInspector = require("../../blacklistRequestInspector.cjs");
6
+ const require_captchaTypeSelection = require("../../../tasks/captchaTypeSelection.cjs");
5
7
  const require_devicePlatform = require("../../../utils/devicePlatform.cjs");
6
8
  const require_tasks = require("../../../tasks/tasks.cjs");
7
9
  const require_apiToggleMaintenanceModeEndpoint = require("../../admin/apiToggleMaintenanceModeEndpoint.cjs");
@@ -9,7 +11,6 @@ const require_testSiteKey = require("../../testSiteKey.cjs");
9
11
  const require_normalizeRequestIp = require("../../../utils/normalizeRequestIp.cjs");
10
12
  const require_hashUserAgent = require("../../../utils/hashUserAgent.cjs");
11
13
  const require_hashUserIp = require("../../../utils/hashUserIp.cjs");
12
- const require_rawTlsSignalsMiddleware = require("../../rawTlsSignalsMiddleware.cjs");
13
14
  const require_maintenanceModeResponses = require("../maintenanceModeResponses.cjs");
14
15
  const require_trafficFilterRequestTime = require("../trafficFilterRequestTime.cjs");
15
16
  const require_honeypotResponse = require("./honeypotResponse.cjs");
@@ -17,6 +18,7 @@ const require_accessPolicy = require("./accessPolicy.cjs");
17
18
  const require_constants = require("./constants.cjs");
18
19
  const require_decisionMachine = require("./decisionMachine.cjs");
19
20
  const require_decryptSimdReadings = require("./decryptSimdReadings.cjs");
21
+ const require_refreshLineage = require("./refreshLineage.cjs");
20
22
  const require_sessionDedup = require("./sessionDedup.cjs");
21
23
  const require_shortCircuit = require("./shortCircuit.cjs");
22
24
  let _prosopo_common = require("@prosopo/common");
@@ -38,7 +40,7 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
38
40
  }
39
41
  }));
40
42
  });
41
- const { token, headHash, dapp, user, mode, simdReadings, detectorSessionId, currentUrl: reportedCurrentUrl, iframeUrl: reportedIframeUrl, clientSessionId } = _prosopo_types.GetFrictionlessCaptchaChallengeRequestBody.parse(req.body);
43
+ const { token, headHash, dapp, user, mode, simdReadings, detectorSessionId, currentUrl: reportedCurrentUrl, iframeUrl: reportedIframeUrl, clientSessionId, refreshOf } = _prosopo_types.GetFrictionlessCaptchaChallengeRequestBody.parse(req.body);
42
44
  const currentUrl = (0, _prosopo_util.sanitisePageUrl)(reportedCurrentUrl);
43
45
  const iframeUrl = (0, _prosopo_util.sanitisePageUrl)(reportedIframeUrl);
44
46
  const isProtect = (0, _prosopo_util.isProtectDeployment)(currentUrl, iframeUrl);
@@ -108,6 +110,8 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
108
110
  i18n: req.i18n,
109
111
  logger: req.logger
110
112
  }));
113
+ const allowedCaptchaTypes = require_constants.resolveSiteAllowedCaptchaTypes(clientRecord.settings);
114
+ tasks.frictionlessManager.setAllowedCaptchaTypes(allowedCaptchaTypes);
111
115
  if (dedup) {
112
116
  const dedupCountryCode = req.ipInfo && "isValid" in req.ipInfo && req.ipInfo.isValid ? req.ipInfo.countryCode : void 0;
113
117
  const dedupAsn = req.ipInfo && "isValid" in req.ipInfo && req.ipInfo.isValid ? req.ipInfo.asnNumber : void 0;
@@ -144,16 +148,17 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
144
148
  ...dedupTrafficPolicies && { trafficPolicies: dedupTrafficPolicies }
145
149
  }
146
150
  }) : { captchaType: cachedCaptchaType };
147
- const dedupConflictsWithRouting = dedupRouted.captchaType !== cachedCaptchaType;
151
+ const dedupConflictsWithRouting = require_captchaTypeSelection.coerceToEnabledCaptchaType(dedupRouted.captchaType, allowedCaptchaTypes) !== cachedCaptchaType;
152
+ const dedupConflictsWithAllowedTypes = require_captchaTypeSelection.coerceToEnabledCaptchaType(cachedCaptchaType, allowedCaptchaTypes) !== cachedCaptchaType;
148
153
  let dedupConflictsWithBundle = false;
149
154
  let dedupIncomingBundleId;
150
155
  if (detectorSessionId && dedup.session.bundleId) {
151
156
  dedupIncomingBundleId = (await tasks.frictionlessManager.resolveBundleByDetectorSession(detectorSessionId))?.bundleId;
152
157
  if (dedupIncomingBundleId !== void 0 && dedupIncomingBundleId !== dedup.session.bundleId) dedupConflictsWithBundle = true;
153
158
  }
154
- if (dedupConflictsWithPolicy || dedupConflictsWithRouting) {
159
+ if (dedupConflictsWithPolicy || dedupConflictsWithRouting || dedupConflictsWithAllowedTypes) {
155
160
  req.logger.info(() => ({
156
- msg: "Evicting reused session: cached captchaType conflicts with access policy or routing machine",
161
+ msg: "Evicting reused session: cached captchaType conflicts with access policy, routing machine or allowed types",
157
162
  data: {
158
163
  userSitekeyIpHash,
159
164
  sessionId: dedup.sessionId,
@@ -162,7 +167,8 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
162
167
  policyType: dedupAccessPolicy?.type,
163
168
  policyCaptchaType: dedupAccessPolicy?.captchaType
164
169
  },
165
- ...dedupConflictsWithRouting && { routedCaptchaType: dedupRouted.captchaType }
170
+ ...dedupConflictsWithRouting && { routedCaptchaType: dedupRouted.captchaType },
171
+ ...dedupConflictsWithAllowedTypes && { allowedCaptchaTypes }
166
172
  }
167
173
  }));
168
174
  await tasks.db.checkAndRemoveSession(dedup.sessionId);
@@ -306,6 +312,7 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
306
312
  ...triggeredDetectors && triggeredDetectors.length > 0 && { triggeredDetectors },
307
313
  ...shadowDomPenalty !== void 0 && { shadowDomPenalty }
308
314
  };
315
+ const refreshLineage = await require_refreshLineage.resolveRefreshLineage(tasks.db, refreshOf, dapp, /* @__PURE__ */ new Date());
309
316
  tasks.frictionlessManager.setSessionParams({
310
317
  token: sessionToken,
311
318
  score: botScore,
@@ -326,6 +333,7 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
326
333
  ...decodedSimdReadings && { simdReadings: decodedSimdReadings },
327
334
  ...d !== void 0 && { d },
328
335
  ...clientSessionId && { clientMetaData: { clientSessionId } },
336
+ ...refreshLineage,
329
337
  ...req.tcpToChelloUs !== void 0 && { tcpToChelloUs: req.tcpToChelloUs },
330
338
  ...req.chelloToHandshakeUs !== void 0 && { chelloToHandshakeUs: req.chelloToHandshakeUs },
331
339
  ...require_rawTlsSignalsMiddleware.rawTlsSignalsForSession(req)
@@ -341,7 +349,6 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
341
349
  score: botScore,
342
350
  imageMaxRounds: clientRecord.settings.imageMaxRounds,
343
351
  imageMinRounds: clientRecord.settings.imageMinRounds,
344
- frictionlessTypes: clientRecord.settings.frictionlessTypes,
345
352
  baseImageRounds: env.config.captchas.solved.count,
346
353
  puzzleMaxDifficulty: clientRecord.settings.puzzleMaxDifficulty,
347
354
  platform: require_devicePlatform.derivePlatform(requestUserAgent, webView, { ...typeof ipInfoMobile === "boolean" && { isMobile: ipInfoMobile } }),
@@ -0,0 +1,20 @@
1
+ //#region src/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.ts
2
+ /**
3
+ * Work out where a refresh sits in its chain from the session it replaced.
4
+ *
5
+ * An unknown session, or one from another site, is ignored rather than
6
+ * rejected: the request then mints an ordinary session, which is all a client
7
+ * that never sent `refreshOf` would have got.
8
+ */
9
+ var resolveRefreshLineage = async (db, refreshOf, siteKey, now) => {
10
+ if (!refreshOf) return void 0;
11
+ const replaced = await db.getSessionRecordBySessionId(refreshOf);
12
+ if (!replaced || replaced.siteKey !== siteKey) return void 0;
13
+ return {
14
+ refreshOf,
15
+ refreshCount: (replaced.refreshCount ?? 0) + 1,
16
+ refreshedAfterMs: Math.max(0, now.getTime() - new Date(replaced.createdAt).getTime())
17
+ };
18
+ };
19
+ //#endregion
20
+ exports.resolveRefreshLineage = resolveRefreshLineage;
@@ -13,6 +13,7 @@ const require_requestBodySummary = require("../requestBodySummary.cjs");
13
13
  let _prosopo_common = require("@prosopo/common");
14
14
  let _prosopo_types = require("@prosopo/types");
15
15
  let _prosopo_util = require("@prosopo/util");
16
+ let _prosopo_puzzle_assets = require("@prosopo/puzzle-assets");
16
17
  //#region src/api/captcha/getPuzzleCaptchaChallenge.ts
17
18
  var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (req, res, next) => {
18
19
  let parsed;
@@ -113,6 +114,29 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
113
114
  targetX: challenge.targetX,
114
115
  targetY: challenge.targetY
115
116
  }, effectivePuzzleSettings, effectivePieceSize);
117
+ await tasks.db.updatePuzzleCaptchaRecord(challenge.challenge, { render: {
118
+ ...sessionRecord?.puzzleLevel !== void 0 && { level: sessionRecord.puzzleLevel },
119
+ pieceSize: images.pieceSize,
120
+ geometry: {
121
+ width: _prosopo_puzzle_assets.DEFAULT_GEOMETRY.width,
122
+ height: _prosopo_puzzle_assets.DEFAULT_GEOMETRY.height,
123
+ notchSize: _prosopo_puzzle_assets.DEFAULT_GEOMETRY.notchSize
124
+ },
125
+ settings: {
126
+ decoyCount: effectivePuzzleSettings.decoyCount,
127
+ decoyEdgeDarkness: effectivePuzzleSettings.decoyEdgeDarkness,
128
+ decoyBodyBrightness: effectivePuzzleSettings.decoyBodyBrightness,
129
+ holeDarken: effectivePuzzleSettings.holeDarken,
130
+ decoyHoleDarken: effectivePuzzleSettings.decoyHoleDarken
131
+ },
132
+ backgroundSeed: images.backgroundSeed,
133
+ renderSeed: images.renderSeed
134
+ } }).catch((updateErr) => {
135
+ req.logger.warn(() => ({
136
+ err: updateErr,
137
+ msg: "Failed to patch puzzle render inputs onto the challenge record"
138
+ }));
139
+ });
116
140
  const padBytes = trafficVerdict.padBytes;
117
141
  const getPuzzleCaptchaResponse = {
118
142
  [_prosopo_types.ApiParams.status]: "ok",
@@ -1,11 +1,11 @@
1
1
  const require_validateAddress = require("../validateAddress.cjs");
2
+ const require_rawTlsSignalsMiddleware = require("../rawTlsSignalsMiddleware.cjs");
2
3
  const require_captchaTypeSelection = require("../../tasks/captchaTypeSelection.cjs");
3
4
  const require_puzzleDifficulty = require("../../tasks/puzzle/puzzleDifficulty.cjs");
4
5
  const require_devicePlatform = require("../../utils/devicePlatform.cjs");
5
6
  const require_tasks = require("../../tasks/tasks.cjs");
6
7
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
7
8
  const require_testSiteKey = require("../testSiteKey.cjs");
8
- const require_rawTlsSignalsMiddleware = require("../rawTlsSignalsMiddleware.cjs");
9
9
  const require_requestBodySummary = require("../requestBodySummary.cjs");
10
10
  let _prosopo_common = require("@prosopo/common");
11
11
  let _prosopo_types = require("@prosopo/types");
@@ -100,8 +100,9 @@ var submitPoWCaptchaSolution_default = (env) => async (req, res, next) => {
100
100
  chelloToHandshakeUs: req.chelloToHandshakeUs,
101
101
  ...require_rawTlsSignalsMiddleware.rawTlsSignalsForSession(req)
102
102
  }, {
103
- frictionlessTypes: clientRecord.settings?.frictionlessTypes,
104
- imageMaxRounds: clientRecord.settings?.imageMaxRounds
103
+ allowedCaptchaTypes: (0, _prosopo_types.resolveAllowedCaptchaTypes)(clientRecord.settings),
104
+ imageMaxRounds: clientRecord.settings?.imageMaxRounds,
105
+ puzzleMaxDifficulty: clientRecord.settings?.puzzleMaxDifficulty
105
106
  });
106
107
  const response = {
107
108
  status: "ok",
@@ -144,17 +145,19 @@ var buildEscalation = async (tasks, result, challenge, perConnectionSignals, sit
144
145
  const originSession = await tasks.db.getSessionRecordBySessionId(powRecord.sessionId);
145
146
  if (!originSession) return void 0;
146
147
  const routed = result.routingOutput;
147
- const escalatedType = require_captchaTypeSelection.coerceToEnabledCaptchaType(routed.captchaType, siteConstraints?.frictionlessTypes);
148
+ const escalatedType = require_captchaTypeSelection.coerceToEnabledCaptchaType(routed.captchaType, siteConstraints?.allowedCaptchaTypes);
148
149
  if (escalatedType === _prosopo_types.CaptchaType.pow) return void 0;
149
150
  const imageMaxRounds = siteConstraints?.imageMaxRounds ?? _prosopo_types.imageMaxRoundsDefault;
150
151
  const escalationPuzzleOverrides = (() => {
151
152
  if (escalatedType !== _prosopo_types.CaptchaType.puzzle) return void 0;
152
- const level = (0, _prosopo_captcha_severity.severityToPuzzleDifficulty)(routed.solvedImagesCount ?? originSession.solvedImagesCount, tasks.config.captchas.solved.count);
153
+ const { isMobile } = require_devicePlatform.derivePlatform(originSession.headers?.["user-agent"] ?? "", originSession.webView);
154
+ const level = (0, _prosopo_captcha_severity.severityToPuzzleDifficulty)(routed.solvedImagesCount ?? originSession.solvedImagesCount, tasks.config.captchas.solved.count, (0, _prosopo_captcha_severity.resolveMaxEscalationLevel)(siteConstraints?.puzzleMaxDifficulty, isMobile));
153
155
  if (level === 0) return void 0;
154
156
  const difficulty = require_puzzleDifficulty.samplePuzzleDifficulty(level, _prosopo_puzzle_assets.DEFAULT_RENDER_SETTINGS.holeDarken);
155
157
  return {
156
158
  puzzleTolerance: difficulty.tolerance,
157
- puzzle: difficulty.puzzle
159
+ puzzle: difficulty.puzzle,
160
+ puzzleLevel: difficulty.level
158
161
  };
159
162
  })();
160
163
  const selectionReason = routed.reason ?? originSession.reason;
@@ -185,15 +188,7 @@ var buildEscalation = async (tasks, result, challenge, perConnectionSignals, sit
185
188
  originSessionId: originSession.sessionId,
186
189
  tcpToChelloUs: perConnectionSignals?.tcpToChelloUs,
187
190
  chelloToHandshakeUs: perConnectionSignals?.chelloToHandshakeUs,
188
- synNs: perConnectionSignals?.synNs,
189
- synackNs: perConnectionSignals?.synackNs,
190
- ackNs: perConnectionSignals?.ackNs,
191
- observedTtl: perConnectionSignals?.observedTtl,
192
- tcpMss: perConnectionSignals?.tcpMss,
193
- tcpWscale: perConnectionSignals?.tcpWscale,
194
- tcpOptsFlags: perConnectionSignals?.tcpOptsFlags,
195
- tcpOptsOrder: perConnectionSignals?.tcpOptsOrder,
196
- tcpWindow: perConnectionSignals?.tcpWindow,
191
+ ...require_rawTlsSignalsMiddleware.rawTlsSignalsFromRecord(perConnectionSignals),
197
192
  puzzleTolerance: escalationPuzzleOverrides?.puzzleTolerance,
198
193
  puzzle: escalationPuzzleOverrides?.puzzle,
199
194
  clientMetaData: originSession.clientMetaData