mcp-wordpress 2.5.1 → 2.5.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.
Files changed (289) hide show
  1. package/package.json +1 -1
  2. package/dist/src/cache/CacheInvalidation.d.ts +0 -120
  3. package/dist/src/cache/CacheInvalidation.d.ts.map +0 -1
  4. package/dist/src/cache/CacheInvalidation.js +0 -355
  5. package/dist/src/cache/CacheInvalidation.js.map +0 -1
  6. package/dist/src/cache/CacheManager.d.ts +0 -149
  7. package/dist/src/cache/CacheManager.d.ts.map +0 -1
  8. package/dist/src/cache/CacheManager.js +0 -326
  9. package/dist/src/cache/CacheManager.js.map +0 -1
  10. package/dist/src/cache/HttpCacheWrapper.d.ts +0 -122
  11. package/dist/src/cache/HttpCacheWrapper.d.ts.map +0 -1
  12. package/dist/src/cache/HttpCacheWrapper.js +0 -283
  13. package/dist/src/cache/HttpCacheWrapper.js.map +0 -1
  14. package/dist/src/cache/index.d.ts +0 -12
  15. package/dist/src/cache/index.d.ts.map +0 -1
  16. package/dist/src/cache/index.js +0 -9
  17. package/dist/src/cache/index.js.map +0 -1
  18. package/dist/src/client/CachedWordPressClient.d.ts +0 -174
  19. package/dist/src/client/CachedWordPressClient.d.ts.map +0 -1
  20. package/dist/src/client/CachedWordPressClient.js +0 -345
  21. package/dist/src/client/CachedWordPressClient.js.map +0 -1
  22. package/dist/src/client/MockWordPressClient.d.ts +0 -56
  23. package/dist/src/client/MockWordPressClient.d.ts.map +0 -1
  24. package/dist/src/client/MockWordPressClient.js +0 -371
  25. package/dist/src/client/MockWordPressClient.js.map +0 -1
  26. package/dist/src/client/api.d.ts +0 -235
  27. package/dist/src/client/api.d.ts.map +0 -1
  28. package/dist/src/client/api.js +0 -896
  29. package/dist/src/client/api.js.map +0 -1
  30. package/dist/src/client/auth.d.ts +0 -121
  31. package/dist/src/client/auth.d.ts.map +0 -1
  32. package/dist/src/client/auth.js +0 -429
  33. package/dist/src/client/auth.js.map +0 -1
  34. package/dist/src/client/managers/AuthenticationManager.d.ts +0 -92
  35. package/dist/src/client/managers/AuthenticationManager.d.ts.map +0 -1
  36. package/dist/src/client/managers/AuthenticationManager.js +0 -369
  37. package/dist/src/client/managers/AuthenticationManager.js.map +0 -1
  38. package/dist/src/client/managers/BaseManager.d.ts +0 -22
  39. package/dist/src/client/managers/BaseManager.d.ts.map +0 -1
  40. package/dist/src/client/managers/BaseManager.js +0 -53
  41. package/dist/src/client/managers/BaseManager.js.map +0 -1
  42. package/dist/src/client/managers/RequestManager.d.ts +0 -47
  43. package/dist/src/client/managers/RequestManager.d.ts.map +0 -1
  44. package/dist/src/client/managers/RequestManager.js +0 -193
  45. package/dist/src/client/managers/RequestManager.js.map +0 -1
  46. package/dist/src/client/managers/index.d.ts +0 -8
  47. package/dist/src/client/managers/index.d.ts.map +0 -1
  48. package/dist/src/client/managers/index.js +0 -8
  49. package/dist/src/client/managers/index.js.map +0 -1
  50. package/dist/src/config/Config.d.ts +0 -155
  51. package/dist/src/config/Config.d.ts.map +0 -1
  52. package/dist/src/config/Config.js +0 -215
  53. package/dist/src/config/Config.js.map +0 -1
  54. package/dist/src/config/ConfigurationSchema.d.ts +0 -281
  55. package/dist/src/config/ConfigurationSchema.d.ts.map +0 -1
  56. package/dist/src/config/ConfigurationSchema.js +0 -205
  57. package/dist/src/config/ConfigurationSchema.js.map +0 -1
  58. package/dist/src/config/ServerConfiguration.d.ts +0 -47
  59. package/dist/src/config/ServerConfiguration.d.ts.map +0 -1
  60. package/dist/src/config/ServerConfiguration.js +0 -255
  61. package/dist/src/config/ServerConfiguration.js.map +0 -1
  62. package/dist/src/docs/DocumentationGenerator.d.ts +0 -185
  63. package/dist/src/docs/DocumentationGenerator.d.ts.map +0 -1
  64. package/dist/src/docs/DocumentationGenerator.js +0 -777
  65. package/dist/src/docs/DocumentationGenerator.js.map +0 -1
  66. package/dist/src/docs/MarkdownFormatter.d.ts +0 -84
  67. package/dist/src/docs/MarkdownFormatter.d.ts.map +0 -1
  68. package/dist/src/docs/MarkdownFormatter.js +0 -458
  69. package/dist/src/docs/MarkdownFormatter.js.map +0 -1
  70. package/dist/src/docs/index.d.ts +0 -8
  71. package/dist/src/docs/index.d.ts.map +0 -1
  72. package/dist/src/docs/index.js +0 -7
  73. package/dist/src/docs/index.js.map +0 -1
  74. package/dist/src/dxt-entry.d.ts +0 -6
  75. package/dist/src/dxt-entry.d.ts.map +0 -1
  76. package/dist/src/dxt-entry.js +0 -39
  77. package/dist/src/dxt-entry.js.map +0 -1
  78. package/dist/src/index.d.ts +0 -18
  79. package/dist/src/index.d.ts.map +0 -1
  80. package/dist/src/index.js +0 -143
  81. package/dist/src/index.js.map +0 -1
  82. package/dist/src/performance/MetricsCollector.d.ts +0 -145
  83. package/dist/src/performance/MetricsCollector.d.ts.map +0 -1
  84. package/dist/src/performance/MetricsCollector.js +0 -368
  85. package/dist/src/performance/MetricsCollector.js.map +0 -1
  86. package/dist/src/performance/PerformanceAnalytics.d.ts +0 -168
  87. package/dist/src/performance/PerformanceAnalytics.d.ts.map +0 -1
  88. package/dist/src/performance/PerformanceAnalytics.js +0 -570
  89. package/dist/src/performance/PerformanceAnalytics.js.map +0 -1
  90. package/dist/src/performance/PerformanceMonitor.d.ts +0 -203
  91. package/dist/src/performance/PerformanceMonitor.d.ts.map +0 -1
  92. package/dist/src/performance/PerformanceMonitor.js +0 -478
  93. package/dist/src/performance/PerformanceMonitor.js.map +0 -1
  94. package/dist/src/performance/index.d.ts +0 -11
  95. package/dist/src/performance/index.d.ts.map +0 -1
  96. package/dist/src/performance/index.js +0 -8
  97. package/dist/src/performance/index.js.map +0 -1
  98. package/dist/src/security/AISecurityScanner.d.ts +0 -176
  99. package/dist/src/security/AISecurityScanner.d.ts.map +0 -1
  100. package/dist/src/security/AISecurityScanner.js +0 -655
  101. package/dist/src/security/AISecurityScanner.js.map +0 -1
  102. package/dist/src/security/AutomatedRemediation.d.ts +0 -146
  103. package/dist/src/security/AutomatedRemediation.d.ts.map +0 -1
  104. package/dist/src/security/AutomatedRemediation.js +0 -566
  105. package/dist/src/security/AutomatedRemediation.js.map +0 -1
  106. package/dist/src/security/InputValidator.d.ts +0 -219
  107. package/dist/src/security/InputValidator.d.ts.map +0 -1
  108. package/dist/src/security/InputValidator.js +0 -295
  109. package/dist/src/security/InputValidator.js.map +0 -1
  110. package/dist/src/security/SecurityCIPipeline.d.ts +0 -213
  111. package/dist/src/security/SecurityCIPipeline.d.ts.map +0 -1
  112. package/dist/src/security/SecurityCIPipeline.js +0 -693
  113. package/dist/src/security/SecurityCIPipeline.js.map +0 -1
  114. package/dist/src/security/SecurityConfig.d.ts +0 -129
  115. package/dist/src/security/SecurityConfig.d.ts.map +0 -1
  116. package/dist/src/security/SecurityConfig.js +0 -266
  117. package/dist/src/security/SecurityConfig.js.map +0 -1
  118. package/dist/src/security/SecurityConfigManager.d.ts +0 -294
  119. package/dist/src/security/SecurityConfigManager.d.ts.map +0 -1
  120. package/dist/src/security/SecurityConfigManager.js +0 -558
  121. package/dist/src/security/SecurityConfigManager.js.map +0 -1
  122. package/dist/src/security/SecurityMonitoring.d.ts +0 -245
  123. package/dist/src/security/SecurityMonitoring.d.ts.map +0 -1
  124. package/dist/src/security/SecurityMonitoring.js +0 -598
  125. package/dist/src/security/SecurityMonitoring.js.map +0 -1
  126. package/dist/src/security/SecurityReviewer.d.ts +0 -168
  127. package/dist/src/security/SecurityReviewer.d.ts.map +0 -1
  128. package/dist/src/security/SecurityReviewer.js +0 -686
  129. package/dist/src/security/SecurityReviewer.js.map +0 -1
  130. package/dist/src/security/index.d.ts +0 -183
  131. package/dist/src/security/index.d.ts.map +0 -1
  132. package/dist/src/security/index.js +0 -218
  133. package/dist/src/security/index.js.map +0 -1
  134. package/dist/src/server/ConnectionTester.d.ts +0 -32
  135. package/dist/src/server/ConnectionTester.d.ts.map +0 -1
  136. package/dist/src/server/ConnectionTester.js +0 -135
  137. package/dist/src/server/ConnectionTester.js.map +0 -1
  138. package/dist/src/server/ToolRegistry.d.ts +0 -50
  139. package/dist/src/server/ToolRegistry.d.ts.map +0 -1
  140. package/dist/src/server/ToolRegistry.js +0 -219
  141. package/dist/src/server/ToolRegistry.js.map +0 -1
  142. package/dist/src/server.d.ts +0 -7
  143. package/dist/src/server.d.ts.map +0 -1
  144. package/dist/src/server.js +0 -7
  145. package/dist/src/server.js.map +0 -1
  146. package/dist/src/tools/BaseToolManager.d.ts +0 -62
  147. package/dist/src/tools/BaseToolManager.d.ts.map +0 -1
  148. package/dist/src/tools/BaseToolManager.js +0 -195
  149. package/dist/src/tools/BaseToolManager.js.map +0 -1
  150. package/dist/src/tools/auth.d.ts +0 -50
  151. package/dist/src/tools/auth.d.ts.map +0 -1
  152. package/dist/src/tools/auth.js +0 -133
  153. package/dist/src/tools/auth.js.map +0 -1
  154. package/dist/src/tools/cache.d.ts +0 -260
  155. package/dist/src/tools/cache.d.ts.map +0 -1
  156. package/dist/src/tools/cache.js +0 -232
  157. package/dist/src/tools/cache.js.map +0 -1
  158. package/dist/src/tools/comments.d.ts +0 -33
  159. package/dist/src/tools/comments.d.ts.map +0 -1
  160. package/dist/src/tools/comments.js +0 -235
  161. package/dist/src/tools/comments.js.map +0 -1
  162. package/dist/src/tools/index.d.ts +0 -11
  163. package/dist/src/tools/index.d.ts.map +0 -1
  164. package/dist/src/tools/index.js +0 -11
  165. package/dist/src/tools/index.js.map +0 -1
  166. package/dist/src/tools/media.d.ts +0 -70
  167. package/dist/src/tools/media.d.ts.map +0 -1
  168. package/dist/src/tools/media.js +0 -248
  169. package/dist/src/tools/media.js.map +0 -1
  170. package/dist/src/tools/pages.d.ts +0 -32
  171. package/dist/src/tools/pages.d.ts.map +0 -1
  172. package/dist/src/tools/pages.js +0 -215
  173. package/dist/src/tools/pages.js.map +0 -1
  174. package/dist/src/tools/performance.d.ts +0 -73
  175. package/dist/src/tools/performance.d.ts.map +0 -1
  176. package/dist/src/tools/performance.js +0 -922
  177. package/dist/src/tools/performance.js.map +0 -1
  178. package/dist/src/tools/posts/PostHandlers.d.ts +0 -46
  179. package/dist/src/tools/posts/PostHandlers.d.ts.map +0 -1
  180. package/dist/src/tools/posts/PostHandlers.js +0 -400
  181. package/dist/src/tools/posts/PostHandlers.js.map +0 -1
  182. package/dist/src/tools/posts/PostToolDefinitions.d.ts +0 -37
  183. package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +0 -1
  184. package/dist/src/tools/posts/PostToolDefinitions.js +0 -236
  185. package/dist/src/tools/posts/PostToolDefinitions.js.map +0 -1
  186. package/dist/src/tools/posts/index.d.ts +0 -138
  187. package/dist/src/tools/posts/index.d.ts.map +0 -1
  188. package/dist/src/tools/posts/index.js +0 -163
  189. package/dist/src/tools/posts/index.js.map +0 -1
  190. package/dist/src/tools/posts.d.ts +0 -15
  191. package/dist/src/tools/posts.d.ts.map +0 -1
  192. package/dist/src/tools/posts.js +0 -16
  193. package/dist/src/tools/posts.js.map +0 -1
  194. package/dist/src/tools/site.d.ts +0 -32
  195. package/dist/src/tools/site.d.ts.map +0 -1
  196. package/dist/src/tools/site.js +0 -234
  197. package/dist/src/tools/site.js.map +0 -1
  198. package/dist/src/tools/taxonomies.d.ts +0 -36
  199. package/dist/src/tools/taxonomies.d.ts.map +0 -1
  200. package/dist/src/tools/taxonomies.js +0 -286
  201. package/dist/src/tools/taxonomies.js.map +0 -1
  202. package/dist/src/tools/users.d.ts +0 -33
  203. package/dist/src/tools/users.d.ts.map +0 -1
  204. package/dist/src/tools/users.js +0 -308
  205. package/dist/src/tools/users.js.map +0 -1
  206. package/dist/src/types/client.d.ts +0 -223
  207. package/dist/src/types/client.d.ts.map +0 -1
  208. package/dist/src/types/client.js +0 -97
  209. package/dist/src/types/client.js.map +0 -1
  210. package/dist/src/types/enhanced.d.ts +0 -237
  211. package/dist/src/types/enhanced.d.ts.map +0 -1
  212. package/dist/src/types/enhanced.js +0 -49
  213. package/dist/src/types/enhanced.js.map +0 -1
  214. package/dist/src/types/index.d.ts +0 -160
  215. package/dist/src/types/index.d.ts.map +0 -1
  216. package/dist/src/types/index.js +0 -14
  217. package/dist/src/types/index.js.map +0 -1
  218. package/dist/src/types/mcp.d.ts +0 -178
  219. package/dist/src/types/mcp.d.ts.map +0 -1
  220. package/dist/src/types/mcp.js +0 -7
  221. package/dist/src/types/mcp.js.map +0 -1
  222. package/dist/src/types/requests.d.ts +0 -322
  223. package/dist/src/types/requests.d.ts.map +0 -1
  224. package/dist/src/types/requests.js +0 -8
  225. package/dist/src/types/requests.js.map +0 -1
  226. package/dist/src/types/tools.d.ts +0 -506
  227. package/dist/src/types/tools.d.ts.map +0 -1
  228. package/dist/src/types/tools.js +0 -8
  229. package/dist/src/types/tools.js.map +0 -1
  230. package/dist/src/types/wordpress.d.ts +0 -471
  231. package/dist/src/types/wordpress.d.ts.map +0 -1
  232. package/dist/src/types/wordpress.js +0 -14
  233. package/dist/src/types/wordpress.js.map +0 -1
  234. package/dist/src/utils/debug.d.ts +0 -71
  235. package/dist/src/utils/debug.d.ts.map +0 -1
  236. package/dist/src/utils/debug.js +0 -235
  237. package/dist/src/utils/debug.js.map +0 -1
  238. package/dist/src/utils/enhancedError.d.ts +0 -61
  239. package/dist/src/utils/enhancedError.d.ts.map +0 -1
  240. package/dist/src/utils/enhancedError.js +0 -221
  241. package/dist/src/utils/enhancedError.js.map +0 -1
  242. package/dist/src/utils/error.d.ts +0 -17
  243. package/dist/src/utils/error.d.ts.map +0 -1
  244. package/dist/src/utils/error.js +0 -108
  245. package/dist/src/utils/error.js.map +0 -1
  246. package/dist/src/utils/logger.d.ts +0 -106
  247. package/dist/src/utils/logger.d.ts.map +0 -1
  248. package/dist/src/utils/logger.js +0 -280
  249. package/dist/src/utils/logger.js.map +0 -1
  250. package/dist/src/utils/streaming.d.ts +0 -104
  251. package/dist/src/utils/streaming.d.ts.map +0 -1
  252. package/dist/src/utils/streaming.js +0 -331
  253. package/dist/src/utils/streaming.js.map +0 -1
  254. package/dist/src/utils/toolWrapper.d.ts +0 -42
  255. package/dist/src/utils/toolWrapper.d.ts.map +0 -1
  256. package/dist/src/utils/toolWrapper.js +0 -101
  257. package/dist/src/utils/toolWrapper.js.map +0 -1
  258. package/dist/src/utils/validation/core.d.ts +0 -21
  259. package/dist/src/utils/validation/core.d.ts.map +0 -1
  260. package/dist/src/utils/validation/core.js +0 -71
  261. package/dist/src/utils/validation/core.js.map +0 -1
  262. package/dist/src/utils/validation/index.d.ts +0 -25
  263. package/dist/src/utils/validation/index.d.ts.map +0 -1
  264. package/dist/src/utils/validation/index.js +0 -29
  265. package/dist/src/utils/validation/index.js.map +0 -1
  266. package/dist/src/utils/validation/network.d.ts +0 -19
  267. package/dist/src/utils/validation/network.d.ts.map +0 -1
  268. package/dist/src/utils/validation/network.js +0 -93
  269. package/dist/src/utils/validation/network.js.map +0 -1
  270. package/dist/src/utils/validation/rateLimit.d.ts +0 -21
  271. package/dist/src/utils/validation/rateLimit.d.ts.map +0 -1
  272. package/dist/src/utils/validation/rateLimit.js +0 -43
  273. package/dist/src/utils/validation/rateLimit.js.map +0 -1
  274. package/dist/src/utils/validation/security.d.ts +0 -29
  275. package/dist/src/utils/validation/security.d.ts.map +0 -1
  276. package/dist/src/utils/validation/security.js +0 -327
  277. package/dist/src/utils/validation/security.js.map +0 -1
  278. package/dist/src/utils/validation/wordpress.d.ts +0 -31
  279. package/dist/src/utils/validation/wordpress.d.ts.map +0 -1
  280. package/dist/src/utils/validation/wordpress.js +0 -146
  281. package/dist/src/utils/validation/wordpress.js.map +0 -1
  282. package/dist/src/utils/validation.d.ts +0 -15
  283. package/dist/src/utils/validation.d.ts.map +0 -1
  284. package/dist/src/utils/validation.js +0 -27
  285. package/dist/src/utils/validation.js.map +0 -1
  286. package/dist/tests/vitest.setup.d.ts +0 -6
  287. package/dist/tests/vitest.setup.d.ts.map +0 -1
  288. package/dist/tests/vitest.setup.js +0 -39
  289. package/dist/tests/vitest.setup.js.map +0 -1
@@ -1,598 +0,0 @@
1
- /**
2
- * Security Monitoring and Alerting System
3
- * Provides real-time security monitoring, threat detection, and incident response
4
- */
5
- import { EventEmitter } from "events";
6
- import { SecurityUtils } from "./SecurityConfig.js";
7
- import { LoggerFactory } from "../utils/logger.js";
8
- const logger = LoggerFactory.security();
9
- /**
10
- * Real-time Security Monitor
11
- */
12
- export class SecurityMonitor extends EventEmitter {
13
- events = [];
14
- alerts = [];
15
- threatIntel = new Map();
16
- anomalyPatterns = [];
17
- metrics = [];
18
- isMonitoring = false;
19
- metricsInterval;
20
- constructor() {
21
- super();
22
- this.initializeAnomalyPatterns();
23
- }
24
- /**
25
- * Start security monitoring
26
- */
27
- start() {
28
- if (this.isMonitoring) {
29
- logger.warn("Already monitoring");
30
- return;
31
- }
32
- this.isMonitoring = true;
33
- logger.info("Starting security monitoring");
34
- // Start metrics collection
35
- this.metricsInterval = setInterval(() => {
36
- this.collectMetrics();
37
- }, 60000); // Every minute
38
- this.emit("monitoring-started");
39
- }
40
- /**
41
- * Stop security monitoring
42
- */
43
- stop() {
44
- if (!this.isMonitoring) {
45
- logger.warn("Not currently monitoring");
46
- return;
47
- }
48
- this.isMonitoring = false;
49
- if (this.metricsInterval) {
50
- clearInterval(this.metricsInterval);
51
- this.metricsInterval = undefined;
52
- }
53
- logger.info("Stopped security monitoring");
54
- this.emit("monitoring-stopped");
55
- }
56
- /**
57
- * Log security event
58
- */
59
- async logSecurityEvent(eventData) {
60
- const event = {
61
- ...eventData,
62
- id: SecurityUtils.generateSecureToken(16),
63
- timestamp: new Date(),
64
- handled: false,
65
- actions: [],
66
- };
67
- this.events.push(event);
68
- // Process event in real-time
69
- await this.processSecurityEvent(event);
70
- // Check for anomalies
71
- await this.checkForAnomalies(event);
72
- // Emit event for real-time processing
73
- this.emit("security-event", event);
74
- logger.info(`Logged ${event.severity} event: ${event.type} - ${event.description}`);
75
- return event;
76
- }
77
- /**
78
- * Process security event and take automated actions
79
- */
80
- async processSecurityEvent(event) {
81
- const actions = [];
82
- // High-severity events get immediate attention
83
- if (event.severity === "critical" || event.severity === "high") {
84
- actions.push(await this.createAction("alert", event, true));
85
- if (event.type === "authentication" && event.details.ipAddress) {
86
- // Consider blocking suspicious IPs
87
- const suspiciousActivity = await this.checkSuspiciousActivity(event.details.ipAddress);
88
- if (suspiciousActivity) {
89
- actions.push(await this.createAction("block", event, true));
90
- }
91
- }
92
- }
93
- // Rate limiting for authentication events
94
- if (event.type === "authentication" && event.details.userId) {
95
- const failedAttempts = await this.getFailedAuthAttempts(event.details.userId);
96
- if (failedAttempts > 5) {
97
- actions.push(await this.createAction("throttle", event, true));
98
- }
99
- }
100
- // Check against threat intelligence
101
- if (event.details.ipAddress) {
102
- const threat = this.threatIntel.get(event.details.ipAddress);
103
- if (threat) {
104
- actions.push(await this.createAction("block", event, true));
105
- actions.push(await this.createAction("alert", event, true));
106
- }
107
- }
108
- event.actions = actions;
109
- event.handled = actions.length > 0;
110
- // Create alert if necessary
111
- if (event.severity === "critical" || (event.severity === "high" && event.riskScore > 7)) {
112
- await this.createAlert(event);
113
- }
114
- }
115
- /**
116
- * Create security action
117
- */
118
- async createAction(type, event, automated) {
119
- const action = {
120
- id: SecurityUtils.generateSecureToken(12),
121
- type,
122
- timestamp: new Date(),
123
- automated,
124
- result: "pending",
125
- details: `${type} action triggered for ${event.type} event`,
126
- };
127
- try {
128
- // Execute the action
129
- switch (type) {
130
- case "block":
131
- await this.executeBlockAction(event);
132
- break;
133
- case "throttle":
134
- await this.executeThrottleAction(event);
135
- break;
136
- case "alert":
137
- await this.executeAlertAction(event);
138
- break;
139
- case "log":
140
- await this.executeLogAction(event);
141
- break;
142
- default:
143
- logger.info(`Action ${type} queued for manual processing`, { type });
144
- }
145
- action.result = "success";
146
- action.details += " - executed successfully";
147
- }
148
- catch (error) {
149
- action.result = "failure";
150
- action.details += ` - failed: ${error instanceof Error ? error.message : String(error)}`;
151
- logger.error(`Action ${type} failed`, { type, error });
152
- }
153
- return action;
154
- }
155
- /**
156
- * Execute block action
157
- */
158
- async executeBlockAction(event) {
159
- if (event.details.ipAddress) {
160
- logger.info(`Blocking IP: ${event.details.ipAddress}`);
161
- // In a real implementation, this would interface with firewall/load balancer
162
- this.emit("ip-blocked", { ip: event.details.ipAddress, reason: event.description });
163
- }
164
- }
165
- /**
166
- * Execute throttle action
167
- */
168
- async executeThrottleAction(event) {
169
- if (event.details.userId) {
170
- logger.info(`Throttling user: ${event.details.userId}`);
171
- // In a real implementation, this would apply rate limiting
172
- this.emit("user-throttled", { userId: event.details.userId, reason: event.description });
173
- }
174
- }
175
- /**
176
- * Execute alert action
177
- */
178
- async executeAlertAction(event) {
179
- logger.info(`Alert triggered for event: ${event.id}`);
180
- this.emit("security-alert", event);
181
- }
182
- /**
183
- * Execute log action
184
- */
185
- async executeLogAction(event) {
186
- logger.info(`Enhanced logging for event: ${event.id}`);
187
- // Additional detailed logging would go here
188
- }
189
- /**
190
- * Create security alert
191
- */
192
- async createAlert(event) {
193
- const alert = {
194
- id: SecurityUtils.generateSecureToken(16),
195
- eventId: event.id,
196
- timestamp: new Date(),
197
- severity: event.severity,
198
- title: `Security Alert: ${event.type}`,
199
- description: event.description,
200
- category: event.type,
201
- affectedSystems: [event.source],
202
- indicators: this.extractIndicators(event),
203
- recommendations: this.generateRecommendations(event),
204
- status: "new",
205
- };
206
- this.alerts.push(alert);
207
- logger.info(`Created ${alert.severity} alert: ${alert.title}`);
208
- this.emit("alert-created", alert);
209
- return alert;
210
- }
211
- /**
212
- * Extract indicators from security event
213
- */
214
- extractIndicators(event) {
215
- const indicators = [];
216
- if (event.details.ipAddress) {
217
- indicators.push({
218
- type: "ip-address",
219
- value: event.details.ipAddress,
220
- confidence: 0.8,
221
- });
222
- }
223
- if (event.details.userAgent) {
224
- indicators.push({
225
- type: "user-agent",
226
- value: event.details.userAgent,
227
- confidence: 0.6,
228
- });
229
- }
230
- if (event.details.endpoint) {
231
- indicators.push({
232
- type: "endpoint",
233
- value: event.details.endpoint,
234
- confidence: 0.7,
235
- });
236
- }
237
- return indicators;
238
- }
239
- /**
240
- * Generate recommendations for event
241
- */
242
- generateRecommendations(event) {
243
- const recommendations = [];
244
- switch (event.type) {
245
- case "authentication":
246
- recommendations.push("Review authentication logs for patterns");
247
- recommendations.push("Consider implementing multi-factor authentication");
248
- if (event.severity === "high" || event.severity === "critical") {
249
- recommendations.push("Temporarily block suspicious IP addresses");
250
- }
251
- break;
252
- case "authorization":
253
- recommendations.push("Review user permissions and access controls");
254
- recommendations.push("Audit privilege escalation attempts");
255
- break;
256
- case "input-validation":
257
- recommendations.push("Review input validation rules");
258
- recommendations.push("Update WAF rules if applicable");
259
- break;
260
- case "data-access":
261
- recommendations.push("Review data access patterns");
262
- recommendations.push("Implement data loss prevention measures");
263
- break;
264
- case "system":
265
- recommendations.push("Check system integrity");
266
- recommendations.push("Review system logs for correlating events");
267
- break;
268
- case "anomaly":
269
- recommendations.push("Investigate unusual patterns");
270
- recommendations.push("Tune anomaly detection thresholds");
271
- break;
272
- }
273
- return recommendations;
274
- }
275
- /**
276
- * Check for suspicious activity from IP
277
- */
278
- async checkSuspiciousActivity(ipAddress) {
279
- const recentEvents = this.events.filter((event) => event.details.ipAddress === ipAddress && event.timestamp.getTime() > Date.now() - 3600000);
280
- // Multiple failed authentication attempts
281
- const failedAuth = recentEvents.filter((event) => event.type === "authentication" && event.severity === "high");
282
- if (failedAuth.length > 5) {
283
- return true;
284
- }
285
- // Multiple different user attempts from same IP
286
- const userIds = new Set(recentEvents.map((event) => event.details.userId).filter(Boolean));
287
- if (userIds.size > 10) {
288
- return true;
289
- }
290
- return false;
291
- }
292
- /**
293
- * Get failed authentication attempts for user
294
- */
295
- async getFailedAuthAttempts(userId) {
296
- const recentEvents = this.events.filter((event) => event.type === "authentication" &&
297
- event.details.userId === userId &&
298
- event.severity === "high" &&
299
- event.timestamp.getTime() > Date.now() - 900000);
300
- return recentEvents.length;
301
- }
302
- /**
303
- * Check for anomalies
304
- */
305
- async checkForAnomalies(event) {
306
- for (const pattern of this.anomalyPatterns) {
307
- if (!pattern.enabled)
308
- continue;
309
- if (await this.matchesAnomalyPattern(event, pattern)) {
310
- await this.logSecurityEvent({
311
- type: "anomaly",
312
- severity: "medium",
313
- source: "anomaly-detection",
314
- description: `Anomaly detected: ${pattern.description}`,
315
- riskScore: 5,
316
- details: {
317
- metadata: { pattern: pattern.pattern, patternId: pattern.id, originalEvent: event.id },
318
- },
319
- });
320
- }
321
- }
322
- }
323
- /**
324
- * Check if event matches anomaly pattern
325
- */
326
- async matchesAnomalyPattern(event, pattern) {
327
- // Simplified pattern matching - in practice this would be more sophisticated
328
- const timeWindow = Date.now() - pattern.timeWindow;
329
- const relatedEvents = this.events.filter((e) => e.timestamp.getTime() > timeWindow && e.type === event.type);
330
- switch (pattern.type) {
331
- case "traffic":
332
- return relatedEvents.length > pattern.threshold;
333
- case "authentication":
334
- return event.type === "authentication" && relatedEvents.length > pattern.threshold;
335
- case "access":
336
- return event.type === "data-access" && relatedEvents.length > pattern.threshold;
337
- case "behavior":
338
- // Check for unusual user behavior patterns
339
- if (event.details.userId) {
340
- const userEvents = relatedEvents.filter((e) => e.details.userId === event.details.userId);
341
- return userEvents.length > pattern.threshold;
342
- }
343
- return false;
344
- default:
345
- return false;
346
- }
347
- }
348
- /**
349
- * Initialize default anomaly patterns
350
- */
351
- initializeAnomalyPatterns() {
352
- this.anomalyPatterns = [
353
- {
354
- id: "high-auth-failures",
355
- type: "authentication",
356
- pattern: "failed-auth-attempts",
357
- threshold: 10,
358
- timeWindow: 300000, // 5 minutes
359
- description: "High number of authentication failures",
360
- enabled: true,
361
- },
362
- {
363
- id: "unusual-access-pattern",
364
- type: "access",
365
- pattern: "data-access-spike",
366
- threshold: 50,
367
- timeWindow: 900000, // 15 minutes
368
- description: "Unusual data access pattern",
369
- enabled: true,
370
- },
371
- {
372
- id: "traffic-spike",
373
- type: "traffic",
374
- pattern: "request-volume",
375
- threshold: 100,
376
- timeWindow: 300000, // 5 minutes
377
- description: "Traffic volume spike",
378
- enabled: true,
379
- },
380
- {
381
- id: "user-behavior-anomaly",
382
- type: "behavior",
383
- pattern: "user-activity",
384
- threshold: 20,
385
- timeWindow: 3600000, // 1 hour
386
- description: "Unusual user behavior pattern",
387
- enabled: true,
388
- },
389
- ];
390
- }
391
- /**
392
- * Collect security metrics
393
- */
394
- collectMetrics() {
395
- const now = new Date();
396
- const hourAgo = new Date(now.getTime() - 3600000);
397
- const recentEvents = this.events.filter((event) => event.timestamp > hourAgo);
398
- const recentAlerts = this.alerts.filter((alert) => alert.timestamp > hourAgo);
399
- const metrics = {
400
- timestamp: now,
401
- events: {
402
- total: recentEvents.length,
403
- byType: this.groupBy(recentEvents, "type"),
404
- bySeverity: this.groupBy(recentEvents, "severity"),
405
- },
406
- threats: {
407
- blocked: recentEvents.filter((e) => e.actions.some((a) => a.type === "block")).length,
408
- detected: recentEvents.filter((e) => e.riskScore > 5).length,
409
- investigated: recentAlerts.filter((a) => a.status === "investigating").length,
410
- },
411
- alerts: {
412
- new: recentAlerts.filter((a) => a.status === "new").length,
413
- resolved: recentAlerts.filter((a) => a.status === "resolved").length,
414
- falsePositives: recentAlerts.filter((a) => a.status === "false-positive").length,
415
- },
416
- performance: {
417
- responseTime: this.calculateAverageResponseTime(recentEvents),
418
- detectionRate: this.calculateDetectionRate(recentEvents),
419
- falsePositiveRate: this.calculateFalsePositiveRate(recentAlerts),
420
- },
421
- };
422
- this.metrics.push(metrics);
423
- // Keep only last 24 hours of metrics
424
- const dayAgo = new Date(now.getTime() - 86400000);
425
- this.metrics = this.metrics.filter((m) => m.timestamp > dayAgo);
426
- this.emit("metrics-collected", metrics);
427
- }
428
- /**
429
- * Group array by property
430
- */
431
- groupBy(array, property) {
432
- return array.reduce((acc, item) => {
433
- const key = (item && item[property]) || "unknown";
434
- acc[key] = (acc[key] || 0) + 1;
435
- return acc;
436
- }, {});
437
- }
438
- /**
439
- * Calculate average response time for security events
440
- */
441
- calculateAverageResponseTime(events) {
442
- const handledEvents = events.filter((e) => e.handled && e.actions.length > 0);
443
- if (handledEvents.length === 0)
444
- return 0;
445
- const totalTime = handledEvents.reduce((sum, event) => {
446
- const firstAction = event.actions[0];
447
- if (firstAction) {
448
- return sum + (firstAction.timestamp.getTime() - event.timestamp.getTime());
449
- }
450
- return sum;
451
- }, 0);
452
- return totalTime / handledEvents.length;
453
- }
454
- /**
455
- * Calculate detection rate
456
- */
457
- calculateDetectionRate(events) {
458
- const totalEvents = events.length;
459
- if (totalEvents === 0)
460
- return 1;
461
- const detectedEvents = events.filter((e) => e.handled || e.riskScore > 3).length;
462
- return detectedEvents / totalEvents;
463
- }
464
- /**
465
- * Calculate false positive rate
466
- */
467
- calculateFalsePositiveRate(alerts) {
468
- const totalAlerts = alerts.length;
469
- if (totalAlerts === 0)
470
- return 0;
471
- const falsePositives = alerts.filter((a) => a.status === "false-positive").length;
472
- return falsePositives / totalAlerts;
473
- }
474
- /**
475
- * Add threat intelligence
476
- */
477
- addThreatIntelligence(threat) {
478
- this.threatIntel.set(threat.value, threat);
479
- logger.info(`Added threat intelligence: ${threat.type} - ${threat.value}`);
480
- }
481
- /**
482
- * Remove threat intelligence
483
- */
484
- removeThreatIntelligence(value) {
485
- const removed = this.threatIntel.delete(value);
486
- if (removed) {
487
- logger.info(`Removed threat intelligence: ${value}`);
488
- }
489
- return removed;
490
- }
491
- /**
492
- * Update alert status
493
- */
494
- updateAlertStatus(alertId, status, assignee) {
495
- const alert = this.alerts.find((a) => a.id === alertId);
496
- if (!alert) {
497
- return false;
498
- }
499
- alert.status = status;
500
- if (assignee) {
501
- alert.assignee = assignee;
502
- }
503
- if (status === "resolved") {
504
- alert.resolution = {
505
- timestamp: new Date(),
506
- action: "manual-resolution",
507
- details: "Alert marked as resolved",
508
- };
509
- }
510
- logger.info(`Updated alert ${alertId} status to ${status}`);
511
- this.emit("alert-updated", alert);
512
- return true;
513
- }
514
- /**
515
- * Get security events
516
- */
517
- getEvents(options = {}) {
518
- let events = [...this.events];
519
- if (options.since) {
520
- events = events.filter((e) => e.timestamp >= options.since);
521
- }
522
- if (options.severity) {
523
- events = events.filter((e) => e.severity === options.severity);
524
- }
525
- if (options.type) {
526
- events = events.filter((e) => e.type === options.type);
527
- }
528
- // Sort by timestamp (newest first)
529
- events.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
530
- if (options.offset) {
531
- events = events.slice(options.offset);
532
- }
533
- if (options.limit) {
534
- events = events.slice(0, options.limit);
535
- }
536
- return events;
537
- }
538
- /**
539
- * Get security alerts
540
- */
541
- getAlerts(options = {}) {
542
- let alerts = [...this.alerts];
543
- if (options.since) {
544
- alerts = alerts.filter((a) => a.timestamp >= options.since);
545
- }
546
- if (options.severity) {
547
- alerts = alerts.filter((a) => a.severity === options.severity);
548
- }
549
- if (options.status) {
550
- alerts = alerts.filter((a) => a.status === options.status);
551
- }
552
- // Sort by timestamp (newest first)
553
- alerts.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
554
- if (options.offset) {
555
- alerts = alerts.slice(options.offset);
556
- }
557
- if (options.limit) {
558
- alerts = alerts.slice(0, options.limit);
559
- }
560
- return alerts;
561
- }
562
- /**
563
- * Get security metrics
564
- */
565
- getMetrics(options = {}) {
566
- let metrics = [...this.metrics];
567
- if (options.since) {
568
- metrics = metrics.filter((m) => m.timestamp >= options.since);
569
- }
570
- if (options.until) {
571
- metrics = metrics.filter((m) => m.timestamp <= options.until);
572
- }
573
- return metrics.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
574
- }
575
- /**
576
- * Get system status
577
- */
578
- getStatus() {
579
- const today = new Date();
580
- today.setHours(0, 0, 0, 0);
581
- const eventsToday = this.events.filter((e) => e.timestamp >= today).length;
582
- const alertsOpen = this.alerts.filter((a) => a.status === "new" || a.status === "investigating").length;
583
- const threatsBlocked = this.events.filter((e) => e.timestamp >= today && e.actions.some((a) => a.type === "block")).length;
584
- let systemHealth = "healthy";
585
- if (alertsOpen > 10)
586
- systemHealth = "critical";
587
- else if (alertsOpen > 5 || eventsToday > 100)
588
- systemHealth = "degraded";
589
- return {
590
- monitoring: this.isMonitoring,
591
- eventsToday,
592
- alertsOpen,
593
- threatsBlocked,
594
- systemHealth,
595
- };
596
- }
597
- }
598
- //# sourceMappingURL=SecurityMonitoring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SecurityMonitoring.js","sourceRoot":"","sources":["../../../src/security/SecurityMonitoring.ts"],"names":[],"mappings":"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"}