@nest-omni/core 4.1.3-10 → 4.1.3-12

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 (183) hide show
  1. package/audit/audit.module.js +42 -2
  2. package/audit/controllers/audit.controller.d.ts +64 -0
  3. package/audit/controllers/audit.controller.js +50 -0
  4. package/audit/decorators/audit-action.decorator.d.ts +74 -0
  5. package/audit/decorators/audit-action.decorator.js +42 -0
  6. package/audit/decorators/audit-controller.decorator.d.ts +1 -1
  7. package/audit/decorators/audit-controller.decorator.js +2 -2
  8. package/audit/decorators/entity-audit.decorator.d.ts +78 -2
  9. package/audit/decorators/entity-audit.decorator.js +145 -4
  10. package/audit/decorators/index.d.ts +2 -0
  11. package/audit/decorators/index.js +2 -0
  12. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  13. package/audit/entities/audit-action-summary.entity.js +101 -0
  14. package/audit/entities/entity-audit-log.entity.d.ts +8 -0
  15. package/audit/entities/entity-audit-log.entity.js +54 -2
  16. package/audit/entities/entity-transaction.entity.d.ts +8 -2
  17. package/audit/entities/entity-transaction.entity.js +39 -3
  18. package/audit/entities/index.d.ts +3 -0
  19. package/audit/entities/index.js +3 -0
  20. package/audit/entities/manual-operation-log.entity.js +8 -1
  21. package/audit/enums/audit.enums.d.ts +22 -6
  22. package/audit/enums/audit.enums.js +27 -9
  23. package/audit/index.d.ts +4 -1
  24. package/audit/index.js +25 -2
  25. package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
  26. package/audit/interceptors/audit-action.interceptor.js +215 -0
  27. package/audit/interceptors/index.d.ts +1 -0
  28. package/audit/interceptors/index.js +1 -0
  29. package/audit/interfaces/audit.interfaces.d.ts +145 -2
  30. package/audit/services/audit-action.service.d.ts +141 -0
  31. package/audit/services/audit-action.service.js +244 -0
  32. package/audit/services/audit-context.service.d.ts +82 -0
  33. package/audit/services/audit-context.service.js +170 -0
  34. package/audit/services/entity-audit.service.d.ts +174 -4
  35. package/audit/services/entity-audit.service.js +515 -14
  36. package/audit/services/index.d.ts +3 -0
  37. package/audit/services/index.js +3 -0
  38. package/audit/services/manual-audit-log.service.d.ts +24 -23
  39. package/audit/services/manual-audit-log.service.js +32 -53
  40. package/audit/services/operation-description.service.d.ts +13 -3
  41. package/audit/services/operation-description.service.js +161 -24
  42. package/audit/services/transaction-audit.service.js +3 -3
  43. package/audit/subscribers/entity-audit.subscriber.d.ts +4 -0
  44. package/audit/subscribers/entity-audit.subscriber.js +47 -0
  45. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  46. package/file-upload/controllers/file-access.controller.js +128 -0
  47. package/file-upload/decorators/csv-data.decorator.d.ts +44 -0
  48. package/file-upload/decorators/csv-data.decorator.js +131 -0
  49. package/file-upload/decorators/excel-data.decorator.d.ts +44 -0
  50. package/file-upload/decorators/excel-data.decorator.js +125 -0
  51. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  52. package/file-upload/decorators/file-upload.decorator.js +172 -0
  53. package/file-upload/decorators/index.d.ts +4 -0
  54. package/file-upload/decorators/index.js +20 -0
  55. package/file-upload/decorators/process.decorator.d.ts +40 -0
  56. package/file-upload/decorators/process.decorator.js +52 -0
  57. package/file-upload/dto/create-file.dto.d.ts +24 -0
  58. package/file-upload/dto/create-file.dto.js +112 -0
  59. package/file-upload/dto/find-files.dto.d.ts +15 -0
  60. package/file-upload/dto/find-files.dto.js +76 -0
  61. package/file-upload/dto/index.d.ts +4 -0
  62. package/file-upload/dto/index.js +20 -0
  63. package/file-upload/dto/pagination.dto.d.ts +7 -0
  64. package/file-upload/dto/pagination.dto.js +39 -0
  65. package/file-upload/dto/update-file.dto.d.ts +16 -0
  66. package/file-upload/dto/update-file.dto.js +71 -0
  67. package/file-upload/entities/file-metadata.entity.d.ts +22 -0
  68. package/file-upload/entities/file-metadata.entity.js +84 -0
  69. package/file-upload/entities/file.entity.d.ts +129 -0
  70. package/file-upload/entities/file.entity.js +384 -0
  71. package/file-upload/entities/index.d.ts +2 -0
  72. package/file-upload/entities/index.js +18 -0
  73. package/file-upload/enums/file-type.enum.d.ts +72 -0
  74. package/file-upload/enums/file-type.enum.js +212 -0
  75. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  76. package/file-upload/exceptions/file-upload.exception.js +120 -0
  77. package/file-upload/exceptions/index.d.ts +1 -0
  78. package/file-upload/exceptions/index.js +17 -0
  79. package/file-upload/file-upload.module.d.ts +89 -0
  80. package/file-upload/file-upload.module.js +264 -0
  81. package/file-upload/index.d.ts +26 -0
  82. package/file-upload/index.js +59 -0
  83. package/file-upload/interceptors/file-upload.interceptor.d.ts +48 -0
  84. package/file-upload/interceptors/file-upload.interceptor.js +434 -0
  85. package/file-upload/interceptors/index.d.ts +1 -0
  86. package/file-upload/interceptors/index.js +17 -0
  87. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  88. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  89. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  90. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  91. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  92. package/file-upload/interfaces/file-entity.interface.js +28 -0
  93. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  94. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  95. package/file-upload/interfaces/file-upload-options.interface.d.ts +117 -0
  96. package/file-upload/interfaces/file-upload-options.interface.js +2 -0
  97. package/file-upload/interfaces/index.d.ts +7 -0
  98. package/file-upload/interfaces/index.js +24 -0
  99. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  100. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  101. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  102. package/file-upload/interfaces/upload-options.interface.js +2 -0
  103. package/file-upload/providers/index.d.ts +2 -0
  104. package/file-upload/providers/index.js +18 -0
  105. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  106. package/file-upload/providers/local-storage.provider.js +484 -0
  107. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  108. package/file-upload/providers/s3-storage.provider.js +455 -0
  109. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  110. package/file-upload/services/file-signature-validator.service.js +376 -0
  111. package/file-upload/services/file.service.d.ts +190 -0
  112. package/file-upload/services/file.service.js +609 -0
  113. package/file-upload/services/index.d.ts +4 -0
  114. package/file-upload/services/index.js +20 -0
  115. package/file-upload/services/malicious-file-detector.service.d.ts +274 -0
  116. package/file-upload/services/malicious-file-detector.service.js +1035 -0
  117. package/file-upload/services/mime-registry.service.d.ts +47 -0
  118. package/file-upload/services/mime-registry.service.js +167 -0
  119. package/file-upload/utils/checksum.util.d.ts +28 -0
  120. package/file-upload/utils/checksum.util.js +65 -0
  121. package/file-upload/utils/dynamic-import.util.d.ts +50 -0
  122. package/file-upload/utils/dynamic-import.util.js +144 -0
  123. package/file-upload/utils/filename.util.d.ts +59 -0
  124. package/file-upload/utils/filename.util.js +184 -0
  125. package/file-upload/utils/filepath.util.d.ts +70 -0
  126. package/file-upload/utils/filepath.util.js +152 -0
  127. package/file-upload/utils/index.d.ts +4 -0
  128. package/file-upload/utils/index.js +20 -0
  129. package/http-client/http-client.module.js +1 -5
  130. package/index.d.ts +3 -1
  131. package/index.js +4 -1
  132. package/package.json +4 -5
  133. package/redis-lock/lock-heartbeat.service.d.ts +2 -2
  134. package/redis-lock/lock-heartbeat.service.js +4 -4
  135. package/redis-lock/redis-lock.service.d.ts +18 -0
  136. package/redis-lock/redis-lock.service.js +38 -8
  137. package/setup/bootstrap.setup.d.ts +1 -0
  138. package/setup/bootstrap.setup.js +1 -0
  139. package/setup/schedule.decorator.js +18 -8
  140. package/shared/index.d.ts +1 -1
  141. package/shared/index.js +1 -1
  142. package/shared/{serviceRegistryModule.js → service-registry.module.js} +9 -16
  143. package/shared/services/index.d.ts +0 -1
  144. package/shared/services/index.js +0 -1
  145. package/transaction/__tests__/mocks.d.ts +9 -0
  146. package/transaction/__tests__/mocks.js +33 -0
  147. package/transaction/base-service-transaction.d.ts +99 -0
  148. package/transaction/base-service-transaction.js +286 -0
  149. package/transaction/cls-compatibility.service.d.ts +55 -0
  150. package/transaction/cls-compatibility.service.js +127 -0
  151. package/transaction/data-source-registry.d.ts +91 -0
  152. package/transaction/data-source-registry.js +349 -0
  153. package/transaction/database-adapter.d.ts +44 -0
  154. package/transaction/database-adapter.js +240 -0
  155. package/transaction/decorators/entity-datasource.decorator.d.ts +62 -0
  156. package/transaction/decorators/entity-datasource.decorator.js +105 -0
  157. package/transaction/index.d.ts +14 -0
  158. package/transaction/index.js +57 -0
  159. package/transaction/logging-transactional.interceptor.d.ts +18 -0
  160. package/transaction/logging-transactional.interceptor.js +163 -0
  161. package/transaction/transaction-context.service.d.ts +137 -0
  162. package/transaction/transaction-context.service.js +411 -0
  163. package/transaction/transaction-manager.d.ts +230 -0
  164. package/transaction/transaction-manager.js +1001 -0
  165. package/transaction/transaction-synchronization.d.ts +171 -0
  166. package/transaction/transaction-synchronization.js +380 -0
  167. package/transaction/transaction.errors.d.ts +91 -0
  168. package/transaction/transaction.errors.js +206 -0
  169. package/transaction/transaction.module.d.ts +30 -0
  170. package/transaction/transaction.module.js +98 -0
  171. package/transaction/transactional.decorator.d.ts +82 -0
  172. package/transaction/transactional.decorator.js +319 -0
  173. package/transaction/typeorm-module-wrapper.d.ts +96 -0
  174. package/transaction/typeorm-module-wrapper.js +197 -0
  175. package/validators/file-mimetype.validator.d.ts +0 -2
  176. package/validators/file-mimetype.validator.js +4 -6
  177. package/validators/is-exists.validator.d.ts +2 -5
  178. package/validators/is-exists.validator.js +4 -6
  179. package/validators/is-unique.validator.d.ts +2 -5
  180. package/validators/is-unique.validator.js +6 -11
  181. package/shared/services/validator.service.d.ts +0 -3
  182. package/shared/services/validator.service.js +0 -20
  183. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -0,0 +1,274 @@
1
+ /**
2
+ * 检测结果
3
+ */
4
+ export interface DetectionResult {
5
+ /** 是否安全 */
6
+ safe: boolean;
7
+ /** 威胁列表 */
8
+ threats: string[];
9
+ /** 风险评分 0-100 */
10
+ riskScore: number;
11
+ /** 是否为恶意软件 */
12
+ isMalware: boolean;
13
+ /** 检测详情 */
14
+ details?: {
15
+ /** 多编码检测结果 */
16
+ encodingThreats?: string[];
17
+ /** 文件结构分析结果 */
18
+ structureAnalysis?: StructureAnalysisResult;
19
+ /** ClamAV扫描结果 */
20
+ clamavResult?: ClamAVResult;
21
+ };
22
+ }
23
+ /**
24
+ * 文件结构分析结果
25
+ */
26
+ export interface StructureAnalysisResult {
27
+ /** 检测到的异常 */
28
+ anomalies: string[];
29
+ /** 风险评分 */
30
+ riskScore: number;
31
+ /** 文件类型特征 */
32
+ characteristics: {
33
+ /** 是否包含嵌套压缩 */
34
+ hasNestedArchive?: boolean;
35
+ /** 是否包含可执行内容 */
36
+ hasExecutableContent?: boolean;
37
+ /** 是否包含宏 */
38
+ hasMacros?: boolean;
39
+ /** 熵值(用于检测加密/混淆) */
40
+ entropy?: number;
41
+ };
42
+ }
43
+ /**
44
+ * ClamAV扫描结果
45
+ */
46
+ export interface ClamAVResult {
47
+ /** 是否已扫描 */
48
+ scanned: boolean;
49
+ /** 是否发现病毒 */
50
+ infected: boolean;
51
+ /** 病毒签名 */
52
+ virusName?: string;
53
+ /** 错误信息 */
54
+ error?: string;
55
+ }
56
+ /**
57
+ * 恶意文件检测配置
58
+ */
59
+ export interface MaliciousDetectorOptions {
60
+ /** 是否启用恶意文件检测(总开关) */
61
+ enabled?: boolean;
62
+ /** 是否启用ClamAV */
63
+ enableClamAV?: boolean;
64
+ /** ClamAV模式:'local' | 'remote' */
65
+ clamavMode?: 'local' | 'remote';
66
+ /** 本地ClamAV扫描命令(当mode='local'时使用) */
67
+ clamavCommand?: string;
68
+ /** 远程ClamAV服务配置(当mode='remote'时使用) */
69
+ clamavRemote?: {
70
+ /** 远程服务地址 */
71
+ host: string;
72
+ /** 端口号 */
73
+ port: number;
74
+ /** 超时时间(毫秒) */
75
+ timeout?: number;
76
+ };
77
+ /** 是否启用多编码检测 */
78
+ enableMultiEncoding?: boolean;
79
+ /** 是否启用文件结构分析 */
80
+ enableStructureAnalysis?: boolean;
81
+ /** 风险阈值 */
82
+ riskThreshold?: number;
83
+ }
84
+ /**
85
+ * 恶意文件检测服务
86
+ */
87
+ /**
88
+ * 恶意文件检测服务(增强版)
89
+ *
90
+ * 功能:
91
+ * 1. 多编码检测 - 支持 UTF-8, UTF-16LE, Latin1, ASCII, Base64
92
+ * 2. 文件结构分析 - 检测嵌套压缩、可执行内容、Office宏、高熵值、多态性
93
+ * 3. ClamAV集成 - 支持本地命令行和远程服务两种模式
94
+ *
95
+ * 使用示例:
96
+ * ```typescript
97
+ * // 方式1: 本地ClamAV(需要在当前机器安装)
98
+ * FileUploadModule.forRoot({
99
+ * maliciousDetection: {
100
+ * enableClamAV: true,
101
+ * clamavMode: 'local', // 本地模式
102
+ * clamavCommand: 'clamdscan', // 或 'clamscan'
103
+ * },
104
+ * });
105
+ *
106
+ * // 方式2: 远程ClamAV服务(推荐用于生产环境)
107
+ * FileUploadModule.forRoot({
108
+ * maliciousDetection: {
109
+ * enableClamAV: true,
110
+ * clamavMode: 'remote', // 远程模式
111
+ * clamavRemote: {
112
+ * host: 'clamav-server.com', // ClamAV服务器地址
113
+ * port: 3310, // ClamAV守护进程端口
114
+ * timeout: 30000, // 超时时间(ms)
115
+ * },
116
+ * },
117
+ * });
118
+ *
119
+ * // 方式3: 仅使用多编码检测和结构分析(无需安装ClamAV)
120
+ * FileUploadModule.forRoot({
121
+ * maliciousDetection: {
122
+ * enableClamAV: false, // 禁用ClamAV
123
+ * enableMultiEncoding: true, // 启用多编码检测
124
+ * enableStructureAnalysis: true, // 启用结构分析
125
+ * riskThreshold: 50, // 风险阈值
126
+ * },
127
+ * });
128
+ *
129
+ * // 直接使用服务
130
+ * const result = await maliciousDetector.scanFile('/path/to/file');
131
+ * console.log('Is Safe:', result.safe);
132
+ * console.log('Risk Score:', result.riskScore);
133
+ * console.log('Threats:', result.threats);
134
+ * console.log('Details:', result.details);
135
+ * ```
136
+ *
137
+ * 远程ClamAV服务部署示例:
138
+ * ```bash
139
+ * # Docker部署ClamAV服务
140
+ * docker run -d -p 3310:3310 \
141
+ * --name clamav \
142
+ * clamav/clamav:latest
143
+ *
144
+ * # 配置clamd.conf允许远程连接
145
+ * TCPSocket 3310
146
+ * TCPAddr 0.0.0.0
147
+ * StreamMaxLength 100M
148
+ * ```
149
+ *
150
+ * 检测结果示例:
151
+ * ```json
152
+ * {
153
+ * "safe": false,
154
+ * "isMalware": true,
155
+ * "riskScore": 85,
156
+ * "threats": [
157
+ * "PE executable header (Windows)",
158
+ * "Script tag injection (base64 encoded)",
159
+ * "Executable content detected"
160
+ * ],
161
+ * "details": {
162
+ * "encodingThreats": ["Script tag injection (base64 encoded)"],
163
+ * "structureAnalysis": {
164
+ * "anomalies": ["Executable content detected"],
165
+ * "riskScore": 60,
166
+ * "characteristics": {
167
+ * "hasExecutableContent": true,
168
+ * "entropy": 6.8
169
+ * }
170
+ * },
171
+ * "clamavResult": {
172
+ * "scanned": true,
173
+ * "infected": true,
174
+ * "virusName": "Win.Trojan.Agent"
175
+ * }
176
+ * }
177
+ * }
178
+ * ```
179
+ */
180
+ export declare class MaliciousFileDetector {
181
+ private readonly options?;
182
+ private readonly logger;
183
+ private readonly encodings;
184
+ private readonly maliciousPatterns;
185
+ private readonly suspiciousSignatures;
186
+ constructor(options?: MaliciousDetectorOptions);
187
+ /**
188
+ * 扫描文件(增强版)
189
+ */
190
+ scanFile(filePath: string): Promise<DetectionResult>;
191
+ /**
192
+ * 检查签名
193
+ */
194
+ private checkSignature;
195
+ /**
196
+ * 缓冲区包含检查
197
+ */
198
+ private bufferContains;
199
+ /**
200
+ * 检查压缩比(简单实现)
201
+ */
202
+ private checkCompressionRatio;
203
+ /**
204
+ * 检查可疑文件名
205
+ */
206
+ private hasSuspiciousName;
207
+ /**
208
+ * 检查双扩展名
209
+ */
210
+ private hasDoubleExtension;
211
+ /**
212
+ * 检查隐藏扩展名技巧
213
+ */
214
+ private hasHiddenExtension;
215
+ /**
216
+ * 多编码检测(新增)
217
+ * 通过多种编码方式解析文件内容,检测隐藏的恶意模式
218
+ */
219
+ private detectMultiEncodingThreats;
220
+ /**
221
+ * 文件结构分析(新增)
222
+ * 分析文件的深层结构,检测异常特征
223
+ */
224
+ private analyzeFileStructure;
225
+ /**
226
+ * ClamAV病毒扫描(增强版 - 支持本地/远程)
227
+ */
228
+ private scanWithClamAV;
229
+ /**
230
+ * 本地ClamAV扫描
231
+ */
232
+ private scanWithLocalClamAV;
233
+ /**
234
+ * 验证文件路径,防止命令注入
235
+ */
236
+ private validateFilePath;
237
+ /**
238
+ * 远程ClamAV扫描(通过ClamAV守护进程的网络接口)
239
+ */
240
+ private scanWithRemoteClamAV;
241
+ /**
242
+ * 验证 ClamAV 响应格式
243
+ */
244
+ private isValidClamAVResponse;
245
+ /**
246
+ * 验证病毒名称格式
247
+ */
248
+ private isValidVirusName;
249
+ /**
250
+ * 检测嵌套压缩文件
251
+ */
252
+ private detectNestedArchive;
253
+ /**
254
+ * 检测可执行内容
255
+ */
256
+ private detectExecutableContent;
257
+ /**
258
+ * 检测Office宏
259
+ */
260
+ private detectOfficeMacros;
261
+ /**
262
+ * 计算Shannon熵值
263
+ * 用于检测加密或高度压缩的内容
264
+ */
265
+ private calculateEntropy;
266
+ /**
267
+ * 检测多态性(文件类型伪装)
268
+ */
269
+ private detectPolymorphism;
270
+ /**
271
+ * 在buffer中查找pattern的位置
272
+ */
273
+ private bufferIndexOf;
274
+ }