midway-fatcms 0.0.3 → 0.0.4

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 (391) hide show
  1. package/.eslintrc.json +14 -14
  2. package/.prettierrc.js +4 -4
  3. package/README.md +406 -406
  4. package/dist/config/config.default.d.ts +3 -3
  5. package/dist/config/config.default.js +177 -177
  6. package/dist/config/utils.d.ts +1 -1
  7. package/dist/config/utils.js +23 -23
  8. package/dist/configuration.d.ts +7 -7
  9. package/dist/configuration.js +113 -113
  10. package/dist/controller/base/BaseApiController.d.ts +49 -49
  11. package/dist/controller/base/BaseApiController.js +198 -198
  12. package/dist/controller/gateway/AnyApiGatewayController.d.ts +13 -13
  13. package/dist/controller/gateway/AnyApiGatewayController.js +55 -55
  14. package/dist/controller/gateway/AsyncTaskController.d.ts +20 -20
  15. package/dist/controller/gateway/AsyncTaskController.js +181 -181
  16. package/dist/controller/gateway/CrudMtdGatewayController.d.ts +21 -21
  17. package/dist/controller/gateway/CrudMtdGatewayController.js +122 -122
  18. package/dist/controller/gateway/CrudStdGatewayController.d.ts +39 -39
  19. package/dist/controller/gateway/CrudStdGatewayController.js +149 -149
  20. package/dist/controller/gateway/DocGatewayController.d.ts +27 -27
  21. package/dist/controller/gateway/DocGatewayController.js +181 -181
  22. package/dist/controller/gateway/FileController.d.ts +32 -32
  23. package/dist/controller/gateway/FileController.js +160 -160
  24. package/dist/controller/gateway/FlowInstanceController.d.ts +16 -16
  25. package/dist/controller/gateway/FlowInstanceController.js +48 -48
  26. package/dist/controller/gateway/ProxyApiGatewayController.d.ts +18 -18
  27. package/dist/controller/gateway/ProxyApiGatewayController.js +78 -78
  28. package/dist/controller/gateway/PublicApiController.d.ts +33 -33
  29. package/dist/controller/gateway/PublicApiController.js +194 -194
  30. package/dist/controller/gateway/StaticController.d.ts +23 -23
  31. package/dist/controller/gateway/StaticController.js +280 -280
  32. package/dist/controller/helpers.controller.d.ts +36 -36
  33. package/dist/controller/helpers.controller.js +187 -187
  34. package/dist/controller/home.controller.d.ts +9 -9
  35. package/dist/controller/home.controller.js +78 -78
  36. package/dist/controller/manage/AnyApiMangeApi.d.ts +10 -10
  37. package/dist/controller/manage/AnyApiMangeApi.js +98 -98
  38. package/dist/controller/manage/AppLogMangeApi.d.ts +10 -10
  39. package/dist/controller/manage/AppLogMangeApi.js +88 -88
  40. package/dist/controller/manage/AppMangeApi.d.ts +12 -12
  41. package/dist/controller/manage/AppMangeApi.js +101 -101
  42. package/dist/controller/manage/AppPageMangeApi.d.ts +10 -10
  43. package/dist/controller/manage/AppPageMangeApi.js +87 -87
  44. package/dist/controller/manage/AppSchemaHistoryApi.d.ts +10 -10
  45. package/dist/controller/manage/AppSchemaHistoryApi.js +83 -83
  46. package/dist/controller/manage/CrudMethodsMangeApi.d.ts +10 -10
  47. package/dist/controller/manage/CrudMethodsMangeApi.js +84 -84
  48. package/dist/controller/manage/CrudStandardDesignApi.d.ts +46 -46
  49. package/dist/controller/manage/CrudStandardDesignApi.js +367 -367
  50. package/dist/controller/manage/DataDictManageApi.d.ts +17 -17
  51. package/dist/controller/manage/DataDictManageApi.js +165 -165
  52. package/dist/controller/manage/DeployManageApi.d.ts +21 -21
  53. package/dist/controller/manage/DeployManageApi.js +203 -203
  54. package/dist/controller/manage/DocLibManageApi.d.ts +10 -10
  55. package/dist/controller/manage/DocLibManageApi.js +104 -104
  56. package/dist/controller/manage/DocManageApi.d.ts +11 -11
  57. package/dist/controller/manage/DocManageApi.js +130 -130
  58. package/dist/controller/manage/FileManageApi.d.ts +13 -13
  59. package/dist/controller/manage/FileManageApi.js +77 -77
  60. package/dist/controller/manage/FlowConfigManageApi.d.ts +12 -12
  61. package/dist/controller/manage/FlowConfigManageApi.js +109 -109
  62. package/dist/controller/manage/LowCodeTplManageApi.d.ts +13 -13
  63. package/dist/controller/manage/LowCodeTplManageApi.js +86 -86
  64. package/dist/controller/manage/MenuManageApi.d.ts +11 -11
  65. package/dist/controller/manage/MenuManageApi.js +104 -104
  66. package/dist/controller/manage/ProxyApiMangeApi.d.ts +10 -10
  67. package/dist/controller/manage/ProxyApiMangeApi.js +87 -87
  68. package/dist/controller/manage/SuperAdminManageApi.d.ts +24 -24
  69. package/dist/controller/manage/SuperAdminManageApi.js +153 -153
  70. package/dist/controller/manage/SysConfigMangeApi.d.ts +12 -12
  71. package/dist/controller/manage/SysConfigMangeApi.js +133 -133
  72. package/dist/controller/manage/SystemInfoManageApi.d.ts +12 -12
  73. package/dist/controller/manage/SystemInfoManageApi.js +82 -82
  74. package/dist/controller/manage/UserAccountManageApi.d.ts +16 -16
  75. package/dist/controller/manage/UserAccountManageApi.js +153 -153
  76. package/dist/controller/manage/WorkbenchMangeApi.d.ts +11 -11
  77. package/dist/controller/manage/WorkbenchMangeApi.js +106 -106
  78. package/dist/controller/myinfo/AuthController.d.ts +37 -37
  79. package/dist/controller/myinfo/AuthController.js +157 -157
  80. package/dist/controller/myinfo/MyInfoController.d.ts +13 -13
  81. package/dist/controller/myinfo/MyInfoController.js +51 -51
  82. package/dist/controller/render/AppRenderController.d.ts +12 -12
  83. package/dist/controller/render/AppRenderController.js +93 -93
  84. package/dist/controller/test.controller.d.ts +8 -8
  85. package/dist/controller/test.controller.js +51 -51
  86. package/dist/filter/default.filter.d.ts +7 -7
  87. package/dist/filter/default.filter.js +23 -23
  88. package/dist/filter/notfound.filter.d.ts +5 -5
  89. package/dist/filter/notfound.filter.js +20 -20
  90. package/dist/index.d.ts +111 -111
  91. package/dist/index.js +129 -129
  92. package/dist/interface.d.ts +30 -30
  93. package/dist/interface.js +3 -3
  94. package/dist/libs/crud-pro/CrudPro.d.ts +51 -37
  95. package/dist/libs/crud-pro/CrudPro.js +207 -146
  96. package/dist/libs/crud-pro/defaultConfigs.d.ts +4 -4
  97. package/dist/libs/crud-pro/defaultConfigs.js +15 -15
  98. package/dist/libs/crud-pro/exceptions.d.ts +106 -106
  99. package/dist/libs/crud-pro/exceptions.js +119 -119
  100. package/dist/libs/crud-pro/interfaces.d.ts +195 -175
  101. package/dist/libs/crud-pro/interfaces.js +12 -12
  102. package/dist/libs/crud-pro/models/ExecuteContext.d.ts +50 -50
  103. package/dist/libs/crud-pro/models/ExecuteContext.js +87 -87
  104. package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +38 -38
  105. package/dist/libs/crud-pro/models/ExecuteContextFunc.js +72 -72
  106. package/dist/libs/crud-pro/models/FuncContext.d.ts +18 -18
  107. package/dist/libs/crud-pro/models/FuncContext.js +6 -6
  108. package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +65 -65
  109. package/dist/libs/crud-pro/models/RequestCfgModel.js +81 -81
  110. package/dist/libs/crud-pro/models/RequestModel.d.ts +25 -25
  111. package/dist/libs/crud-pro/models/RequestModel.js +113 -113
  112. package/dist/libs/crud-pro/models/ResModel.d.ts +20 -20
  113. package/dist/libs/crud-pro/models/ResModel.js +2 -2
  114. package/dist/libs/crud-pro/models/ServiceHub.d.ts +20 -20
  115. package/dist/libs/crud-pro/models/ServiceHub.js +2 -2
  116. package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +23 -23
  117. package/dist/libs/crud-pro/models/SqlCfgModel.js +40 -40
  118. package/dist/libs/crud-pro/models/SqlSegArg.d.ts +6 -6
  119. package/dist/libs/crud-pro/models/SqlSegArg.js +12 -12
  120. package/dist/libs/crud-pro/models/Transaction.d.ts +50 -50
  121. package/dist/libs/crud-pro/models/Transaction.js +184 -184
  122. package/dist/libs/crud-pro/models/TransactionMySQL.d.ts +19 -19
  123. package/dist/libs/crud-pro/models/TransactionMySQL.js +48 -48
  124. package/dist/libs/crud-pro/models/TransactionPostgres.d.ts +19 -19
  125. package/dist/libs/crud-pro/models/TransactionPostgres.js +64 -64
  126. package/dist/libs/crud-pro/models/TransactionSqlServer.d.ts +9 -9
  127. package/dist/libs/crud-pro/models/TransactionSqlServer.js +61 -61
  128. package/dist/libs/crud-pro/models/keys.d.ts +111 -111
  129. package/dist/libs/crud-pro/models/keys.js +156 -156
  130. package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +11 -11
  131. package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +73 -73
  132. package/dist/libs/crud-pro/services/CrudProDataFilterService.d.ts +17 -0
  133. package/dist/libs/crud-pro/services/CrudProDataFilterService.js +53 -0
  134. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.d.ts +9 -9
  135. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.js +125 -125
  136. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.d.ts +17 -17
  137. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +224 -224
  138. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.d.ts +9 -9
  139. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.js +51 -51
  140. package/dist/libs/crud-pro/services/CrudProFieldValidateService.d.ts +13 -13
  141. package/dist/libs/crud-pro/services/CrudProFieldValidateService.js +148 -148
  142. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +25 -25
  143. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +385 -385
  144. package/dist/libs/crud-pro/services/CrudProGenSqlService.d.ts +25 -25
  145. package/dist/libs/crud-pro/services/CrudProGenSqlService.js +165 -165
  146. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.d.ts +32 -32
  147. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +345 -339
  148. package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +24 -24
  149. package/dist/libs/crud-pro/services/CrudProServiceBase.js +88 -88
  150. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +12 -9
  151. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +167 -77
  152. package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +34 -32
  153. package/dist/libs/crud-pro/services/CurdProServiceHub.js +69 -64
  154. package/dist/libs/crud-pro/utils/CompareUtils.d.ts +9 -9
  155. package/dist/libs/crud-pro/utils/CompareUtils.js +25 -25
  156. package/dist/libs/crud-pro/utils/CrudMonitor.d.ts +9 -9
  157. package/dist/libs/crud-pro/utils/CrudMonitor.js +12 -12
  158. package/dist/libs/crud-pro/utils/DatabaseName.d.ts +9 -9
  159. package/dist/libs/crud-pro/utils/DatabaseName.js +50 -50
  160. package/dist/libs/crud-pro/utils/DateTimeUtils.d.ts +7 -7
  161. package/dist/libs/crud-pro/utils/DateTimeUtils.js +21 -21
  162. package/dist/libs/crud-pro/utils/MemoryRefreshCache.d.ts +19 -19
  163. package/dist/libs/crud-pro/utils/MemoryRefreshCache.js +47 -47
  164. package/dist/libs/crud-pro/utils/MessageParseUtils.d.ts +5 -5
  165. package/dist/libs/crud-pro/utils/MessageParseUtils.js +33 -33
  166. package/dist/libs/crud-pro/utils/MixinUtils.d.ts +40 -40
  167. package/dist/libs/crud-pro/utils/MixinUtils.js +259 -259
  168. package/dist/libs/crud-pro/utils/ModelUtils.d.ts +11 -11
  169. package/dist/libs/crud-pro/utils/ModelUtils.js +54 -54
  170. package/dist/libs/crud-pro/utils/MultiKeyMap.d.ts +11 -11
  171. package/dist/libs/crud-pro/utils/MultiKeyMap.js +63 -63
  172. package/dist/libs/crud-pro/utils/SqlFuncUtils.d.ts +5 -5
  173. package/dist/libs/crud-pro/utils/SqlFuncUtils.js +29 -29
  174. package/dist/libs/crud-pro/utils/TypeUtils.d.ts +40 -40
  175. package/dist/libs/crud-pro/utils/TypeUtils.js +166 -166
  176. package/dist/libs/crud-pro/utils/ValidateUtils.d.ts +3 -3
  177. package/dist/libs/crud-pro/utils/ValidateUtils.js +165 -165
  178. package/dist/libs/crud-pro/utils/pool/MySQLUtils.d.ts +3 -3
  179. package/dist/libs/crud-pro/utils/pool/MySQLUtils.js +19 -19
  180. package/dist/libs/crud-pro/utils/pool/PostgresUtils.d.ts +3 -3
  181. package/dist/libs/crud-pro/utils/pool/PostgresUtils.js +20 -20
  182. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.d.ts +3 -3
  183. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.js +20 -20
  184. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.d.ts +4 -4
  185. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +35 -35
  186. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +24 -24
  187. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.d.ts +2 -2
  188. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.js +14 -14
  189. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.d.ts +2 -2
  190. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.js +14 -14
  191. package/dist/libs/global-config/global-config.d.ts +71 -71
  192. package/dist/libs/global-config/global-config.js +38 -38
  193. package/dist/libs/utils/AsymmetricCrypto.d.ts +76 -76
  194. package/dist/libs/utils/AsymmetricCrypto.js +261 -261
  195. package/dist/libs/utils/base64.d.ts +9 -9
  196. package/dist/libs/utils/base64.js +42 -42
  197. package/dist/libs/utils/common-dto.d.ts +18 -18
  198. package/dist/libs/utils/common-dto.js +40 -40
  199. package/dist/libs/utils/crypto-utils.d.ts +3 -3
  200. package/dist/libs/utils/crypto-utils.js +55 -55
  201. package/dist/libs/utils/errorToString.d.ts +20 -20
  202. package/dist/libs/utils/errorToString.js +79 -79
  203. package/dist/libs/utils/fatcms-request.d.ts +45 -45
  204. package/dist/libs/utils/fatcms-request.js +161 -161
  205. package/dist/libs/utils/format-url.d.ts +17 -17
  206. package/dist/libs/utils/format-url.js +30 -30
  207. package/dist/libs/utils/functions.d.ts +11 -11
  208. package/dist/libs/utils/functions.js +99 -99
  209. package/dist/libs/utils/ordernum-utils.d.ts +22 -22
  210. package/dist/libs/utils/ordernum-utils.js +35 -35
  211. package/dist/libs/utils/parseConfig.d.ts +8 -8
  212. package/dist/libs/utils/parseConfig.js +47 -47
  213. package/dist/libs/utils/parseCreateSql.d.ts +10 -10
  214. package/dist/libs/utils/parseCreateSql.js +87 -87
  215. package/dist/libs/utils/render-utils.d.ts +40 -40
  216. package/dist/libs/utils/render-utils.js +158 -158
  217. package/dist/middleware/forbidden.middleware.d.ts +74 -74
  218. package/dist/middleware/forbidden.middleware.js +318 -318
  219. package/dist/middleware/global.middleware.d.ts +40 -40
  220. package/dist/middleware/global.middleware.js +310 -310
  221. package/dist/middleware/permission.middleware.d.ts +88 -88
  222. package/dist/middleware/permission.middleware.js +145 -145
  223. package/dist/middleware/rediscache.middleware.d.ts +28 -28
  224. package/dist/middleware/rediscache.middleware.js +114 -114
  225. package/dist/middleware/redislock.middleware.d.ts +29 -29
  226. package/dist/middleware/redislock.middleware.js +106 -106
  227. package/dist/middleware/tx.middleware.d.ts +55 -55
  228. package/dist/middleware/tx.middleware.js +83 -83
  229. package/dist/models/AsyncTaskModel.d.ts +74 -74
  230. package/dist/models/AsyncTaskModel.js +31 -31
  231. package/dist/models/FlowModel.d.ts +227 -227
  232. package/dist/models/FlowModel.js +53 -53
  233. package/dist/models/RedisKeys.d.ts +15 -15
  234. package/dist/models/RedisKeys.js +18 -18
  235. package/dist/models/SystemEntities.d.ts +118 -118
  236. package/dist/models/SystemEntities.js +18 -18
  237. package/dist/models/SystemPerm.d.ts +96 -96
  238. package/dist/models/SystemPerm.js +101 -101
  239. package/dist/models/SystemTables.d.ts +25 -25
  240. package/dist/models/SystemTables.js +28 -28
  241. package/dist/models/WorkbenchInfoTools.d.ts +7 -7
  242. package/dist/models/WorkbenchInfoTools.js +20 -20
  243. package/dist/models/bizmodels.d.ts +150 -150
  244. package/dist/models/bizmodels.js +62 -62
  245. package/dist/models/contextLogger.d.ts +27 -27
  246. package/dist/models/contextLogger.js +119 -119
  247. package/dist/models/devops.d.ts +12 -12
  248. package/dist/models/devops.js +19 -19
  249. package/dist/models/userSession.d.ts +67 -67
  250. package/dist/models/userSession.js +179 -179
  251. package/dist/schedule/anonymousContext.d.ts +15 -15
  252. package/dist/schedule/anonymousContext.js +74 -74
  253. package/dist/schedule/index.d.ts +4 -4
  254. package/dist/schedule/index.js +10 -10
  255. package/dist/schedule/runSchedule.d.ts +12 -12
  256. package/dist/schedule/runSchedule.js +68 -68
  257. package/dist/schedule/scheduleNames.d.ts +15 -15
  258. package/dist/schedule/scheduleNames.js +19 -19
  259. package/dist/service/AuthService.d.ts +56 -56
  260. package/dist/service/AuthService.js +251 -251
  261. package/dist/service/EnumInfoService.d.ts +30 -30
  262. package/dist/service/EnumInfoService.js +97 -97
  263. package/dist/service/FileCenterService.d.ts +64 -64
  264. package/dist/service/FileCenterService.js +422 -422
  265. package/dist/service/SysAppService.d.ts +15 -15
  266. package/dist/service/SysAppService.js +108 -108
  267. package/dist/service/SysConfigService.d.ts +10 -10
  268. package/dist/service/SysConfigService.js +64 -64
  269. package/dist/service/SysDictDataService.d.ts +9 -9
  270. package/dist/service/SysDictDataService.js +72 -72
  271. package/dist/service/SysMenuService.d.ts +51 -51
  272. package/dist/service/SysMenuService.js +58 -58
  273. package/dist/service/UserAccountService.d.ts +23 -23
  274. package/dist/service/UserAccountService.js +107 -107
  275. package/dist/service/UserSessionService.d.ts +43 -43
  276. package/dist/service/UserSessionService.js +163 -163
  277. package/dist/service/VisitStatService.d.ts +14 -14
  278. package/dist/service/VisitStatService.js +161 -161
  279. package/dist/service/WorkbenchService.d.ts +59 -59
  280. package/dist/service/WorkbenchService.js +249 -249
  281. package/dist/service/anyapi/AnyApiSandboxService.d.ts +15 -15
  282. package/dist/service/anyapi/AnyApiSandboxService.js +110 -110
  283. package/dist/service/anyapi/AnyApiService.d.ts +27 -27
  284. package/dist/service/anyapi/AnyApiService.js +181 -181
  285. package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +50 -50
  286. package/dist/service/asyncTask/AsyncTaskRunnerService.js +287 -287
  287. package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -7
  288. package/dist/service/asyncTask/AsyncTaskService.js +34 -34
  289. package/dist/service/asyncTask/handler/ExcelInfoModel.d.ts +10 -10
  290. package/dist/service/asyncTask/handler/ExcelInfoModel.js +2 -2
  291. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.d.ts +7 -7
  292. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.js +216 -216
  293. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.d.ts +36 -36
  294. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.js +141 -141
  295. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.d.ts +46 -46
  296. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.js +135 -135
  297. package/dist/service/base/ApiBaseService.d.ts +22 -22
  298. package/dist/service/base/ApiBaseService.js +60 -60
  299. package/dist/service/base/ApiRateLimiter.d.ts +10 -10
  300. package/dist/service/base/ApiRateLimiter.js +51 -51
  301. package/dist/service/base/BaseService.d.ts +46 -46
  302. package/dist/service/base/BaseService.js +131 -131
  303. package/dist/service/base/cache/CacheServiceFactory.d.ts +26 -26
  304. package/dist/service/base/cache/CacheServiceFactory.js +122 -122
  305. package/dist/service/base/cache/CtxCache.d.ts +18 -18
  306. package/dist/service/base/cache/CtxCache.js +37 -37
  307. package/dist/service/base/cache/DiskCache.d.ts +19 -19
  308. package/dist/service/base/cache/DiskCache.js +81 -81
  309. package/dist/service/base/cache/MemoryCache.d.ts +12 -12
  310. package/dist/service/base/cache/MemoryCache.js +58 -58
  311. package/dist/service/base/cache/NoneCache.d.ts +10 -10
  312. package/dist/service/base/cache/NoneCache.js +19 -19
  313. package/dist/service/base/cache/RedisCache.d.ts +14 -14
  314. package/dist/service/base/cache/RedisCache.js +31 -31
  315. package/dist/service/crudstd/CrudStdActionService.d.ts +17 -17
  316. package/dist/service/crudstd/CrudStdActionService.js +32 -32
  317. package/dist/service/crudstd/CrudStdConstant.d.ts +58 -58
  318. package/dist/service/crudstd/CrudStdConstant.js +64 -64
  319. package/dist/service/crudstd/CrudStdRelationService.d.ts +11 -11
  320. package/dist/service/crudstd/CrudStdRelationService.js +179 -179
  321. package/dist/service/crudstd/CrudStdService.d.ts +59 -59
  322. package/dist/service/crudstd/CrudStdService.js +348 -348
  323. package/dist/service/curd/CrudProQuick.d.ts +60 -60
  324. package/dist/service/curd/CrudProQuick.js +167 -167
  325. package/dist/service/curd/CurdMixByAccountService.d.ts +14 -14
  326. package/dist/service/curd/CurdMixByAccountService.js +166 -166
  327. package/dist/service/curd/CurdMixByDictService.d.ts +12 -12
  328. package/dist/service/curd/CurdMixByDictService.js +114 -114
  329. package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +30 -30
  330. package/dist/service/curd/CurdMixByLinkToCustomService.js +209 -209
  331. package/dist/service/curd/CurdMixBySysConfigService.d.ts +13 -13
  332. package/dist/service/curd/CurdMixBySysConfigService.js +116 -116
  333. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +11 -11
  334. package/dist/service/curd/CurdMixByWorkbenchService.js +80 -80
  335. package/dist/service/curd/CurdMixService.d.ts +28 -28
  336. package/dist/service/curd/CurdMixService.js +100 -100
  337. package/dist/service/curd/CurdMixUtils.d.ts +57 -57
  338. package/dist/service/curd/CurdMixUtils.js +331 -331
  339. package/dist/service/curd/CurdProService.d.ts +32 -32
  340. package/dist/service/curd/CurdProService.js +215 -215
  341. package/dist/service/curd/fixCfgModel.d.ts +3 -3
  342. package/dist/service/curd/fixCfgModel.js +104 -104
  343. package/dist/service/curd/fixSoftDelete.d.ts +6 -6
  344. package/dist/service/curd/fixSoftDelete.js +43 -43
  345. package/dist/service/flow/FlowConfigService.d.ts +41 -41
  346. package/dist/service/flow/FlowConfigService.js +95 -95
  347. package/dist/service/flow/FlowInstanceCrudService.d.ts +35 -35
  348. package/dist/service/flow/FlowInstanceCrudService.js +257 -257
  349. package/dist/service/flow/FlowInstanceService.d.ts +88 -88
  350. package/dist/service/flow/FlowInstanceService.js +451 -451
  351. package/dist/service/proxyapi/ProxyApiLoadService.d.ts +21 -21
  352. package/dist/service/proxyapi/ProxyApiLoadService.js +167 -167
  353. package/dist/service/proxyapi/ProxyApiService.d.ts +61 -61
  354. package/dist/service/proxyapi/ProxyApiService.js +317 -317
  355. package/dist/service/proxyapi/ProxyApiUtils.d.ts +15 -15
  356. package/dist/service/proxyapi/ProxyApiUtils.js +34 -34
  357. package/dist/service/proxyapi/RouteHandler.d.ts +6 -6
  358. package/dist/service/proxyapi/RouteHandler.js +9 -9
  359. package/dist/service/proxyapi/RouteTrie.d.ts +12 -12
  360. package/dist/service/proxyapi/RouteTrie.js +64 -64
  361. package/dist/service/proxyapi/WeightedRandom.d.ts +9 -9
  362. package/dist/service/proxyapi/WeightedRandom.js +31 -31
  363. package/dist/service/proxyapi/WeightedRoundRobin.d.ts +8 -8
  364. package/dist/service/proxyapi/WeightedRoundRobin.js +33 -33
  365. package/index.d.ts +10 -10
  366. package/package.json +87 -87
  367. package/src/libs/crud-pro/CrudPro.ts +71 -0
  368. package/src/libs/crud-pro/interfaces.ts +22 -0
  369. package/src/libs/crud-pro/models/ServiceHub.ts +2 -2
  370. package/src/libs/crud-pro/services/CrudProDataFilterService.ts +58 -0
  371. package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +10 -1
  372. package/src/libs/crud-pro/services/CrudProTableMetaService.ts +145 -40
  373. package/src/libs/crud-pro/services/CurdProServiceHub.ts +10 -3
  374. package/src/libs/crud-pro/utils/CrudMonitor.ts +13 -13
  375. package/src/libs/utils/AsymmetricCrypto.ts +307 -307
  376. package/src/libs/utils/format-url.ts +29 -29
  377. package/src/libs/utils/render-utils.ts +223 -223
  378. package/src/models/WorkbenchInfoTools.ts +19 -19
  379. package/src/service/SysAppService.ts +103 -103
  380. package/src/service/SysDictDataService.ts +63 -63
  381. package/src/service/SysMenuService.ts +87 -87
  382. package/src/service/WorkbenchService.ts +279 -279
  383. package/src/service/base/cache/CacheServiceFactory.ts +135 -135
  384. package/src/service/base/cache/CtxCache.ts +45 -45
  385. package/src/service/base/cache/DiskCache.ts +90 -90
  386. package/src/service/base/cache/MemoryCache.ts +68 -68
  387. package/src/service/base/cache/NoneCache.ts +24 -24
  388. package/src/service/base/cache/RedisCache.ts +41 -41
  389. package/src/service/curd/CurdMixByAccountService.ts +177 -177
  390. package/src/service/curd/fixSoftDelete.ts +58 -58
  391. package/tsconfig.json +32 -32
@@ -1,318 +1,318 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ForbiddenMiddleware = void 0;
10
- const fatcms_request_1 = require("../libs/utils/fatcms-request");
11
- const core_1 = require("@midwayjs/core");
12
- // 恶意爬虫/漏洞扫描工具常探测的敏感配置文件路径
13
- const BLACK_EQUAL_LIST = [
14
- // 环境配置文件
15
- '/config.json',
16
- '/backend/.env',
17
- '/.env',
18
- '/.env.dev',
19
- '/.env.prod',
20
- '/.env.local',
21
- '/.env.staging',
22
- '/.env.example',
23
- '/.env.production',
24
- '/.env.development',
25
- '/application.yml',
26
- '/application.yaml',
27
- '/application.properties',
28
- '/config.yaml',
29
- '/config.yml',
30
- '/db.ini',
31
- '/database.yml',
32
- '/api/.env',
33
- // 安全相关文件
34
- '/.well-known/security.txt',
35
- '/security.txt',
36
- '/.git/config',
37
- '/.gitignore',
38
- '/.npmrc',
39
- '/.dockerignore',
40
- '/Dockerfile',
41
- '/docker-compose.yml',
42
- // 备份文件
43
- '/backup.sql',
44
- '/dump.sql',
45
- '/database.sql',
46
- // 敏感信息文件
47
- '/id_rsa',
48
- '/id_rsa.pub',
49
- '/.ssh/id_rsa',
50
- '/privatekey.pem',
51
- '/publickey.pem',
52
- ];
53
- // 恶意爬虫/漏洞扫描工具常探测的敏感目录前缀
54
- const BLACK_PREFIX_LIST = [
55
- // 版本控制系统
56
- '/.git/',
57
- '/.svn/',
58
- '/.hg/',
59
- '/.bzr/',
60
- // 云服务配置
61
- '/.aws/',
62
- '/.azure/',
63
- '/.gcp/',
64
- // 环境配置
65
- '/.env/',
66
- '/.vscode/',
67
- '/.idea/',
68
- // 源码目录(防止暴露)
69
- '/src/',
70
- '/source/',
71
- '/sources/',
72
- // 日志目录
73
- '/var/logs/',
74
- '/var/log/',
75
- '/logs/',
76
- '/log/',
77
- // 备份目录
78
- '/backup/',
79
- '/backups/',
80
- '/bak/',
81
- // 临时文件目录
82
- '/tmp/',
83
- '/temp/',
84
- // Web服务器相关
85
- '/cgi-bin/',
86
- '/php-cgi/',
87
- '/phpMyAdmin/',
88
- '/phpmyadmin/',
89
- '/adminer/',
90
- // 常见后台路径
91
- '/admin/',
92
- '/administrator/',
93
- '/manage/',
94
- '/backend/',
95
- '/console/',
96
- // 测试相关
97
- '/test/',
98
- '/tests/',
99
- '/testing/',
100
- '/debug/',
101
- ];
102
- // 业务正常路径白名单前缀
103
- const WHITE_LIST_PREFIX = ['/ns/', '/pages/'];
104
- // WordPress相关攻击路径特征
105
- const WP_ATTACK_PATTERNS = [
106
- '/wp-includes/',
107
- '/wp-admin/',
108
- '/wp-content/',
109
- '/wp-login.php',
110
- '/xmlrpc.php',
111
- ];
112
- // 危险文件后缀
113
- const DANGEROUS_SUFFIXES = [
114
- // PHP相关(Node.js应用不应有PHP文件)
115
- '.php',
116
- '.php3',
117
- '.php4',
118
- '.php5',
119
- '.phtml',
120
- // JSP相关
121
- '.jsp',
122
- '.jspx',
123
- // ASP相关
124
- '.asp',
125
- '.aspx',
126
- '.asa',
127
- // 其他脚本
128
- '.cgi',
129
- '.pl',
130
- // 配置文件
131
- '.ini',
132
- '.conf',
133
- '.config',
134
- // 备份文件
135
- '.bak',
136
- '.backup',
137
- '.old',
138
- '.orig',
139
- '.save',
140
- '.swp',
141
- '.swo',
142
- '~',
143
- // 压缩文件(可能包含源码)
144
- '.tar.gz',
145
- '.tgz',
146
- '.zip',
147
- '.rar',
148
- '.7z',
149
- // SQL文件
150
- '.sql',
151
- '.sqlite',
152
- '.db',
153
- ];
154
- // 可疑查询参数特征(SQL注入、路径遍历等)
155
- const SUSPICIOUS_QUERY_PATTERNS = ['../', '..\\', '%2e%2e%2f', '%2e%2e/', '..%2f', '%2e%2e%5c'];
156
- // 可疑User-Agent特征 识别10+种常见渗透测试工具
157
- const SUSPICIOUS_USER_AGENTS = [
158
- 'sqlmap',
159
- 'nikto',
160
- 'nmap',
161
- 'masscan',
162
- 'nessus',
163
- 'openvas',
164
- 'metasploit',
165
- 'burpsuite',
166
- 'zaproxy',
167
- 'acunetix', // Web应用扫描
168
- ];
169
- /**
170
- * 安全防护中间件 - 黑名单路径拦截
171
- *
172
- * 核心职责:
173
- * 1. 防御恶意爬虫:拦截常见的配置文件探测请求(.env、config.json等)
174
- * 2. 防御漏洞扫描:阻止安全扫描工具对敏感目录的探测(.git、.aws等)
175
- * 3. 防御自动化攻击:拦截针对WordPress、PHP等常见CMS的攻击路径
176
- * 4. 防御路径遍历:检测并阻止 ../ 等路径遍历攻击尝试
177
- * 5. 识别攻击工具:检测User-Agent中的sqlmap、nikto等渗透测试工具
178
- * 6. 性能优化:提前拦截无效请求,避免进入业务逻辑层消耗资源
179
- *
180
- * 应用场景:
181
- * - 公网暴露的Web应用:防止自动化工具批量扫描敏感路径
182
- * - 云原生部署环境:保护云服务配置文件不被探测(.aws、.env等)
183
- * - 多技术栈迁移:新系统可能残留旧技术栈痕迹,统一拦截避免误暴露
184
- * - 安全合规要求:主动防御已知的常见攻击路径,降低安全风险
185
- *
186
- * 拦截策略:
187
- * - User-Agent检测:识别常见扫描工具(sqlmap, nikto, nmap, metasploit等)
188
- * - 路径遍历检测:阻止 ../, ..\, %2e%2e%2f 等编码后的遍历尝试
189
- * - 精确匹配:config.json、.env、application.yml等配置文件
190
- * - 前缀匹配:.git/、.svn/、.aws/等版本控制和云服务目录
191
- * - 模糊匹配:wp-admin、wp-content等WordPress相关路径
192
- * - 后缀匹配:.php/.jsp/.asp等脚本文件、.bak/.sql等敏感文件
193
- *
194
- * 防御能力增强:
195
- * - 支持30+种敏感配置文件拦截
196
- * - 支持50+种敏感目录前缀拦截
197
- * - 支持40+种危险文件后缀拦截
198
- * - 支持10+种常见攻击工具识别
199
- *
200
- * 注意事项:
201
- * 此中间件拦截的路径在实际项目中并不存在,仅为安全防护层。
202
- * 被拦截的请求会立即返回404,不会进入后续业务逻辑。
203
- */
204
- let ForbiddenMiddleware = class ForbiddenMiddleware {
205
- /**
206
- * 匹配规则:判断请求路径是否在黑名单中
207
- * @param ctx Koa上下文
208
- * @returns true表示需要拦截,false表示放行
209
- */
210
- match(ctx) {
211
- const path = ctx.path;
212
- // 1. 白名单路径检查
213
- if (this.isWhiteListPath(path)) {
214
- return false;
215
- }
216
- // 2. 检查可疑User-Agent
217
- if (this.isSuspiciousUserAgent(ctx)) {
218
- return true;
219
- }
220
- // 3. 检查路径遍历攻击
221
- if (this.hasPathTraversal(path)) {
222
- return true;
223
- }
224
- // 4. 精确匹配:常见配置文件路径
225
- if (this.isExactMatch(path)) {
226
- return true;
227
- }
228
- // 5. 前缀匹配:敏感目录前缀
229
- if (this.isPrefixMatch(path)) {
230
- return true;
231
- }
232
- // 6. 模糊匹配:WordPress路径、PHP文件、Git配置
233
- return this.isFuzzyMatch(path);
234
- }
235
- /**
236
- * 检查是否为白名单路径
237
- */
238
- isWhiteListPath(path) {
239
- if (path === '/') {
240
- return true;
241
- }
242
- return WHITE_LIST_PREFIX.some(prefix => path.startsWith(prefix));
243
- }
244
- /**
245
- * 精确匹配:配置文件路径
246
- */
247
- isExactMatch(path) {
248
- return BLACK_EQUAL_LIST.includes(path);
249
- }
250
- /**
251
- * 前缀匹配:敏感目录
252
- */
253
- isPrefixMatch(path) {
254
- return BLACK_PREFIX_LIST.some(prefix => path.startsWith(prefix));
255
- }
256
- /**
257
- * 模糊匹配:WordPress路径、危险文件后缀
258
- */
259
- isFuzzyMatch(path) {
260
- // WordPress攻击路径
261
- const hasWpPattern = WP_ATTACK_PATTERNS.some(pattern => path.includes(pattern));
262
- if (hasWpPattern) {
263
- return true;
264
- }
265
- // 危险文件后缀
266
- return DANGEROUS_SUFFIXES.some(suffix => path.endsWith(suffix));
267
- }
268
- /**
269
- * 检查是否为可疑的User-Agent(扫描工具、渗透测试工具)
270
- */
271
- isSuspiciousUserAgent(ctx) {
272
- const userAgent = (ctx.get('user-agent') || '').toLowerCase();
273
- if (!userAgent) {
274
- return false;
275
- }
276
- return SUSPICIOUS_USER_AGENTS.some(tool => userAgent.includes(tool));
277
- }
278
- /**
279
- * 检查是否包含路径遍历政击特征
280
- */
281
- hasPathTraversal(path) {
282
- try {
283
- const decodedPath = decodeURIComponent(path);
284
- return SUSPICIOUS_QUERY_PATTERNS.some(pattern => decodedPath.includes(pattern));
285
- }
286
- catch (e) {
287
- // URL解码失败(如包含非法编码字符),直接判定为可疑请求
288
- return true;
289
- }
290
- }
291
- /**
292
- * 拦截处理:返回404响应
293
- */
294
- resolve() {
295
- return async (ctx, next) => {
296
- // 记录可疑请求日志(便于安全审计)
297
- const suspiciousInfo = {
298
- path: ctx.path,
299
- method: ctx.method,
300
- ip: (0, fatcms_request_1.getRealIpSafe)(ctx),
301
- userAgent: ctx.get('user-agent'),
302
- referer: ctx.get('referer'),
303
- };
304
- ctx.logger.warn('[Security] Blocked suspicious request', suspiciousInfo);
305
- // 返回通用404响应,避免泄露系统信息
306
- ctx.status = 404;
307
- ctx.set({ 'content-type': 'text/html; charset=utf-8' });
308
- ctx.body = 'Not Found';
309
- };
310
- }
311
- static getName() {
312
- return 'ForbiddenMiddleware';
313
- }
314
- };
315
- ForbiddenMiddleware = __decorate([
316
- (0, core_1.Middleware)()
317
- ], ForbiddenMiddleware);
318
- exports.ForbiddenMiddleware = ForbiddenMiddleware;
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ForbiddenMiddleware = void 0;
10
+ const fatcms_request_1 = require("../libs/utils/fatcms-request");
11
+ const core_1 = require("@midwayjs/core");
12
+ // 恶意爬虫/漏洞扫描工具常探测的敏感配置文件路径
13
+ const BLACK_EQUAL_LIST = [
14
+ // 环境配置文件
15
+ '/config.json',
16
+ '/backend/.env',
17
+ '/.env',
18
+ '/.env.dev',
19
+ '/.env.prod',
20
+ '/.env.local',
21
+ '/.env.staging',
22
+ '/.env.example',
23
+ '/.env.production',
24
+ '/.env.development',
25
+ '/application.yml',
26
+ '/application.yaml',
27
+ '/application.properties',
28
+ '/config.yaml',
29
+ '/config.yml',
30
+ '/db.ini',
31
+ '/database.yml',
32
+ '/api/.env',
33
+ // 安全相关文件
34
+ '/.well-known/security.txt',
35
+ '/security.txt',
36
+ '/.git/config',
37
+ '/.gitignore',
38
+ '/.npmrc',
39
+ '/.dockerignore',
40
+ '/Dockerfile',
41
+ '/docker-compose.yml',
42
+ // 备份文件
43
+ '/backup.sql',
44
+ '/dump.sql',
45
+ '/database.sql',
46
+ // 敏感信息文件
47
+ '/id_rsa',
48
+ '/id_rsa.pub',
49
+ '/.ssh/id_rsa',
50
+ '/privatekey.pem',
51
+ '/publickey.pem',
52
+ ];
53
+ // 恶意爬虫/漏洞扫描工具常探测的敏感目录前缀
54
+ const BLACK_PREFIX_LIST = [
55
+ // 版本控制系统
56
+ '/.git/',
57
+ '/.svn/',
58
+ '/.hg/',
59
+ '/.bzr/',
60
+ // 云服务配置
61
+ '/.aws/',
62
+ '/.azure/',
63
+ '/.gcp/',
64
+ // 环境配置
65
+ '/.env/',
66
+ '/.vscode/',
67
+ '/.idea/',
68
+ // 源码目录(防止暴露)
69
+ '/src/',
70
+ '/source/',
71
+ '/sources/',
72
+ // 日志目录
73
+ '/var/logs/',
74
+ '/var/log/',
75
+ '/logs/',
76
+ '/log/',
77
+ // 备份目录
78
+ '/backup/',
79
+ '/backups/',
80
+ '/bak/',
81
+ // 临时文件目录
82
+ '/tmp/',
83
+ '/temp/',
84
+ // Web服务器相关
85
+ '/cgi-bin/',
86
+ '/php-cgi/',
87
+ '/phpMyAdmin/',
88
+ '/phpmyadmin/',
89
+ '/adminer/',
90
+ // 常见后台路径
91
+ '/admin/',
92
+ '/administrator/',
93
+ '/manage/',
94
+ '/backend/',
95
+ '/console/',
96
+ // 测试相关
97
+ '/test/',
98
+ '/tests/',
99
+ '/testing/',
100
+ '/debug/',
101
+ ];
102
+ // 业务正常路径白名单前缀
103
+ const WHITE_LIST_PREFIX = ['/ns/', '/pages/'];
104
+ // WordPress相关攻击路径特征
105
+ const WP_ATTACK_PATTERNS = [
106
+ '/wp-includes/',
107
+ '/wp-admin/',
108
+ '/wp-content/',
109
+ '/wp-login.php',
110
+ '/xmlrpc.php',
111
+ ];
112
+ // 危险文件后缀
113
+ const DANGEROUS_SUFFIXES = [
114
+ // PHP相关(Node.js应用不应有PHP文件)
115
+ '.php',
116
+ '.php3',
117
+ '.php4',
118
+ '.php5',
119
+ '.phtml',
120
+ // JSP相关
121
+ '.jsp',
122
+ '.jspx',
123
+ // ASP相关
124
+ '.asp',
125
+ '.aspx',
126
+ '.asa',
127
+ // 其他脚本
128
+ '.cgi',
129
+ '.pl',
130
+ // 配置文件
131
+ '.ini',
132
+ '.conf',
133
+ '.config',
134
+ // 备份文件
135
+ '.bak',
136
+ '.backup',
137
+ '.old',
138
+ '.orig',
139
+ '.save',
140
+ '.swp',
141
+ '.swo',
142
+ '~',
143
+ // 压缩文件(可能包含源码)
144
+ '.tar.gz',
145
+ '.tgz',
146
+ '.zip',
147
+ '.rar',
148
+ '.7z',
149
+ // SQL文件
150
+ '.sql',
151
+ '.sqlite',
152
+ '.db',
153
+ ];
154
+ // 可疑查询参数特征(SQL注入、路径遍历等)
155
+ const SUSPICIOUS_QUERY_PATTERNS = ['../', '..\\', '%2e%2e%2f', '%2e%2e/', '..%2f', '%2e%2e%5c'];
156
+ // 可疑User-Agent特征 识别10+种常见渗透测试工具
157
+ const SUSPICIOUS_USER_AGENTS = [
158
+ 'sqlmap',
159
+ 'nikto',
160
+ 'nmap',
161
+ 'masscan',
162
+ 'nessus',
163
+ 'openvas',
164
+ 'metasploit',
165
+ 'burpsuite',
166
+ 'zaproxy',
167
+ 'acunetix', // Web应用扫描
168
+ ];
169
+ /**
170
+ * 安全防护中间件 - 黑名单路径拦截
171
+ *
172
+ * 核心职责:
173
+ * 1. 防御恶意爬虫:拦截常见的配置文件探测请求(.env、config.json等)
174
+ * 2. 防御漏洞扫描:阻止安全扫描工具对敏感目录的探测(.git、.aws等)
175
+ * 3. 防御自动化攻击:拦截针对WordPress、PHP等常见CMS的攻击路径
176
+ * 4. 防御路径遍历:检测并阻止 ../ 等路径遍历攻击尝试
177
+ * 5. 识别攻击工具:检测User-Agent中的sqlmap、nikto等渗透测试工具
178
+ * 6. 性能优化:提前拦截无效请求,避免进入业务逻辑层消耗资源
179
+ *
180
+ * 应用场景:
181
+ * - 公网暴露的Web应用:防止自动化工具批量扫描敏感路径
182
+ * - 云原生部署环境:保护云服务配置文件不被探测(.aws、.env等)
183
+ * - 多技术栈迁移:新系统可能残留旧技术栈痕迹,统一拦截避免误暴露
184
+ * - 安全合规要求:主动防御已知的常见攻击路径,降低安全风险
185
+ *
186
+ * 拦截策略:
187
+ * - User-Agent检测:识别常见扫描工具(sqlmap, nikto, nmap, metasploit等)
188
+ * - 路径遍历检测:阻止 ../, ..\, %2e%2e%2f 等编码后的遍历尝试
189
+ * - 精确匹配:config.json、.env、application.yml等配置文件
190
+ * - 前缀匹配:.git/、.svn/、.aws/等版本控制和云服务目录
191
+ * - 模糊匹配:wp-admin、wp-content等WordPress相关路径
192
+ * - 后缀匹配:.php/.jsp/.asp等脚本文件、.bak/.sql等敏感文件
193
+ *
194
+ * 防御能力增强:
195
+ * - 支持30+种敏感配置文件拦截
196
+ * - 支持50+种敏感目录前缀拦截
197
+ * - 支持40+种危险文件后缀拦截
198
+ * - 支持10+种常见攻击工具识别
199
+ *
200
+ * 注意事项:
201
+ * 此中间件拦截的路径在实际项目中并不存在,仅为安全防护层。
202
+ * 被拦截的请求会立即返回404,不会进入后续业务逻辑。
203
+ */
204
+ let ForbiddenMiddleware = class ForbiddenMiddleware {
205
+ /**
206
+ * 匹配规则:判断请求路径是否在黑名单中
207
+ * @param ctx Koa上下文
208
+ * @returns true表示需要拦截,false表示放行
209
+ */
210
+ match(ctx) {
211
+ const path = ctx.path;
212
+ // 1. 白名单路径检查
213
+ if (this.isWhiteListPath(path)) {
214
+ return false;
215
+ }
216
+ // 2. 检查可疑User-Agent
217
+ if (this.isSuspiciousUserAgent(ctx)) {
218
+ return true;
219
+ }
220
+ // 3. 检查路径遍历攻击
221
+ if (this.hasPathTraversal(path)) {
222
+ return true;
223
+ }
224
+ // 4. 精确匹配:常见配置文件路径
225
+ if (this.isExactMatch(path)) {
226
+ return true;
227
+ }
228
+ // 5. 前缀匹配:敏感目录前缀
229
+ if (this.isPrefixMatch(path)) {
230
+ return true;
231
+ }
232
+ // 6. 模糊匹配:WordPress路径、PHP文件、Git配置
233
+ return this.isFuzzyMatch(path);
234
+ }
235
+ /**
236
+ * 检查是否为白名单路径
237
+ */
238
+ isWhiteListPath(path) {
239
+ if (path === '/') {
240
+ return true;
241
+ }
242
+ return WHITE_LIST_PREFIX.some(prefix => path.startsWith(prefix));
243
+ }
244
+ /**
245
+ * 精确匹配:配置文件路径
246
+ */
247
+ isExactMatch(path) {
248
+ return BLACK_EQUAL_LIST.includes(path);
249
+ }
250
+ /**
251
+ * 前缀匹配:敏感目录
252
+ */
253
+ isPrefixMatch(path) {
254
+ return BLACK_PREFIX_LIST.some(prefix => path.startsWith(prefix));
255
+ }
256
+ /**
257
+ * 模糊匹配:WordPress路径、危险文件后缀
258
+ */
259
+ isFuzzyMatch(path) {
260
+ // WordPress攻击路径
261
+ const hasWpPattern = WP_ATTACK_PATTERNS.some(pattern => path.includes(pattern));
262
+ if (hasWpPattern) {
263
+ return true;
264
+ }
265
+ // 危险文件后缀
266
+ return DANGEROUS_SUFFIXES.some(suffix => path.endsWith(suffix));
267
+ }
268
+ /**
269
+ * 检查是否为可疑的User-Agent(扫描工具、渗透测试工具)
270
+ */
271
+ isSuspiciousUserAgent(ctx) {
272
+ const userAgent = (ctx.get('user-agent') || '').toLowerCase();
273
+ if (!userAgent) {
274
+ return false;
275
+ }
276
+ return SUSPICIOUS_USER_AGENTS.some(tool => userAgent.includes(tool));
277
+ }
278
+ /**
279
+ * 检查是否包含路径遍历政击特征
280
+ */
281
+ hasPathTraversal(path) {
282
+ try {
283
+ const decodedPath = decodeURIComponent(path);
284
+ return SUSPICIOUS_QUERY_PATTERNS.some(pattern => decodedPath.includes(pattern));
285
+ }
286
+ catch (e) {
287
+ // URL解码失败(如包含非法编码字符),直接判定为可疑请求
288
+ return true;
289
+ }
290
+ }
291
+ /**
292
+ * 拦截处理:返回404响应
293
+ */
294
+ resolve() {
295
+ return async (ctx, next) => {
296
+ // 记录可疑请求日志(便于安全审计)
297
+ const suspiciousInfo = {
298
+ path: ctx.path,
299
+ method: ctx.method,
300
+ ip: (0, fatcms_request_1.getRealIpSafe)(ctx),
301
+ userAgent: ctx.get('user-agent'),
302
+ referer: ctx.get('referer'),
303
+ };
304
+ ctx.logger.warn('[Security] Blocked suspicious request', suspiciousInfo);
305
+ // 返回通用404响应,避免泄露系统信息
306
+ ctx.status = 404;
307
+ ctx.set({ 'content-type': 'text/html; charset=utf-8' });
308
+ ctx.body = 'Not Found';
309
+ };
310
+ }
311
+ static getName() {
312
+ return 'ForbiddenMiddleware';
313
+ }
314
+ };
315
+ ForbiddenMiddleware = __decorate([
316
+ (0, core_1.Middleware)()
317
+ ], ForbiddenMiddleware);
318
+ exports.ForbiddenMiddleware = ForbiddenMiddleware;