@serve.zone/dcrouter 11.0.8 → 11.0.10
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/dist_serve/bundle.js +1 -1
- package/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/dist_ts/cache/classes.cache.cleaner.d.ts +0 -47
- package/dist_ts/cache/classes.cache.cleaner.js +0 -130
- package/dist_ts/cache/documents/classes.cached.ip.reputation.d.ts +0 -119
- package/dist_ts/cache/documents/classes.cached.ip.reputation.js +0 -323
- package/dist_ts/cache/documents/index.d.ts +0 -2
- package/dist_ts/cache/documents/index.js +0 -3
- package/dist_ts/cache/index.d.ts +0 -4
- package/dist_ts/cache/index.js +0 -7
- package/dist_ts/config/classes.api-token-manager.d.ts +0 -46
- package/dist_ts/config/classes.api-token-manager.js +0 -150
- package/dist_ts/config/classes.route-config-manager.d.ts +0 -35
- package/dist_ts/config/classes.route-config-manager.js +0 -231
- package/dist_ts/config/index.d.ts +0 -3
- package/dist_ts/config/index.js +0 -5
- package/dist_ts/config/validator.d.ts +0 -104
- package/dist_ts/config/validator.js +0 -152
- package/dist_ts/errors/base.errors.d.ts +0 -224
- package/dist_ts/errors/base.errors.js +0 -320
- package/dist_ts/errors/error-handler.d.ts +0 -98
- package/dist_ts/errors/error-handler.js +0 -282
- package/dist_ts/errors/error.codes.d.ts +0 -115
- package/dist_ts/errors/error.codes.js +0 -136
- package/dist_ts/errors/reputation.errors.d.ts +0 -183
- package/dist_ts/errors/reputation.errors.js +0 -292
- package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
- package/dist_ts/monitoring/classes.metricscache.js +0 -63
- package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -178
- package/dist_ts/monitoring/classes.metricsmanager.js +0 -642
- package/dist_ts/monitoring/index.d.ts +0 -1
- package/dist_ts/monitoring/index.js +0 -2
- package/dist_ts/opsserver/classes.opsserver.d.ts +0 -37
- package/dist_ts/opsserver/classes.opsserver.js +0 -85
- package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -31
- package/dist_ts/opsserver/handlers/admin.handler.js +0 -180
- package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
- package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -32
- package/dist_ts/opsserver/handlers/certificate.handler.js +0 -421
- package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
- package/dist_ts/opsserver/handlers/config.handler.js +0 -192
- package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
- package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
- package/dist_ts/opsserver/handlers/index.d.ts +0 -11
- package/dist_ts/opsserver/handlers/index.js +0 -12
- package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
- package/dist_ts/opsserver/handlers/logs.handler.js +0 -256
- package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
- package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
- package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
- package/dist_ts/opsserver/handlers/route-management.handler.js +0 -117
- package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
- package/dist_ts/opsserver/handlers/security.handler.js +0 -231
- package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
- package/dist_ts/opsserver/handlers/stats.handler.js +0 -399
- package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
- package/dist_ts/opsserver/helpers/guards.js +0 -43
- package/dist_ts/opsserver/index.d.ts +0 -1
- package/dist_ts/opsserver/index.js +0 -2
- package/dist_ts/radius/classes.accounting.manager.d.ts +0 -218
- package/dist_ts/radius/classes.accounting.manager.js +0 -417
- package/dist_ts/radius/classes.radius.server.d.ts +0 -171
- package/dist_ts/radius/classes.radius.server.js +0 -385
- package/dist_ts/radius/classes.vlan.manager.d.ts +0 -128
- package/dist_ts/radius/classes.vlan.manager.js +0 -279
- package/dist_ts/radius/index.d.ts +0 -13
- package/dist_ts/radius/index.js +0 -14
- package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -82
- package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -227
- package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
- package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
- package/dist_ts/remoteingress/index.d.ts +0 -2
- package/dist_ts/remoteingress/index.js +0 -3
- package/dist_ts/security/classes.contentscanner.d.ts +0 -164
- package/dist_ts/security/classes.contentscanner.js +0 -642
- package/dist_ts/security/classes.ipreputationchecker.d.ts +0 -160
- package/dist_ts/security/classes.ipreputationchecker.js +0 -537
- package/dist_ts/security/classes.securitylogger.d.ts +0 -144
- package/dist_ts/security/classes.securitylogger.js +0 -233
- package/dist_ts/security/index.d.ts +0 -3
- package/dist_ts/security/index.js +0 -4
- package/dist_ts/storage/classes.storagemanager.d.ts +0 -83
- package/dist_ts/storage/classes.storagemanager.js +0 -350
- package/dist_ts/storage/index.d.ts +0 -1
- package/dist_ts/storage/index.js +0 -3
package/dist_serve/bundle.js
CHANGED
|
@@ -39328,4 +39328,4 @@ ibantools/jsnext/ibantools.js:
|
|
|
39328
39328
|
* @preferred
|
|
39329
39329
|
*)
|
|
39330
39330
|
*/
|
|
39331
|
-
//# sourceMappingURL=bundle-
|
|
39331
|
+
//# sourceMappingURL=bundle-1772710528920.js.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@serve.zone/dcrouter',
|
|
6
|
-
version: '11.0.
|
|
6
|
+
version: '11.0.10',
|
|
7
7
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@serve.zone/dcrouter',
|
|
6
|
-
version: '11.0.
|
|
6
|
+
version: '11.0.10',
|
|
7
7
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serve.zone/dcrouter",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "11.0.
|
|
4
|
+
"version": "11.0.10",
|
|
5
5
|
"description": "A multifaceted routing service handling mail and SMS delivery functions.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"exports": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"watch": "tswatch"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@git.zone/tsbuild": "^4.1.
|
|
22
|
+
"@git.zone/tsbuild": "^4.1.4",
|
|
23
23
|
"@git.zone/tsbundle": "^2.9.0",
|
|
24
24
|
"@git.zone/tsrun": "^2.0.1",
|
|
25
25
|
"@git.zone/tstest": "^3.2.0",
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { CacheDb } from './classes.cachedb.js';
|
|
2
|
-
/**
|
|
3
|
-
* Configuration for the cache cleaner
|
|
4
|
-
*/
|
|
5
|
-
export interface ICacheCleanerOptions {
|
|
6
|
-
/** Cleanup interval in milliseconds (default: 1 hour) */
|
|
7
|
-
intervalMs?: number;
|
|
8
|
-
/** Enable verbose logging */
|
|
9
|
-
verbose?: boolean;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* CacheCleaner - Periodically removes expired documents from the cache
|
|
13
|
-
*
|
|
14
|
-
* Runs on a configurable interval (default: hourly) and queries each
|
|
15
|
-
* collection for documents where expiresAt < now(), then deletes them.
|
|
16
|
-
*/
|
|
17
|
-
export declare class CacheCleaner {
|
|
18
|
-
private cleanupInterval;
|
|
19
|
-
private isRunning;
|
|
20
|
-
private options;
|
|
21
|
-
private cacheDb;
|
|
22
|
-
constructor(cacheDb: CacheDb, options?: ICacheCleanerOptions);
|
|
23
|
-
/**
|
|
24
|
-
* Start the periodic cleanup process
|
|
25
|
-
*/
|
|
26
|
-
start(): void;
|
|
27
|
-
/**
|
|
28
|
-
* Stop the periodic cleanup process
|
|
29
|
-
*/
|
|
30
|
-
stop(): void;
|
|
31
|
-
/**
|
|
32
|
-
* Run a single cleanup cycle
|
|
33
|
-
*/
|
|
34
|
-
runCleanup(): Promise<void>;
|
|
35
|
-
/**
|
|
36
|
-
* Clean expired documents from a specific collection using smartdata API
|
|
37
|
-
*/
|
|
38
|
-
private cleanExpiredDocuments;
|
|
39
|
-
/**
|
|
40
|
-
* Check if the cleaner is running
|
|
41
|
-
*/
|
|
42
|
-
isActive(): boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Get the cleanup interval in milliseconds
|
|
45
|
-
*/
|
|
46
|
-
getIntervalMs(): number;
|
|
47
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../plugins.js';
|
|
2
|
-
import { logger } from '../logger.js';
|
|
3
|
-
import { CacheDb } from './classes.cachedb.js';
|
|
4
|
-
// Import document classes for cleanup
|
|
5
|
-
import { CachedEmail } from './documents/classes.cached.email.js';
|
|
6
|
-
import { CachedIPReputation } from './documents/classes.cached.ip.reputation.js';
|
|
7
|
-
/**
|
|
8
|
-
* CacheCleaner - Periodically removes expired documents from the cache
|
|
9
|
-
*
|
|
10
|
-
* Runs on a configurable interval (default: hourly) and queries each
|
|
11
|
-
* collection for documents where expiresAt < now(), then deletes them.
|
|
12
|
-
*/
|
|
13
|
-
export class CacheCleaner {
|
|
14
|
-
cleanupInterval = null;
|
|
15
|
-
isRunning = false;
|
|
16
|
-
options;
|
|
17
|
-
cacheDb;
|
|
18
|
-
constructor(cacheDb, options = {}) {
|
|
19
|
-
this.cacheDb = cacheDb;
|
|
20
|
-
this.options = {
|
|
21
|
-
intervalMs: options.intervalMs || 60 * 60 * 1000, // 1 hour default
|
|
22
|
-
verbose: options.verbose || false,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Start the periodic cleanup process
|
|
27
|
-
*/
|
|
28
|
-
start() {
|
|
29
|
-
if (this.isRunning) {
|
|
30
|
-
logger.log('warn', 'CacheCleaner already running');
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
this.isRunning = true;
|
|
34
|
-
// Run cleanup immediately on start
|
|
35
|
-
this.runCleanup().catch((error) => {
|
|
36
|
-
logger.log('error', `Initial cache cleanup failed: ${error.message}`);
|
|
37
|
-
});
|
|
38
|
-
// Schedule periodic cleanup
|
|
39
|
-
this.cleanupInterval = setInterval(() => {
|
|
40
|
-
this.runCleanup().catch((error) => {
|
|
41
|
-
logger.log('error', `Cache cleanup failed: ${error.message}`);
|
|
42
|
-
});
|
|
43
|
-
}, this.options.intervalMs);
|
|
44
|
-
logger.log('info', `CacheCleaner started with interval: ${this.options.intervalMs / 1000 / 60} minutes`);
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Stop the periodic cleanup process
|
|
48
|
-
*/
|
|
49
|
-
stop() {
|
|
50
|
-
if (!this.isRunning) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (this.cleanupInterval) {
|
|
54
|
-
clearInterval(this.cleanupInterval);
|
|
55
|
-
this.cleanupInterval = null;
|
|
56
|
-
}
|
|
57
|
-
this.isRunning = false;
|
|
58
|
-
logger.log('info', 'CacheCleaner stopped');
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Run a single cleanup cycle
|
|
62
|
-
*/
|
|
63
|
-
async runCleanup() {
|
|
64
|
-
if (!this.cacheDb.isReady()) {
|
|
65
|
-
logger.log('warn', 'CacheDb not ready, skipping cleanup');
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
const now = new Date();
|
|
69
|
-
const results = [];
|
|
70
|
-
try {
|
|
71
|
-
const emailsDeleted = await this.cleanExpiredDocuments(CachedEmail, now);
|
|
72
|
-
results.push({ collection: 'CachedEmail', deleted: emailsDeleted });
|
|
73
|
-
const ipReputationDeleted = await this.cleanExpiredDocuments(CachedIPReputation, now);
|
|
74
|
-
results.push({ collection: 'CachedIPReputation', deleted: ipReputationDeleted });
|
|
75
|
-
// Log results
|
|
76
|
-
const totalDeleted = results.reduce((sum, r) => sum + r.deleted, 0);
|
|
77
|
-
if (totalDeleted > 0 || this.options.verbose) {
|
|
78
|
-
const summary = results
|
|
79
|
-
.filter((r) => r.deleted > 0)
|
|
80
|
-
.map((r) => `${r.collection}: ${r.deleted}`)
|
|
81
|
-
.join(', ');
|
|
82
|
-
logger.log('info', `Cache cleanup completed. Deleted ${totalDeleted} expired documents. ${summary || 'No deletions.'}`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
logger.log('error', `Cache cleanup error: ${error.message}`);
|
|
87
|
-
throw error;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Clean expired documents from a specific collection using smartdata API
|
|
92
|
-
*/
|
|
93
|
-
async cleanExpiredDocuments(documentClass, now) {
|
|
94
|
-
try {
|
|
95
|
-
// Find all expired documents
|
|
96
|
-
const expiredDocs = await documentClass.getInstances({
|
|
97
|
-
expiresAt: { $lt: now },
|
|
98
|
-
});
|
|
99
|
-
// Delete each expired document
|
|
100
|
-
let deletedCount = 0;
|
|
101
|
-
for (const doc of expiredDocs) {
|
|
102
|
-
try {
|
|
103
|
-
await doc.delete();
|
|
104
|
-
deletedCount++;
|
|
105
|
-
}
|
|
106
|
-
catch (deleteError) {
|
|
107
|
-
logger.log('warn', `Failed to delete expired document: ${deleteError.message}`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return deletedCount;
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
logger.log('error', `Error cleaning collection: ${error.message}`);
|
|
114
|
-
return 0;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Check if the cleaner is running
|
|
119
|
-
*/
|
|
120
|
-
isActive() {
|
|
121
|
-
return this.isRunning;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Get the cleanup interval in milliseconds
|
|
125
|
-
*/
|
|
126
|
-
getIntervalMs() {
|
|
127
|
-
return this.options.intervalMs;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZS5jbGVhbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvY2FjaGUvY2xhc3Nlcy5jYWNoZS5jbGVhbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9DLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFZakY7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNmLGVBQWUsR0FBMEMsSUFBSSxDQUFDO0lBQzlELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsT0FBTyxDQUFpQztJQUN4QyxPQUFPLENBQVU7SUFFekIsWUFBWSxPQUFnQixFQUFFLFVBQWdDLEVBQUU7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLGlCQUFpQjtZQUNuRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLG1DQUFtQztRQUNuQyxJQUFJ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
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { CachedDocument } from '../classes.cached.document.js';
|
|
2
|
-
/**
|
|
3
|
-
* IP reputation result data
|
|
4
|
-
*/
|
|
5
|
-
export interface IIPReputationData {
|
|
6
|
-
score: number;
|
|
7
|
-
isSpam: boolean;
|
|
8
|
-
isProxy: boolean;
|
|
9
|
-
isTor: boolean;
|
|
10
|
-
isVPN: boolean;
|
|
11
|
-
country?: string;
|
|
12
|
-
asn?: string;
|
|
13
|
-
org?: string;
|
|
14
|
-
blacklists?: string[];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* CachedIPReputation - Stores IP reputation lookup results
|
|
18
|
-
*
|
|
19
|
-
* Caches the results of IP reputation checks to avoid repeated
|
|
20
|
-
* external API calls. Default TTL is 24 hours.
|
|
21
|
-
*/
|
|
22
|
-
export declare class CachedIPReputation extends CachedDocument<CachedIPReputation> {
|
|
23
|
-
createdAt: Date;
|
|
24
|
-
expiresAt: Date;
|
|
25
|
-
lastAccessedAt: Date;
|
|
26
|
-
/**
|
|
27
|
-
* IP address (unique identifier)
|
|
28
|
-
*/
|
|
29
|
-
ipAddress: string;
|
|
30
|
-
/**
|
|
31
|
-
* Reputation score (0-100, higher = better)
|
|
32
|
-
*/
|
|
33
|
-
score: number;
|
|
34
|
-
/**
|
|
35
|
-
* Whether the IP is flagged as spam source
|
|
36
|
-
*/
|
|
37
|
-
isSpam: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Whether the IP is a known proxy
|
|
40
|
-
*/
|
|
41
|
-
isProxy: boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Whether the IP is a Tor exit node
|
|
44
|
-
*/
|
|
45
|
-
isTor: boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Whether the IP is a VPN endpoint
|
|
48
|
-
*/
|
|
49
|
-
isVPN: boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Country code (ISO 3166-1 alpha-2)
|
|
52
|
-
*/
|
|
53
|
-
country: string;
|
|
54
|
-
/**
|
|
55
|
-
* Autonomous System Number
|
|
56
|
-
*/
|
|
57
|
-
asn: string;
|
|
58
|
-
/**
|
|
59
|
-
* Organization name
|
|
60
|
-
*/
|
|
61
|
-
org: string;
|
|
62
|
-
/**
|
|
63
|
-
* List of blacklists the IP appears on
|
|
64
|
-
*/
|
|
65
|
-
blacklists: string[];
|
|
66
|
-
/**
|
|
67
|
-
* Number of times this IP has been checked
|
|
68
|
-
*/
|
|
69
|
-
checkCount: number;
|
|
70
|
-
/**
|
|
71
|
-
* Number of connections from this IP
|
|
72
|
-
*/
|
|
73
|
-
connectionCount: number;
|
|
74
|
-
/**
|
|
75
|
-
* Number of emails received from this IP
|
|
76
|
-
*/
|
|
77
|
-
emailCount: number;
|
|
78
|
-
/**
|
|
79
|
-
* Number of spam emails from this IP
|
|
80
|
-
*/
|
|
81
|
-
spamCount: number;
|
|
82
|
-
constructor();
|
|
83
|
-
/**
|
|
84
|
-
* Create from reputation data
|
|
85
|
-
*/
|
|
86
|
-
static fromReputationData(ipAddress: string, data: IIPReputationData): CachedIPReputation;
|
|
87
|
-
/**
|
|
88
|
-
* Convert to reputation data object
|
|
89
|
-
*/
|
|
90
|
-
toReputationData(): IIPReputationData;
|
|
91
|
-
/**
|
|
92
|
-
* Find by IP address
|
|
93
|
-
*/
|
|
94
|
-
static findByIP(ipAddress: string): Promise<CachedIPReputation | null>;
|
|
95
|
-
/**
|
|
96
|
-
* Find all IPs flagged as spam
|
|
97
|
-
*/
|
|
98
|
-
static findSpamIPs(): Promise<CachedIPReputation[]>;
|
|
99
|
-
/**
|
|
100
|
-
* Find IPs with score below threshold
|
|
101
|
-
*/
|
|
102
|
-
static findLowScoreIPs(threshold: number): Promise<CachedIPReputation[]>;
|
|
103
|
-
/**
|
|
104
|
-
* Record a connection from this IP
|
|
105
|
-
*/
|
|
106
|
-
recordConnection(): void;
|
|
107
|
-
/**
|
|
108
|
-
* Record an email from this IP
|
|
109
|
-
*/
|
|
110
|
-
recordEmail(isSpam?: boolean): void;
|
|
111
|
-
/**
|
|
112
|
-
* Update the reputation data
|
|
113
|
-
*/
|
|
114
|
-
updateReputation(data: IIPReputationData): void;
|
|
115
|
-
/**
|
|
116
|
-
* Check if this IP should be blocked
|
|
117
|
-
*/
|
|
118
|
-
shouldBlock(): boolean;
|
|
119
|
-
}
|