@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.
Files changed (92) hide show
  1. package/dist_serve/bundle.js +1 -1
  2. package/dist_ts/00_commitinfo_data.js +2 -2
  3. package/dist_ts_web/00_commitinfo_data.js +2 -2
  4. package/package.json +2 -2
  5. package/ts/00_commitinfo_data.ts +1 -1
  6. package/ts_web/00_commitinfo_data.ts +1 -1
  7. package/dist_ts/cache/classes.cache.cleaner.d.ts +0 -47
  8. package/dist_ts/cache/classes.cache.cleaner.js +0 -130
  9. package/dist_ts/cache/documents/classes.cached.ip.reputation.d.ts +0 -119
  10. package/dist_ts/cache/documents/classes.cached.ip.reputation.js +0 -323
  11. package/dist_ts/cache/documents/index.d.ts +0 -2
  12. package/dist_ts/cache/documents/index.js +0 -3
  13. package/dist_ts/cache/index.d.ts +0 -4
  14. package/dist_ts/cache/index.js +0 -7
  15. package/dist_ts/config/classes.api-token-manager.d.ts +0 -46
  16. package/dist_ts/config/classes.api-token-manager.js +0 -150
  17. package/dist_ts/config/classes.route-config-manager.d.ts +0 -35
  18. package/dist_ts/config/classes.route-config-manager.js +0 -231
  19. package/dist_ts/config/index.d.ts +0 -3
  20. package/dist_ts/config/index.js +0 -5
  21. package/dist_ts/config/validator.d.ts +0 -104
  22. package/dist_ts/config/validator.js +0 -152
  23. package/dist_ts/errors/base.errors.d.ts +0 -224
  24. package/dist_ts/errors/base.errors.js +0 -320
  25. package/dist_ts/errors/error-handler.d.ts +0 -98
  26. package/dist_ts/errors/error-handler.js +0 -282
  27. package/dist_ts/errors/error.codes.d.ts +0 -115
  28. package/dist_ts/errors/error.codes.js +0 -136
  29. package/dist_ts/errors/reputation.errors.d.ts +0 -183
  30. package/dist_ts/errors/reputation.errors.js +0 -292
  31. package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
  32. package/dist_ts/monitoring/classes.metricscache.js +0 -63
  33. package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -178
  34. package/dist_ts/monitoring/classes.metricsmanager.js +0 -642
  35. package/dist_ts/monitoring/index.d.ts +0 -1
  36. package/dist_ts/monitoring/index.js +0 -2
  37. package/dist_ts/opsserver/classes.opsserver.d.ts +0 -37
  38. package/dist_ts/opsserver/classes.opsserver.js +0 -85
  39. package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -31
  40. package/dist_ts/opsserver/handlers/admin.handler.js +0 -180
  41. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
  42. package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
  43. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -32
  44. package/dist_ts/opsserver/handlers/certificate.handler.js +0 -421
  45. package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
  46. package/dist_ts/opsserver/handlers/config.handler.js +0 -192
  47. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
  48. package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
  49. package/dist_ts/opsserver/handlers/index.d.ts +0 -11
  50. package/dist_ts/opsserver/handlers/index.js +0 -12
  51. package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
  52. package/dist_ts/opsserver/handlers/logs.handler.js +0 -256
  53. package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
  54. package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
  55. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
  56. package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
  57. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
  58. package/dist_ts/opsserver/handlers/route-management.handler.js +0 -117
  59. package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
  60. package/dist_ts/opsserver/handlers/security.handler.js +0 -231
  61. package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
  62. package/dist_ts/opsserver/handlers/stats.handler.js +0 -399
  63. package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
  64. package/dist_ts/opsserver/helpers/guards.js +0 -43
  65. package/dist_ts/opsserver/index.d.ts +0 -1
  66. package/dist_ts/opsserver/index.js +0 -2
  67. package/dist_ts/radius/classes.accounting.manager.d.ts +0 -218
  68. package/dist_ts/radius/classes.accounting.manager.js +0 -417
  69. package/dist_ts/radius/classes.radius.server.d.ts +0 -171
  70. package/dist_ts/radius/classes.radius.server.js +0 -385
  71. package/dist_ts/radius/classes.vlan.manager.d.ts +0 -128
  72. package/dist_ts/radius/classes.vlan.manager.js +0 -279
  73. package/dist_ts/radius/index.d.ts +0 -13
  74. package/dist_ts/radius/index.js +0 -14
  75. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -82
  76. package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -227
  77. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
  78. package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
  79. package/dist_ts/remoteingress/index.d.ts +0 -2
  80. package/dist_ts/remoteingress/index.js +0 -3
  81. package/dist_ts/security/classes.contentscanner.d.ts +0 -164
  82. package/dist_ts/security/classes.contentscanner.js +0 -642
  83. package/dist_ts/security/classes.ipreputationchecker.d.ts +0 -160
  84. package/dist_ts/security/classes.ipreputationchecker.js +0 -537
  85. package/dist_ts/security/classes.securitylogger.d.ts +0 -144
  86. package/dist_ts/security/classes.securitylogger.js +0 -233
  87. package/dist_ts/security/index.d.ts +0 -3
  88. package/dist_ts/security/index.js +0 -4
  89. package/dist_ts/storage/classes.storagemanager.d.ts +0 -83
  90. package/dist_ts/storage/classes.storagemanager.js +0 -350
  91. package/dist_ts/storage/index.d.ts +0 -1
  92. package/dist_ts/storage/index.js +0 -3
@@ -39328,4 +39328,4 @@ ibantools/jsnext/ibantools.js:
39328
39328
  * @preferred
39329
39329
  *)
39330
39330
  */
39331
- //# sourceMappingURL=bundle-1772701834451.js.map
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.8',
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
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.8',
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
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.8",
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.3",
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",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.0.8',
6
+ version: '11.0.10',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.0.8',
6
+ version: '11.0.10',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }
@@ -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
- }