@prosopo/provider 5.9.0 → 5.10.1
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 +13 -12
- package/.turbo/turbo-build$colon$tsc.log +27 -27
- package/.turbo/turbo-build.log +14 -13
- package/CHANGELOG.md +82 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +5 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js +51 -11
- package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
- package/dist/api/healthzGeo.d.ts +54 -0
- package/dist/api/healthzGeo.d.ts.map +1 -0
- package/dist/api/healthzGeo.js +205 -0
- package/dist/api/healthzGeo.js.map +1 -0
- package/dist/api/metrics.d.ts +3 -0
- package/dist/api/metrics.d.ts.map +1 -1
- package/dist/api/metrics.js +11 -1
- package/dist/api/metrics.js.map +1 -1
- package/dist/api/public.d.ts.map +1 -1
- package/dist/api/public.js +13 -3
- package/dist/api/public.js.map +1 -1
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +5 -1
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +51 -11
- package/dist/cjs/api/healthzGeo.cjs +209 -0
- package/dist/cjs/api/metrics.cjs +11 -0
- package/dist/cjs/api/public.cjs +13 -2
- package/dist/cjs/services/ipComparison.cjs +4 -2
- package/dist/cjs/tasks/detection/decodePayload.cjs +1126 -983
- package/dist/cjs/tasks/detection/decodePayload.js +1 -2
- package/dist/cjs/tasks/detection/getBotScore.cjs +28 -1
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +97 -80
- package/dist/cjs/util.cjs +4 -9
- package/dist/services/ipComparison.d.ts.map +1 -1
- package/dist/services/ipComparison.js +4 -2
- package/dist/services/ipComparison.js.map +1 -1
- package/dist/tasks/detection/decodePayload.d.ts +2 -2
- package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
- package/dist/tasks/detection/decodePayload.js +1 -2
- package/dist/tasks/detection/decodePayload.js.map +1 -1
- package/dist/tasks/detection/getBotScore.d.ts +9 -0
- package/dist/tasks/detection/getBotScore.d.ts.map +1 -1
- package/dist/tasks/detection/getBotScore.js +30 -4
- package/dist/tasks/detection/getBotScore.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.d.ts +8 -3
- package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +97 -80
- package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
- package/dist/tests/integration/escalationPeekBeforeConsume.integration.test.js +26 -2
- package/dist/tests/integration/escalationPeekBeforeConsume.integration.test.js.map +1 -1
- package/dist/tests/integration/trafficFilterHierarchy.integration.test.js +1 -0
- package/dist/tests/integration/trafficFilterHierarchy.integration.test.js.map +1 -1
- package/dist/tests/integration/webBotAuthAuthenticated.integration.test.js +1 -0
- package/dist/tests/integration/webBotAuthAuthenticated.integration.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js +49 -38
- package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js.map +1 -1
- package/dist/tests/unit/api/healthzGeo.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/healthzGeo.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/healthzGeo.unit.test.js +272 -0
- package/dist/tests/unit/api/healthzGeo.unit.test.js.map +1 -0
- package/dist/tests/unit/api/public.unit.test.js +132 -2
- package/dist/tests/unit/api/public.unit.test.js.map +1 -1
- package/dist/tests/unit/services/ipComparison.unit.test.js +29 -0
- package/dist/tests/unit/services/ipComparison.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js +44 -1
- package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +39 -0
- package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +78 -2
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/testUtils/mockProviderEnv.d.ts.map +1 -1
- package/dist/tests/unit/testUtils/mockProviderEnv.js +1 -0
- package/dist/tests/unit/testUtils/mockProviderEnv.js.map +1 -1
- package/dist/tests/unit/util.deepValidateIpAddress.rules.unit.test.d.ts +2 -0
- package/dist/tests/unit/util.deepValidateIpAddress.rules.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/util.deepValidateIpAddress.rules.unit.test.js +115 -0
- package/dist/tests/unit/util.deepValidateIpAddress.rules.unit.test.js.map +1 -0
- package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +70 -0
- package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +1 -1
- package/dist/tests/unit/util.ipDistance.unit.test.js +1 -0
- package/dist/tests/unit/util.ipDistance.unit.test.js.map +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +4 -9
- package/dist/util.js.map +1 -1
- package/package.json +14 -14
|
@@ -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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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Logger } from "@prosopo/logger";
|
|
2
|
+
import type { IIpInfoService } from "@prosopo/types-env";
|
|
3
|
+
export interface HealthzGeoConfig {
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
routes: ReadonlyMap<string, string>;
|
|
6
|
+
probeIntervalMs: number;
|
|
7
|
+
probeTimeoutMs: number;
|
|
8
|
+
}
|
|
9
|
+
export type HealthzGeoOutcome = "steered" | "not_steered" | "target_down" | "geo_unavailable";
|
|
10
|
+
export interface HealthzGeoDecision {
|
|
11
|
+
host: string;
|
|
12
|
+
outcome: HealthzGeoOutcome;
|
|
13
|
+
}
|
|
14
|
+
export declare const readHealthzGeoConfig: (envVars?: NodeJS.ProcessEnv, logger?: Logger) => HealthzGeoConfig;
|
|
15
|
+
export type HealthzProbe = (host: string, timeoutMs: number) => Promise<boolean>;
|
|
16
|
+
export declare const fetchHealthzProbe: HealthzProbe;
|
|
17
|
+
export interface TargetHealthMonitorOptions {
|
|
18
|
+
hosts: readonly string[];
|
|
19
|
+
intervalMs: number;
|
|
20
|
+
timeoutMs: number;
|
|
21
|
+
probe?: HealthzProbe;
|
|
22
|
+
logger?: Logger;
|
|
23
|
+
}
|
|
24
|
+
export declare class TargetHealthMonitor {
|
|
25
|
+
private readonly hosts;
|
|
26
|
+
private readonly intervalMs;
|
|
27
|
+
private readonly timeoutMs;
|
|
28
|
+
private readonly probe;
|
|
29
|
+
private readonly logger;
|
|
30
|
+
private readonly up;
|
|
31
|
+
private timer;
|
|
32
|
+
constructor(options: TargetHealthMonitorOptions);
|
|
33
|
+
isUp(host: string): boolean;
|
|
34
|
+
start(): void;
|
|
35
|
+
stop(): void;
|
|
36
|
+
pollAll(): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
export interface HealthzGeoEnv {
|
|
39
|
+
ipInfoService: IIpInfoService;
|
|
40
|
+
logger?: Logger;
|
|
41
|
+
}
|
|
42
|
+
export declare class HealthzGeoRouter {
|
|
43
|
+
readonly enabled: boolean;
|
|
44
|
+
private readonly routes;
|
|
45
|
+
private readonly ipInfoService;
|
|
46
|
+
private readonly monitor;
|
|
47
|
+
constructor(config: HealthzGeoConfig, env: HealthzGeoEnv, monitor?: TargetHealthMonitor);
|
|
48
|
+
start(): void;
|
|
49
|
+
stop(): void;
|
|
50
|
+
resolveHost(clientIp: string | undefined, ownHost: string): HealthzGeoDecision;
|
|
51
|
+
}
|
|
52
|
+
export declare const getHealthzGeoRouter: (env: HealthzGeoEnv) => HealthzGeoRouter;
|
|
53
|
+
export declare const resetHealthzGeoRouter: () => void;
|
|
54
|
+
//# sourceMappingURL=healthzGeo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthzGeo.d.ts","sourceRoot":"","sources":["../../src/api/healthzGeo.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAmDzD,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACvB;AAQD,MAAM,MAAM,iBAAiB,GAC1B,SAAS,GACT,aAAa,GACb,aAAa,GACb,iBAAiB,CAAC;AAErB,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;CAC3B;AAiCD,eAAO,MAAM,oBAAoB,aACvB,MAAM,CAAC,UAAU,WACjB,MAAM,KACb,gBAoBF,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,KACb,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,eAAO,MAAM,iBAAiB,EAAE,YAU/B,CAAC;AAEF,MAAM,WAAW,0BAA0B;IAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAA8B;IACjD,OAAO,CAAC,KAAK,CAA6C;gBAE9C,OAAO,EAAE,0BAA0B;IAQ/C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3B,KAAK,IAAI,IAAI;IAUb,IAAI,IAAI,IAAI;IAQN,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB9B;AAGD,MAAM,WAAW,aAAa;IAC7B,aAAa,EAAE,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,qBAAa,gBAAgB;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;gBAG7C,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,mBAAmB;IAe9B,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,WAAW,CACV,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,GACb,kBAAkB;CA2BrB;AAOD,eAAO,MAAM,mBAAmB,QAAS,aAAa,KAAG,gBASxD,CAAC;AAGF,eAAO,MAAM,qBAAqB,QAAO,IAGxC,CAAC"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { PublicApiPaths } from "@prosopo/types";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/api/healthzGeo.ts
|
|
4
|
+
/**
|
|
5
|
+
* Geo steering for `/healthz`.
|
|
6
|
+
*
|
|
7
|
+
* `/healthz` tells a client which node to pin its captcha calls to. By default
|
|
8
|
+
* a node answers with its own name, so the pin is whatever the DNS layer
|
|
9
|
+
* picked. With steering enabled the node instead answers with the node the
|
|
10
|
+
* caller's country is mapped to, when that node is known to be up.
|
|
11
|
+
*
|
|
12
|
+
* Off by default. With the flag off nothing here runs: no lookup, no poller,
|
|
13
|
+
* no response header, no counter.
|
|
14
|
+
*
|
|
15
|
+
* Configuration (all read once, at first use):
|
|
16
|
+
*
|
|
17
|
+
* PROSOPO_HEALTHZ_GEO_STEERING
|
|
18
|
+
* "true" enables steering. Anything else, including unset, disables it.
|
|
19
|
+
*
|
|
20
|
+
* PROSOPO_HEALTHZ_GEO_ROUTES
|
|
21
|
+
* JSON object mapping ISO 3166-1 alpha-2 country code to hostname, e.g.
|
|
22
|
+
* `{"XX":"node1.example.com","YY":"node2.example.com"}`. Keys are
|
|
23
|
+
* case-insensitive. Countries absent from the map are not steered.
|
|
24
|
+
*
|
|
25
|
+
* The map is the candidate set: a host that must not receive traffic
|
|
26
|
+
* simply does not appear in it. Nothing here derives candidates from
|
|
27
|
+
* anywhere else, so the deployment that generates the map is the single
|
|
28
|
+
* place that decides which nodes are in rotation.
|
|
29
|
+
*
|
|
30
|
+
* PROSOPO_HEALTHZ_GEO_PROBE_INTERVAL_MS (default 30000)
|
|
31
|
+
* PROSOPO_HEALTHZ_GEO_PROBE_TIMEOUT_MS (default 2000)
|
|
32
|
+
* Background health-probe period and per-probe timeout.
|
|
33
|
+
*
|
|
34
|
+
* An invalid or unparseable route map disables steering rather than failing
|
|
35
|
+
* startup — the fallback is the node's own name, which is the default
|
|
36
|
+
* behaviour.
|
|
37
|
+
*/
|
|
38
|
+
var DEFAULT_PROBE_INTERVAL_MS = 3e4;
|
|
39
|
+
var DEFAULT_PROBE_TIMEOUT_MS = 2e3;
|
|
40
|
+
var MIN_PROBE_INTERVAL_MS = 1e3;
|
|
41
|
+
/** Hostname, not a URL: no scheme, no path, no port. */
|
|
42
|
+
var hostnameSchema = z.string().min(1).max(253).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i);
|
|
43
|
+
var routesSchema = z.record(z.string().regex(/^[a-z]{2}$/i), hostnameSchema);
|
|
44
|
+
var parsePositiveInt = (raw, fallback) => {
|
|
45
|
+
if (raw === void 0) return fallback;
|
|
46
|
+
const parsed = Number.parseInt(raw, 10);
|
|
47
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
48
|
+
};
|
|
49
|
+
var parseRoutes = (raw, logger) => {
|
|
50
|
+
if (!raw || raw.trim().length === 0) return /* @__PURE__ */ new Map();
|
|
51
|
+
try {
|
|
52
|
+
const parsed = routesSchema.parse(JSON.parse(raw));
|
|
53
|
+
return new Map(Object.entries(parsed).map(([country, host]) => [country.toUpperCase(), host]));
|
|
54
|
+
} catch (err) {
|
|
55
|
+
logger?.warn(() => ({
|
|
56
|
+
msg: "PROSOPO_HEALTHZ_GEO_ROUTES is not a valid country->host map; healthz geo steering stays off",
|
|
57
|
+
err
|
|
58
|
+
}));
|
|
59
|
+
return /* @__PURE__ */ new Map();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
var readHealthzGeoConfig = (envVars = process.env, logger) => {
|
|
63
|
+
const routes = parseRoutes(envVars.PROSOPO_HEALTHZ_GEO_ROUTES, logger);
|
|
64
|
+
return {
|
|
65
|
+
enabled: envVars.PROSOPO_HEALTHZ_GEO_STEERING === "true" && routes.size > 0,
|
|
66
|
+
routes,
|
|
67
|
+
probeIntervalMs: Math.max(MIN_PROBE_INTERVAL_MS, parsePositiveInt(envVars.PROSOPO_HEALTHZ_GEO_PROBE_INTERVAL_MS, DEFAULT_PROBE_INTERVAL_MS)),
|
|
68
|
+
probeTimeoutMs: parsePositiveInt(envVars.PROSOPO_HEALTHZ_GEO_PROBE_TIMEOUT_MS, DEFAULT_PROBE_TIMEOUT_MS)
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
var fetchHealthzProbe = async (host, timeoutMs) => {
|
|
72
|
+
try {
|
|
73
|
+
return (await fetch(`https://${host}${PublicApiPaths.Healthz}`, {
|
|
74
|
+
method: "GET",
|
|
75
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
76
|
+
})).ok;
|
|
77
|
+
} catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Tracks whether each candidate host is answering, in the background.
|
|
83
|
+
*
|
|
84
|
+
* `/healthz` is served before the request pipeline that would otherwise
|
|
85
|
+
* observe a node's health, so nothing else here knows whether a candidate is
|
|
86
|
+
* reachable. Every host starts `false` and only becomes `true` on a successful
|
|
87
|
+
* probe, so a poller that has not run, cannot run, or is failing leaves every
|
|
88
|
+
* candidate down and steering off — degrading to the default behaviour by
|
|
89
|
+
* construction rather than by a fallback branch.
|
|
90
|
+
*
|
|
91
|
+
* The probe never touches the request path: `isUp()` reads a boolean.
|
|
92
|
+
*/
|
|
93
|
+
var TargetHealthMonitor = class {
|
|
94
|
+
constructor(options) {
|
|
95
|
+
this.up = /* @__PURE__ */ new Map();
|
|
96
|
+
this.hosts = [...new Set(options.hosts)];
|
|
97
|
+
this.intervalMs = options.intervalMs;
|
|
98
|
+
this.timeoutMs = options.timeoutMs;
|
|
99
|
+
this.probe = options.probe ?? fetchHealthzProbe;
|
|
100
|
+
this.logger = options.logger;
|
|
101
|
+
}
|
|
102
|
+
isUp(host) {
|
|
103
|
+
return this.up.get(host) === true;
|
|
104
|
+
}
|
|
105
|
+
start() {
|
|
106
|
+
if (this.timer !== void 0 || this.hosts.length === 0) return;
|
|
107
|
+
this.pollAll();
|
|
108
|
+
this.timer = setInterval(() => {
|
|
109
|
+
this.pollAll();
|
|
110
|
+
}, this.intervalMs);
|
|
111
|
+
this.timer.unref?.();
|
|
112
|
+
}
|
|
113
|
+
stop() {
|
|
114
|
+
if (this.timer !== void 0) {
|
|
115
|
+
clearInterval(this.timer);
|
|
116
|
+
this.timer = void 0;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** One probe round over every candidate. Exposed so tests can await it. */
|
|
120
|
+
async pollAll() {
|
|
121
|
+
await Promise.all(this.hosts.map(async (host) => {
|
|
122
|
+
let healthy = false;
|
|
123
|
+
try {
|
|
124
|
+
healthy = await this.probe(host, this.timeoutMs);
|
|
125
|
+
} catch {
|
|
126
|
+
healthy = false;
|
|
127
|
+
}
|
|
128
|
+
const previous = this.up.get(host);
|
|
129
|
+
this.up.set(host, healthy);
|
|
130
|
+
if (previous !== healthy) this.logger?.info(() => ({
|
|
131
|
+
msg: "healthz geo target health changed",
|
|
132
|
+
data: {
|
|
133
|
+
host,
|
|
134
|
+
healthy
|
|
135
|
+
}
|
|
136
|
+
}));
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Picks the host `/healthz` should answer with. Pure apart from reading the
|
|
142
|
+
* monitor's booleans and the memory-mapped country lookup — it never awaits
|
|
143
|
+
* anything, so it cannot delay or fail a health check.
|
|
144
|
+
*/
|
|
145
|
+
var HealthzGeoRouter = class {
|
|
146
|
+
constructor(config, env, monitor) {
|
|
147
|
+
this.enabled = config.enabled;
|
|
148
|
+
this.routes = config.routes;
|
|
149
|
+
this.ipInfoService = env.ipInfoService;
|
|
150
|
+
this.monitor = monitor ?? new TargetHealthMonitor({
|
|
151
|
+
hosts: [...new Set(config.routes.values())],
|
|
152
|
+
intervalMs: config.probeIntervalMs,
|
|
153
|
+
timeoutMs: config.probeTimeoutMs,
|
|
154
|
+
logger: env.logger
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
start() {
|
|
158
|
+
if (this.enabled) this.monitor.start();
|
|
159
|
+
}
|
|
160
|
+
stop() {
|
|
161
|
+
this.monitor.stop();
|
|
162
|
+
}
|
|
163
|
+
resolveHost(clientIp, ownHost) {
|
|
164
|
+
if (!this.enabled) return {
|
|
165
|
+
host: ownHost,
|
|
166
|
+
outcome: "not_steered"
|
|
167
|
+
};
|
|
168
|
+
if (!clientIp) return {
|
|
169
|
+
host: ownHost,
|
|
170
|
+
outcome: "geo_unavailable"
|
|
171
|
+
};
|
|
172
|
+
if (!this.ipInfoService.isAvailable()) return {
|
|
173
|
+
host: ownHost,
|
|
174
|
+
outcome: "geo_unavailable"
|
|
175
|
+
};
|
|
176
|
+
const country = this.ipInfoService.country(clientIp);
|
|
177
|
+
if (!country) return {
|
|
178
|
+
host: ownHost,
|
|
179
|
+
outcome: "geo_unavailable"
|
|
180
|
+
};
|
|
181
|
+
const target = this.routes.get(country.toUpperCase());
|
|
182
|
+
if (target === void 0 || target === ownHost) return {
|
|
183
|
+
host: ownHost,
|
|
184
|
+
outcome: "not_steered"
|
|
185
|
+
};
|
|
186
|
+
if (!this.monitor.isUp(target)) return {
|
|
187
|
+
host: ownHost,
|
|
188
|
+
outcome: "target_down"
|
|
189
|
+
};
|
|
190
|
+
return {
|
|
191
|
+
host: target,
|
|
192
|
+
outcome: "steered"
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
var cachedRouter;
|
|
197
|
+
var getHealthzGeoRouter = (env) => {
|
|
198
|
+
if (!cachedRouter) {
|
|
199
|
+
cachedRouter = new HealthzGeoRouter(readHealthzGeoConfig(process.env, env.logger), env);
|
|
200
|
+
cachedRouter.start();
|
|
201
|
+
}
|
|
202
|
+
return cachedRouter;
|
|
203
|
+
};
|
|
204
|
+
//#endregion
|
|
205
|
+
export { HealthzGeoRouter, TargetHealthMonitor, fetchHealthzProbe, getHealthzGeoRouter, readHealthzGeoConfig };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthzGeo.js","sourceRoot":"","sources":["../../src/api/healthzGeo.ts"],"names":[],"mappings":"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"}
|
package/dist/api/metrics.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { ProviderEnvironment } from "@prosopo/env";
|
|
|
2
2
|
import { type CaptchaType } from "@prosopo/types";
|
|
3
3
|
import type { RequestHandler } from "express";
|
|
4
4
|
import { Counter, Gauge, Histogram, Registry } from "prom-client";
|
|
5
|
+
import type { HealthzGeoOutcome } from "./healthzGeo.js";
|
|
5
6
|
export declare const metricsEnabled: () => boolean;
|
|
6
7
|
interface ProviderMetrics {
|
|
7
8
|
registry: Registry;
|
|
@@ -18,6 +19,7 @@ interface ProviderMetrics {
|
|
|
18
19
|
spamEmailTotal: Counter<"result">;
|
|
19
20
|
maintenanceMode: Gauge<never>;
|
|
20
21
|
redisReady: Gauge<"actor">;
|
|
22
|
+
healthzGeoOutcomesTotal: Counter<"outcome">;
|
|
21
23
|
}
|
|
22
24
|
export declare const getMetrics: () => ProviderMetrics;
|
|
23
25
|
export declare const recordCaptchaIssued: (type: CaptchaType) => void;
|
|
@@ -33,6 +35,7 @@ export declare const recordDetectorTriggered: (detectors: Array<string | number>
|
|
|
33
35
|
export declare const recordBlockedRequest: (reason: string) => void;
|
|
34
36
|
export declare const recordDomainValidation: (result: string) => void;
|
|
35
37
|
export declare const recordSpamEmail: (result: string) => void;
|
|
38
|
+
export declare const recordHealthzGeoOutcome: (outcome: HealthzGeoOutcome) => void;
|
|
36
39
|
export declare const setMaintenanceModeGauge: (on: boolean) => void;
|
|
37
40
|
export declare const metricsMiddleware: () => RequestHandler;
|
|
38
41
|
export declare const metricsHandler: (env: ProviderEnvironment) => RequestHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/api/metrics.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAEN,KAAK,WAAW,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAyB,cAAc,EAAY,MAAM,SAAS,CAAC;AAC/E,OAAO,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,EAER,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/api/metrics.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAEN,KAAK,WAAW,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAyB,cAAc,EAAY,MAAM,SAAS,CAAC;AAC/E,OAAO,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,EAER,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAMzD,eAAO,MAAM,cAAc,QAAO,OACc,CAAC;AAmCjD,UAAU,eAAe;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC1D,mBAAmB,EAAE,SAAS,CAAC,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC9D,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,kBAAkB,EAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC1D,uBAAuB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,oBAAoB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,qBAAqB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,uBAAuB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC5C;AA0HD,eAAO,MAAM,UAAU,QAAO,eAK7B,CAAC;AAQF,eAAO,MAAM,mBAAmB,SAAU,WAAW,KAAG,IAGvD,CAAC;AAEF,eAAO,MAAM,uBAAuB,SAAU,WAAW,KAAG,IAG3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,SAAU;IACzC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;CACvD,KAAG,IAOH,CAAC;AAEF,eAAO,MAAM,0BAA0B,aAAc,MAAM,KAAG,IAG7D,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,IAG9C,CAAC;AAEF,eAAO,MAAM,uBAAuB,cACxB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAC/B,IAMF,CAAC;AAEF,eAAO,MAAM,oBAAoB,WAAY,MAAM,KAAG,IAGrD,CAAC;AAEF,eAAO,MAAM,sBAAsB,WAAY,MAAM,KAAG,IAGvD,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,IAGhD,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,iBAAiB,KAAG,IAGpE,CAAC;AAEF,eAAO,MAAM,uBAAuB,OAAQ,OAAO,KAAG,IAGrD,CAAC;AASF,eAAO,MAAM,iBAAiB,QAAO,cAkBpC,CAAC;AASF,eAAO,MAAM,cAAc,QAAS,mBAAmB,KAAG,cA4BzD,CAAC"}
|
package/dist/api/metrics.js
CHANGED
|
@@ -154,6 +154,12 @@ var buildMetrics = () => {
|
|
|
154
154
|
help: "1 when the given redis connection is ready, else 0",
|
|
155
155
|
labelNames: ["actor"],
|
|
156
156
|
registers: [registry]
|
|
157
|
+
}),
|
|
158
|
+
healthzGeoOutcomesTotal: new Counter({
|
|
159
|
+
name: `${PREFIX}healthz_geo_outcomes_total`,
|
|
160
|
+
help: "Healthz geo steering outcomes (steered/not_steered/target_down/geo_unavailable)",
|
|
161
|
+
labelNames: ["outcome"],
|
|
162
|
+
registers: [registry]
|
|
157
163
|
})
|
|
158
164
|
};
|
|
159
165
|
};
|
|
@@ -202,6 +208,10 @@ var recordSpamEmail = (result) => {
|
|
|
202
208
|
if (!metricsEnabled()) return;
|
|
203
209
|
getMetrics().spamEmailTotal.inc({ result });
|
|
204
210
|
};
|
|
211
|
+
var recordHealthzGeoOutcome = (outcome) => {
|
|
212
|
+
if (!metricsEnabled()) return;
|
|
213
|
+
getMetrics().healthzGeoOutcomesTotal.inc({ outcome });
|
|
214
|
+
};
|
|
205
215
|
var setMaintenanceModeGauge = (on) => {
|
|
206
216
|
if (!metricsEnabled()) return;
|
|
207
217
|
getMetrics().maintenanceMode.set(on ? 1 : 0);
|
|
@@ -245,4 +255,4 @@ var metricsHandler = (env) => {
|
|
|
245
255
|
};
|
|
246
256
|
};
|
|
247
257
|
//#endregion
|
|
248
|
-
export { getMetrics, metricsEnabled, metricsHandler, metricsMiddleware, recordBlockedRequest, recordBotScore, recordCaptchaIssueError, recordCaptchaIssued, recordCaptchaVerify, recordDetectorTriggered, recordDomainValidation, recordFrictionlessDecision, recordSpamEmail, setMaintenanceModeGauge };
|
|
258
|
+
export { getMetrics, metricsEnabled, metricsHandler, metricsMiddleware, recordBlockedRequest, recordBotScore, recordCaptchaIssueError, recordCaptchaIssued, recordCaptchaVerify, recordDetectorTriggered, recordDomainValidation, recordFrictionlessDecision, recordHealthzGeoOutcome, recordSpamEmail, setMaintenanceModeGauge };
|
package/dist/api/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/api/metrics.ts"],"names":[],"mappings":"AAeA,OAAO,EACN,aAAa,EAEb,cAAc,EACd,cAAc,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,EACR,qBAAqB,GACrB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/api/metrics.ts"],"names":[],"mappings":"AAeA,OAAO,EACN,aAAa,EAEb,cAAc,EACd,cAAc,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,EACR,qBAAqB,GACrB,MAAM,aAAa,CAAC;AAOrB,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE,CAC3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,OAAO,CAAC;AAEjD,MAAM,MAAM,GAAG,UAAU,CAAC;AAG1B,MAAM,eAAe,GAAG;IACvB,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;CACvD,CAAC;AAIF,MAAM,aAAa,GAAG;IACrB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CACnE,CAAC;AAKF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS;IACpC,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;IAChC,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;IAChC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,GAAY,EAAU,EAAE;IAG/C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAChD,CAAC,CAAC;AAwBF,IAAI,OAAoC,CAAC;AAEzC,MAAM,YAAY,GAAG,GAAoB,EAAE;IAC1C,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAEhC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9D,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC;QACrC,IAAI,EAAE,GAAG,MAAM,qBAAqB;QACpC,IAAI,EAAE,iDAAiD;QACvD,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAU;QAClD,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,IAAI,SAAS,CAAC;QACzC,IAAI,EAAE,GAAG,MAAM,+BAA+B;QAC9C,IAAI,EAAE,0CAA0C;QAChD,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAU;QAClD,OAAO,EAAE,eAAe;QACxB,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC;QACtC,IAAI,EAAE,GAAG,MAAM,sBAAsB;QACrC,IAAI,EAAE,oCAAoC;QAC1C,UAAU,EAAE,CAAC,MAAM,CAAU;QAC7B,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,uBAAuB,GAAG,IAAI,OAAO,CAAC;QAC3C,IAAI,EAAE,GAAG,MAAM,4BAA4B;QAC3C,IAAI,EAAE,kDAAkD;QACxD,UAAU,EAAE,CAAC,MAAM,CAAU;QAC7B,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC;QACtC,IAAI,EAAE,GAAG,MAAM,sBAAsB;QACrC,IAAI,EAAE,sDAAsD;QAC5D,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAU;QACjD,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,uBAAuB,GAAG,IAAI,OAAO,CAAC;QAC3C,IAAI,EAAE,GAAG,MAAM,2BAA2B;QAC1C,IAAI,EAAE,qEAAqE;QAC3E,UAAU,EAAE,CAAC,UAAU,CAAU;QACjC,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC;QAC9B,IAAI,EAAE,GAAG,MAAM,WAAW;QAC1B,IAAI,EAAE,yGAAyG;QAC/G,OAAO,EAAE,aAAa;QACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAC;QAC1C,IAAI,EAAE,GAAG,MAAM,0BAA0B;QACzC,IAAI,EAAE,gDAAgD;QACtD,UAAU,EAAE,CAAC,UAAU,CAAU;QACjC,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC;QACxC,IAAI,EAAE,GAAG,MAAM,wBAAwB;QACvC,IAAI,EAAE,+DAA+D;QACrE,UAAU,EAAE,CAAC,QAAQ,CAAU;QAC/B,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAC;QACzC,IAAI,EAAE,GAAG,MAAM,yBAAyB;QACxC,IAAI,EAAE,qCAAqC;QAC3C,UAAU,EAAE,CAAC,QAAQ,CAAU;QAC/B,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC;QAClC,IAAI,EAAE,GAAG,MAAM,kBAAkB;QACjC,IAAI,EAAE,kCAAkC;QACxC,UAAU,EAAE,CAAC,QAAQ,CAAU;QAC/B,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC;QACjC,IAAI,EAAE,GAAG,MAAM,kBAAkB;QACjC,IAAI,EAAE,oDAAoD;QAC1D,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IAGH,eAAe,CAAC,GAAG,CAClB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9D,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC;QAC5B,IAAI,EAAE,GAAG,MAAM,aAAa;QAC5B,IAAI,EAAE,oDAAoD;QAC1D,UAAU,EAAE,CAAC,OAAO,CAAU;QAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IAKH,MAAM,uBAAuB,GAAG,IAAI,OAAO,CAAC;QAC3C,IAAI,EAAE,GAAG,MAAM,4BAA4B;QAC3C,IAAI,EAAE,iFAAiF;QACvF,UAAU,EAAE,CAAC,SAAS,CAAU;QAChC,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC,CAAC;IAEH,OAAO;QACN,QAAQ;QACR,iBAAiB;QACjB,mBAAmB;QACnB,kBAAkB;QAClB,uBAAuB;QACvB,kBAAkB;QAClB,uBAAuB;QACvB,QAAQ;QACR,sBAAsB;QACtB,oBAAoB;QACpB,qBAAqB;QACrB,cAAc;QACd,eAAe;QACf,UAAU;QACV,uBAAuB;KACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAoB,EAAE;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,GAAG,YAAY,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAiB,EAAQ,EAAE;IAC9D,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAiB,EAAQ,EAAE;IAClE,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAInC,EAAQ,EAAE;IACV,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;QAC7C,MAAM,EAAE,IAAI,CAAC,MAAM;KACnB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAgB,EAAQ,EAAE;IACpE,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAQ,EAAE;IACrD,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,SAAiC,EAC1B,EAAE;IACT,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAQ,EAAE;IAC5D,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAQ,EAAE;IAC9D,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAQ,EAAE;IACvD,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAA0B,EAAQ,EAAE;IAC3E,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EAAW,EAAQ,EAAE;IAC5D,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9B,UAAU,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAmB,EAAE;IACrD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC1D,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG;gBACd,KAAK;gBACL,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;aAC9B,CAAC;YACF,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;YACtE,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;YACvB,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,IAAI,EAAE,CAAC;IACR,CAAC,CAAC;AACH,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAwB,EAAkB,EAAE;IAC1E,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAChD,IAAI,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,UAAU,KAAK,EAAE,EAAE,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACrC,OAAO;QACR,CAAC;QACD,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC;YACJ,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC,CAAC,UAAU,CAAC,GAAG,CACf,EAAE,KAAK,EAAE,SAAS,EAAE,EACpB,EAAE,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzC,CAAC;YACF,CAAC,CAAC,UAAU,CAAC,GAAG,CACf,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB,EAAE,CAAC,6BAA6B,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAIR,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC;AACH,CAAC,CAAC"}
|
package/dist/api/public.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/api/public.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/api/public.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAa/C,wBAAgB,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CA2G7D"}
|
package/dist/api/public.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { metricsEnabled, metricsHandler } from "./metrics.js";
|
|
1
|
+
import { metricsEnabled, metricsHandler, recordHealthzGeoOutcome } from "./metrics.js";
|
|
2
|
+
import { getHealthzGeoRouter } from "./healthzGeo.js";
|
|
2
3
|
import { ProsopoApiError } from "@prosopo/common";
|
|
3
4
|
import { PublicApiPaths } from "@prosopo/types";
|
|
4
5
|
import { version } from "@prosopo/util";
|
|
@@ -12,11 +13,19 @@ import express from "express";
|
|
|
12
13
|
*/
|
|
13
14
|
function publicRouter(env) {
|
|
14
15
|
const router = express.Router();
|
|
16
|
+
const geo = getHealthzGeoRouter(env);
|
|
15
17
|
router.get(PublicApiPaths.Healthz, (req, res) => {
|
|
16
|
-
const
|
|
18
|
+
const ownHost = env.config.host && env.config.host.length > 0 ? env.config.host : req.hostname;
|
|
19
|
+
if (!geo.enabled) return res.status(200).json({
|
|
20
|
+
ok: true,
|
|
21
|
+
host: ownHost
|
|
22
|
+
});
|
|
23
|
+
res.set("Cache-Control", "no-store, private");
|
|
24
|
+
const decision = geo.resolveHost(req.ip, ownHost);
|
|
25
|
+
recordHealthzGeoOutcome(decision.outcome);
|
|
17
26
|
return res.status(200).json({
|
|
18
27
|
ok: true,
|
|
19
|
-
host
|
|
28
|
+
host: decision.host
|
|
20
29
|
});
|
|
21
30
|
});
|
|
22
31
|
if (metricsEnabled()) router.get(PublicApiPaths.Metrics, metricsHandler(env));
|
|
@@ -31,6 +40,7 @@ function publicRouter(env) {
|
|
|
31
40
|
const response = {
|
|
32
41
|
version,
|
|
33
42
|
message: "Provider online",
|
|
43
|
+
host: env.config.host && env.config.host.length > 0 ? env.config.host : req.hostname,
|
|
34
44
|
redis: [{
|
|
35
45
|
actor: "General",
|
|
36
46
|
isReady: redisConnection.isReady(),
|
package/dist/api/public.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/api/public.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAwB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,OAAwB,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/api/public.ts"],"names":[],"mappings":"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"}
|
|
@@ -267,7 +267,7 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
|
|
|
267
267
|
...verifiedSignerUrl && { agent: verifiedSignerUrl }
|
|
268
268
|
});
|
|
269
269
|
}
|
|
270
|
-
const { baseBotScore: rawBaseBotScore, timestamp: rawTimestamp, userId: rawUserId, userAgent: rawUserAgent, webView, iFrame, decryptedHeadHash, decryptionFailed: rawDecryptionFailed, triggeredDetectors, shadowDomPenalty, entropyMathRandomFingerprint, entropyCryptoFingerprint, entropyWallClockOffsetMs, entropyMathRandomFirst, g, sw, md, bn, fs, bundleId } = decryptedPayload;
|
|
270
|
+
const { baseBotScore: rawBaseBotScore, timestamp: rawTimestamp, userId: rawUserId, userAgent: rawUserAgent, webView, iFrame, decryptedHeadHash, decryptionFailed: rawDecryptionFailed, triggeredDetectors, shadowDomPenalty, entropyMathRandomFingerprint, entropyCryptoFingerprint, entropyWallClockOffsetMs, entropyMathRandomFirst, g, i, cv, sq, b, sw, md, bn, fs, bundleId } = decryptedPayload;
|
|
271
271
|
const detectorOverride = process.env.PROSOPO_TEST_FRICTIONLESS_DETECTOR_OVERRIDE === "1";
|
|
272
272
|
const baseBotScore = detectorOverride ? 0 : rawBaseBotScore;
|
|
273
273
|
const timestamp = detectorOverride ? Date.now() : rawTimestamp;
|
|
@@ -328,6 +328,10 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
|
|
|
328
328
|
...entropyWallClockOffsetMs !== void 0 && { entropyWallClockOffsetMs },
|
|
329
329
|
...entropyMathRandomFirst !== void 0 && { entropyMathRandomFirst },
|
|
330
330
|
...g !== void 0 && { g },
|
|
331
|
+
...i !== void 0 && { i },
|
|
332
|
+
...cv !== void 0 && { cv },
|
|
333
|
+
...sq !== void 0 && { sq },
|
|
334
|
+
...b !== void 0 && { b },
|
|
331
335
|
...sw !== void 0 && { sw },
|
|
332
336
|
...md !== void 0 && { md },
|
|
333
337
|
...bn !== void 0 && { bn },
|
|
@@ -157,17 +157,57 @@ var buildEscalation = async (tasks, result, challenge, perConnectionSignals, sit
|
|
|
157
157
|
};
|
|
158
158
|
})();
|
|
159
159
|
const selectionReason = routed.reason ?? originSession.reason;
|
|
160
|
-
const newSession = await tasks.frictionlessManager.createSession(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
160
|
+
const newSession = await tasks.frictionlessManager.createSession({
|
|
161
|
+
token: originSession.token,
|
|
162
|
+
score: originSession.score,
|
|
163
|
+
threshold: originSession.threshold,
|
|
164
|
+
scoreComponents: originSession.scoreComponents,
|
|
165
|
+
ipAddress: originSession.ipAddress,
|
|
166
|
+
captchaType: escalatedType,
|
|
167
|
+
siteKey: originSession.siteKey ?? powRecord.dappAccount,
|
|
168
|
+
solvedImagesCount: escalatedType === _prosopo_types.CaptchaType.image ? Math.min(routed.solvedImagesCount ?? originSession.solvedImagesCount ?? tasks.config.captchas.solved.count, imageMaxRounds) : void 0,
|
|
169
|
+
userSitekeyIpHash: originSession.userSitekeyIpHash,
|
|
170
|
+
webView: originSession.webView,
|
|
171
|
+
iFrame: originSession.iFrame,
|
|
172
|
+
decryptedHeadHash: originSession.decryptedHeadHash,
|
|
173
|
+
reason: selectionReason,
|
|
174
|
+
ipInfo: originSession.ipInfo,
|
|
175
|
+
headers: originSession.headers,
|
|
176
|
+
mode: originSession.mode,
|
|
177
|
+
simdReadings: originSession.simdReadings,
|
|
178
|
+
entropyMathRandomFingerprint: originSession.entropyMathRandomFingerprint,
|
|
179
|
+
entropyCryptoFingerprint: originSession.entropyCryptoFingerprint,
|
|
180
|
+
entropyWallClockOffsetMs: originSession.entropyWallClockOffsetMs,
|
|
181
|
+
entropyMathRandomFirst: originSession.entropyMathRandomFirst,
|
|
182
|
+
bundleId: originSession.bundleId,
|
|
183
|
+
currentUrl: originSession.currentUrl,
|
|
184
|
+
iframeUrl: originSession.iframeUrl,
|
|
185
|
+
isProtect: originSession.isProtect,
|
|
186
|
+
isEscalation: true,
|
|
187
|
+
originSessionId: originSession.sessionId,
|
|
188
|
+
g: originSession.g,
|
|
189
|
+
i: originSession.i,
|
|
190
|
+
cv: originSession.cv,
|
|
191
|
+
sq: originSession.sq,
|
|
192
|
+
b: originSession.b,
|
|
193
|
+
sw: originSession.sw,
|
|
194
|
+
md: originSession.md,
|
|
195
|
+
bn: originSession.bn,
|
|
196
|
+
fs: originSession.fs,
|
|
197
|
+
tcpToChelloUs: perConnectionSignals?.tcpToChelloUs,
|
|
198
|
+
chelloToHandshakeUs: perConnectionSignals?.chelloToHandshakeUs,
|
|
199
|
+
synNs: perConnectionSignals?.synNs,
|
|
200
|
+
synackNs: perConnectionSignals?.synackNs,
|
|
201
|
+
ackNs: perConnectionSignals?.ackNs,
|
|
202
|
+
observedTtl: perConnectionSignals?.observedTtl,
|
|
203
|
+
tcpMss: perConnectionSignals?.tcpMss,
|
|
204
|
+
tcpWscale: perConnectionSignals?.tcpWscale,
|
|
205
|
+
tcpOptsFlags: perConnectionSignals?.tcpOptsFlags,
|
|
206
|
+
tcpOptsOrder: perConnectionSignals?.tcpOptsOrder,
|
|
207
|
+
tcpWindow: perConnectionSignals?.tcpWindow,
|
|
208
|
+
puzzleTolerance: escalationPuzzleOverrides?.puzzleTolerance,
|
|
209
|
+
puzzle: escalationPuzzleOverrides?.puzzle
|
|
210
|
+
});
|
|
171
211
|
if (tasks.writeQueue) await tasks.writeQueue.cacheSessionEscalation(powRecord.sessionId, newSession.sessionId);
|
|
172
212
|
return {
|
|
173
213
|
captchaType: escalatedType,
|