@serve.zone/dcrouter 11.0.8 → 11.0.9

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 (88) hide show
  1. package/dist_serve/bundle.js +1 -1
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +1 -1
  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.codes.d.ts +0 -115
  26. package/dist_ts/errors/error.codes.js +0 -136
  27. package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
  28. package/dist_ts/monitoring/classes.metricscache.js +0 -63
  29. package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -178
  30. package/dist_ts/monitoring/classes.metricsmanager.js +0 -642
  31. package/dist_ts/monitoring/index.d.ts +0 -1
  32. package/dist_ts/monitoring/index.js +0 -2
  33. package/dist_ts/opsserver/classes.opsserver.d.ts +0 -37
  34. package/dist_ts/opsserver/classes.opsserver.js +0 -85
  35. package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -31
  36. package/dist_ts/opsserver/handlers/admin.handler.js +0 -180
  37. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
  38. package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
  39. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -32
  40. package/dist_ts/opsserver/handlers/certificate.handler.js +0 -421
  41. package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
  42. package/dist_ts/opsserver/handlers/config.handler.js +0 -192
  43. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
  44. package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
  45. package/dist_ts/opsserver/handlers/index.d.ts +0 -11
  46. package/dist_ts/opsserver/handlers/index.js +0 -12
  47. package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
  48. package/dist_ts/opsserver/handlers/logs.handler.js +0 -256
  49. package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
  50. package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
  51. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
  52. package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
  53. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
  54. package/dist_ts/opsserver/handlers/route-management.handler.js +0 -117
  55. package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
  56. package/dist_ts/opsserver/handlers/security.handler.js +0 -231
  57. package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
  58. package/dist_ts/opsserver/handlers/stats.handler.js +0 -399
  59. package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
  60. package/dist_ts/opsserver/helpers/guards.js +0 -43
  61. package/dist_ts/opsserver/index.d.ts +0 -1
  62. package/dist_ts/opsserver/index.js +0 -2
  63. package/dist_ts/radius/classes.accounting.manager.d.ts +0 -218
  64. package/dist_ts/radius/classes.accounting.manager.js +0 -417
  65. package/dist_ts/radius/classes.radius.server.d.ts +0 -171
  66. package/dist_ts/radius/classes.radius.server.js +0 -385
  67. package/dist_ts/radius/classes.vlan.manager.d.ts +0 -128
  68. package/dist_ts/radius/classes.vlan.manager.js +0 -279
  69. package/dist_ts/radius/index.d.ts +0 -13
  70. package/dist_ts/radius/index.js +0 -14
  71. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -82
  72. package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -227
  73. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
  74. package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
  75. package/dist_ts/remoteingress/index.d.ts +0 -2
  76. package/dist_ts/remoteingress/index.js +0 -3
  77. package/dist_ts/security/classes.contentscanner.d.ts +0 -164
  78. package/dist_ts/security/classes.contentscanner.js +0 -642
  79. package/dist_ts/security/classes.ipreputationchecker.d.ts +0 -160
  80. package/dist_ts/security/classes.ipreputationchecker.js +0 -537
  81. package/dist_ts/security/classes.securitylogger.d.ts +0 -144
  82. package/dist_ts/security/classes.securitylogger.js +0 -233
  83. package/dist_ts/security/index.d.ts +0 -3
  84. package/dist_ts/security/index.js +0 -4
  85. package/dist_ts/storage/classes.storagemanager.d.ts +0 -83
  86. package/dist_ts/storage/classes.storagemanager.js +0 -350
  87. package/dist_ts/storage/index.d.ts +0 -1
  88. 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-1772706780583.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.9',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
@@ -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.9',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
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.9",
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.9',
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.9',
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZS5jbGVhbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvY2FjaGUvY2xhc3Nlcy5jYWNoZS5jbGVhbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9DLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFZakY7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNmLGVBQWUsR0FBMEMsSUFBSSxDQUFDO0lBQzlELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsT0FBTyxDQUFpQztJQUN4QyxPQUFPLENBQVU7SUFFekIsWUFBWSxPQUFnQixFQUFFLFVBQWdDLEVBQUU7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLGlCQUFpQjtZQUNuRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsaUNBQWlDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLHlCQUF5QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTVCLE1BQU0sQ0FBQyxHQUFHLENBQ1IsTUFBTSxFQUNOLHVDQUF1QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxVQUFVLENBQ3JGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxxQ0FBcUMsQ0FBQyxDQUFDO1lBQzFELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBOEMsRUFBRSxDQUFDO1FBRTlELElBQUksQ0FBQztZQUNILE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN6RSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUVwRSxNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RGLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztZQUVqRixjQUFjO1lBQ2QsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksWUFBWSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QyxNQUFNLE9BQU8sR0FBRyxPQUFPO3FCQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO3FCQUM1QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7cUJBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDZCxNQUFNLENBQUMsR0FBRyxDQUNSLE1BQU0sRUFDTixvQ0FBb0MsWUFBWSx1QkFBdUIsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUNwRyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxxQkFBcUIsQ0FDakMsYUFBOEQsRUFDOUQsR0FBUztRQUVULElBQUksQ0FBQztZQUNILDZCQUE2QjtZQUM3QixNQUFNLFdBQVcsR0FBRyxNQUFNLGFBQWEsQ0FBQyxZQUFZLENBQUM7Z0JBQ25ELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7YUFDeEIsQ0FBQyxDQUFDO1lBRUgsK0JBQStCO1lBQy9CLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztZQUNyQixLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUM7b0JBQ0gsTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ25CLFlBQVksRUFBRSxDQUFDO2dCQUNqQixDQUFDO2dCQUFDLE9BQU8sV0FBVyxFQUFFLENBQUM7b0JBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHNDQUFzQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDbEYsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDhCQUE4QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNuRSxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0NBQ0YifQ==
@@ -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
- }