@prosopo/cli 3.6.74 → 3.6.76
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 +37 -27
- package/.turbo/turbo-build$colon$tsc.log +27 -27
- package/.turbo/turbo-build.log +30 -27
- package/CHANGELOG.md +33 -0
- package/dist/RateLimiter.js +118 -118
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/argv.js +37 -36
- package/dist/bundle/decodeBehavior-BnJdECMR.js +233 -0
- package/dist/bundle/decodeSimd-hDznYwxo.js +218 -0
- package/dist/bundle/i18nBackend-C078WszN.js +3553 -0
- package/dist/bundle/i18nFrontend-pIqw8hl9.js +850 -0
- package/dist/bundle/i18next-q3w8LsnI.js +1213 -0
- package/dist/bundle/node-ponyfill-BXKwLYwg.js +1534 -0
- package/dist/bundle/provider.cli.bundle.js +102280 -131300
- package/dist/bundle/src-DhRyWllF.js +1880 -0
- package/dist/cjs/RateLimiter.cjs +118 -118
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/argv.cjs +41 -38
- package/dist/cjs/cli.cjs +32 -43
- package/dist/cjs/commands/ensureExternalIndexes.cjs +26 -27
- package/dist/cjs/commands/ensureIndexes.cjs +24 -25
- package/dist/cjs/commands/index.cjs +18 -20
- package/dist/cjs/commands/migrateAbuserScoreThreshold.cjs +54 -65
- package/dist/cjs/commands/providerSetDataset.cjs +45 -59
- package/dist/cjs/commands/siteKeyRegister.cjs +93 -105
- package/dist/cjs/commands/siteKeyRegisterApi.cjs +84 -102
- package/dist/cjs/commands/storeCaptchasExternally.cjs +24 -24
- package/dist/cjs/commands/updateSpamEmailDomains.cjs +42 -49
- package/dist/cjs/commands/validators.cjs +18 -37
- package/dist/cjs/commands/version.cjs +14 -15
- package/dist/cjs/files.cjs +32 -30
- package/dist/cjs/index.cjs +15 -17
- package/dist/cjs/process.env.cjs +14 -25
- package/dist/cjs/prosopo.config.cjs +108 -132
- package/dist/cjs/reloader.cjs +54 -63
- package/dist/cjs/start.cjs +59 -81
- package/dist/cli.js +27 -37
- package/dist/commands/ensureExternalIndexes.js +24 -26
- package/dist/commands/ensureIndexes.js +22 -24
- package/dist/commands/index.js +10 -20
- package/dist/commands/migrateAbuserScoreThreshold.js +52 -64
- package/dist/commands/providerSetDataset.js +41 -41
- package/dist/commands/siteKeyRegister.js +90 -103
- package/dist/commands/siteKeyRegisterApi.js +82 -101
- package/dist/commands/storeCaptchasExternally.js +22 -23
- package/dist/commands/updateSpamEmailDomains.js +40 -48
- package/dist/commands/validators.js +15 -37
- package/dist/commands/version.js +13 -15
- package/dist/files.js +28 -30
- package/dist/index.js +5 -16
- package/dist/process.env.js +14 -28
- package/dist/prosopo.config.js +108 -131
- package/dist/reloader.js +49 -61
- package/dist/start.js +57 -79
- package/package.json +16 -16
- package/dist/bundle/decodeBehavior-Btp_pZCR.js +0 -224
- package/dist/bundle/decodeSimd-Cz4sdHHN.js +0 -212
- package/dist/bundle/i18nBackend-BiuZSvrn.js +0 -5366
- package/dist/bundle/index-DUVLsNmB.js +0 -2371
|
@@ -1,140 +1,116 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
|
|
1
|
+
const require_RateLimiter = require("./RateLimiter.cjs");
|
|
2
|
+
const require_process_env = require("./process.env.cjs");
|
|
3
|
+
let _prosopo_logger = require("@prosopo/logger");
|
|
4
|
+
let _prosopo_types = require("@prosopo/types");
|
|
5
|
+
//#region src/prosopo.config.ts
|
|
7
6
|
function getMongoURI() {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const host = process.env.PROSOPO_DATABASE_HOST || "localhost";
|
|
13
|
-
const port = mongoSrv ? "" : `:${process.env.PROSOPO_DATABASE_PORT || 27017}`;
|
|
14
|
-
const retries = mongoSrv ? "?retryWrites=true&w=majority" : "";
|
|
15
|
-
const mongoURI = `${protocol}://${username}:${password}@${host}${port}/${retries}`;
|
|
16
|
-
return mongoURI;
|
|
7
|
+
const protocol = process.env.PROSOPO_DATABASE_PROTOCOL || "mongodb";
|
|
8
|
+
const mongoSrv = protocol === "mongodb+srv";
|
|
9
|
+
const password = process.env.PROSOPO_DATABASE_PASSWORD || "root";
|
|
10
|
+
return `${protocol}://${process.env.PROSOPO_DATABASE_USERNAME || "root"}:${password}@${process.env.PROSOPO_DATABASE_HOST || "localhost"}${mongoSrv ? "" : `:${process.env.PROSOPO_DATABASE_PORT || 27017}`}/${mongoSrv ? "?retryWrites=true&w=majority" : ""}`;
|
|
17
11
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
12
|
+
var getLRules = () => {
|
|
13
|
+
if (!process.env.L_RULES) return {};
|
|
14
|
+
try {
|
|
15
|
+
return JSON.parse(process.env.L_RULES);
|
|
16
|
+
} catch (e) {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
27
19
|
};
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return void 0;
|
|
39
|
-
} catch (e) {
|
|
40
|
-
return void 0;
|
|
41
|
-
}
|
|
20
|
+
var isStringArray = (value) => Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
21
|
+
var getDnsServers = () => {
|
|
22
|
+
if (!process.env.PROSOPO_DNS_SERVERS) return;
|
|
23
|
+
try {
|
|
24
|
+
const parsed = JSON.parse(process.env.PROSOPO_DNS_SERVERS);
|
|
25
|
+
if (isStringArray(parsed)) return parsed;
|
|
26
|
+
return;
|
|
27
|
+
} catch (e) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
42
30
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return void 0;
|
|
53
|
-
} catch (e) {
|
|
54
|
-
return void 0;
|
|
55
|
-
}
|
|
31
|
+
var getSpamEmailDomainsUrls = () => {
|
|
32
|
+
if (!process.env.SPAM_EMAIL_DOMAINS_URLS) return;
|
|
33
|
+
try {
|
|
34
|
+
const parsed = JSON.parse(process.env.SPAM_EMAIL_DOMAINS_URLS);
|
|
35
|
+
if (isStringArray(parsed)) return parsed;
|
|
36
|
+
return;
|
|
37
|
+
} catch (e) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
56
40
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return process.env.CADDY_DOMAIN || importMeta.env?.VITE_CADDY_DOMAIN;
|
|
41
|
+
var getHost = () => {
|
|
42
|
+
return process.env.CADDY_DOMAIN || {}.env?.VITE_CADDY_DOMAIN;
|
|
60
43
|
};
|
|
61
44
|
function getConfig(captchaSolutionsConfig, captchaServeConfig, who = "PROVIDER", admin = "ADMIN") {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
},
|
|
132
|
-
ipApi: {
|
|
133
|
-
apiKey: process.env.PROSOPO_IPAPI_KEY,
|
|
134
|
-
baseUrl: process.env.PROSOPO_IPAPI_URL
|
|
135
|
-
},
|
|
136
|
-
maxmindDbPath: process.env.MAXMIND_DB_PATH,
|
|
137
|
-
dnsServers: getDnsServers()
|
|
138
|
-
});
|
|
45
|
+
return _prosopo_types.ProsopoConfigSchema.parse({
|
|
46
|
+
logLevel: (0, _prosopo_logger.parseLogLevel)(process.env.PROSOPO_LOG_LEVEL, "info"),
|
|
47
|
+
host: getHost(),
|
|
48
|
+
defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? _prosopo_types.EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : _prosopo_types.EnvironmentTypesSchema.enum.development,
|
|
49
|
+
account: {
|
|
50
|
+
address: require_process_env.getAddress(who),
|
|
51
|
+
password: require_process_env.getPassword(who),
|
|
52
|
+
secret: require_process_env.getSecret(who)
|
|
53
|
+
},
|
|
54
|
+
database: {
|
|
55
|
+
development: {
|
|
56
|
+
type: _prosopo_types.DatabaseTypes.enum.provider,
|
|
57
|
+
endpoint: getMongoURI(),
|
|
58
|
+
dbname: process.env.PROSOPO_DATABASE_NAME,
|
|
59
|
+
authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
|
|
60
|
+
},
|
|
61
|
+
staging: {
|
|
62
|
+
type: _prosopo_types.DatabaseTypes.enum.provider,
|
|
63
|
+
endpoint: getMongoURI(),
|
|
64
|
+
dbname: process.env.PROSOPO_DATABASE_NAME,
|
|
65
|
+
authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
|
|
66
|
+
},
|
|
67
|
+
production: {
|
|
68
|
+
type: _prosopo_types.DatabaseTypes.enum.provider,
|
|
69
|
+
endpoint: getMongoURI(),
|
|
70
|
+
dbname: process.env.PROSOPO_DATABASE_NAME,
|
|
71
|
+
authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
server: {
|
|
75
|
+
baseURL: process.env.PROSOPO_API_BASE_URL || "http://localhost",
|
|
76
|
+
port: process.env.PROSOPO_API_PORT ? Number.parseInt(process.env.PROSOPO_API_PORT) : 9229
|
|
77
|
+
},
|
|
78
|
+
captchaSolutions: captchaSolutionsConfig,
|
|
79
|
+
captchas: captchaServeConfig,
|
|
80
|
+
penalties: _prosopo_types.FrictionlessPenalties.parse({
|
|
81
|
+
PENALTY_OLD_TIMESTAMP: process.env.PENALTY_OLD_TIMESTAMP,
|
|
82
|
+
PENALTY_ACCESS_RULE: process.env.PENALTY_ACCESS_RULE,
|
|
83
|
+
PENALTY_UNVERIFIED_HOST: process.env.PENALTY_UNVERIFIED_HOST
|
|
84
|
+
}),
|
|
85
|
+
mongoEventsUri: process.env.PROSOPO_MONGO_EVENTS_URI || "",
|
|
86
|
+
mongoCaptchaUri: process.env.PROSOPO_MONGO_CAPTCHA_URI || "",
|
|
87
|
+
mongoClientUri: process.env.PROSOPO_MONGO_CLIENT_URI || "",
|
|
88
|
+
redisConnection: {
|
|
89
|
+
url: process.env.REDIS_CONNECTION_URL || "",
|
|
90
|
+
password: process.env.REDIS_CONNECTION_PASSWORD || ""
|
|
91
|
+
},
|
|
92
|
+
rateLimits: require_RateLimiter.getRateLimitConfig(),
|
|
93
|
+
proxyCount: process.env.PROSOPO_PROXY_COUNT ? Number.parseInt(process.env.PROSOPO_PROXY_COUNT) : 0,
|
|
94
|
+
scheduledTasks: {
|
|
95
|
+
captchaScheduler: { schedule: process.env.CAPTCHA_STORAGE_SCHEDULE },
|
|
96
|
+
clientListScheduler: { schedule: process.env.CLIENT_LIST_SCHEDULE },
|
|
97
|
+
clientEntropyScheduler: { schedule: process.env.CLIENT_ENTROPY_SCHEDULE },
|
|
98
|
+
spamEmailDomainsScheduler: { schedule: process.env.SPAM_EMAIL_DOMAINS_SCHEDULE }
|
|
99
|
+
},
|
|
100
|
+
lRules: getLRules(),
|
|
101
|
+
spamEmailDomainsUrls: getSpamEmailDomainsUrls(),
|
|
102
|
+
authAccount: {
|
|
103
|
+
address: require_process_env.getAddress(admin),
|
|
104
|
+
password: require_process_env.getPassword(admin),
|
|
105
|
+
secret: require_process_env.getSecret(admin)
|
|
106
|
+
},
|
|
107
|
+
ipApi: {
|
|
108
|
+
apiKey: process.env.PROSOPO_IPAPI_KEY,
|
|
109
|
+
baseUrl: process.env.PROSOPO_IPAPI_URL
|
|
110
|
+
},
|
|
111
|
+
maxmindDbPath: process.env.MAXMIND_DB_PATH,
|
|
112
|
+
dnsServers: getDnsServers()
|
|
113
|
+
});
|
|
139
114
|
}
|
|
140
|
-
|
|
115
|
+
//#endregion
|
|
116
|
+
exports.default = getConfig;
|
package/dist/cjs/reloader.cjs
CHANGED
|
@@ -1,63 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
await this.stop();
|
|
56
|
-
dotenv.loadEnv();
|
|
57
|
-
await this.start(true);
|
|
58
|
-
this._restarting = false;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
module.exports = ReloadingAPI;
|
|
1
|
+
const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_start = require("./start.cjs");
|
|
3
|
+
let _prosopo_logger = require("@prosopo/logger");
|
|
4
|
+
let _prosopo_env = require("@prosopo/env");
|
|
5
|
+
let node_fs = require("node:fs");
|
|
6
|
+
node_fs = require_runtime.__toESM(node_fs, 1);
|
|
7
|
+
let _prosopo_dotenv = require("@prosopo/dotenv");
|
|
8
|
+
//#region src/reloader.ts
|
|
9
|
+
var log = (0, _prosopo_logger.getLogger)(_prosopo_logger.LogLevel.enum.info, "cli");
|
|
10
|
+
var ReloadingAPI = class {
|
|
11
|
+
constructor(envPath, config, pair, authAccount, processedArgs) {
|
|
12
|
+
this._envPath = envPath;
|
|
13
|
+
this._config = config;
|
|
14
|
+
this._pair = pair;
|
|
15
|
+
this._authAccount = authAccount;
|
|
16
|
+
this._processedArgs = processedArgs;
|
|
17
|
+
this._restarting = false;
|
|
18
|
+
}
|
|
19
|
+
get env() {
|
|
20
|
+
if (!this._env) throw new Error("Environment not initialized. Call start() first.");
|
|
21
|
+
return this._env;
|
|
22
|
+
}
|
|
23
|
+
async start(reloadEnv = false) {
|
|
24
|
+
log.info(() => ({ msg: "Starting API" }));
|
|
25
|
+
(0, _prosopo_dotenv.loadEnv)();
|
|
26
|
+
if (!this._env || reloadEnv) this._env = new _prosopo_env.ProviderEnvironment(this._config, this._pair, this._authAccount);
|
|
27
|
+
await this.env.isReady();
|
|
28
|
+
this.api = await require_start.start(this.env, !!this._processedArgs.adminApi);
|
|
29
|
+
if (process.env.NODE_ENV === "development") this._envWatcher = await this._watchEnv();
|
|
30
|
+
}
|
|
31
|
+
async stop() {
|
|
32
|
+
log.info(() => ({ msg: "Stopping API" }));
|
|
33
|
+
return new Promise((resolve) => {
|
|
34
|
+
if (this.api) this.api.close(resolve);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async _watchEnv() {
|
|
38
|
+
return node_fs.default.watch(this._envPath, async () => {
|
|
39
|
+
log.info(() => ({
|
|
40
|
+
data: { restarting: this._restarting },
|
|
41
|
+
msg: "env file change detected. Restarting"
|
|
42
|
+
}));
|
|
43
|
+
if (!this._restarting) {
|
|
44
|
+
this._restarting = true;
|
|
45
|
+
await this.stop();
|
|
46
|
+
(0, _prosopo_dotenv.loadEnv)();
|
|
47
|
+
await this.start(true);
|
|
48
|
+
this._restarting = false;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
//#endregion
|
|
54
|
+
exports.default = ReloadingAPI;
|
package/dist/cjs/start.cjs
CHANGED
|
@@ -1,83 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
msg: "Failed to start client entropy scheduler",
|
|
60
|
-
err,
|
|
61
|
-
context: { failedFuncName: provider.setClientEntropy.name }
|
|
62
|
-
}));
|
|
63
|
-
}
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
const cronSpamEmailDomains = env$1.config.scheduledTasks?.spamEmailDomainsScheduler?.schedule;
|
|
67
|
-
if (cronSpamEmailDomains) {
|
|
68
|
-
provider.updateSpamEmailDomainsScheduler(
|
|
69
|
-
env$1.pair,
|
|
70
|
-
cronSpamEmailDomains,
|
|
71
|
-
env$1.config
|
|
72
|
-
).catch((err) => {
|
|
73
|
-
env$1.logger.error(() => ({
|
|
74
|
-
msg: "Failed to start spam email domains scheduler",
|
|
75
|
-
err,
|
|
76
|
-
context: { failedFuncName: provider.updateSpamEmailDomainsScheduler.name }
|
|
77
|
-
}));
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return provider.startProviderApi(env$1, admin, port);
|
|
1
|
+
const require_process_env = require("./process.env.cjs");
|
|
2
|
+
const require_prosopo_config = require("./prosopo.config.cjs");
|
|
3
|
+
let _prosopo_env = require("@prosopo/env");
|
|
4
|
+
let _prosopo_provider = require("@prosopo/provider");
|
|
5
|
+
let _prosopo_dotenv = require("@prosopo/dotenv");
|
|
6
|
+
let _prosopo_keyring = require("@prosopo/keyring");
|
|
7
|
+
//#region src/start.ts
|
|
8
|
+
async function start(env, admin, port) {
|
|
9
|
+
if (!env) {
|
|
10
|
+
(0, _prosopo_dotenv.loadEnv)();
|
|
11
|
+
require_process_env.getDB();
|
|
12
|
+
const secret = require_process_env.getSecret();
|
|
13
|
+
const config = require_prosopo_config.default(void 0, {
|
|
14
|
+
solved: { count: 2 },
|
|
15
|
+
unsolved: { count: 0 }
|
|
16
|
+
});
|
|
17
|
+
const pair = (0, _prosopo_keyring.getPair)(secret);
|
|
18
|
+
let authAccount;
|
|
19
|
+
if (config.authAccount) authAccount = (0, _prosopo_keyring.getPair)(void 0, config.authAccount.address);
|
|
20
|
+
env = new _prosopo_env.ProviderEnvironment(config, pair, authAccount);
|
|
21
|
+
} else env.logger.debug(() => ({
|
|
22
|
+
msg: "Env already defined",
|
|
23
|
+
data: { config: env?.config }
|
|
24
|
+
}));
|
|
25
|
+
await env.isReady();
|
|
26
|
+
env.cleanup();
|
|
27
|
+
const maintenanceMode = process.env.MAINTENANCE_MODE?.toLowerCase() === "true";
|
|
28
|
+
if (env.pair && !maintenanceMode) {
|
|
29
|
+
const cronScheduleStorage = env.config.scheduledTasks?.captchaScheduler?.schedule;
|
|
30
|
+
if (cronScheduleStorage) (0, _prosopo_provider.storeCaptchasExternally)(env.pair, cronScheduleStorage, env.config).catch((err) => {
|
|
31
|
+
console.error("Failed to start scheduler:", err);
|
|
32
|
+
});
|
|
33
|
+
const cronScheduleClient = env.config.scheduledTasks?.clientListScheduler?.schedule;
|
|
34
|
+
if (cronScheduleClient) (0, _prosopo_provider.getClientList)(env.pair, cronScheduleClient, env.config).catch((err) => {
|
|
35
|
+
env.logger.error(() => ({
|
|
36
|
+
msg: "Failed to start client list scheduler",
|
|
37
|
+
err,
|
|
38
|
+
context: { failedFuncName: _prosopo_provider.getClientList.name }
|
|
39
|
+
}));
|
|
40
|
+
});
|
|
41
|
+
const cronClientEntropySetter = env.config.scheduledTasks?.clientEntropyScheduler?.schedule;
|
|
42
|
+
if (cronClientEntropySetter) (0, _prosopo_provider.setClientEntropy)(env.pair, cronClientEntropySetter, env.config).catch((err) => {
|
|
43
|
+
env.logger.error(() => ({
|
|
44
|
+
msg: "Failed to start client entropy scheduler",
|
|
45
|
+
err,
|
|
46
|
+
context: { failedFuncName: _prosopo_provider.setClientEntropy.name }
|
|
47
|
+
}));
|
|
48
|
+
});
|
|
49
|
+
const cronSpamEmailDomains = env.config.scheduledTasks?.spamEmailDomainsScheduler?.schedule;
|
|
50
|
+
if (cronSpamEmailDomains) (0, _prosopo_provider.updateSpamEmailDomainsScheduler)(env.pair, cronSpamEmailDomains, env.config).catch((err) => {
|
|
51
|
+
env.logger.error(() => ({
|
|
52
|
+
msg: "Failed to start spam email domains scheduler",
|
|
53
|
+
err,
|
|
54
|
+
context: { failedFuncName: _prosopo_provider.updateSpamEmailDomainsScheduler.name }
|
|
55
|
+
}));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return (0, _prosopo_provider.startProviderApi)(env, admin, port);
|
|
82
59
|
}
|
|
60
|
+
//#endregion
|
|
83
61
|
exports.start = start;
|
package/dist/cli.js
CHANGED
|
@@ -1,43 +1,33 @@
|
|
|
1
|
+
import { processArgs } from "./argv.js";
|
|
2
|
+
import getConfig from "./prosopo.config.js";
|
|
3
|
+
import ReloadingAPI from "./reloader.js";
|
|
4
|
+
import { LogLevel, getLogger } from "@prosopo/logger";
|
|
5
|
+
import { isMain } from "@prosopo/util";
|
|
1
6
|
import process from "node:process";
|
|
2
7
|
import { loadEnv } from "@prosopo/dotenv";
|
|
3
8
|
import { getPair } from "@prosopo/keyring";
|
|
4
9
|
import { loadI18next } from "@prosopo/locale";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import { processArgs } from "./argv.js";
|
|
8
|
-
import getConfig from "./prosopo.config.js";
|
|
9
|
-
import ReloadingAPI from "./reloader.js";
|
|
10
|
-
const log = getLogger(LogLevel.enum.info, "cli");
|
|
10
|
+
//#region src/cli.ts
|
|
11
|
+
var log = getLogger(LogLevel.enum.info, "cli");
|
|
11
12
|
async function main() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
authAccount,
|
|
24
|
-
config
|
|
25
|
-
);
|
|
26
|
-
log.info(() => ({ data: { cliArgs: processedArgs } }));
|
|
27
|
-
if (processedArgs.api) {
|
|
28
|
-
await new ReloadingAPI(envPath, config, pair, authAccount, processedArgs).start().then(() => {
|
|
29
|
-
log.info(() => ({ msg: "Reloading API started..." }));
|
|
30
|
-
});
|
|
31
|
-
} else {
|
|
32
|
-
process.exit(0);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
if (isMain(import.meta.url, "provider")) {
|
|
36
|
-
loadI18next(true).then(() => {
|
|
37
|
-
main().then(() => {
|
|
38
|
-
log.info(() => ({ msg: "Running main process..." }));
|
|
39
|
-
}).catch((error) => {
|
|
40
|
-
log.error(() => ({ err: error }));
|
|
41
|
-
});
|
|
42
|
-
});
|
|
13
|
+
const envPath = loadEnv();
|
|
14
|
+
const config = getConfig();
|
|
15
|
+
const pair = getPair(config.account.secret, config.account.address);
|
|
16
|
+
const authAccount = getPair(config.authAccount.secret, config.authAccount.address);
|
|
17
|
+
log.info(() => ({ data: { pairAddress: pair.address } }));
|
|
18
|
+
const processedArgs = await processArgs(process.argv, pair, authAccount, config);
|
|
19
|
+
log.info(() => ({ data: { cliArgs: processedArgs } }));
|
|
20
|
+
if (processedArgs.api) await new ReloadingAPI(envPath, config, pair, authAccount, processedArgs).start().then(() => {
|
|
21
|
+
log.info(() => ({ msg: "Reloading API started..." }));
|
|
22
|
+
});
|
|
23
|
+
else process.exit(0);
|
|
43
24
|
}
|
|
25
|
+
if (isMain(import.meta.url, "provider")) loadI18next(true).then(() => {
|
|
26
|
+
main().then(() => {
|
|
27
|
+
log.info(() => ({ msg: "Running main process..." }));
|
|
28
|
+
}).catch((error) => {
|
|
29
|
+
log.error(() => ({ err: error }));
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//#endregion
|
|
33
|
+
export {};
|
|
@@ -1,29 +1,27 @@
|
|
|
1
|
+
import { LogLevel, getLogger } from "@prosopo/logger";
|
|
1
2
|
import { ProviderEnvironment } from "@prosopo/env";
|
|
2
|
-
import { getLogger, LogLevel } from "@prosopo/logger";
|
|
3
3
|
import { Tasks } from "@prosopo/provider";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
export {
|
|
28
|
-
commandEnsureExternalIndexes as default
|
|
4
|
+
//#region src/commands/ensureExternalIndexes.ts
|
|
5
|
+
var ensureExternalIndexes_default = (pair, config, cmdArgs) => {
|
|
6
|
+
const logger = cmdArgs?.logger || getLogger(LogLevel.enum.info, "cli.ensure_external_indexes");
|
|
7
|
+
return {
|
|
8
|
+
command: "ensure_external_indexes",
|
|
9
|
+
describe: "Ensure indexes for external database",
|
|
10
|
+
handler: async () => {
|
|
11
|
+
try {
|
|
12
|
+
const env = new ProviderEnvironment(config, pair);
|
|
13
|
+
await env.isReady();
|
|
14
|
+
const tasks = new Tasks(env);
|
|
15
|
+
if (!env.config.mongoCaptchaUri) throw new Error("mongoCaptchaUri not set in config");
|
|
16
|
+
await tasks.clientTaskManager.getCaptchaDB(env.config.mongoCaptchaUri).ensureIndexes().catch((err) => {
|
|
17
|
+
env.logger.error(() => ({ err }));
|
|
18
|
+
});
|
|
19
|
+
} catch (err) {
|
|
20
|
+
logger.error(() => ({ err }));
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
middlewares: []
|
|
24
|
+
};
|
|
29
25
|
};
|
|
26
|
+
//#endregion
|
|
27
|
+
export { ensureExternalIndexes_default as default };
|