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,158 +1,158 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRenderUtils = void 0;
4
- const _ = require("lodash");
5
- const moment = require("moment");
6
- const functions_1 = require("./functions");
7
- const fatcms_request_1 = require("./fatcms-request");
8
- const TypeUtils_1 = require("../crud-pro/utils/TypeUtils");
9
- function parseCookie(cookieStr) {
10
- const cookies = {};
11
- if (!cookieStr) {
12
- return cookies;
13
- }
14
- // 分割每个 cookie 项
15
- const cookieItems = cookieStr.split(';');
16
- for (const item of cookieItems) {
17
- // 去除空白字符
18
- const trimmedItem = item.trim();
19
- if (!trimmedItem) {
20
- continue;
21
- }
22
- // 找到第一个等号的位置
23
- const eqIndex = trimmedItem.indexOf('=');
24
- if (eqIndex === -1) {
25
- continue;
26
- }
27
- // 提取 key 和 value
28
- const key = trimmedItem.substring(0, eqIndex).trim();
29
- const value = trimmedItem.substring(eqIndex + 1).trim();
30
- // 处理可能的引号
31
- if (value.startsWith('"') && value.endsWith('"')) {
32
- cookies[key] = value.slice(1, -1);
33
- }
34
- else {
35
- cookies[key] = value;
36
- }
37
- }
38
- return cookies;
39
- }
40
- function isMobileUserAgent(userAgent = '') {
41
- // 空值处理
42
- if (!userAgent)
43
- return false;
44
- // 转为小写统一匹配
45
- const ua = userAgent.toLowerCase();
46
- // 【核心】移动端关键词(覆盖主流系统)
47
- const mobileKeywords = /android|iphone|ipod|ios|mobile|blackberry|iemobile|opera mini|windows phone|harmonyos/i;
48
- // 【排除项】平板/PC关键词(避免误判)
49
- const excludeKeywords = /ipad|tablet|playbook|kindle|pc|windows nt|macintosh|linux x86_64/i;
50
- // 判断规则:包含移动端关键词 + 不包含排除项关键词
51
- const isMatchMobile = mobileKeywords.test(ua);
52
- const isExclude = excludeKeywords.test(ua);
53
- return isMatchMobile && !isExclude;
54
- }
55
- class RenderUtils {
56
- constructor(props) {
57
- var _a, _b, _c, _d;
58
- this.ctx = props.ctx;
59
- const query = ((_a = props.ctx) === null || _a === void 0 ? void 0 : _a.query) || {};
60
- const headers = ((_b = props.ctx) === null || _b === void 0 ? void 0 : _b.headers) || {};
61
- this.workbenchInfo = props.workbenchInfo || {};
62
- this.userInfo = props.userInfo || {};
63
- this.appInfo = props.appInfo || {};
64
- this.fatcmscsrftoken = props.fatcmscsrftoken;
65
- this.urlcsrftoken = props.urlcsrftoken;
66
- this.cookieInfo = parseCookie(headers === null || headers === void 0 ? void 0 : headers.cookie);
67
- this.isMobileUserAgent = isMobileUserAgent(headers['user-agent'] || '');
68
- this.isMobileByQuery = `${query['__is_mobile_request__']}` === 'true';
69
- const packageAssets = (0, functions_1.parseJsonObject)(props.package_assets) || {};
70
- const fileList = _.get(packageAssets, 'data.fileList');
71
- if (Array.isArray(fileList)) {
72
- this.fileList = fileList.filter(f => {
73
- return f && f.fileUrl && typeof f.fileUrl === 'string' && f.fileUrl.length > 5; // 至少五个字符。
74
- });
75
- }
76
- else {
77
- this.fileList = [];
78
- const time = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
79
- console.info(time +
80
- ' 解析fileList为空==>' +
81
- JSON.stringify({
82
- workbench_code: (_c = this.workbenchInfo) === null || _c === void 0 ? void 0 : _c.workbench_code,
83
- app_code: (_d = this.appInfo) === null || _d === void 0 ? void 0 : _d.app_code,
84
- }));
85
- }
86
- }
87
- renderCsrfToken() {
88
- return `<script>window.__fatcmscsrftoken = "${this.fatcmscsrftoken}";</script>`;
89
- }
90
- renderUrlCsrfToken() {
91
- return `<script>window.__fatcmsUrlCsrfToken = "${this.urlcsrftoken}";</script>`;
92
- }
93
- renderUserInfo() {
94
- const userInfoClone = { ...this.userInfo };
95
- delete userInfoClone.privateKey;
96
- return `<script>window.__user_info = ${JSON.stringify(userInfoClone)} </script>`;
97
- }
98
- renderWorkbenchInfo() {
99
- const infoPick = _.pick(this.workbenchInfo, ['id', 'workbench_code', 'workbench_name', 'workbench_domain', 'workbench_desc', 'config_type', 'config_content']);
100
- return `<script>window.__workbench_info = ${JSON.stringify(infoPick)}</script>`;
101
- }
102
- renderAppInfo() {
103
- const infoPick = _.pick(this.appInfo, ['id', 'app_code', 'app_name', 'app_type', 'app_desc', 'config_type', 'config_content']);
104
- return `<script>window.__app_info = ${JSON.stringify(infoPick)}</script>`;
105
- }
106
- renderCookieInfo(keys) {
107
- try {
108
- const cookies = this.cookieInfo;
109
- const cookieObj = {};
110
- if (typeof keys === 'string') {
111
- const keyArr = keys.split(',');
112
- for (let i = 0; i < keyArr.length; i++) {
113
- const keyName = keyArr[i];
114
- cookieObj[keyName] = cookies[keyName];
115
- }
116
- }
117
- return `<script>window.__cookie_info = ${JSON.stringify(cookieObj)}</script>`;
118
- }
119
- catch (e) {
120
- return `<script>window.__cookie_info_error = ${e}; </script>`;
121
- }
122
- }
123
- renderJsAssets() {
124
- const fileList = this.fileList.filter(s => {
125
- return s.fileType === 'js' || s.fileUrl.endsWith('.js');
126
- });
127
- const arr = fileList.map(f => {
128
- if (f.isModule) {
129
- return `<script type="module" crossorigin src="${f.fileUrl}" ></script>`;
130
- }
131
- return `<script src="${f.fileUrl}" ></script>`;
132
- });
133
- return arr.join('\n');
134
- }
135
- renderCssAssets() {
136
- const fileList = this.fileList.filter(s => {
137
- return s.fileType === 'css' || s.fileUrl.endsWith('.css');
138
- });
139
- const fileUrlList = fileList.map(f => {
140
- return f.fileUrl;
141
- });
142
- const arr = fileUrlList.map(url => {
143
- return `<link href="${url}" rel="stylesheet" />`;
144
- });
145
- return arr.join('\n');
146
- }
147
- renderExtLocalLoaderPortByDevHeader() {
148
- const loaderPort = (0, fatcms_request_1.getExtLocalLoaderPort)(this.ctx);
149
- if (loaderPort && TypeUtils_1.TypeUtils.isNumeric(loaderPort)) {
150
- return `<script>window.__local_loader_port_from_dev_header = ${loaderPort}</script>`;
151
- }
152
- return '';
153
- }
154
- }
155
- function createRenderUtils(props) {
156
- return new RenderUtils(props);
157
- }
158
- exports.createRenderUtils = createRenderUtils;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRenderUtils = void 0;
4
+ const _ = require("lodash");
5
+ const moment = require("moment");
6
+ const functions_1 = require("./functions");
7
+ const fatcms_request_1 = require("./fatcms-request");
8
+ const TypeUtils_1 = require("../crud-pro/utils/TypeUtils");
9
+ function parseCookie(cookieStr) {
10
+ const cookies = {};
11
+ if (!cookieStr) {
12
+ return cookies;
13
+ }
14
+ // 分割每个 cookie 项
15
+ const cookieItems = cookieStr.split(';');
16
+ for (const item of cookieItems) {
17
+ // 去除空白字符
18
+ const trimmedItem = item.trim();
19
+ if (!trimmedItem) {
20
+ continue;
21
+ }
22
+ // 找到第一个等号的位置
23
+ const eqIndex = trimmedItem.indexOf('=');
24
+ if (eqIndex === -1) {
25
+ continue;
26
+ }
27
+ // 提取 key 和 value
28
+ const key = trimmedItem.substring(0, eqIndex).trim();
29
+ const value = trimmedItem.substring(eqIndex + 1).trim();
30
+ // 处理可能的引号
31
+ if (value.startsWith('"') && value.endsWith('"')) {
32
+ cookies[key] = value.slice(1, -1);
33
+ }
34
+ else {
35
+ cookies[key] = value;
36
+ }
37
+ }
38
+ return cookies;
39
+ }
40
+ function isMobileUserAgent(userAgent = '') {
41
+ // 空值处理
42
+ if (!userAgent)
43
+ return false;
44
+ // 转为小写统一匹配
45
+ const ua = userAgent.toLowerCase();
46
+ // 【核心】移动端关键词(覆盖主流系统)
47
+ const mobileKeywords = /android|iphone|ipod|ios|mobile|blackberry|iemobile|opera mini|windows phone|harmonyos/i;
48
+ // 【排除项】平板/PC关键词(避免误判)
49
+ const excludeKeywords = /ipad|tablet|playbook|kindle|pc|windows nt|macintosh|linux x86_64/i;
50
+ // 判断规则:包含移动端关键词 + 不包含排除项关键词
51
+ const isMatchMobile = mobileKeywords.test(ua);
52
+ const isExclude = excludeKeywords.test(ua);
53
+ return isMatchMobile && !isExclude;
54
+ }
55
+ class RenderUtils {
56
+ constructor(props) {
57
+ var _a, _b, _c, _d;
58
+ this.ctx = props.ctx;
59
+ const query = ((_a = props.ctx) === null || _a === void 0 ? void 0 : _a.query) || {};
60
+ const headers = ((_b = props.ctx) === null || _b === void 0 ? void 0 : _b.headers) || {};
61
+ this.workbenchInfo = props.workbenchInfo || {};
62
+ this.userInfo = props.userInfo || {};
63
+ this.appInfo = props.appInfo || {};
64
+ this.fatcmscsrftoken = props.fatcmscsrftoken;
65
+ this.urlcsrftoken = props.urlcsrftoken;
66
+ this.cookieInfo = parseCookie(headers === null || headers === void 0 ? void 0 : headers.cookie);
67
+ this.isMobileUserAgent = isMobileUserAgent(headers['user-agent'] || '');
68
+ this.isMobileByQuery = `${query['__is_mobile_request__']}` === 'true';
69
+ const packageAssets = (0, functions_1.parseJsonObject)(props.package_assets) || {};
70
+ const fileList = _.get(packageAssets, 'data.fileList');
71
+ if (Array.isArray(fileList)) {
72
+ this.fileList = fileList.filter(f => {
73
+ return f && f.fileUrl && typeof f.fileUrl === 'string' && f.fileUrl.length > 5; // 至少五个字符。
74
+ });
75
+ }
76
+ else {
77
+ this.fileList = [];
78
+ const time = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
79
+ console.info(time +
80
+ ' 解析fileList为空==>' +
81
+ JSON.stringify({
82
+ workbench_code: (_c = this.workbenchInfo) === null || _c === void 0 ? void 0 : _c.workbench_code,
83
+ app_code: (_d = this.appInfo) === null || _d === void 0 ? void 0 : _d.app_code,
84
+ }));
85
+ }
86
+ }
87
+ renderCsrfToken() {
88
+ return `<script>window.__fatcmscsrftoken = "${this.fatcmscsrftoken}";</script>`;
89
+ }
90
+ renderUrlCsrfToken() {
91
+ return `<script>window.__fatcmsUrlCsrfToken = "${this.urlcsrftoken}";</script>`;
92
+ }
93
+ renderUserInfo() {
94
+ const userInfoClone = { ...this.userInfo };
95
+ delete userInfoClone.privateKey;
96
+ return `<script>window.__user_info = ${JSON.stringify(userInfoClone)} </script>`;
97
+ }
98
+ renderWorkbenchInfo() {
99
+ const infoPick = _.pick(this.workbenchInfo, ['id', 'workbench_code', 'workbench_name', 'workbench_domain', 'workbench_desc', 'config_type', 'config_content']);
100
+ return `<script>window.__workbench_info = ${JSON.stringify(infoPick)}</script>`;
101
+ }
102
+ renderAppInfo() {
103
+ const infoPick = _.pick(this.appInfo, ['id', 'app_code', 'app_name', 'app_type', 'app_desc', 'config_type', 'config_content']);
104
+ return `<script>window.__app_info = ${JSON.stringify(infoPick)}</script>`;
105
+ }
106
+ renderCookieInfo(keys) {
107
+ try {
108
+ const cookies = this.cookieInfo;
109
+ const cookieObj = {};
110
+ if (typeof keys === 'string') {
111
+ const keyArr = keys.split(',');
112
+ for (let i = 0; i < keyArr.length; i++) {
113
+ const keyName = keyArr[i];
114
+ cookieObj[keyName] = cookies[keyName];
115
+ }
116
+ }
117
+ return `<script>window.__cookie_info = ${JSON.stringify(cookieObj)}</script>`;
118
+ }
119
+ catch (e) {
120
+ return `<script>window.__cookie_info_error = ${e}; </script>`;
121
+ }
122
+ }
123
+ renderJsAssets() {
124
+ const fileList = this.fileList.filter(s => {
125
+ return s.fileType === 'js' || s.fileUrl.endsWith('.js');
126
+ });
127
+ const arr = fileList.map(f => {
128
+ if (f.isModule) {
129
+ return `<script type="module" crossorigin src="${f.fileUrl}" ></script>`;
130
+ }
131
+ return `<script src="${f.fileUrl}" ></script>`;
132
+ });
133
+ return arr.join('\n');
134
+ }
135
+ renderCssAssets() {
136
+ const fileList = this.fileList.filter(s => {
137
+ return s.fileType === 'css' || s.fileUrl.endsWith('.css');
138
+ });
139
+ const fileUrlList = fileList.map(f => {
140
+ return f.fileUrl;
141
+ });
142
+ const arr = fileUrlList.map(url => {
143
+ return `<link href="${url}" rel="stylesheet" />`;
144
+ });
145
+ return arr.join('\n');
146
+ }
147
+ renderExtLocalLoaderPortByDevHeader() {
148
+ const loaderPort = (0, fatcms_request_1.getExtLocalLoaderPort)(this.ctx);
149
+ if (loaderPort && TypeUtils_1.TypeUtils.isNumeric(loaderPort)) {
150
+ return `<script>window.__local_loader_port_from_dev_header = ${loaderPort}</script>`;
151
+ }
152
+ return '';
153
+ }
154
+ }
155
+ function createRenderUtils(props) {
156
+ return new RenderUtils(props);
157
+ }
158
+ exports.createRenderUtils = createRenderUtils;
@@ -1,74 +1,74 @@
1
- import { IMiddleware } from '@midwayjs/core';
2
- import { NextFunction, Context } from '@midwayjs/koa';
3
- /**
4
- * 安全防护中间件 - 黑名单路径拦截
5
- *
6
- * 核心职责:
7
- * 1. 防御恶意爬虫:拦截常见的配置文件探测请求(.env、config.json等)
8
- * 2. 防御漏洞扫描:阻止安全扫描工具对敏感目录的探测(.git、.aws等)
9
- * 3. 防御自动化攻击:拦截针对WordPress、PHP等常见CMS的攻击路径
10
- * 4. 防御路径遍历:检测并阻止 ../ 等路径遍历攻击尝试
11
- * 5. 识别攻击工具:检测User-Agent中的sqlmap、nikto等渗透测试工具
12
- * 6. 性能优化:提前拦截无效请求,避免进入业务逻辑层消耗资源
13
- *
14
- * 应用场景:
15
- * - 公网暴露的Web应用:防止自动化工具批量扫描敏感路径
16
- * - 云原生部署环境:保护云服务配置文件不被探测(.aws、.env等)
17
- * - 多技术栈迁移:新系统可能残留旧技术栈痕迹,统一拦截避免误暴露
18
- * - 安全合规要求:主动防御已知的常见攻击路径,降低安全风险
19
- *
20
- * 拦截策略:
21
- * - User-Agent检测:识别常见扫描工具(sqlmap, nikto, nmap, metasploit等)
22
- * - 路径遍历检测:阻止 ../, ..\, %2e%2e%2f 等编码后的遍历尝试
23
- * - 精确匹配:config.json、.env、application.yml等配置文件
24
- * - 前缀匹配:.git/、.svn/、.aws/等版本控制和云服务目录
25
- * - 模糊匹配:wp-admin、wp-content等WordPress相关路径
26
- * - 后缀匹配:.php/.jsp/.asp等脚本文件、.bak/.sql等敏感文件
27
- *
28
- * 防御能力增强:
29
- * - 支持30+种敏感配置文件拦截
30
- * - 支持50+种敏感目录前缀拦截
31
- * - 支持40+种危险文件后缀拦截
32
- * - 支持10+种常见攻击工具识别
33
- *
34
- * 注意事项:
35
- * 此中间件拦截的路径在实际项目中并不存在,仅为安全防护层。
36
- * 被拦截的请求会立即返回404,不会进入后续业务逻辑。
37
- */
38
- export declare class ForbiddenMiddleware implements IMiddleware<Context, NextFunction> {
39
- /**
40
- * 匹配规则:判断请求路径是否在黑名单中
41
- * @param ctx Koa上下文
42
- * @returns true表示需要拦截,false表示放行
43
- */
44
- match(ctx: Context): boolean;
45
- /**
46
- * 检查是否为白名单路径
47
- */
48
- private isWhiteListPath;
49
- /**
50
- * 精确匹配:配置文件路径
51
- */
52
- private isExactMatch;
53
- /**
54
- * 前缀匹配:敏感目录
55
- */
56
- private isPrefixMatch;
57
- /**
58
- * 模糊匹配:WordPress路径、危险文件后缀
59
- */
60
- private isFuzzyMatch;
61
- /**
62
- * 检查是否为可疑的User-Agent(扫描工具、渗透测试工具)
63
- */
64
- private isSuspiciousUserAgent;
65
- /**
66
- * 检查是否包含路径遍历政击特征
67
- */
68
- private hasPathTraversal;
69
- /**
70
- * 拦截处理:返回404响应
71
- */
72
- resolve(): (ctx: Context, next: NextFunction) => Promise<void>;
73
- static getName(): string;
74
- }
1
+ import { IMiddleware } from '@midwayjs/core';
2
+ import { NextFunction, Context } from '@midwayjs/koa';
3
+ /**
4
+ * 安全防护中间件 - 黑名单路径拦截
5
+ *
6
+ * 核心职责:
7
+ * 1. 防御恶意爬虫:拦截常见的配置文件探测请求(.env、config.json等)
8
+ * 2. 防御漏洞扫描:阻止安全扫描工具对敏感目录的探测(.git、.aws等)
9
+ * 3. 防御自动化攻击:拦截针对WordPress、PHP等常见CMS的攻击路径
10
+ * 4. 防御路径遍历:检测并阻止 ../ 等路径遍历攻击尝试
11
+ * 5. 识别攻击工具:检测User-Agent中的sqlmap、nikto等渗透测试工具
12
+ * 6. 性能优化:提前拦截无效请求,避免进入业务逻辑层消耗资源
13
+ *
14
+ * 应用场景:
15
+ * - 公网暴露的Web应用:防止自动化工具批量扫描敏感路径
16
+ * - 云原生部署环境:保护云服务配置文件不被探测(.aws、.env等)
17
+ * - 多技术栈迁移:新系统可能残留旧技术栈痕迹,统一拦截避免误暴露
18
+ * - 安全合规要求:主动防御已知的常见攻击路径,降低安全风险
19
+ *
20
+ * 拦截策略:
21
+ * - User-Agent检测:识别常见扫描工具(sqlmap, nikto, nmap, metasploit等)
22
+ * - 路径遍历检测:阻止 ../, ..\, %2e%2e%2f 等编码后的遍历尝试
23
+ * - 精确匹配:config.json、.env、application.yml等配置文件
24
+ * - 前缀匹配:.git/、.svn/、.aws/等版本控制和云服务目录
25
+ * - 模糊匹配:wp-admin、wp-content等WordPress相关路径
26
+ * - 后缀匹配:.php/.jsp/.asp等脚本文件、.bak/.sql等敏感文件
27
+ *
28
+ * 防御能力增强:
29
+ * - 支持30+种敏感配置文件拦截
30
+ * - 支持50+种敏感目录前缀拦截
31
+ * - 支持40+种危险文件后缀拦截
32
+ * - 支持10+种常见攻击工具识别
33
+ *
34
+ * 注意事项:
35
+ * 此中间件拦截的路径在实际项目中并不存在,仅为安全防护层。
36
+ * 被拦截的请求会立即返回404,不会进入后续业务逻辑。
37
+ */
38
+ export declare class ForbiddenMiddleware implements IMiddleware<Context, NextFunction> {
39
+ /**
40
+ * 匹配规则:判断请求路径是否在黑名单中
41
+ * @param ctx Koa上下文
42
+ * @returns true表示需要拦截,false表示放行
43
+ */
44
+ match(ctx: Context): boolean;
45
+ /**
46
+ * 检查是否为白名单路径
47
+ */
48
+ private isWhiteListPath;
49
+ /**
50
+ * 精确匹配:配置文件路径
51
+ */
52
+ private isExactMatch;
53
+ /**
54
+ * 前缀匹配:敏感目录
55
+ */
56
+ private isPrefixMatch;
57
+ /**
58
+ * 模糊匹配:WordPress路径、危险文件后缀
59
+ */
60
+ private isFuzzyMatch;
61
+ /**
62
+ * 检查是否为可疑的User-Agent(扫描工具、渗透测试工具)
63
+ */
64
+ private isSuspiciousUserAgent;
65
+ /**
66
+ * 检查是否包含路径遍历政击特征
67
+ */
68
+ private hasPathTraversal;
69
+ /**
70
+ * 拦截处理:返回404响应
71
+ */
72
+ resolve(): (ctx: Context, next: NextFunction) => Promise<void>;
73
+ static getName(): string;
74
+ }