@prosopo/provider 4.11.2 → 4.11.4
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/.turbo/turbo-build$colon$cjs.log +7 -7
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +47 -0
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/blacklistRequestInspector.d.ts +3 -1
- package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
- package/dist/api/blacklistRequestInspector.js +11 -3
- package/dist/api/blacklistRequestInspector.js.map +1 -1
- package/dist/cjs/api/blacklistRequestInspector.cjs +11 -3
- package/dist/cjs/tasks/captchaManager.cjs +11 -4
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +36 -1
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +31 -1
- package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +22 -10
- package/dist/tasks/captchaManager.d.ts +3 -1
- package/dist/tasks/captchaManager.d.ts.map +1 -1
- package/dist/tasks/captchaManager.js +11 -4
- package/dist/tasks/captchaManager.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.js +37 -2
- package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js +32 -2
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
- package/dist/tasks/spam/checkTrafficFilter.d.ts +1 -1
- package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
- package/dist/tasks/spam/checkTrafficFilter.js +22 -10
- package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
- package/dist/tests/integration/clientSettingsPersistence.integration.test.js +1 -0
- package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +38 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +24 -0
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +86 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
- package/package.json +19 -19
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.11.
|
|
2
|
+
> @prosopo/provider@4.11.4 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -114,10 +114,10 @@ rendering chunks...
|
|
|
114
114
|
[2mdist/cjs/[22m[36mapi/captcha/maintenanceModeResponses.cjs [39m[1m[2m 2.20 kB[22m[1m[22m
|
|
115
115
|
[2mdist/cjs/[22m[36mapi/captcha/checkSpamEmail.cjs [39m[1m[2m 2.47 kB[22m[1m[22m
|
|
116
116
|
[2mdist/cjs/[22m[36mapi/captcha.cjs [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
117
|
-
[2mdist/cjs/[22m[36mtasks/spam/checkTrafficFilter.cjs [39m[1m[2m 2.68 kB[22m[1m[22m
|
|
118
117
|
[2mdist/cjs/[22m[36mapi/ja4Middleware.cjs [39m[1m[2m 2.74 kB[22m[1m[22m
|
|
119
118
|
[2mdist/cjs/[22m[36mapi/captcha/submitPuzzleCaptchaSolution.cjs [39m[1m[2m 3.00 kB[22m[1m[22m
|
|
120
119
|
[2mdist/cjs/[22m[36mtasks/spam/evaluateEmailSpamRules.cjs [39m[1m[2m 3.03 kB[22m[1m[22m
|
|
120
|
+
[2mdist/cjs/[22m[36mtasks/spam/checkTrafficFilter.cjs [39m[1m[2m 3.06 kB[22m[1m[22m
|
|
121
121
|
[2mdist/cjs/[22m[36mapi/admin/apiDnsEventEndpoint.cjs [39m[1m[2m 3.15 kB[22m[1m[22m
|
|
122
122
|
[2mdist/cjs/[22m[36mapi/captcha/submitImageCaptchaSolution.cjs [39m[1m[2m 3.20 kB[22m[1m[22m
|
|
123
123
|
[2mdist/cjs/[22m[36mutils/dns.cjs [39m[1m[2m 3.38 kB[22m[1m[22m
|
|
@@ -135,21 +135,21 @@ rendering chunks...
|
|
|
135
135
|
[2mdist/cjs/[22m[36mapi/captcha/getPuzzleCaptchaChallenge.cjs [39m[1m[2m 6.42 kB[22m[1m[22m
|
|
136
136
|
[2mdist/cjs/[22m[36mapi/startProviderApi.cjs [39m[1m[2m 9.53 kB[22m[1m[22m
|
|
137
137
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs [39m[1m[2m 9.54 kB[22m[1m[22m
|
|
138
|
-
[2mdist/cjs/[22m[36mapi/blacklistRequestInspector.cjs [39m[1m[2m10.00 kB[22m[1m[22m
|
|
139
138
|
[2mdist/cjs/[22m[36mtasks/decisionMachine/decisionMachineRunner.cjs [39m[1m[2m10.19 kB[22m[1m[22m
|
|
140
139
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/handler.cjs [39m[1m[2m10.20 kB[22m[1m[22m
|
|
140
|
+
[2mdist/cjs/[22m[36mapi/blacklistRequestInspector.cjs [39m[1m[2m10.45 kB[22m[1m[22m
|
|
141
141
|
[2mdist/cjs/[22m[36mapi/verify.cjs [39m[1m[2m10.86 kB[22m[1m[22m
|
|
142
142
|
[2mdist/cjs/[22m[36mutil.cjs [39m[1m[2m12.59 kB[22m[1m[22m
|
|
143
143
|
[2mdist/cjs/[22m[36mtasks/client/clientTasks.cjs [39m[1m[2m15.63 kB[22m[1m[22m
|
|
144
|
-
[2mdist/cjs/[22m[36mtasks/captchaManager.cjs [39m[1m[2m16.08 kB[22m[1m[22m
|
|
145
144
|
[2mdist/cjs/[22m[36mtasks/frictionless/frictionlessTasks.cjs [39m[1m[2m16.20 kB[22m[1m[22m
|
|
145
|
+
[2mdist/cjs/[22m[36mtasks/captchaManager.cjs [39m[1m[2m16.42 kB[22m[1m[22m
|
|
146
146
|
[2mdist/cjs/[22m[36mtasks/detection/decodeBehavior.cjs [39m[1m[2m19.16 kB[22m[1m[22m
|
|
147
|
-
[2mdist/cjs/[22m[36mtasks/puzzleCaptcha/puzzleTasks.cjs [39m[1m[
|
|
147
|
+
[2mdist/cjs/[22m[36mtasks/puzzleCaptcha/puzzleTasks.cjs [39m[1m[2m21.24 kB[22m[1m[22m
|
|
148
148
|
[2mdist/cjs/[22m[36mtasks/detection/decodeSimd.cjs [39m[1m[2m21.53 kB[22m[1m[22m
|
|
149
|
-
[2mdist/cjs/[22m[36mtasks/powCaptcha/powTasks.cjs [39m[1m[
|
|
149
|
+
[2mdist/cjs/[22m[36mtasks/powCaptcha/powTasks.cjs [39m[1m[2m23.67 kB[22m[1m[22m
|
|
150
150
|
[2mdist/cjs/[22m[36mtasks/imgCaptcha/imgCaptchaTasks.cjs [39m[1m[2m28.48 kB[22m[1m[22m
|
|
151
151
|
[2mdist/cjs/[22m[36mtasks/detection/decodePayload.cjs [39m[1m[2m29.94 kB[22m[1m[22m
|
|
152
|
-
[32m✓ built in
|
|
152
|
+
[32m✓ built in 576ms[39m
|
|
153
153
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeBehavior.js
|
|
154
154
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodePayload.js
|
|
155
155
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeSimd.js
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.11.
|
|
2
|
+
> @prosopo/provider@4.11.4 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
2:10:58 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../util/tsconfig.json
|
|
8
8
|
* ../logger/tsconfig.json
|
|
@@ -25,47 +25,47 @@
|
|
|
25
25
|
* ../load-balancer/tsconfig.json
|
|
26
26
|
* tsconfig.json
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
2:10:58 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
2:10:58 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
2:10:58 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
2:10:58 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
2:10:58 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
2:10:58 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
2:10:58 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/procaptcha/api.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
2:10:58 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
2:10:58 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
2:10:58 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/redisClient.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
2:10:58 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
2:10:58 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/ruleRecord.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
2:10:58 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
2:10:58 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/integration/centralStreamingEnrichment.integration.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
2:10:58 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
2:10:58 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/env.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
2:10:59 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/index.ts' is older than output '../env/tsconfig.tsbuildinfo'
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
2:10:59 PM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/apiExpressRouterFactory.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
2:10:59 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/tests/mocks/data/captchas.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
2:10:59 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/balancer.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
2:10:59 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
2:10:59 PM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
|
|
71
71
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.11.
|
|
2
|
+
> @prosopo/provider@4.11.4 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/provider@4.11.
|
|
6
|
+
> @prosopo/provider@4.11.4 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -117,12 +117,12 @@ rendering chunks...
|
|
|
117
117
|
[2mdist/[22m[36mapi/ja4Middleware.js [39m[1m[2m 2.19 kB[22m[1m[22m
|
|
118
118
|
[2mdist/[22m[36mapi/captcha/checkSpamEmail.js [39m[1m[2m 2.39 kB[22m[1m[22m
|
|
119
119
|
[2mdist/[22m[36mapi/captcha.js [39m[1m[2m 2.49 kB[22m[1m[22m
|
|
120
|
-
[2mdist/[22m[36mtasks/spam/checkTrafficFilter.js [39m[1m[2m 2.57 kB[22m[1m[22m
|
|
121
120
|
[2mdist/[22m[36mutils/dns.js [39m[1m[2m 2.57 kB[22m[1m[22m
|
|
122
121
|
[2mdist/[22m[36mindex.js [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
123
122
|
[2mdist/[22m[36mapi/admin/apiDnsEventEndpoint.js [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
124
123
|
[2mdist/[22m[36mtasks/spam/evaluateEmailSpamRules.js [39m[1m[2m 2.84 kB[22m[1m[22m
|
|
125
124
|
[2mdist/[22m[36mapi/captcha/submitPuzzleCaptchaSolution.js [39m[1m[2m 2.92 kB[22m[1m[22m
|
|
125
|
+
[2mdist/[22m[36mtasks/spam/checkTrafficFilter.js [39m[1m[2m 2.95 kB[22m[1m[22m
|
|
126
126
|
[2mdist/[22m[36mapi/admin/apiAdminRoutesProvider.js [39m[1m[2m 2.99 kB[22m[1m[22m
|
|
127
127
|
[2mdist/[22m[36mapi/captcha/submitImageCaptchaSolution.js [39m[1m[2m 3.07 kB[22m[1m[22m
|
|
128
128
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js [39m[1m[2m 3.59 kB[22m[1m[22m
|
|
@@ -137,21 +137,21 @@ rendering chunks...
|
|
|
137
137
|
[2mdist/[22m[36mapi/captcha/getPuzzleCaptchaChallenge.js [39m[1m[2m 6.17 kB[22m[1m[22m
|
|
138
138
|
[2mdist/[22m[36mapi/startProviderApi.js [39m[1m[2m 7.65 kB[22m[1m[22m
|
|
139
139
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js [39m[1m[2m 9.17 kB[22m[1m[22m
|
|
140
|
-
[2mdist/[22m[36mapi/blacklistRequestInspector.js [39m[1m[2m 9.75 kB[22m[1m[22m
|
|
141
140
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/handler.js [39m[1m[2m 9.87 kB[22m[1m[22m
|
|
142
141
|
[2mdist/[22m[36mtasks/decisionMachine/decisionMachineRunner.js [39m[1m[2m10.14 kB[22m[1m[22m
|
|
142
|
+
[2mdist/[22m[36mapi/blacklistRequestInspector.js [39m[1m[2m10.21 kB[22m[1m[22m
|
|
143
143
|
[2mdist/[22m[36mapi/verify.js [39m[1m[2m10.44 kB[22m[1m[22m
|
|
144
144
|
[2mdist/[22m[36mutil.js [39m[1m[2m12.17 kB[22m[1m[22m
|
|
145
145
|
[2mdist/[22m[36mtasks/client/clientTasks.js [39m[1m[2m15.37 kB[22m[1m[22m
|
|
146
|
-
[2mdist/[22m[36mtasks/captchaManager.js [39m[1m[2m15.
|
|
146
|
+
[2mdist/[22m[36mtasks/captchaManager.js [39m[1m[2m15.77 kB[22m[1m[22m
|
|
147
147
|
[2mdist/[22m[36mtasks/frictionless/frictionlessTasks.js [39m[1m[2m15.89 kB[22m[1m[22m
|
|
148
148
|
[2mdist/[22m[36mtasks/detection/decodeBehavior.js [39m[1m[2m19.02 kB[22m[1m[22m
|
|
149
|
-
[2mdist/[22m[36mtasks/puzzleCaptcha/puzzleTasks.js [39m[1m[2m20.
|
|
149
|
+
[2mdist/[22m[36mtasks/puzzleCaptcha/puzzleTasks.js [39m[1m[2m20.93 kB[22m[1m[22m
|
|
150
150
|
[2mdist/[22m[36mtasks/detection/decodeSimd.js [39m[1m[2m21.39 kB[22m[1m[22m
|
|
151
|
-
[2mdist/[22m[36mtasks/powCaptcha/powTasks.js [39m[1m[
|
|
151
|
+
[2mdist/[22m[36mtasks/powCaptcha/powTasks.js [39m[1m[2m23.26 kB[22m[1m[22m
|
|
152
152
|
[2mdist/[22m[36mtasks/imgCaptcha/imgCaptchaTasks.js [39m[1m[2m28.04 kB[22m[1m[22m
|
|
153
153
|
[2mdist/[22m[36mtasks/detection/decodePayload.js [39m[1m[2m29.92 kB[22m[1m[22m
|
|
154
|
-
[32m✓ built in 1.
|
|
154
|
+
[32m✓ built in 1.32s[39m
|
|
155
155
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeBehavior.js
|
|
156
156
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodePayload.js
|
|
157
157
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeSimd.js
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,52 @@
|
|
|
1
1
|
# @prosopo/provider
|
|
2
2
|
|
|
3
|
+
## 4.11.4
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- e89860e: Add an indexed `type` field on the access-rules Redis index and a `blockOnly` filter on `findRules`. The request-time block middleware and the verify-time hard-block check now pre-filter the candidate pool to Block rules at the Redis layer, so dense Restrict / routing-Block populations can no longer push hard-block rules past the server-side ranking cap. Schema rehash triggers automatic index recreate on next provider start.
|
|
7
|
+
- edcd450: Validate salt-encoded coords in PoW and puzzle verification and add a `CAPTCHA_INVALID_SALT` result reason. Invalid input now produces a disapproval rather than a partial write.
|
|
8
|
+
- 5295c4b: Traffic-filter `datacenterNameAllowlist` now matches `datacenterName`, `providerName`, or `asnOrganization` (was: `datacenterName` only). Lets the allowlist reach IPs where upstream sets `is_datacenter: true` without populating `datacenter.datacenter`.
|
|
9
|
+
|
|
10
|
+
New opt-in `trafficFilter.skipExtrasOnValidDnsPath` (default `false`): when on and `dnsEvent.pathValid === true`, skip the filter evaluation on the DNS peer and resolver IPs.
|
|
11
|
+
- Updated dependencies [e89860e]
|
|
12
|
+
- Updated dependencies [edcd450]
|
|
13
|
+
- Updated dependencies [5295c4b]
|
|
14
|
+
- @prosopo/user-access-policy@3.10.5
|
|
15
|
+
- @prosopo/util@3.3.1
|
|
16
|
+
- @prosopo/database@3.14.5
|
|
17
|
+
- @prosopo/types@4.7.2
|
|
18
|
+
- @prosopo/locale@3.2.5
|
|
19
|
+
- @prosopo/types-database@4.10.5
|
|
20
|
+
- @prosopo/datasets@3.1.37
|
|
21
|
+
- @prosopo/keyring@2.9.43
|
|
22
|
+
- @prosopo/logger@1.0.4
|
|
23
|
+
- @prosopo/env@3.5.18
|
|
24
|
+
- @prosopo/api@3.5.2
|
|
25
|
+
- @prosopo/api-express-router@3.1.28
|
|
26
|
+
- @prosopo/common@3.1.40
|
|
27
|
+
- @prosopo/ipinfo@0.2.23
|
|
28
|
+
- @prosopo/load-balancer@2.9.19
|
|
29
|
+
- @prosopo/types-env@2.9.27
|
|
30
|
+
- @prosopo/api-route@2.6.48
|
|
31
|
+
- @prosopo/redis-client@1.0.25
|
|
32
|
+
|
|
33
|
+
## 4.11.3
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- Updated dependencies [46fedf4]
|
|
37
|
+
- @prosopo/types@4.7.1
|
|
38
|
+
- @prosopo/api@3.5.1
|
|
39
|
+
- @prosopo/api-express-router@3.1.27
|
|
40
|
+
- @prosopo/database@3.14.4
|
|
41
|
+
- @prosopo/datasets@3.1.36
|
|
42
|
+
- @prosopo/env@3.5.17
|
|
43
|
+
- @prosopo/ipinfo@0.2.22
|
|
44
|
+
- @prosopo/keyring@2.9.42
|
|
45
|
+
- @prosopo/load-balancer@2.9.18
|
|
46
|
+
- @prosopo/types-database@4.10.4
|
|
47
|
+
- @prosopo/types-env@2.9.26
|
|
48
|
+
- @prosopo/user-access-policy@3.10.4
|
|
49
|
+
|
|
3
50
|
## 4.11.2
|
|
4
51
|
### Patch Changes
|
|
5
52
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiRemoveDetectorKeyEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiRemoveDetectorKeyEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,KAAK,yBAAyB,GAAG,OAAO,yBAAyB,CAAC;AAElE,cAAM,4BACL,YAAW,WAAW,CAAC,yBAAyB,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAElE,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACxC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0BxB,oBAAoB;
|
|
1
|
+
{"version":3,"file":"apiRemoveDetectorKeyEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiRemoveDetectorKeyEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,KAAK,yBAAyB,GAAG,OAAO,yBAAyB,CAAC;AAElE,cAAM,4BACL,YAAW,WAAW,CAAC,yBAAyB,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAElE,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACxC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0BxB,oBAAoB;qBAM28oG,EAAG,SAAS;;;;;;;;;CAHl/oG;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
|
|
@@ -5,7 +5,9 @@ import { type AccessRule, type AccessRulesStorage, type UserScope, type UserScop
|
|
|
5
5
|
import type { NextFunction, Request, Response } from "express";
|
|
6
6
|
export declare const getRequestUserScope: (requestHeaders: Record<string, unknown>, ja4?: string, ip?: string, user?: string, headHash?: string, coords?: string, countryCode?: string, asn?: number) => Pick<UserScopeRecord, "userId" | "ja4Hash" | "userAgent" | "ip" | "headHash" | "coords" | "countryCode" | "asn">;
|
|
7
7
|
export declare const rankCandidateRules: (rules: AccessRule[], request: UserScope, requestClientId: string | undefined) => AccessRule[];
|
|
8
|
-
export declare const getPrioritisedAccessRule: (userAccessRulesStorage: AccessRulesStorage, userScope: UserScope | UserScopeRecord, clientId?: string
|
|
8
|
+
export declare const getPrioritisedAccessRule: (userAccessRulesStorage: AccessRulesStorage, userScope: UserScope | UserScopeRecord, clientId?: string, options?: {
|
|
9
|
+
blockOnly?: boolean;
|
|
10
|
+
}) => Promise<AccessRule[]>;
|
|
9
11
|
export declare class BlacklistRequestInspector {
|
|
10
12
|
private readonly userAccessRulesStorage;
|
|
11
13
|
private readonly environmentReadinessWaiter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blacklistRequestInspector.d.ts","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAKN,KAAK,cAAc,EAInB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAEN,KAAK,UAAU,EACf,KAAK,kBAAkB,EAEvB,KAAK,SAAS,EACd,KAAK,eAAe,EAGpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/D,eAAO,MAAM,mBAAmB,mBACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QACjC,MAAM,OACP,MAAM,SACJ,MAAM,aACF,MAAM,WACR,MAAM,gBACD,MAAM,QACd,MAAM,KACV,IAAI,CACN,eAAe,EACb,QAAQ,GACR,SAAS,GACT,WAAW,GACX,IAAI,GACJ,UAAU,GACV,QAAQ,GACR,aAAa,GACb,KAAK,CAgBP,CAAC;AAwIF,eAAO,MAAM,kBAAkB,UACvB,UAAU,EAAE,WACV,SAAS,mBACD,MAAM,GAAG,SAAS,KACjC,UAAU,EAWT,CAAC;AAyBL,eAAO,MAAM,wBAAwB,2BACZ,kBAAkB,aAC/B,SAAS,GAAG,eAAe,aAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"blacklistRequestInspector.d.ts","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAKN,KAAK,cAAc,EAInB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAEN,KAAK,UAAU,EACf,KAAK,kBAAkB,EAEvB,KAAK,SAAS,EACd,KAAK,eAAe,EAGpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/D,eAAO,MAAM,mBAAmB,mBACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QACjC,MAAM,OACP,MAAM,SACJ,MAAM,aACF,MAAM,WACR,MAAM,gBACD,MAAM,QACd,MAAM,KACV,IAAI,CACN,eAAe,EACb,QAAQ,GACR,SAAS,GACT,WAAW,GACX,IAAI,GACJ,UAAU,GACV,QAAQ,GACR,aAAa,GACb,KAAK,CAgBP,CAAC;AAwIF,eAAO,MAAM,kBAAkB,UACvB,UAAU,EAAE,WACV,SAAS,mBACD,MAAM,GAAG,SAAS,KACjC,UAAU,EAWT,CAAC;AAyBL,eAAO,MAAM,wBAAwB,2BACZ,kBAAkB,aAC/B,SAAS,GAAG,eAAe,aAC3B,MAAM,YACP;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,KAC/B,OAAO,CAAC,UAAU,EAAE,CAsBtB,CAAC;AAEF,qBAAa,yBAAyB;IAEpC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAM3C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAPH,sBAAsB,EAAE,kBAAkB,EAC1C,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAM/C,EAAE,CAAC,EAAE,iBAAiB,YAAA;IAG3B,2BAA2B,CACvC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC;IAyBH,kBAAkB,CAC9B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,CAAC;IA+GnB,OAAO,CAAC,mBAAmB;IAyF3B,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInD,SAAS,CAAC,qBAAqB,CAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC;QACF,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B;IAcD,SAAS,CAAC,cAAc,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACT,OAAO;CAGV"}
|
|
@@ -101,7 +101,7 @@ const rankCandidateRules = (rules, request, requestClientId) => rules.filter((ru
|
|
|
101
101
|
}
|
|
102
102
|
return policySeverity(b) - policySeverity(a);
|
|
103
103
|
});
|
|
104
|
-
const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clientId) => {
|
|
104
|
+
const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clientId, options) => {
|
|
105
105
|
const parsedUserScope = userScopeInput.parse(userScope);
|
|
106
106
|
const filter = {
|
|
107
107
|
...clientId && {
|
|
@@ -111,7 +111,8 @@ const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clien
|
|
|
111
111
|
},
|
|
112
112
|
policyScopeMatch: FilterScopeMatch.Greedy,
|
|
113
113
|
userScope: parsedUserScope,
|
|
114
|
-
userScopeMatch: FilterScopeMatch.Greedy
|
|
114
|
+
userScopeMatch: FilterScopeMatch.Greedy,
|
|
115
|
+
...options?.blockOnly && { blockOnly: true }
|
|
115
116
|
};
|
|
116
117
|
const candidates = await userAccessRulesStorage.findRules(
|
|
117
118
|
filter,
|
|
@@ -184,7 +185,14 @@ class BlacklistRequestInspector {
|
|
|
184
185
|
countryCode,
|
|
185
186
|
asn
|
|
186
187
|
),
|
|
187
|
-
clientId
|
|
188
|
+
clientId,
|
|
189
|
+
// Request-time middleware only ever fires on Block policies
|
|
190
|
+
// (Restrict rules flow through and let the captcha-creation
|
|
191
|
+
// path decorate the response). Restrict the Redis-side
|
|
192
|
+
// candidate pool so the SERVER_SIDE_RANK_TOP_N cap can't
|
|
193
|
+
// crowd out hard-block rules in clients with dense Restrict
|
|
194
|
+
// rule populations.
|
|
195
|
+
{ blockOnly: true }
|
|
188
196
|
);
|
|
189
197
|
const enforceable = (accessPolicies ?? []).filter(
|
|
190
198
|
(p) => !p.deferToVerify
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blacklistRequestInspector.js","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACN,SAAS,EACT,aAAa,EACb,WAAW,EACX,kBAAkB,EAGlB,YAAY,GAEZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,gBAAgB,EAGhB,gBAAgB,EAGhB,kBAAkB,EAClB,cAAc,GACd,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAClC,cAAuC,EACvC,GAAY,EACZ,EAAW,EACX,IAAa,EACb,QAAiB,EACjB,MAAe,EACf,WAAoB,EACpB,GAAY,EAWX,EAAE;IACH,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC;QAC7C,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;QACzC,CAAC,CAAC,SAAS,CAAC;IAEb,OAAO;QACN,GAAG,CAAC,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC7B,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC5B,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAC1C,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC7B,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,CAAC;QACnC,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,EAAE,GAAG,EAAE,CAAC;KACvC,CAAC;AACH,CAAC,CAAC;AAKF,MAAM,wBAAwB,GAAG;IAChC,QAAQ;IACR,SAAS;IACT,aAAa;IACb,eAAe;IACf,UAAU;IACV,QAAQ;IACR,aAAa;IACb,KAAK;CAC6C,CAAC;AAMpD,MAAM,cAAc,GAAG,CAAC,IAAgB,EAAY,EAAE;IACrD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACF,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;SAAM,IACN,IAAI,CAAC,gBAAgB,KAAK,SAAS;QACnC,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAClC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAOF,MAAM,sBAAsB,GAAG,CAC9B,OAAgC,EACf,EAAE;IACnB,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACZ,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC;IACD,OAAO,GAAqB,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,IAAgB,EAAW,EAAE,CACzD,IAAI,CAAC,SAAS,KAAK,SAAS;IAC5B,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC;AAE9E,MAAM,oBAAoB,GAAG,CAC5B,IAAgB,EAChB,SAA6B,EACnB,EAAE;IACZ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAGD,OAAO,CACN,SAAS,IAAK,IAAI,CAAC,gBAA2B;QAC9C,SAAS,IAAK,IAAI,CAAC,gBAA2B,CAC9C,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CACnB,IAAgB,EAChB,OAAkB,EAClB,eAAmC,EACzB,EAAE;IAGZ,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACd,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,wBAAwB,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7B,SAAS;QACV,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACvB,IAAgB,EAChB,eAAmC,EAC1B,EAAE;IACX,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;QACtE,KAAK,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,wBAAwB,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;IACF,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAKF,MAAM,cAAc,GAAG,CAAC,IAAgB,EAAU,EAAE,CACnD,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAS9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,KAAmB,EACnB,OAAkB,EAClB,eAAmC,EACpB,EAAE,CACjB,KAAK;KACH,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;KAC7D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IACd,MAAM,SAAS,GACd,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC;QACnC,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAyBL,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC5C,sBAA0C,EAC1C,SAAsC,EACtC,QAAiB,
|
|
1
|
+
{"version":3,"file":"blacklistRequestInspector.js","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,7 +103,7 @@ const rankCandidateRules = (rules, request, requestClientId) => rules.filter((ru
|
|
|
103
103
|
}
|
|
104
104
|
return policySeverity(b) - policySeverity(a);
|
|
105
105
|
});
|
|
106
|
-
const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clientId) => {
|
|
106
|
+
const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clientId, options) => {
|
|
107
107
|
const parsedUserScope = userAccessPolicy.userScopeInput.parse(userScope);
|
|
108
108
|
const filter = {
|
|
109
109
|
...clientId && {
|
|
@@ -113,7 +113,8 @@ const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clien
|
|
|
113
113
|
},
|
|
114
114
|
policyScopeMatch: userAccessPolicy.FilterScopeMatch.Greedy,
|
|
115
115
|
userScope: parsedUserScope,
|
|
116
|
-
userScopeMatch: userAccessPolicy.FilterScopeMatch.Greedy
|
|
116
|
+
userScopeMatch: userAccessPolicy.FilterScopeMatch.Greedy,
|
|
117
|
+
...options?.blockOnly && { blockOnly: true }
|
|
117
118
|
};
|
|
118
119
|
const candidates = await userAccessRulesStorage.findRules(
|
|
119
120
|
filter,
|
|
@@ -186,7 +187,14 @@ class BlacklistRequestInspector {
|
|
|
186
187
|
countryCode,
|
|
187
188
|
asn
|
|
188
189
|
),
|
|
189
|
-
clientId
|
|
190
|
+
clientId,
|
|
191
|
+
// Request-time middleware only ever fires on Block policies
|
|
192
|
+
// (Restrict rules flow through and let the captcha-creation
|
|
193
|
+
// path decorate the response). Restrict the Redis-side
|
|
194
|
+
// candidate pool so the SERVER_SIDE_RANK_TOP_N cap can't
|
|
195
|
+
// crowd out hard-block rules in clients with dense Restrict
|
|
196
|
+
// rule populations.
|
|
197
|
+
{ blockOnly: true }
|
|
190
198
|
);
|
|
191
199
|
const enforceable = (accessPolicies ?? []).filter(
|
|
192
200
|
(p) => !p.deferToVerify
|
|
@@ -253,11 +253,12 @@ class CaptchaManager {
|
|
|
253
253
|
}
|
|
254
254
|
};
|
|
255
255
|
}
|
|
256
|
-
async getPrioritisedAccessPolicies(userAccessRulesStorage, clientId, userScope) {
|
|
256
|
+
async getPrioritisedAccessPolicies(userAccessRulesStorage, clientId, userScope, options) {
|
|
257
257
|
return blacklistRequestInspector.getPrioritisedAccessRule(
|
|
258
258
|
userAccessRulesStorage,
|
|
259
259
|
userScope,
|
|
260
|
-
clientId
|
|
260
|
+
clientId,
|
|
261
|
+
options
|
|
261
262
|
);
|
|
262
263
|
}
|
|
263
264
|
async getDetectorKeys() {
|
|
@@ -380,7 +381,12 @@ class CaptchaManager {
|
|
|
380
381
|
const accessPolicies = await this.getPrioritisedAccessPolicies(
|
|
381
382
|
userAccessRulesStorage,
|
|
382
383
|
challengeRecord.dappAccount,
|
|
383
|
-
userScope
|
|
384
|
+
userScope,
|
|
385
|
+
// Hard-block lookup only — restrict the Redis-side candidate
|
|
386
|
+
// pool to Block rules so the SERVER_SIDE_RANK_TOP_N cap can't
|
|
387
|
+
// crowd a hard-block out of the top-N with Restrict or
|
|
388
|
+
// routing-Block (captchaType-scoped) entries.
|
|
389
|
+
{ blockOnly: true }
|
|
384
390
|
);
|
|
385
391
|
return findHardBlockPolicy(accessPolicies);
|
|
386
392
|
}
|
|
@@ -422,7 +428,8 @@ class CaptchaManager {
|
|
|
422
428
|
return checkTrafficFilter.checkTrafficFilter(
|
|
423
429
|
ipInfo,
|
|
424
430
|
effective,
|
|
425
|
-
enrichDnsEvent.extraIpInfosFromEnrichedDnsEvent(enrichedDnsEvent)
|
|
431
|
+
enrichDnsEvent.extraIpInfosFromEnrichedDnsEvent(enrichedDnsEvent),
|
|
432
|
+
enrichedDnsEvent?.pathValid
|
|
426
433
|
);
|
|
427
434
|
}
|
|
428
435
|
static canClientSeeScore(tier, score) {
|
|
@@ -89,13 +89,19 @@ class PowCaptchaManager extends captchaManager.CaptchaManager {
|
|
|
89
89
|
}
|
|
90
90
|
const difficulty = challengeRecord.difficulty;
|
|
91
91
|
let coords;
|
|
92
|
+
let saltDecodeError;
|
|
92
93
|
if (salt) {
|
|
93
94
|
try {
|
|
94
95
|
const extractedData = util$1.extractData(salt);
|
|
95
96
|
if (extractedData.length >= 2) {
|
|
96
|
-
|
|
97
|
+
const built = [
|
|
98
|
+
[[extractedData[0], extractedData[1]]]
|
|
99
|
+
];
|
|
100
|
+
util$1.assertCoordsSafe(built, "coords");
|
|
101
|
+
coords = built;
|
|
97
102
|
}
|
|
98
103
|
} catch (error) {
|
|
104
|
+
saltDecodeError = error;
|
|
99
105
|
this.logger.warn(() => ({
|
|
100
106
|
msg: "Failed to extract coordinates from salt",
|
|
101
107
|
error,
|
|
@@ -103,6 +109,35 @@ class PowCaptchaManager extends captchaManager.CaptchaManager {
|
|
|
103
109
|
}));
|
|
104
110
|
}
|
|
105
111
|
}
|
|
112
|
+
if (saltDecodeError) {
|
|
113
|
+
const badSaltResult = {
|
|
114
|
+
status: types.CaptchaStatus.disapproved,
|
|
115
|
+
reason: types.ResultReason.CAPTCHA_INVALID_SALT
|
|
116
|
+
};
|
|
117
|
+
const writePromises2 = [
|
|
118
|
+
this.db.updatePowCaptchaRecordResult(
|
|
119
|
+
challenge,
|
|
120
|
+
badSaltResult,
|
|
121
|
+
false,
|
|
122
|
+
// serverChecked
|
|
123
|
+
true,
|
|
124
|
+
// userSubmitted
|
|
125
|
+
userTimestampSignature,
|
|
126
|
+
void 0
|
|
127
|
+
// never persist the bad coords
|
|
128
|
+
)
|
|
129
|
+
];
|
|
130
|
+
if (challengeRecord.sessionId) {
|
|
131
|
+
writePromises2.push(
|
|
132
|
+
this.updateSessionRecordWithCache(challengeRecord.sessionId, {
|
|
133
|
+
userSubmitted: true,
|
|
134
|
+
result: badSaltResult
|
|
135
|
+
})
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
await Promise.all(writePromises2);
|
|
139
|
+
return { verified: false };
|
|
140
|
+
}
|
|
106
141
|
if (!util$1.verifyRecency(challenge, timeout)) {
|
|
107
142
|
const timeoutResult = {
|
|
108
143
|
status: types.CaptchaStatus.disapproved,
|
|
@@ -87,13 +87,19 @@ class PuzzleCaptchaManager extends captchaManager.CaptchaManager {
|
|
|
87
87
|
return false;
|
|
88
88
|
}
|
|
89
89
|
let coords;
|
|
90
|
+
let saltDecodeError;
|
|
90
91
|
if (salt) {
|
|
91
92
|
try {
|
|
92
93
|
const extractedData = util$1.extractData(salt);
|
|
93
94
|
if (extractedData.length >= 2) {
|
|
94
|
-
|
|
95
|
+
const built = [
|
|
96
|
+
[[extractedData[0], extractedData[1]]]
|
|
97
|
+
];
|
|
98
|
+
util$1.assertCoordsSafe(built, "coords");
|
|
99
|
+
coords = built;
|
|
95
100
|
}
|
|
96
101
|
} catch (error) {
|
|
102
|
+
saltDecodeError = error;
|
|
97
103
|
this.logger.warn(() => ({
|
|
98
104
|
msg: "Failed to extract coordinates from salt",
|
|
99
105
|
error,
|
|
@@ -107,6 +113,30 @@ class PuzzleCaptchaManager extends captchaManager.CaptchaManager {
|
|
|
107
113
|
}));
|
|
108
114
|
return false;
|
|
109
115
|
}
|
|
116
|
+
if (saltDecodeError) {
|
|
117
|
+
const badSaltResult = {
|
|
118
|
+
status: types.CaptchaStatus.disapproved,
|
|
119
|
+
reason: types.ResultReason.CAPTCHA_INVALID_SALT
|
|
120
|
+
};
|
|
121
|
+
await this.db.updatePuzzleCaptchaRecordResult(
|
|
122
|
+
challenge,
|
|
123
|
+
badSaltResult,
|
|
124
|
+
false,
|
|
125
|
+
// serverChecked
|
|
126
|
+
true,
|
|
127
|
+
// userSubmitted
|
|
128
|
+
userTimestampSignature,
|
|
129
|
+
void 0
|
|
130
|
+
// never persist the bad coords
|
|
131
|
+
);
|
|
132
|
+
if (challengeRecord.sessionId) {
|
|
133
|
+
await this.updateSessionRecordWithCache(challengeRecord.sessionId, {
|
|
134
|
+
userSubmitted: true,
|
|
135
|
+
result: badSaltResult
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
110
140
|
if (!util$1.verifyRecency(challenge, timeout)) {
|
|
111
141
|
const timeoutResult = {
|
|
112
142
|
status: types.CaptchaStatus.disapproved,
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const types = require("@prosopo/types");
|
|
4
|
-
const
|
|
5
|
-
if (!
|
|
4
|
+
const isDatacenterAllowlisted = (ipInfo, allowlist) => {
|
|
5
|
+
if (!allowlist || allowlist.length === 0) {
|
|
6
6
|
return false;
|
|
7
7
|
}
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const candidates = [];
|
|
9
|
+
for (const value of [
|
|
10
|
+
ipInfo.datacenterName,
|
|
11
|
+
ipInfo.providerName,
|
|
12
|
+
ipInfo.asnOrganization
|
|
13
|
+
]) {
|
|
14
|
+
if (typeof value !== "string") continue;
|
|
15
|
+
const trimmed = value.trim().toLowerCase();
|
|
16
|
+
if (trimmed) candidates.push(trimmed);
|
|
17
|
+
}
|
|
18
|
+
if (candidates.length === 0) {
|
|
10
19
|
return false;
|
|
11
20
|
}
|
|
12
|
-
|
|
21
|
+
const normalisedAllowlist = allowlist.map(
|
|
22
|
+
(entry) => entry.trim().toLowerCase()
|
|
23
|
+
);
|
|
24
|
+
return candidates.some((c) => normalisedAllowlist.includes(c));
|
|
13
25
|
};
|
|
14
26
|
const evaluateIpInfo = (ipInfo, trafficFilter, options) => {
|
|
15
27
|
if (!ipInfo || !ipInfo.isValid) {
|
|
@@ -34,10 +46,7 @@ const evaluateIpInfo = (ipInfo, trafficFilter, options) => {
|
|
|
34
46
|
return { isBlocked: true, reason: types.ResultReason.ABUSER_BLOCKED };
|
|
35
47
|
}
|
|
36
48
|
}
|
|
37
|
-
if (trafficFilter.blockDatacenter && ipInfo.isDatacenter && !(options.suppressVpnDatacenterInteraction && ipInfo.isVPN && !trafficFilter.blockVpn) && !
|
|
38
|
-
ipInfo.datacenterName,
|
|
39
|
-
trafficFilter.datacenterNameAllowlist
|
|
40
|
-
)) {
|
|
49
|
+
if (trafficFilter.blockDatacenter && ipInfo.isDatacenter && !(options.suppressVpnDatacenterInteraction && ipInfo.isVPN && !trafficFilter.blockVpn) && !isDatacenterAllowlisted(ipInfo, trafficFilter.datacenterNameAllowlist)) {
|
|
41
50
|
return { isBlocked: true, reason: types.ResultReason.DATACENTER_BLOCKED };
|
|
42
51
|
}
|
|
43
52
|
if (trafficFilter.blockMobile && ipInfo.isMobile) {
|
|
@@ -51,13 +60,16 @@ const evaluateIpInfo = (ipInfo, trafficFilter, options) => {
|
|
|
51
60
|
}
|
|
52
61
|
return { isBlocked: false };
|
|
53
62
|
};
|
|
54
|
-
const checkTrafficFilter = (ipInfo, trafficFilter, extraIpInfos) => {
|
|
63
|
+
const checkTrafficFilter = (ipInfo, trafficFilter, extraIpInfos, dnsPathValid) => {
|
|
55
64
|
const primary = evaluateIpInfo(ipInfo, trafficFilter, {
|
|
56
65
|
suppressVpnDatacenterInteraction: true
|
|
57
66
|
});
|
|
58
67
|
if (primary.isBlocked) {
|
|
59
68
|
return primary;
|
|
60
69
|
}
|
|
70
|
+
if (trafficFilter.skipExtrasOnValidDnsPath && dnsPathValid === true) {
|
|
71
|
+
return { isBlocked: false };
|
|
72
|
+
}
|
|
61
73
|
for (const extra of extraIpInfos ?? []) {
|
|
62
74
|
const result = evaluateIpInfo(extra, trafficFilter, {
|
|
63
75
|
suppressVpnDatacenterInteraction: false
|
|
@@ -40,7 +40,9 @@ export declare class CaptchaManager {
|
|
|
40
40
|
status: string;
|
|
41
41
|
verified: boolean;
|
|
42
42
|
};
|
|
43
|
-
getPrioritisedAccessPolicies(userAccessRulesStorage: AccessRulesStorage, clientId: string, userScope: UserScope | UserScopeRecord
|
|
43
|
+
getPrioritisedAccessPolicies(userAccessRulesStorage: AccessRulesStorage, clientId: string, userScope: UserScope | UserScopeRecord, options?: {
|
|
44
|
+
blockOnly?: boolean;
|
|
45
|
+
}): Promise<import("@prosopo/user-access-policy").AccessRule[]>;
|
|
44
46
|
getDetectorKeys(): Promise<string[]>;
|
|
45
47
|
decryptSimdReadings(encryptedData: string, decryptKeys: (string | undefined)[]): Promise<SimdReadingsResult | null>;
|
|
46
48
|
decryptBehavioralData(encryptedData: string, decryptKeys: (string | undefined)[]): Promise<BehavioralDataResult | null>;
|