@prosopo/cli 2.3.1 → 2.3.2

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.
@@ -1,4 +1,3 @@
1
- export { default as commandAddBlockRules } from "./addBlockRules.js";
2
1
  export { default as commandProviderSetDataset } from "./providerSetDataset.js";
3
2
  export { default as commandStoreCaptchasExternally } from "./storeCaptchasExternally.js";
4
3
  export { default as commandVersion } from "./version.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,4 +1,3 @@
1
- export { default as commandAddBlockRules } from "./addBlockRules.js";
2
1
  export { default as commandProviderSetDataset } from "./providerSetDataset.js";
3
2
  export { default as commandStoreCaptchasExternally } from "./storeCaptchasExternally.js";
4
3
  export { default as commandVersion } from "./version.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { KeyringPair } from "@polkadot/keyring/types";
2
+ import type { BlockRule, ProsopoConfigOutput } from "@prosopo/types";
3
+ import type { IPBlockRuleRecord, UserAccountBlockRuleRecord } from "@prosopo/types-database";
4
+ import type { Rule } from "@prosopo/user-access-policy";
5
+ import type { CommandModule } from "yargs";
6
+ declare class MigrateBlockRuleDbRecordsToUserAccessPolicyCommand implements CommandModule {
7
+ private readonly pair;
8
+ private readonly config;
9
+ command: string;
10
+ describe: string;
11
+ constructor(pair: KeyringPair, config: ProsopoConfigOutput);
12
+ handler: () => Promise<void>;
13
+ protected convertIpBlockRulesToUserAccessRules(ipBlockRules: IPBlockRuleRecord[]): Rule[];
14
+ protected convertUserAccountBlockRulesToUserAccessRules(userAccountBlockRules: UserAccountBlockRuleRecord[]): Rule[];
15
+ protected convertIpBlockRuleToUserAccessRule(ipBlockRule: IPBlockRuleRecord): Rule;
16
+ protected convertUserAccountBlockRuleToUserAccessRule(userAccountBlockRule: UserAccountBlockRuleRecord): Rule;
17
+ protected convertBlockRuleToUserAccessRule(blockRule: BlockRule): Rule;
18
+ }
19
+ export { MigrateBlockRuleDbRecordsToUserAccessPolicyCommand };
20
+ //# sourceMappingURL=migrateBlockRulesToUserAccessRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrateBlockRulesToUserAccessRules.d.ts","sourceRoot":"","sources":["../../src/commands/migrateBlockRulesToUserAccessRules.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EACX,iBAAiB,EACjB,0BAA0B,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,cAAM,kDACL,YAAW,aAAa;IAMvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALjB,OAAO,SAA8C;IACrD,QAAQ,SAA8C;gBAG3C,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,mBAAmB;IAGtC,OAAO,QAAa,OAAO,CAAC,IAAI,CAAC,CAsBtC;IAEF,SAAS,CAAC,oCAAoC,CAC7C,YAAY,EAAE,iBAAiB,EAAE,GAC/B,IAAI,EAAE;IAMT,SAAS,CAAC,6CAA6C,CACtD,qBAAqB,EAAE,0BAA0B,EAAE,GACjD,IAAI,EAAE;IAMT,SAAS,CAAC,kCAAkC,CAC3C,WAAW,EAAE,iBAAiB,GAC5B,IAAI;IAgBP,SAAS,CAAC,2CAA2C,CACpD,oBAAoB,EAAE,0BAA0B,GAC9C,IAAI;IASP,SAAS,CAAC,gCAAgC,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;CAiBtE;AAED,OAAO,EAAE,kDAAkD,EAAE,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { ProviderEnvironment } from "@prosopo/env";
2
+ import { Address4 } from "ip-address";
3
+ class MigrateBlockRuleDbRecordsToUserAccessPolicyCommand {
4
+ constructor(pair, config) {
5
+ this.pair = pair;
6
+ this.config = config;
7
+ this.command = "migrate-block-rules-to-user-access-rules";
8
+ this.describe = "Migrate block rules to user access rules";
9
+ this.handler = async () => {
10
+ const env = new ProviderEnvironment(this.config, this.pair);
11
+ await env.isReady();
12
+ const db = env.getDb();
13
+ const ipBlockRules = await db.getAllIpBlockRules();
14
+ const userAccountBlockRules = await db.getAllUserAccountBlockRules();
15
+ const userAccessRulesFromIpBlockRules = this.convertIpBlockRulesToUserAccessRules(ipBlockRules);
16
+ const userAccessRulesFromUserAccountBlockRules = this.convertUserAccountBlockRulesToUserAccessRules(userAccountBlockRules);
17
+ const newUserAccessRules = [
18
+ ...userAccessRulesFromIpBlockRules,
19
+ ...userAccessRulesFromUserAccountBlockRules,
20
+ ];
21
+ const userAccessRulesStorage = db.getUserAccessRulesStorage();
22
+ await userAccessRulesStorage.insertMany(newUserAccessRules);
23
+ };
24
+ }
25
+ convertIpBlockRulesToUserAccessRules(ipBlockRules) {
26
+ return ipBlockRules.map((ipBlockRule) => this.convertIpBlockRuleToUserAccessRule(ipBlockRule));
27
+ }
28
+ convertUserAccountBlockRulesToUserAccessRules(userAccountBlockRules) {
29
+ return userAccountBlockRules.map((userAccountBlockRule) => this.convertUserAccountBlockRuleToUserAccessRule(userAccountBlockRule));
30
+ }
31
+ convertIpBlockRuleToUserAccessRule(ipBlockRule) {
32
+ const userAccessRule = this.convertBlockRuleToUserAccessRule(ipBlockRule);
33
+ const ipAsBigInt = BigInt(ipBlockRule.ip);
34
+ const ipAddress = Address4.fromBigInt(ipAsBigInt);
35
+ userAccessRule.userIp = {
36
+ v4: {
37
+ asNumeric: ipAsBigInt,
38
+ asString: ipAddress.address.toString(),
39
+ },
40
+ };
41
+ return userAccessRule;
42
+ }
43
+ convertUserAccountBlockRuleToUserAccessRule(userAccountBlockRule) {
44
+ const userAccessRule = this.convertBlockRuleToUserAccessRule(userAccountBlockRule);
45
+ userAccessRule.userId = userAccountBlockRule.userAccount;
46
+ return userAccessRule;
47
+ }
48
+ convertBlockRuleToUserAccessRule(blockRule) {
49
+ const userAccessRule = {
50
+ isUserBlocked: blockRule.hardBlock,
51
+ clientId: blockRule.dappAccount,
52
+ };
53
+ if (undefined !== blockRule.captchaConfig) {
54
+ userAccessRule.config = {
55
+ imageCaptcha: {
56
+ solvedCount: blockRule.captchaConfig.solved.count,
57
+ unsolvedCount: blockRule.captchaConfig.unsolved.count,
58
+ },
59
+ };
60
+ }
61
+ return userAccessRule;
62
+ }
63
+ }
64
+ export { MigrateBlockRuleDbRecordsToUserAccessPolicyCommand };
65
+ //# sourceMappingURL=migrateBlockRulesToUserAccessRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrateBlockRulesToUserAccessRules.js","sourceRoot":"","sources":["../../src/commands/migrateBlockRulesToUserAccessRules.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ declare const _default: (pair: KeyringPair, config: ProsopoConfigOutput, cmdArgs
6
6
  }) => {
7
7
  command: string;
8
8
  describe: string;
9
- handler: () => Promise<void>;
9
+ handler: () => void;
10
10
  };
11
11
  export default _default;
12
12
  //# sourceMappingURL=version.d.ts.map
@@ -5,7 +5,7 @@ export default (pair, config, cmdArgs) => {
5
5
  return {
6
6
  command: "version",
7
7
  describe: "Return the version of the software",
8
- handler: async () => {
8
+ handler: () => {
9
9
  logger.info(`Version: ${JSON.stringify(version)}`);
10
10
  },
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,eAAe,CACd,IAAiB,EACjB,MAA2B,EAC3B,OAA6B,EAC5B,EAAE;IACH,MAAM,MAAM,GACX,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAEjE,OAAO;QACN,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,oCAAoC;QAC9C,OAAO,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;KACD,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,eAAe,CACd,IAAiB,EACjB,MAA2B,EAC3B,OAA6B,EAC5B,EAAE;IACH,MAAM,MAAM,GACX,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAEjE,OAAO;QACN,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,oCAAoC;QAC9C,OAAO,EAAE,GAAG,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;KACD,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA8DnD,wBAAsB,KAAK,CAC1B,GAAG,CAAC,EAAE,mBAAmB,EACzB,KAAK,CAAC,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,MAAM,mBAqCb;AAED,wBAAsB,QAAQ,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAO,mBAGxE"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAuFnD,wBAAsB,KAAK,CAC1B,GAAG,CAAC,EAAE,mBAAmB,EACzB,KAAK,CAAC,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,MAAM,mBAqCb;AAED,wBAAsB,QAAQ,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAO,mBAGxE"}
package/dist/start.js CHANGED
@@ -1,9 +1,11 @@
1
+ import { apiExpressRouterFactory, createApiExpressDefaultEndpointAdapter, } from "@prosopo/api-express-router";
1
2
  import { loadEnv } from "@prosopo/dotenv";
2
3
  import { ProviderEnvironment } from "@prosopo/env";
3
4
  import { getPairAsync } from "@prosopo/keyring";
4
5
  import { i18nMiddleware } from "@prosopo/locale";
5
- import { domainMiddleware, getClientList, headerCheckMiddleware, prosopoAdminRouter, prosopoRouter, prosopoVerifyRouter, publicRouter, storeCaptchasExternally, } from "@prosopo/provider";
6
+ import { api, domainMiddleware, getClientList, headerCheckMiddleware, prosopoRouter, prosopoVerifyRouter, publicRouter, storeCaptchasExternally, } from "@prosopo/provider";
6
7
  import { authMiddleware, blockMiddleware } from "@prosopo/provider";
8
+ import { createApiRuleRoutesProvider, getExpressApiRuleRateLimits, } from "@prosopo/user-access-policy";
7
9
  import cors from "cors";
8
10
  import express from "express";
9
11
  import rateLimit from "express-rate-limit";
@@ -13,6 +15,9 @@ function startApi(env, admin = false, port) {
13
15
  env.logger.info("Starting Prosopo API");
14
16
  const apiApp = express();
15
17
  const apiPort = port || env.config.server.port;
18
+ const apiEndpointAdapter = createApiExpressDefaultEndpointAdapter(env.logger);
19
+ const apiRuleRoutesProvider = createApiRuleRoutesProvider(env.getDb().getUserAccessRulesStorage());
20
+ const apiAdminRoutesProvider = api.admin.createApiAdminRoutesProvider(env);
16
21
  apiApp.set("trust proxy", env.config.proxyCount);
17
22
  apiApp.use(cors());
18
23
  apiApp.use(express.json({ limit: "50mb" }));
@@ -24,8 +29,10 @@ function startApi(env, admin = false, port) {
24
29
  apiApp.use(prosopoRouter(env));
25
30
  apiApp.use(publicRouter(env));
26
31
  apiApp.use("/v1/prosopo/provider/admin", authMiddleware(env));
27
- apiApp.use(prosopoAdminRouter(env));
28
- const rateLimits = env.config.rateLimits;
32
+ apiApp.use(apiExpressRouterFactory.createRouter(apiRuleRoutesProvider, apiEndpointAdapter));
33
+ apiApp.use(apiExpressRouterFactory.createRouter(apiAdminRoutesProvider, createApiExpressDefaultEndpointAdapter(env.logger, 400)));
34
+ const configRateLimits = env.config.rateLimits;
35
+ const rateLimits = { ...configRateLimits, ...getExpressApiRuleRateLimits() };
29
36
  for (const [path, limit] of Object.entries(rateLimits)) {
30
37
  const enumPath = path;
31
38
  apiApp.use(enumPath, rateLimit(limit));
package/dist/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/cli",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "CLI for Prosopo Provider",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -29,25 +29,29 @@
29
29
  "@polkadot/keyring": "12.6.2",
30
30
  "@polkadot/types-codec": "10.13.1",
31
31
  "@polkadot/util-crypto": "12.6.2",
32
- "@prosopo/api": "2.3.1",
33
- "@prosopo/common": "2.3.1",
34
- "@prosopo/config": "2.3.1",
35
- "@prosopo/dotenv": "2.3.1",
36
- "@prosopo/env": "2.3.1",
37
- "@prosopo/keyring": "2.3.1",
38
- "@prosopo/locale": "2.3.1",
39
- "@prosopo/provider": "2.3.1",
40
- "@prosopo/types": "2.3.1",
41
- "@prosopo/util": "2.3.1",
32
+ "@prosopo/api": "2.3.2",
33
+ "@prosopo/api-express-router": "2.3.2",
34
+ "@prosopo/common": "2.3.2",
35
+ "@prosopo/config": "2.3.2",
36
+ "@prosopo/dotenv": "2.3.2",
37
+ "@prosopo/env": "2.3.2",
38
+ "@prosopo/keyring": "2.3.2",
39
+ "@prosopo/locale": "2.3.2",
40
+ "@prosopo/provider": "2.3.2",
41
+ "@prosopo/types": "2.3.2",
42
+ "@prosopo/user-access-policy": "2.3.2",
43
+ "@prosopo/util": "2.3.2",
42
44
  "cors": "2.8.5",
43
45
  "cron-parser": "4.9.0",
44
46
  "dotenv": "16.4.5",
45
47
  "express-rate-limit": "7.4.0",
48
+ "has-proto": "1.2.0",
49
+ "ip-address": "10.0.1",
46
50
  "yargs": "17.7.2",
47
51
  "zod": "3.23.8"
48
52
  },
49
53
  "devDependencies": {
50
- "@prosopo/config": "2.3.1",
54
+ "@prosopo/config": "2.3.2",
51
55
  "@types/cors": "2.8.17",
52
56
  "@types/yargs": "17.0.33",
53
57
  "@vitest/coverage-v8": "2.1.1",
@@ -1,29 +0,0 @@
1
- import type { KeyringPair } from "@polkadot/keyring/types";
2
- import { type Logger } from "@prosopo/common";
3
- import { type ProsopoConfigOutput } from "@prosopo/types";
4
- import type { ArgumentsCamelCase, Argv } from "yargs";
5
- declare const _default: (pair: KeyringPair, config: ProsopoConfigOutput, cmdArgs?: {
6
- logger?: Logger;
7
- }) => {
8
- command: string;
9
- describe: string;
10
- builder: (yargs: Argv) => Argv<{
11
- ips: (string | number)[] | undefined;
12
- } & {
13
- users: (string | number)[] | undefined;
14
- } & {
15
- dapp: string | undefined;
16
- } & {
17
- global: string | true;
18
- } & {
19
- hardBlock: string | false;
20
- } & {
21
- solved: number | undefined;
22
- } & {
23
- unsolved: number | undefined;
24
- }>;
25
- handler: (argv: ArgumentsCamelCase) => Promise<void>;
26
- middlewares: never[];
27
- };
28
- export default _default;
29
- //# sourceMappingURL=addBlockRules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addBlockRules.d.ts","sourceRoot":"","sources":["../../src/commands/addBlockRules.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAY,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AAGnE,OAAO,EAIN,KAAK,mBAAmB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;+BAG/C,WAAW,UACT,mBAAmB,YACjB;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;;;qBASX,IAAI;;;;;;;;;;;;;;;oBAwCC,kBAAkB;;;AApD1C,wBAuGE"}
@@ -1,97 +0,0 @@
1
- import { LogLevel, getLogger } from "@prosopo/common";
2
- import { ProviderEnvironment } from "@prosopo/env";
3
- import { Tasks } from "@prosopo/provider";
4
- import { AddBlockRulesIPSpec, AddBlockRulesUserSpec, } from "@prosopo/types";
5
- export default (pair, config, cmdArgs) => {
6
- const logger = cmdArgs?.logger ||
7
- getLogger(LogLevel.enum.info, "cli.provider_set_data_set");
8
- return {
9
- command: "add_block_rules",
10
- describe: "Add a rule for blocking requests to the database",
11
- builder: (yargs) => yargs
12
- .option("ips", {
13
- type: "array",
14
- demandOption: false,
15
- desc: "The ips to be blocked",
16
- })
17
- .option("users", {
18
- type: "array",
19
- demandOption: false,
20
- desc: "The users to be blocked",
21
- })
22
- .option("dapp", {
23
- type: "string",
24
- demandOption: false,
25
- desc: "The users to be blocked",
26
- })
27
- .option("global", {
28
- type: "string",
29
- demandOption: true,
30
- default: true,
31
- desc: "Whether the ip is to be blocked globally or not",
32
- })
33
- .option("hardBlock", {
34
- type: "string",
35
- demandOption: true,
36
- default: false,
37
- desc: "Hardblock stops requests, softblock informs frictionless",
38
- })
39
- .option("solved", {
40
- type: "number",
41
- demandOption: false,
42
- desc: "The number of solved captchas",
43
- })
44
- .option("unsolved", {
45
- type: "number",
46
- demandOption: false,
47
- desc: "The number of unsolved captchas",
48
- }),
49
- handler: async (argv) => {
50
- try {
51
- const env = new ProviderEnvironment(config, pair);
52
- await env.isReady();
53
- const tasks = new Tasks(env);
54
- let captchaConfig;
55
- if (argv.solved) {
56
- captchaConfig = {
57
- solved: {
58
- count: argv.solved,
59
- },
60
- unsolved: {
61
- count: argv.unsolved || 0,
62
- },
63
- };
64
- }
65
- if (argv.ips) {
66
- await tasks.clientTaskManager.addIPBlockRules(AddBlockRulesIPSpec.parse([
67
- {
68
- ips: argv.ips,
69
- global: argv.global,
70
- hardBlock: argv.hardBlock,
71
- dapp: argv.dapp,
72
- captchaConfig,
73
- },
74
- ]));
75
- logger.info("IP Block rules added");
76
- }
77
- if (argv.users) {
78
- await tasks.clientTaskManager.addUserBlockRules(AddBlockRulesUserSpec.parse([
79
- {
80
- users: argv.users,
81
- global: argv.global,
82
- hardBlock: argv.hardBlock,
83
- dapp: argv.dapp,
84
- captchaConfig,
85
- },
86
- ]));
87
- logger.info("User Block rules added");
88
- }
89
- }
90
- catch (err) {
91
- logger.error(err);
92
- }
93
- },
94
- middlewares: [],
95
- };
96
- };
97
- //# sourceMappingURL=addBlockRules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addBlockRules.js","sourceRoot":"","sources":["../../src/commands/addBlockRules.ts"],"names":[],"mappings":"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"}