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,558 +0,0 @@
1
- /**
2
- * Security Configuration Management System
3
- * Provides centralized security policy and configuration management
4
- */
5
- import * as fs from "fs/promises";
6
- import * as path from "path";
7
- import { z } from "zod";
8
- import { SecurityUtils } from "./SecurityConfig.js";
9
- import { SecurityValidationError } from "./InputValidator.js";
10
- import { LoggerFactory } from "../utils/logger.js";
11
- const logger = LoggerFactory.security();
12
- /**
13
- * Security Configuration Schema Validation
14
- */
15
- const SecurityPolicySchema = z.object({
16
- id: z.string().min(1),
17
- name: z.string().min(1),
18
- version: z.string().regex(/^\d+\.\d+\.\d+$/),
19
- description: z.string().min(1),
20
- enabled: z.boolean(),
21
- scope: z.enum(["global", "environment", "application", "endpoint"]),
22
- rules: z.array(z.object({
23
- id: z.string().min(1),
24
- name: z.string().min(1),
25
- type: z.enum([
26
- "authentication",
27
- "authorization",
28
- "input-validation",
29
- "crypto",
30
- "session",
31
- "logging",
32
- "monitoring",
33
- ]),
34
- action: z.enum(["enforce", "warn", "log", "block"]),
35
- conditions: z.object({
36
- environments: z.array(z.string()).optional(),
37
- methods: z.array(z.string()).optional(),
38
- paths: z.array(z.string()).optional(),
39
- userRoles: z.array(z.string()).optional(),
40
- }),
41
- parameters: z.record(z.unknown()),
42
- exceptions: z.array(z.string()),
43
- })),
44
- compliance: z.object({
45
- frameworks: z.array(z.string()),
46
- requirements: z.array(z.string()),
47
- }),
48
- metadata: z.object({
49
- created: z.date(),
50
- updated: z.date(),
51
- author: z.string(),
52
- approved: z.boolean(),
53
- }),
54
- });
55
- /**
56
- * Security Configuration Manager
57
- */
58
- export class SecurityConfigManager {
59
- configurations = new Map();
60
- policies = new Map();
61
- configPath;
62
- constructor(configPath = "security-config") {
63
- this.configPath = configPath;
64
- }
65
- /**
66
- * Initialize security configuration manager
67
- */
68
- async initialize() {
69
- logger.info("Initializing security configuration manager");
70
- await this.ensureConfigDirectory();
71
- await this.loadConfigurations();
72
- await this.loadPolicies();
73
- logger.info("Loaded configurations and policies", {
74
- configurationCount: this.configurations.size,
75
- policyCount: this.policies.size
76
- });
77
- }
78
- /**
79
- * Create a new security policy
80
- */
81
- async createPolicy(policyData) {
82
- const policy = {
83
- ...policyData,
84
- id: SecurityUtils.generateSecureToken(16),
85
- metadata: {
86
- created: new Date(),
87
- updated: new Date(),
88
- author: "system",
89
- approved: false,
90
- },
91
- };
92
- // Validate policy
93
- try {
94
- SecurityPolicySchema.parse(policy);
95
- }
96
- catch (error) {
97
- throw new SecurityValidationError("Invalid security policy", [{ message: String(error) }]);
98
- }
99
- this.policies.set(policy.id, policy);
100
- await this.savePolicyToFile(policy);
101
- logger.info(`Created policy: ${policy.name}`, { policyId: policy.id });
102
- return policy;
103
- }
104
- /**
105
- * Update an existing security policy
106
- */
107
- async updatePolicy(policyId, updates) {
108
- const existingPolicy = this.policies.get(policyId);
109
- if (!existingPolicy) {
110
- throw new SecurityValidationError("Policy not found", [{ message: `Policy ${policyId} not found` }]);
111
- }
112
- const updatedPolicy = {
113
- ...existingPolicy,
114
- ...updates,
115
- id: policyId, // Ensure ID doesn't change
116
- metadata: {
117
- ...existingPolicy.metadata,
118
- updated: new Date(),
119
- },
120
- };
121
- // Validate updated policy
122
- try {
123
- SecurityPolicySchema.parse(updatedPolicy);
124
- }
125
- catch (error) {
126
- throw new SecurityValidationError("Invalid policy update", [{ message: String(error) }]);
127
- }
128
- this.policies.set(policyId, updatedPolicy);
129
- await this.savePolicyToFile(updatedPolicy);
130
- logger.info(`Updated policy: ${updatedPolicy.name}`, { policyId });
131
- return updatedPolicy;
132
- }
133
- /**
134
- * Create a new security configuration
135
- */
136
- async createConfiguration(environment, configData) {
137
- const config = {
138
- configId: SecurityUtils.generateSecureToken(16),
139
- version: "1.0.0",
140
- environment,
141
- policies: [],
142
- settings: configData.settings || this.getDefaultSettings(),
143
- overrides: configData.overrides || {},
144
- metadata: {
145
- lastUpdated: new Date(),
146
- checksum: "",
147
- },
148
- };
149
- // Calculate checksum
150
- config.metadata.checksum = await this.calculateChecksum(config);
151
- this.configurations.set(environment, config);
152
- await this.saveConfigurationToFile(config);
153
- logger.info(`Created configuration for environment: ${environment}`, { environment });
154
- return config;
155
- }
156
- /**
157
- * Get configuration for environment
158
- */
159
- getConfiguration(environment) {
160
- return this.configurations.get(environment) || null;
161
- }
162
- /**
163
- * Get all configurations
164
- */
165
- getAllConfigurations() {
166
- return Array.from(this.configurations.values());
167
- }
168
- /**
169
- * Apply policies to configuration
170
- */
171
- async applyPoliciesToConfiguration(environment, policyIds) {
172
- const config = this.configurations.get(environment);
173
- if (!config) {
174
- throw new SecurityValidationError("Configuration not found", [
175
- { message: `Environment ${environment} not found` },
176
- ]);
177
- }
178
- const policies = [];
179
- for (const policyId of policyIds) {
180
- const policy = this.policies.get(policyId);
181
- if (!policy) {
182
- throw new SecurityValidationError("Policy not found", [{ message: `Policy ${policyId} not found` }]);
183
- }
184
- if (!policy.enabled) {
185
- logger.warn(`Skipping disabled policy: ${policy.name}`, { policyName: policy.name });
186
- continue;
187
- }
188
- policies.push(policy);
189
- }
190
- config.policies = policies;
191
- config.metadata.lastUpdated = new Date();
192
- config.metadata.checksum = await this.calculateChecksum(config);
193
- this.configurations.set(environment, config);
194
- await this.saveConfigurationToFile(config);
195
- logger.info(`Applied policies to ${environment}`, { policyCount: policies.length, environment });
196
- return config;
197
- }
198
- /**
199
- * Validate configuration compliance
200
- */
201
- async validateCompliance(environment) {
202
- const config = this.configurations.get(environment);
203
- if (!config) {
204
- throw new SecurityValidationError("Configuration not found", [
205
- { message: `Environment ${environment} not found` },
206
- ]);
207
- }
208
- const violations = [];
209
- const recommendations = [];
210
- // Check password policy compliance
211
- if (config.settings.authentication.passwordPolicy.minLength < 8) {
212
- violations.push("Password minimum length below recommended 8 characters");
213
- }
214
- // Check encryption compliance
215
- if (!["AES-256-GCM", "ChaCha20-Poly1305"].includes(config.settings.cryptography.encryption.algorithm)) {
216
- violations.push("Weak encryption algorithm detected");
217
- }
218
- // Check session security
219
- if (!config.settings.session.security.httpOnly || !config.settings.session.security.secure) {
220
- violations.push("Insecure session configuration");
221
- }
222
- // Check HTTPS enforcement
223
- if (!config.settings.cryptography.tls.hsts.enabled) {
224
- recommendations.push("Enable HSTS for enhanced security");
225
- }
226
- // Check MFA configuration
227
- if (!config.settings.authentication.mfa.enabled) {
228
- recommendations.push("Consider enabling multi-factor authentication");
229
- }
230
- // Check compliance frameworks
231
- const requiredFrameworks = ["OWASP", "CWE"];
232
- const configuredFrameworks = config.policies.flatMap((p) => p.compliance.frameworks);
233
- for (const framework of requiredFrameworks) {
234
- if (!configuredFrameworks.includes(framework)) {
235
- recommendations.push(`Add ${framework} compliance policies`);
236
- }
237
- }
238
- return {
239
- compliant: violations.length === 0,
240
- violations,
241
- recommendations,
242
- };
243
- }
244
- /**
245
- * Generate default security settings
246
- */
247
- getDefaultSettings() {
248
- return {
249
- authentication: {
250
- methods: ["password", "jwt"],
251
- passwordPolicy: {
252
- minLength: 8,
253
- requireUppercase: true,
254
- requireLowercase: true,
255
- requireNumbers: true,
256
- requireSpecialChars: true,
257
- maxAge: 90,
258
- preventReuse: 5,
259
- },
260
- jwtSettings: {
261
- algorithm: "HS256",
262
- expiresIn: "1h",
263
- issuer: "mcp-wordpress",
264
- audience: "mcp-wordpress-users",
265
- },
266
- rateLimiting: {
267
- maxAttempts: 5,
268
- windowMs: 900000, // 15 minutes
269
- blockDuration: 3600000, // 1 hour
270
- },
271
- mfa: {
272
- enabled: false,
273
- methods: ["totp", "sms"],
274
- required: false,
275
- },
276
- },
277
- authorization: {
278
- rbac: {
279
- enabled: true,
280
- defaultRole: "user",
281
- roleHierarchy: {
282
- admin: ["editor", "user"],
283
- editor: ["user"],
284
- user: [],
285
- },
286
- },
287
- permissions: {
288
- strict: true,
289
- defaultDeny: true,
290
- inheritance: true,
291
- },
292
- sessionTimeout: 3600, // 1 hour
293
- resourceAccess: {
294
- checkOrigin: true,
295
- allowedOrigins: [],
296
- csrfProtection: true,
297
- },
298
- },
299
- inputValidation: {
300
- sanitization: {
301
- enabled: true,
302
- htmlStripping: true,
303
- sqlEscaping: true,
304
- jsEscaping: true,
305
- },
306
- validation: {
307
- strict: true,
308
- maxStringLength: 10000,
309
- maxFileSize: 10485760, // 10MB
310
- allowedFileTypes: ["image/jpeg", "image/png", "application/pdf"],
311
- blockedPatterns: ["<script>", "javascript:", "vbscript:"],
312
- },
313
- xssProtection: {
314
- enabled: true,
315
- mode: "block",
316
- reportUri: "/security/xss-report",
317
- },
318
- },
319
- cryptography: {
320
- encryption: {
321
- algorithm: "AES-256-GCM",
322
- keyDerivation: "PBKDF2",
323
- keyRotation: {
324
- enabled: true,
325
- intervalDays: 90,
326
- },
327
- },
328
- hashing: {
329
- algorithm: "bcrypt",
330
- saltRounds: 12,
331
- },
332
- tls: {
333
- minVersion: "1.2",
334
- cipherSuites: ["ECDHE-RSA-AES256-GCM-SHA384", "ECDHE-RSA-AES128-GCM-SHA256", "ECDHE-RSA-AES256-SHA384"],
335
- hsts: {
336
- enabled: true,
337
- maxAge: 31536000, // 1 year
338
- includeSubDomains: true,
339
- },
340
- },
341
- },
342
- session: {
343
- storage: "memory",
344
- security: {
345
- httpOnly: true,
346
- secure: true,
347
- sameSite: "strict",
348
- },
349
- timeout: {
350
- idle: 1800, // 30 minutes
351
- absolute: 28800, // 8 hours
352
- },
353
- regeneration: {
354
- onLogin: true,
355
- onPrivilegeChange: true,
356
- interval: 3600, // 1 hour
357
- },
358
- },
359
- logging: {
360
- level: "info",
361
- security: {
362
- logFailedAuth: true,
363
- logPrivilegeEscalation: true,
364
- logDataAccess: true,
365
- logConfigChanges: true,
366
- },
367
- retention: {
368
- days: 90,
369
- compression: true,
370
- encryption: true,
371
- },
372
- alerting: {
373
- enabled: true,
374
- thresholds: {
375
- failedLogins: 10,
376
- privilegeEscalation: 1,
377
- dataAccess: 100,
378
- },
379
- channels: ["email", "webhook"],
380
- },
381
- },
382
- monitoring: {
383
- realTime: {
384
- enabled: true,
385
- metrics: ["requests", "errors", "latency", "security_events"],
386
- alertThresholds: {
387
- errorRate: 0.05,
388
- latencyP99: 1000,
389
- securityEvents: 10,
390
- },
391
- },
392
- anomalyDetection: {
393
- enabled: true,
394
- sensitivity: "medium",
395
- models: ["statistical", "ml"],
396
- },
397
- compliance: {
398
- enabled: true,
399
- frameworks: ["OWASP", "CWE"],
400
- reportingSchedule: "daily",
401
- },
402
- },
403
- };
404
- }
405
- /**
406
- * Load configurations from files
407
- */
408
- async loadConfigurations() {
409
- try {
410
- const configDir = path.join(this.configPath, "configurations");
411
- await fs.access(configDir);
412
- const files = await fs.readdir(configDir);
413
- for (const file of files) {
414
- if (file.endsWith(".json")) {
415
- const filePath = path.join(configDir, file);
416
- const content = await fs.readFile(filePath, "utf-8");
417
- const config = JSON.parse(content);
418
- // Convert date strings back to Date objects
419
- config.metadata.lastUpdated = new Date(config.metadata.lastUpdated);
420
- this.configurations.set(config.environment, config);
421
- }
422
- }
423
- }
424
- catch (_error) {
425
- logger.info("No existing configurations found, will create new ones");
426
- }
427
- }
428
- /**
429
- * Load policies from files
430
- */
431
- async loadPolicies() {
432
- try {
433
- const policiesDir = path.join(this.configPath, "policies");
434
- await fs.access(policiesDir);
435
- const files = await fs.readdir(policiesDir);
436
- for (const file of files) {
437
- if (file.endsWith(".json")) {
438
- const filePath = path.join(policiesDir, file);
439
- const content = await fs.readFile(filePath, "utf-8");
440
- const policy = JSON.parse(content);
441
- // Convert date strings back to Date objects
442
- policy.metadata.created = new Date(policy.metadata.created);
443
- policy.metadata.updated = new Date(policy.metadata.updated);
444
- this.policies.set(policy.id, policy);
445
- }
446
- }
447
- }
448
- catch (_error) {
449
- logger.info("No existing policies found");
450
- }
451
- }
452
- /**
453
- * Save configuration to file
454
- */
455
- async saveConfigurationToFile(config) {
456
- const configDir = path.join(this.configPath, "configurations");
457
- await fs.mkdir(configDir, { recursive: true });
458
- const filePath = path.join(configDir, `${config.environment}.json`);
459
- await fs.writeFile(filePath, JSON.stringify(config, null, 2), "utf-8");
460
- }
461
- /**
462
- * Save policy to file
463
- */
464
- async savePolicyToFile(policy) {
465
- const policiesDir = path.join(this.configPath, "policies");
466
- await fs.mkdir(policiesDir, { recursive: true });
467
- const filePath = path.join(policiesDir, `${policy.id}.json`);
468
- await fs.writeFile(filePath, JSON.stringify(policy, null, 2), "utf-8");
469
- }
470
- /**
471
- * Ensure config directory exists
472
- */
473
- async ensureConfigDirectory() {
474
- await fs.mkdir(this.configPath, { recursive: true });
475
- await fs.mkdir(path.join(this.configPath, "configurations"), { recursive: true });
476
- await fs.mkdir(path.join(this.configPath, "policies"), { recursive: true });
477
- }
478
- /**
479
- * Calculate configuration checksum
480
- */
481
- async calculateChecksum(config) {
482
- const configForHash = {
483
- ...config,
484
- metadata: {
485
- ...config.metadata,
486
- checksum: "", // Exclude checksum from hash calculation
487
- },
488
- };
489
- const _configString = JSON.stringify(configForHash, Object.keys(configForHash).sort());
490
- return SecurityUtils.generateSecureToken(32);
491
- }
492
- /**
493
- * Get all policies
494
- */
495
- getAllPolicies() {
496
- return Array.from(this.policies.values());
497
- }
498
- /**
499
- * Get policy by ID
500
- */
501
- getPolicy(policyId) {
502
- return this.policies.get(policyId) || null;
503
- }
504
- /**
505
- * Delete policy
506
- */
507
- async deletePolicy(policyId) {
508
- const policy = this.policies.get(policyId);
509
- if (!policy) {
510
- return false;
511
- }
512
- this.policies.delete(policyId);
513
- try {
514
- const filePath = path.join(this.configPath, "policies", `${policyId}.json`);
515
- await fs.unlink(filePath);
516
- logger.info(`Deleted policy: ${policy.name}`, { policyId });
517
- return true;
518
- }
519
- catch (error) {
520
- logger.warn("Failed to delete policy file", { error });
521
- return false;
522
- }
523
- }
524
- /**
525
- * Export configuration
526
- */
527
- async exportConfiguration(environment) {
528
- const config = this.configurations.get(environment);
529
- if (!config) {
530
- throw new SecurityValidationError("Configuration not found", [
531
- { message: `Environment ${environment} not found` },
532
- ]);
533
- }
534
- return JSON.stringify(config, null, 2);
535
- }
536
- /**
537
- * Import configuration
538
- */
539
- async importConfiguration(configData) {
540
- try {
541
- const config = JSON.parse(configData);
542
- // Validate configuration structure
543
- if (!config.configId || !config.environment) {
544
- throw new Error("Invalid configuration format");
545
- }
546
- // Convert date strings to Date objects
547
- config.metadata.lastUpdated = new Date(config.metadata.lastUpdated);
548
- this.configurations.set(config.environment, config);
549
- await this.saveConfigurationToFile(config);
550
- logger.info(`Imported configuration for environment: ${config.environment}`, { environment: config.environment });
551
- return config;
552
- }
553
- catch (error) {
554
- throw new SecurityValidationError("Failed to import configuration", [{ message: String(error) }]);
555
- }
556
- }
557
- }
558
- //# sourceMappingURL=SecurityConfigManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SecurityConfigManager.js","sourceRoot":"","sources":["../../../src/security/SecurityConfigManager.ts"],"names":[],"mappings":"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"}