@prosopo/provider 4.8.0 → 4.9.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.
- package/.turbo/turbo-build$colon$cjs.log +15 -14
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +16 -15
- package/CHANGELOG.md +30 -0
- package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +1 -1
- package/dist/api/admin/apiAdminRoutesProvider.js +4 -1
- package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -1
- package/dist/api/admin/apiDnsEventEndpoint.d.ts +4 -1
- package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiDnsEventEndpoint.js +31 -1
- package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -1
- package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +4 -1
- package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +31 -1
- package/dist/cjs/pairs.cjs +14 -0
- package/dist/cjs/tasks/captchaManager.cjs +9 -2
- package/dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs +62 -0
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +66 -33
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +42 -15
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +42 -15
- package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +19 -2
- package/dist/cjs/tasks/tasks.cjs +1 -0
- package/dist/cjs/util/usageCounters.cjs +18 -1
- package/dist/cjs/util.cjs +11 -1
- package/dist/pairs.d.ts +4 -0
- package/dist/pairs.d.ts.map +1 -1
- package/dist/pairs.js +15 -1
- package/dist/pairs.js.map +1 -1
- package/dist/tasks/captchaManager.d.ts +2 -2
- package/dist/tasks/captchaManager.d.ts.map +1 -1
- package/dist/tasks/captchaManager.js +9 -2
- package/dist/tasks/captchaManager.js.map +1 -1
- package/dist/tasks/dnsEvent/enrichDnsEvent.d.ts +8 -0
- package/dist/tasks/dnsEvent/enrichDnsEvent.d.ts.map +1 -0
- package/dist/tasks/dnsEvent/enrichDnsEvent.js +62 -0
- package/dist/tasks/dnsEvent/enrichDnsEvent.js.map +1 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +67 -34
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.js +42 -15
- 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 +42 -15
- 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 +19 -2
- package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
- package/dist/tasks/tasks.d.ts +1 -0
- package/dist/tasks/tasks.d.ts.map +1 -1
- package/dist/tasks/tasks.js +1 -0
- package/dist/tasks/tasks.js.map +1 -1
- package/dist/tests/unit/pairs.unit.test.js +79 -1
- package/dist/tests/unit/pairs.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/dnsEvent/enrichDnsEvent.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/dnsEvent/enrichDnsEvent.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/dnsEvent/enrichDnsEvent.unit.test.js +94 -0
- package/dist/tests/unit/tasks/dnsEvent/enrichDnsEvent.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +83 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
- package/dist/util/usageCounters.d.ts +1 -1
- package/dist/util/usageCounters.d.ts.map +1 -1
- package/dist/util/usageCounters.js +18 -1
- package/dist/util/usageCounters.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +11 -1
- package/dist/util.js.map +1 -1
- package/package.json +13 -12
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.
|
|
2
|
+
> @prosopo/provider@4.9.0 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -53,7 +53,7 @@ ViteCommonJSConfig: .
|
|
|
53
53
|
Bundle build started
|
|
54
54
|
transforming...
|
|
55
55
|
Build end
|
|
56
|
-
[32m✓[39m
|
|
56
|
+
[32m✓[39m 92 modules transformed.
|
|
57
57
|
[33mEntry module "src/tasks/detection/decodeSimd.js" is using named and default exports together. Consumers of your bundle will have to use `..default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.[39m
|
|
58
58
|
[33mEntry module "src/tasks/detection/decodeBehavior.js" is using named and default exports together. Consumers of your bundle will have to use `..default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.[39m
|
|
59
59
|
rendering chunks...
|
|
@@ -75,7 +75,6 @@ rendering chunks...
|
|
|
75
75
|
[2mdist/cjs/[22m[36mapi/captcha/contextAwareValidation.cjs [39m[1m[2m 0.75 kB[22m[1m[22m
|
|
76
76
|
[2mdist/cjs/[22m[36mtasks/imgCaptcha/imgCaptchaTasksUtils.cjs [39m[1m[2m 0.84 kB[22m[1m[22m
|
|
77
77
|
[2mdist/cjs/[22m[36mapi/validateAddress.cjs [39m[1m[2m 0.84 kB[22m[1m[22m
|
|
78
|
-
[2mdist/cjs/[22m[36mpairs.cjs [39m[1m[2m 0.87 kB[22m[1m[22m
|
|
79
78
|
[2mdist/cjs/[22m[36mutils/normalizeRequestIp.cjs [39m[1m[2m 0.89 kB[22m[1m[22m
|
|
80
79
|
[2mdist/cjs/[22m[36mapi/block.cjs [39m[1m[2m 0.91 kB[22m[1m[22m
|
|
81
80
|
[2mdist/cjs/[22m[36mtasks/dataset/datasetTasks.cjs [39m[1m[2m 0.96 kB[22m[1m[22m
|
|
@@ -93,6 +92,7 @@ rendering chunks...
|
|
|
93
92
|
[2mdist/cjs/[22m[36mapi/admin/apiUpdateDetectorKeyEndpoint.cjs [39m[1m[2m 1.31 kB[22m[1m[22m
|
|
94
93
|
[2mdist/cjs/[22m[36mapi/admin/apiRemoveDecisionMachineEndpoint.cjs [39m[1m[2m 1.32 kB[22m[1m[22m
|
|
95
94
|
[2mdist/cjs/[22m[36mapi/admin/apiRegisterSiteKeyEndpoint.cjs [39m[1m[2m 1.34 kB[22m[1m[22m
|
|
95
|
+
[2mdist/cjs/[22m[36mpairs.cjs [39m[1m[2m 1.37 kB[22m[1m[22m
|
|
96
96
|
[2mdist/cjs/[22m[36mapi/admin/apiRegisterSiteKeysEndpoint.cjs [39m[1m[2m 1.46 kB[22m[1m[22m
|
|
97
97
|
[2mdist/cjs/[22m[36mapi/admin/apiRemoveSiteKeyEndpoint.cjs [39m[1m[2m 1.47 kB[22m[1m[22m
|
|
98
98
|
[2mdist/cjs/[22m[36mapi/admin/apiRemoveSiteKeysEndpoint.cjs [39m[1m[2m 1.48 kB[22m[1m[22m
|
|
@@ -100,7 +100,6 @@ rendering chunks...
|
|
|
100
100
|
[2mdist/cjs/[22m[36mapi/admin/apiGetAllDecisionMachinesEndpoint.cjs [39m[1m[2m 1.57 kB[22m[1m[22m
|
|
101
101
|
[2mdist/cjs/[22m[36mcompositeIpAddress.cjs [39m[1m[2m 1.64 kB[22m[1m[22m
|
|
102
102
|
[2mdist/cjs/[22m[36mschedulers/updateSpamEmailDomains.cjs [39m[1m[2m 1.65 kB[22m[1m[22m
|
|
103
|
-
[2mdist/cjs/[22m[36mtasks/spam/checkTrafficFilter.cjs [39m[1m[2m 1.67 kB[22m[1m[22m
|
|
104
103
|
[2mdist/cjs/[22m[36mutils/honeypot/phraseBank.cjs [39m[1m[2m 1.71 kB[22m[1m[22m
|
|
105
104
|
[2mdist/cjs/[22m[36mapi/admin/apiToggleMaintenanceModeEndpoint.cjs [39m[1m[2m 1.72 kB[22m[1m[22m
|
|
106
105
|
[2mdist/cjs/[22m[36mapi/public.cjs [39m[1m[2m 1.74 kB[22m[1m[22m
|
|
@@ -112,24 +111,26 @@ rendering chunks...
|
|
|
112
111
|
[2mdist/cjs/[22m[36mtasks/frictionless/routingMachine.cjs [39m[1m[2m 1.86 kB[22m[1m[22m
|
|
113
112
|
[2mdist/cjs/[22m[36mapi/captcha/checkSpamEmail.cjs [39m[1m[2m 2.10 kB[22m[1m[22m
|
|
114
113
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs [39m[1m[2m 2.11 kB[22m[1m[22m
|
|
115
|
-
[2mdist/cjs/[22m[36mapi/admin/apiDnsEventEndpoint.cjs [39m[1m[2m 2.12 kB[22m[1m[22m
|
|
116
114
|
[2mdist/cjs/[22m[36mtasks/spam/updateSpamEmailDomains.cjs [39m[1m[2m 2.13 kB[22m[1m[22m
|
|
115
|
+
[2mdist/cjs/[22m[36mtasks/dnsEvent/enrichDnsEvent.cjs [39m[1m[2m 2.16 kB[22m[1m[22m
|
|
116
|
+
[2mdist/cjs/[22m[36mtasks/spam/checkTrafficFilter.cjs [39m[1m[2m 2.24 kB[22m[1m[22m
|
|
117
117
|
[2mdist/cjs/[22m[36mapi/captcha.cjs [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
118
118
|
[2mdist/cjs/[22m[36mapi/ja4Middleware.cjs [39m[1m[2m 2.74 kB[22m[1m[22m
|
|
119
119
|
[2mdist/cjs/[22m[36mapi/captcha/submitPuzzleCaptchaSolution.cjs [39m[1m[2m 2.85 kB[22m[1m[22m
|
|
120
120
|
[2mdist/cjs/[22m[36mtasks/spam/evaluateEmailSpamRules.cjs [39m[1m[2m 3.03 kB[22m[1m[22m
|
|
121
|
+
[2mdist/cjs/[22m[36mapi/admin/apiDnsEventEndpoint.cjs [39m[1m[2m 3.15 kB[22m[1m[22m
|
|
121
122
|
[2mdist/cjs/[22m[36mapi/captcha/submitImageCaptchaSolution.cjs [39m[1m[2m 3.20 kB[22m[1m[22m
|
|
122
123
|
[2mdist/cjs/[22m[36mutils/dns.cjs [39m[1m[2m 3.38 kB[22m[1m[22m
|
|
123
|
-
[2mdist/cjs/[22m[36mapi/admin/apiAdminRoutesProvider.cjs [39m[1m[2m 3.
|
|
124
|
+
[2mdist/cjs/[22m[36mapi/admin/apiAdminRoutesProvider.cjs [39m[1m[2m 3.61 kB[22m[1m[22m
|
|
124
125
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs [39m[1m[2m 3.78 kB[22m[1m[22m
|
|
125
126
|
[2mdist/cjs/[22m[36mapi/domainMiddleware.cjs [39m[1m[2m 3.91 kB[22m[1m[22m
|
|
126
127
|
[2mdist/cjs/[22m[36mindex.cjs [39m[1m[2m 4.01 kB[22m[1m[22m
|
|
127
128
|
[2mdist/cjs/[22m[36mservices/ipComparison.cjs [39m[1m[2m 4.10 kB[22m[1m[22m
|
|
128
129
|
[2mdist/cjs/[22m[36mtasks/spam/checkSpamEmail.cjs [39m[1m[2m 4.32 kB[22m[1m[22m
|
|
129
130
|
[2mdist/cjs/[22m[36mapi/captcha/submitPoWCaptchaSolution.cjs [39m[1m[2m 5.20 kB[22m[1m[22m
|
|
130
|
-
[2mdist/cjs/[22m[36mtasks/tasks.cjs [39m[1m[2m 5.
|
|
131
|
-
[2mdist/cjs/[22m[36mutil/usageCounters.cjs [39m[1m[2m 5.40 kB[22m[1m[22m
|
|
131
|
+
[2mdist/cjs/[22m[36mtasks/tasks.cjs [39m[1m[2m 5.35 kB[22m[1m[22m
|
|
132
132
|
[2mdist/cjs/[22m[36mapi/captcha/getImageCaptchaChallenge.cjs [39m[1m[2m 5.53 kB[22m[1m[22m
|
|
133
|
+
[2mdist/cjs/[22m[36mutil/usageCounters.cjs [39m[1m[2m 5.80 kB[22m[1m[22m
|
|
133
134
|
[2mdist/cjs/[22m[36mapi/blacklistRequestInspector.cjs [39m[1m[2m 6.05 kB[22m[1m[22m
|
|
134
135
|
[2mdist/cjs/[22m[36mapi/captcha/getPoWCaptchaChallenge.cjs [39m[1m[2m 6.23 kB[22m[1m[22m
|
|
135
136
|
[2mdist/cjs/[22m[36mapi/captcha/getPuzzleCaptchaChallenge.cjs [39m[1m[2m 6.42 kB[22m[1m[22m
|
|
@@ -138,17 +139,17 @@ rendering chunks...
|
|
|
138
139
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/handler.cjs [39m[1m[2m10.10 kB[22m[1m[22m
|
|
139
140
|
[2mdist/cjs/[22m[36mtasks/decisionMachine/decisionMachineRunner.cjs [39m[1m[2m10.19 kB[22m[1m[22m
|
|
140
141
|
[2mdist/cjs/[22m[36mapi/verify.cjs [39m[1m[2m10.85 kB[22m[1m[22m
|
|
141
|
-
[2mdist/cjs/[22m[36mutil.cjs [39m[1m[2m12.
|
|
142
|
+
[2mdist/cjs/[22m[36mutil.cjs [39m[1m[2m12.59 kB[22m[1m[22m
|
|
142
143
|
[2mdist/cjs/[22m[36mtasks/client/clientTasks.cjs [39m[1m[2m15.63 kB[22m[1m[22m
|
|
143
|
-
[2mdist/cjs/[22m[36mtasks/captchaManager.cjs [39m[1m[
|
|
144
|
+
[2mdist/cjs/[22m[36mtasks/captchaManager.cjs [39m[1m[2m16.05 kB[22m[1m[22m
|
|
144
145
|
[2mdist/cjs/[22m[36mtasks/frictionless/frictionlessTasks.cjs [39m[1m[2m16.20 kB[22m[1m[22m
|
|
145
146
|
[2mdist/cjs/[22m[36mtasks/detection/decodeSimd.cjs [39m[1m[2m18.20 kB[22m[1m[22m
|
|
146
|
-
[2mdist/cjs/[22m[36mtasks/puzzleCaptcha/puzzleTasks.cjs [39m[1m[2m19.08 kB[22m[1m[22m
|
|
147
147
|
[2mdist/cjs/[22m[36mtasks/detection/decodeBehavior.cjs [39m[1m[2m19.16 kB[22m[1m[22m
|
|
148
|
-
[2mdist/cjs/[22m[36mtasks/
|
|
149
|
-
[2mdist/cjs/[22m[36mtasks/
|
|
148
|
+
[2mdist/cjs/[22m[36mtasks/puzzleCaptcha/puzzleTasks.cjs [39m[1m[2m20.22 kB[22m[1m[22m
|
|
149
|
+
[2mdist/cjs/[22m[36mtasks/powCaptcha/powTasks.cjs [39m[1m[2m22.20 kB[22m[1m[22m
|
|
150
|
+
[2mdist/cjs/[22m[36mtasks/imgCaptcha/imgCaptchaTasks.cjs [39m[1m[2m28.30 kB[22m[1m[22m
|
|
150
151
|
[2mdist/cjs/[22m[36mtasks/detection/decodePayload.cjs [39m[1m[2m44.26 kB[22m[1m[22m
|
|
151
|
-
[32m✓ built in
|
|
152
|
+
[32m✓ built in 754ms[39m
|
|
152
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
|
|
153
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
|
|
154
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.
|
|
2
|
+
> @prosopo/provider@4.9.0 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/provider/api.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
5:56:48 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
|
+
5:56:48 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/index.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
5:56:48 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
5:56:48 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
|
+
5:56:48 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/transformRule.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/pair/decode.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 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
|
+
5:56:48 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/tests/dataset.unit.test.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
5:56:48 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
|
+
5:56:48 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
5:56:48 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.
|
|
2
|
+
> @prosopo/provider@4.9.0 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/provider@4.
|
|
6
|
+
> @prosopo/provider@4.9.0 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -57,7 +57,7 @@ ViteEsmConfig: .
|
|
|
57
57
|
Bundle build started
|
|
58
58
|
transforming...
|
|
59
59
|
Build end
|
|
60
|
-
[32m✓[39m
|
|
60
|
+
[32m✓[39m 92 modules transformed.
|
|
61
61
|
rendering chunks...
|
|
62
62
|
[2mdist/[22m[36mtasks/index.js [39m[1m[2m 0.06 kB[22m[1m[22m
|
|
63
63
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge.js [39m[1m[2m 0.12 kB[22m[1m[22m
|
|
@@ -76,7 +76,6 @@ rendering chunks...
|
|
|
76
76
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js [39m[1m[2m 0.55 kB[22m[1m[22m
|
|
77
77
|
[2mdist/[22m[36mapi/captcha/contextAwareValidation.js [39m[1m[2m 0.63 kB[22m[1m[22m
|
|
78
78
|
[2mdist/[22m[36mapi/validateAddress.js [39m[1m[2m 0.71 kB[22m[1m[22m
|
|
79
|
-
[2mdist/[22m[36mpairs.js [39m[1m[2m 0.72 kB[22m[1m[22m
|
|
80
79
|
[2mdist/[22m[36mtasks/imgCaptcha/imgCaptchaTasksUtils.js [39m[1m[2m 0.74 kB[22m[1m[22m
|
|
81
80
|
[2mdist/[22m[36mapi/block.js [39m[1m[2m 0.78 kB[22m[1m[22m
|
|
82
81
|
[2mdist/[22m[36mutils/normalizeRequestIp.js [39m[1m[2m 0.79 kB[22m[1m[22m
|
|
@@ -95,6 +94,7 @@ rendering chunks...
|
|
|
95
94
|
[2mdist/[22m[36mschedulers/getClientList.js [39m[1m[2m 1.10 kB[22m[1m[22m
|
|
96
95
|
[2mdist/[22m[36mschedulers/setClientEntropy.js [39m[1m[2m 1.13 kB[22m[1m[22m
|
|
97
96
|
[2mdist/[22m[36mschedulers/captchaScheduler.js [39m[1m[2m 1.16 kB[22m[1m[22m
|
|
97
|
+
[2mdist/[22m[36mpairs.js [39m[1m[2m 1.18 kB[22m[1m[22m
|
|
98
98
|
[2mdist/[22m[36mapi/admin/apiUpdateDetectorKeyEndpoint.js [39m[1m[2m 1.18 kB[22m[1m[22m
|
|
99
99
|
[2mdist/[22m[36mapi/admin/apiRemoveAllDecisionMachinesEndpoint.js [39m[1m[2m 1.19 kB[22m[1m[22m
|
|
100
100
|
[2mdist/[22m[36mapi/admin/apiToggleMaintenanceModeEndpoint.js [39m[1m[2m 1.19 kB[22m[1m[22m
|
|
@@ -105,33 +105,34 @@ rendering chunks...
|
|
|
105
105
|
[2mdist/[22m[36mcompositeIpAddress.js [39m[1m[2m 1.44 kB[22m[1m[22m
|
|
106
106
|
[2mdist/[22m[36mapi/captcha/maintenanceModeResponses.js [39m[1m[2m 1.47 kB[22m[1m[22m
|
|
107
107
|
[2mdist/[22m[36mschedulers/updateSpamEmailDomains.js [39m[1m[2m 1.50 kB[22m[1m[22m
|
|
108
|
-
[2mdist/[22m[36mtasks/spam/checkTrafficFilter.js [39m[1m[2m 1.56 kB[22m[1m[22m
|
|
109
108
|
[2mdist/[22m[36mutils/honeypot/phraseBank.js [39m[1m[2m 1.57 kB[22m[1m[22m
|
|
110
109
|
[2mdist/[22m[36mapi/public.js [39m[1m[2m 1.60 kB[22m[1m[22m
|
|
111
|
-
[2mdist/[22m[36mapi/admin/apiDnsEventEndpoint.js [39m[1m[2m 1.64 kB[22m[1m[22m
|
|
112
110
|
[2mdist/[22m[36mapi/admin/apiClearAllCountersEndpoint.js [39m[1m[2m 1.66 kB[22m[1m[22m
|
|
113
111
|
[2mdist/[22m[36mapi/admin/apiUpdateDecisionMachineEndpoint.js [39m[1m[2m 1.67 kB[22m[1m[22m
|
|
114
112
|
[2mdist/[22m[36mutils/honeypot/encoders.js [39m[1m[2m 1.71 kB[22m[1m[22m
|
|
115
113
|
[2mdist/[22m[36mtasks/frictionless/routingMachine.js [39m[1m[2m 1.76 kB[22m[1m[22m
|
|
116
114
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js [39m[1m[2m 1.95 kB[22m[1m[22m
|
|
115
|
+
[2mdist/[22m[36mtasks/dnsEvent/enrichDnsEvent.js [39m[1m[2m 1.97 kB[22m[1m[22m
|
|
117
116
|
[2mdist/[22m[36mtasks/spam/updateSpamEmailDomains.js [39m[1m[2m 2.03 kB[22m[1m[22m
|
|
118
117
|
[2mdist/[22m[36mapi/captcha/checkSpamEmail.js [39m[1m[2m 2.08 kB[22m[1m[22m
|
|
118
|
+
[2mdist/[22m[36mtasks/spam/checkTrafficFilter.js [39m[1m[2m 2.14 kB[22m[1m[22m
|
|
119
119
|
[2mdist/[22m[36mapi/ja4Middleware.js [39m[1m[2m 2.19 kB[22m[1m[22m
|
|
120
120
|
[2mdist/[22m[36mapi/captcha.js [39m[1m[2m 2.49 kB[22m[1m[22m
|
|
121
121
|
[2mdist/[22m[36mutils/dns.js [39m[1m[2m 2.57 kB[22m[1m[22m
|
|
122
122
|
[2mdist/[22m[36mindex.js [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
123
|
+
[2mdist/[22m[36mapi/admin/apiDnsEventEndpoint.js [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
123
124
|
[2mdist/[22m[36mapi/captcha/submitPuzzleCaptchaSolution.js [39m[1m[2m 2.78 kB[22m[1m[22m
|
|
124
125
|
[2mdist/[22m[36mtasks/spam/evaluateEmailSpamRules.js [39m[1m[2m 2.84 kB[22m[1m[22m
|
|
125
|
-
[2mdist/[22m[36mapi/admin/apiAdminRoutesProvider.js [39m[1m[2m 2.
|
|
126
|
+
[2mdist/[22m[36mapi/admin/apiAdminRoutesProvider.js [39m[1m[2m 2.99 kB[22m[1m[22m
|
|
126
127
|
[2mdist/[22m[36mapi/captcha/submitImageCaptchaSolution.js [39m[1m[2m 3.07 kB[22m[1m[22m
|
|
127
128
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js [39m[1m[2m 3.59 kB[22m[1m[22m
|
|
128
129
|
[2mdist/[22m[36mapi/domainMiddleware.js [39m[1m[2m 3.71 kB[22m[1m[22m
|
|
129
130
|
[2mdist/[22m[36mservices/ipComparison.js [39m[1m[2m 4.00 kB[22m[1m[22m
|
|
130
131
|
[2mdist/[22m[36mtasks/spam/checkSpamEmail.js [39m[1m[2m 4.26 kB[22m[1m[22m
|
|
131
132
|
[2mdist/[22m[36mapi/captcha/submitPoWCaptchaSolution.js [39m[1m[2m 5.09 kB[22m[1m[22m
|
|
132
|
-
[2mdist/[22m[36mtasks/tasks.js [39m[1m[2m 5.
|
|
133
|
-
[2mdist/[22m[36mutil/usageCounters.js [39m[1m[2m 5.29 kB[22m[1m[22m
|
|
133
|
+
[2mdist/[22m[36mtasks/tasks.js [39m[1m[2m 5.15 kB[22m[1m[22m
|
|
134
134
|
[2mdist/[22m[36mapi/captcha/getImageCaptchaChallenge.js [39m[1m[2m 5.41 kB[22m[1m[22m
|
|
135
|
+
[2mdist/[22m[36mutil/usageCounters.js [39m[1m[2m 5.69 kB[22m[1m[22m
|
|
135
136
|
[2mdist/[22m[36mapi/blacklistRequestInspector.js [39m[1m[2m 5.80 kB[22m[1m[22m
|
|
136
137
|
[2mdist/[22m[36mapi/captcha/getPoWCaptchaChallenge.js [39m[1m[2m 6.00 kB[22m[1m[22m
|
|
137
138
|
[2mdist/[22m[36mapi/captcha/getPuzzleCaptchaChallenge.js [39m[1m[2m 6.17 kB[22m[1m[22m
|
|
@@ -140,17 +141,17 @@ rendering chunks...
|
|
|
140
141
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/handler.js [39m[1m[2m 9.76 kB[22m[1m[22m
|
|
141
142
|
[2mdist/[22m[36mtasks/decisionMachine/decisionMachineRunner.js [39m[1m[2m10.14 kB[22m[1m[22m
|
|
142
143
|
[2mdist/[22m[36mapi/verify.js [39m[1m[2m10.43 kB[22m[1m[22m
|
|
143
|
-
[2mdist/[22m[36mutil.js [39m[1m[
|
|
144
|
-
[2mdist/[22m[36mtasks/captchaManager.js [39m[1m[2m15.10 kB[22m[1m[22m
|
|
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.41 kB[22m[1m[22m
|
|
146
147
|
[2mdist/[22m[36mtasks/frictionless/frictionlessTasks.js [39m[1m[2m15.89 kB[22m[1m[22m
|
|
147
148
|
[2mdist/[22m[36mtasks/detection/decodeSimd.js [39m[1m[2m18.06 kB[22m[1m[22m
|
|
148
|
-
[2mdist/[22m[36mtasks/puzzleCaptcha/puzzleTasks.js [39m[1m[2m18.83 kB[22m[1m[22m
|
|
149
149
|
[2mdist/[22m[36mtasks/detection/decodeBehavior.js [39m[1m[2m19.03 kB[22m[1m[22m
|
|
150
|
-
[2mdist/[22m[36mtasks/
|
|
151
|
-
[2mdist/[22m[36mtasks/
|
|
150
|
+
[2mdist/[22m[36mtasks/puzzleCaptcha/puzzleTasks.js [39m[1m[2m19.91 kB[22m[1m[22m
|
|
151
|
+
[2mdist/[22m[36mtasks/powCaptcha/powTasks.js [39m[1m[2m21.79 kB[22m[1m[22m
|
|
152
|
+
[2mdist/[22m[36mtasks/imgCaptcha/imgCaptchaTasks.js [39m[1m[2m27.86 kB[22m[1m[22m
|
|
152
153
|
[2mdist/[22m[36mtasks/detection/decodePayload.js [39m[1m[2m44.24 kB[22m[1m[22m
|
|
153
|
-
[32m✓ built in 1.
|
|
154
|
+
[32m✓ built in 1.50s[39m
|
|
154
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
|
|
155
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
|
|
156
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,35 @@
|
|
|
1
1
|
# @prosopo/provider
|
|
2
2
|
|
|
3
|
+
## 4.9.0
|
|
4
|
+
### Minor Changes
|
|
5
|
+
|
|
6
|
+
- bc3813d: Surface dnsEvent observations across the verify and frictionless flows. Each verify path now enriches the session's dnsEvent IPs once and passes the result to the traffic filter, decision machine, IP validation, and usage counters. Adds `scoreComponents.dnsAsymmetry` (Zod + TS interface + mongoose) computed from resolver / peer ipInfo plus path validity, with the score patched onto the session at DNS event ingest time so it weights subsequent reads. Adds `CounterDimension.peerIp` for rate-limit keys keyed on the dnsEvent peer IP.
|
|
7
|
+
- f305c37: Extend `checkTrafficFilter` to accept an optional `extraIpInfos` list and apply the same per-rule checks across additional IPs. Each verify path threads `session.dnsEvent` IPs through `resolveTrafficFilterCheck` so its peer / resolver enrichments are evaluated alongside the primary client IP.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 2d66d8e: Image-captcha widget now forwards the trusted checkbox click `(clientX, clientY)` through `manager.start(x, y)`. `Manager.submit` embeds the pair as a 2-number prefix on the first captcha's solution salt. Provider peels the prefix via length math against `solution.length` (no protocol version flag — older clients keep working unchanged) and prepends it as the first entry of `pairs`, which is written to `UserCommitment.coords`. Adds `peelCheckboxPrefix` helper in `pairs.ts` with round-trip unit tests.
|
|
12
|
+
- Updated dependencies [2972def]
|
|
13
|
+
- Updated dependencies [bc3813d]
|
|
14
|
+
- Updated dependencies [4d05e3f]
|
|
15
|
+
- @prosopo/types-database@4.9.0
|
|
16
|
+
- @prosopo/types@4.4.0
|
|
17
|
+
- @prosopo/database@3.13.10
|
|
18
|
+
- @prosopo/types-env@2.9.19
|
|
19
|
+
- @prosopo/api@3.4.10
|
|
20
|
+
- @prosopo/api-express-router@3.1.20
|
|
21
|
+
- @prosopo/datasets@3.1.30
|
|
22
|
+
- @prosopo/env@3.5.10
|
|
23
|
+
- @prosopo/ipinfo@0.2.16
|
|
24
|
+
- @prosopo/keyring@2.9.36
|
|
25
|
+
- @prosopo/load-balancer@2.9.12
|
|
26
|
+
- @prosopo/user-access-policy@3.8.1
|
|
27
|
+
|
|
28
|
+
## 4.8.1
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- 8a30164: `checkTrafficFilter` no longer treats VPN traffic that exits from a datacenter IP as datacenter traffic. Commercial VPNs (Mullvad, NordVPN, ProtonVPN, …) all run on cloud providers, so operators who enabled `blockDatacenter` but not `blockVpn` were silently catching VPN end-users they did not intend to block. The datacenter rule is now suppressed when `ipInfo.isVPN` is true and `blockVpn` is false. Closes prosopo/captcha-private#3479.
|
|
32
|
+
|
|
3
33
|
## 4.8.0
|
|
4
34
|
### Minor Changes
|
|
5
35
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiAdminRoutesProvider.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAgBlD,cAAM,sBAAuB,YAAW,iBAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,SAAS,IAAI,SAAS;
|
|
1
|
+
{"version":3,"file":"apiAdminRoutesProvider.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAgBlD,cAAM,sBAAuB,YAAW,iBAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,SAAS,IAAI,SAAS;CA0C7B;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -48,7 +48,10 @@ class ApiAdminRoutesProvider {
|
|
|
48
48
|
this.tasks.clientTaskManager
|
|
49
49
|
),
|
|
50
50
|
[AdminApiPaths.ToggleMaintenanceMode]: new ApiToggleMaintenanceModeEndpoint(),
|
|
51
|
-
[AdminApiPaths.DnsEvent]: new ApiDnsEventEndpoint(
|
|
51
|
+
[AdminApiPaths.DnsEvent]: new ApiDnsEventEndpoint(
|
|
52
|
+
this.tasks.db,
|
|
53
|
+
this.tasks.env.ipInfoService
|
|
54
|
+
)
|
|
52
55
|
};
|
|
53
56
|
}
|
|
54
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiAdminRoutesProvider.js","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,sBAAsB;IAC3B,YAAoC,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,SAAS;QACf,OAAO;YACN,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,IAAI,0BAA0B,CAC9D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,2BAA2B,CAChE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,IAAI,4BAA4B,CAClE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,IAAI,4BAA4B,CAClE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnE,CAAC,aAAa,CAAC,sBAAsB,CAAC,EACrC,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACpE,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,IAAI,6BAA6B,CACpE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnE,CAAC,aAAa,CAAC,yBAAyB,CAAC,EACxC,IAAI,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACvE,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,2BAA2B,CAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CACxB;YACD,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,wBAAwB,CAC1D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,IAAI,yBAAyB,CAC5D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,EAAE;YACvC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,mBAAmB,
|
|
1
|
+
{"version":3,"file":"apiAdminRoutesProvider.js","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ApiEndpoint, type ApiEndpointResponse } from "@prosopo/api-route";
|
|
2
|
+
import type { IIpInfoService } from "@prosopo/ipinfo";
|
|
2
3
|
import { type Logger } from "@prosopo/logger";
|
|
3
4
|
import { type DnsEvent, DnsEventBatchSchema } from "@prosopo/types";
|
|
4
5
|
import type { IProviderDatabase } from "@prosopo/types-database";
|
|
@@ -11,9 +12,11 @@ export declare const dnsEventToFields: (event: DnsEvent) => {
|
|
|
11
12
|
};
|
|
12
13
|
declare class ApiDnsEventEndpoint implements ApiEndpoint<DnsEventBatchSchemaType> {
|
|
13
14
|
private readonly db;
|
|
14
|
-
|
|
15
|
+
private readonly ipInfoService?;
|
|
16
|
+
constructor(db: IProviderDatabase, ipInfoService?: IIpInfoService | undefined);
|
|
15
17
|
processRequest(args: z.infer<DnsEventBatchSchemaType>, logger?: Logger): Promise<ApiEndpointResponse>;
|
|
16
18
|
getRequestArgsSchema(): DnsEventBatchSchemaType;
|
|
19
|
+
private recomputeDnsAsymmetry;
|
|
17
20
|
}
|
|
18
21
|
export { ApiDnsEventEndpoint };
|
|
19
22
|
//# sourceMappingURL=apiDnsEventEndpoint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiDnsEventEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiDnsEventEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"apiDnsEventEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiDnsEventEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAM7B,KAAK,uBAAuB,GAAG,OAAO,mBAAmB,CAAC;AAG1D,eAAO,MAAM,gBAAgB,UACrB,QAAQ,KACb;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAW7D,CAAC;AAEF,cAAM,mBAAoB,YAAW,WAAW,CAAC,uBAAuB,CAAC;IAEvE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBADd,EAAE,EAAE,iBAAiB,EACrB,aAAa,CAAC,EAAE,cAAc,YAAA;IAG1C,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,EACtC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA8CxB,oBAAoB,IAAI,uBAAuB;YAIxC,qBAAqB;CA8BnC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ApiEndpointResponseStatus } from "@prosopo/api-route";
|
|
2
2
|
import { getLogger } from "@prosopo/logger";
|
|
3
3
|
import { DnsEventBatchSchema } from "@prosopo/types";
|
|
4
|
+
import { enrichDnsEvent, computeDnsAsymmetry } from "../../tasks/dnsEvent/enrichDnsEvent.js";
|
|
4
5
|
const dnsEventToFields = (event) => {
|
|
5
6
|
if (event.kind === "dns") {
|
|
6
7
|
return { resolverIp: event.src_ip };
|
|
@@ -14,8 +15,9 @@ const dnsEventToFields = (event) => {
|
|
|
14
15
|
return out;
|
|
15
16
|
};
|
|
16
17
|
class ApiDnsEventEndpoint {
|
|
17
|
-
constructor(db) {
|
|
18
|
+
constructor(db, ipInfoService) {
|
|
18
19
|
this.db = db;
|
|
20
|
+
this.ipInfoService = ipInfoService;
|
|
19
21
|
}
|
|
20
22
|
async processRequest(args, logger) {
|
|
21
23
|
logger = logger || getLogger("info", import.meta.url);
|
|
@@ -37,6 +39,7 @@ class ApiDnsEventEndpoint {
|
|
|
37
39
|
);
|
|
38
40
|
if (matched) {
|
|
39
41
|
stored += 1;
|
|
42
|
+
await this.recomputeDnsAsymmetry(sessionId, logger);
|
|
40
43
|
}
|
|
41
44
|
} catch (err) {
|
|
42
45
|
errors += 1;
|
|
@@ -59,6 +62,33 @@ class ApiDnsEventEndpoint {
|
|
|
59
62
|
getRequestArgsSchema() {
|
|
60
63
|
return DnsEventBatchSchema;
|
|
61
64
|
}
|
|
65
|
+
async recomputeDnsAsymmetry(sessionId, logger) {
|
|
66
|
+
if (!this.ipInfoService) return;
|
|
67
|
+
try {
|
|
68
|
+
const session = await this.db.getSessionRecordBySessionId(sessionId);
|
|
69
|
+
if (!session?.dnsEvent) return;
|
|
70
|
+
const enriched = await enrichDnsEvent(
|
|
71
|
+
session.dnsEvent,
|
|
72
|
+
this.ipInfoService,
|
|
73
|
+
session.ipInfo?.ip
|
|
74
|
+
);
|
|
75
|
+
const dnsAsymmetry = computeDnsAsymmetry(enriched, session.ipInfo);
|
|
76
|
+
if (dnsAsymmetry > 0) {
|
|
77
|
+
await this.db.updateSessionRecord(sessionId, {
|
|
78
|
+
scoreComponents: {
|
|
79
|
+
...session.scoreComponents,
|
|
80
|
+
dnsAsymmetry
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
} catch (err) {
|
|
85
|
+
logger.warn(() => ({
|
|
86
|
+
err,
|
|
87
|
+
data: { sessionId },
|
|
88
|
+
msg: "Failed to recompute dnsAsymmetry after DNS event merge"
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
62
92
|
}
|
|
63
93
|
export {
|
|
64
94
|
ApiDnsEventEndpoint,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiDnsEventEndpoint.js","sourceRoot":"","sources":["../../../src/api/admin/apiDnsEventEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EAGN,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"apiDnsEventEndpoint.js","sourceRoot":"","sources":["../../../src/api/admin/apiDnsEventEndpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,10 @@ class ApiAdminRoutesProvider {
|
|
|
50
50
|
this.tasks.clientTaskManager
|
|
51
51
|
),
|
|
52
52
|
[types.AdminApiPaths.ToggleMaintenanceMode]: new apiToggleMaintenanceModeEndpoint.ApiToggleMaintenanceModeEndpoint(),
|
|
53
|
-
[types.AdminApiPaths.DnsEvent]: new apiDnsEventEndpoint.ApiDnsEventEndpoint(
|
|
53
|
+
[types.AdminApiPaths.DnsEvent]: new apiDnsEventEndpoint.ApiDnsEventEndpoint(
|
|
54
|
+
this.tasks.db,
|
|
55
|
+
this.tasks.env.ipInfoService
|
|
56
|
+
)
|
|
54
57
|
};
|
|
55
58
|
}
|
|
56
59
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const apiRoute = require("@prosopo/api-route");
|
|
4
4
|
const logger = require("@prosopo/logger");
|
|
5
5
|
const types = require("@prosopo/types");
|
|
6
|
+
const enrichDnsEvent = require("../../tasks/dnsEvent/enrichDnsEvent.cjs");
|
|
6
7
|
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
|
|
7
8
|
const dnsEventToFields = (event) => {
|
|
8
9
|
if (event.kind === "dns") {
|
|
@@ -17,8 +18,9 @@ const dnsEventToFields = (event) => {
|
|
|
17
18
|
return out;
|
|
18
19
|
};
|
|
19
20
|
class ApiDnsEventEndpoint {
|
|
20
|
-
constructor(db) {
|
|
21
|
+
constructor(db, ipInfoService) {
|
|
21
22
|
this.db = db;
|
|
23
|
+
this.ipInfoService = ipInfoService;
|
|
22
24
|
}
|
|
23
25
|
async processRequest(args, logger$1) {
|
|
24
26
|
logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiDnsEventEndpoint.cjs", document.baseURI).href);
|
|
@@ -40,6 +42,7 @@ class ApiDnsEventEndpoint {
|
|
|
40
42
|
);
|
|
41
43
|
if (matched) {
|
|
42
44
|
stored += 1;
|
|
45
|
+
await this.recomputeDnsAsymmetry(sessionId, logger$1);
|
|
43
46
|
}
|
|
44
47
|
} catch (err) {
|
|
45
48
|
errors += 1;
|
|
@@ -62,6 +65,33 @@ class ApiDnsEventEndpoint {
|
|
|
62
65
|
getRequestArgsSchema() {
|
|
63
66
|
return types.DnsEventBatchSchema;
|
|
64
67
|
}
|
|
68
|
+
async recomputeDnsAsymmetry(sessionId, logger2) {
|
|
69
|
+
if (!this.ipInfoService) return;
|
|
70
|
+
try {
|
|
71
|
+
const session = await this.db.getSessionRecordBySessionId(sessionId);
|
|
72
|
+
if (!session?.dnsEvent) return;
|
|
73
|
+
const enriched = await enrichDnsEvent.enrichDnsEvent(
|
|
74
|
+
session.dnsEvent,
|
|
75
|
+
this.ipInfoService,
|
|
76
|
+
session.ipInfo?.ip
|
|
77
|
+
);
|
|
78
|
+
const dnsAsymmetry = enrichDnsEvent.computeDnsAsymmetry(enriched, session.ipInfo);
|
|
79
|
+
if (dnsAsymmetry > 0) {
|
|
80
|
+
await this.db.updateSessionRecord(sessionId, {
|
|
81
|
+
scoreComponents: {
|
|
82
|
+
...session.scoreComponents,
|
|
83
|
+
dnsAsymmetry
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
} catch (err) {
|
|
88
|
+
logger2.warn(() => ({
|
|
89
|
+
err,
|
|
90
|
+
data: { sessionId },
|
|
91
|
+
msg: "Failed to recompute dnsAsymmetry after DNS event merge"
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
65
95
|
}
|
|
66
96
|
exports.ApiDnsEventEndpoint = ApiDnsEventEndpoint;
|
|
67
97
|
exports.dnsEventToFields = dnsEventToFields;
|
package/dist/cjs/pairs.cjs
CHANGED
|
@@ -11,6 +11,19 @@ const constructPairList = (list) => {
|
|
|
11
11
|
}
|
|
12
12
|
return pairList;
|
|
13
13
|
};
|
|
14
|
+
const peelCheckboxPrefix = (flat, solutionLengths) => {
|
|
15
|
+
const firstFlat = flat[0];
|
|
16
|
+
const firstLen = solutionLengths[0];
|
|
17
|
+
if (firstFlat === void 0 || firstLen === void 0) {
|
|
18
|
+
return { flat };
|
|
19
|
+
}
|
|
20
|
+
if (firstFlat.length === 2 * firstLen + 2) {
|
|
21
|
+
const checkbox = [util.at(firstFlat, 0), util.at(firstFlat, 1)];
|
|
22
|
+
const stripped = [firstFlat.slice(2), ...flat.slice(1)];
|
|
23
|
+
return { checkbox, flat: stripped };
|
|
24
|
+
}
|
|
25
|
+
return { flat };
|
|
26
|
+
};
|
|
14
27
|
const containsIdenticalPairs = (pairsLists) => {
|
|
15
28
|
const set = /* @__PURE__ */ new Set();
|
|
16
29
|
for (const pairList of pairsLists) {
|
|
@@ -25,3 +38,4 @@ const containsIdenticalPairs = (pairsLists) => {
|
|
|
25
38
|
};
|
|
26
39
|
exports.constructPairList = constructPairList;
|
|
27
40
|
exports.containsIdenticalPairs = containsIdenticalPairs;
|
|
41
|
+
exports.peelCheckboxPrefix = peelCheckboxPrefix;
|
|
@@ -5,6 +5,7 @@ const types = require("@prosopo/types");
|
|
|
5
5
|
const userAccessPolicy = require("@prosopo/user-access-policy");
|
|
6
6
|
const blacklistRequestInspector = require("../api/blacklistRequestInspector.cjs");
|
|
7
7
|
const compositeIpAddress = require("../compositeIpAddress.cjs");
|
|
8
|
+
const enrichDnsEvent = require("./dnsEvent/enrichDnsEvent.cjs");
|
|
8
9
|
const checkSpamEmail = require("./spam/checkSpamEmail.cjs");
|
|
9
10
|
const checkTrafficFilter = require("./spam/checkTrafficFilter.cjs");
|
|
10
11
|
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
|
|
@@ -400,6 +401,8 @@ class CaptchaManager {
|
|
|
400
401
|
* - If the dapp's server passed up the end user's current IP via the
|
|
401
402
|
* verify call, look that up fresh — it's the "now" IP for filtering
|
|
402
403
|
* and may differ from the IP that originally requested the captcha.
|
|
404
|
+
* - When the session carries a `dnsEvent`, its `peerIp` and `resolverIp`
|
|
405
|
+
* are enriched and passed alongside the primary IP.
|
|
403
406
|
* - `blockAbuser` defaults to true so abusive networks are always
|
|
404
407
|
* blocked even when the site hasn't configured a trafficFilter.
|
|
405
408
|
* - Returns `{ isBlocked: false }` if every filter flag is off, without
|
|
@@ -409,14 +412,18 @@ class CaptchaManager {
|
|
|
409
412
|
* updates record / session state differently); this helper just returns
|
|
410
413
|
* the verdict.
|
|
411
414
|
*/
|
|
412
|
-
async resolveTrafficFilterCheck(env, recordIpInfo, trafficFilter, currentIp) {
|
|
415
|
+
async resolveTrafficFilterCheck(env, recordIpInfo, trafficFilter, currentIp, enrichedDnsEvent) {
|
|
413
416
|
const effective = { blockAbuser: true, ...trafficFilter };
|
|
414
417
|
const hasAny = Object.values(effective).some((v) => v);
|
|
415
418
|
if (!hasAny) {
|
|
416
419
|
return { isBlocked: false };
|
|
417
420
|
}
|
|
418
421
|
const ipInfo = currentIp ? await env.ipInfoService.lookup(currentIp) : recordIpInfo;
|
|
419
|
-
return checkTrafficFilter.checkTrafficFilter(
|
|
422
|
+
return checkTrafficFilter.checkTrafficFilter(
|
|
423
|
+
ipInfo,
|
|
424
|
+
effective,
|
|
425
|
+
enrichDnsEvent.extraIpInfosFromEnrichedDnsEvent(enrichedDnsEvent)
|
|
426
|
+
);
|
|
420
427
|
}
|
|
421
428
|
static canClientSeeScore(tier, score) {
|
|
422
429
|
return score && tier && tier !== types.Tier.Free;
|