filecat 5.32.2 → 5.34.0

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 (361) hide show
  1. package/README.md +4 -0
  2. package/build/dist/325.38c4e7ae26722532128b.js +2 -0
  3. package/build/dist/377.e76765d911fff4b869ca.js +2 -0
  4. package/build/dist/584.221a52cee9ef0da9cbed.js +2 -0
  5. package/build/dist/654.d1d409e5d29f59920071.js +1 -0
  6. package/build/dist/661.e178f121f1ab48042080.js +2 -0
  7. package/build/dist/{943.d055d58eee66f1ab0414.js → 943.a4ab415e3902e7c1ef59.js} +2 -2
  8. package/build/dist/index.html +1 -1
  9. package/build/dist/main.c4f75ef0d08185dc8a49.js +2 -0
  10. package/build/jieba_rs_wasm_bg.wasm +0 -0
  11. package/build/main.js +2 -0
  12. package/build/main.js.LICENSE.txt +445 -0
  13. package/build/unrar.wasm +0 -0
  14. package/package.json +2 -2
  15. package/build/dist/325.cebabea5cc1b75a2fd96.js +0 -2
  16. package/build/dist/377.4047ae540e74884d3ff5.js +0 -2
  17. package/build/dist/584.d402a562c450dd79b543.js +0 -2
  18. package/build/dist/654.43ec0dfba2da4a2261dc.js +0 -1
  19. package/build/dist/661.d169e2fe7193a840d43a.js +0 -2
  20. package/build/dist/main.494c8bcf15274aeca600.js +0 -2
  21. package/build/server/common/DataUtil.js +0 -7
  22. package/build/server/common/DataUtil.js.map +0 -1
  23. package/build/server/common/FileMenuType.js +0 -48
  24. package/build/server/common/FileMenuType.js.map +0 -1
  25. package/build/server/common/ListUtil.js +0 -224
  26. package/build/server/common/ListUtil.js.map +0 -1
  27. package/build/server/common/Result.pojo.js +0 -15
  28. package/build/server/common/Result.pojo.js.map +0 -1
  29. package/build/server/common/RouterConfig.js +0 -20
  30. package/build/server/common/RouterConfig.js.map +0 -1
  31. package/build/server/common/StringUtil.js +0 -223
  32. package/build/server/common/StringUtil.js.map +0 -1
  33. package/build/server/common/ValueUtil.js +0 -70
  34. package/build/server/common/ValueUtil.js.map +0 -1
  35. package/build/server/common/common.util.js +0 -32
  36. package/build/server/common/common.util.js.map +0 -1
  37. package/build/server/common/event.js +0 -48
  38. package/build/server/common/event.js.map +0 -1
  39. package/build/server/common/file.pojo.js +0 -65
  40. package/build/server/common/file.pojo.js.map +0 -1
  41. package/build/server/common/frame/WsData.js +0 -127
  42. package/build/server/common/frame/WsData.js.map +0 -1
  43. package/build/server/common/frame/constant.js +0 -6
  44. package/build/server/common/frame/constant.js.map +0 -1
  45. package/build/server/common/frame/data.encode.js +0 -115
  46. package/build/server/common/frame/data.encode.js.map +0 -1
  47. package/build/server/common/frame/router.js +0 -25
  48. package/build/server/common/frame/router.js.map +0 -1
  49. package/build/server/common/frame/ws.client.js +0 -173
  50. package/build/server/common/frame/ws.client.js.map +0 -1
  51. package/build/server/common/frame/ws.server.js +0 -145
  52. package/build/server/common/frame/ws.server.js.map +0 -1
  53. package/build/server/common/fun.util.js +0 -65
  54. package/build/server/common/fun.util.js.map +0 -1
  55. package/build/server/common/node/Env.js +0 -198
  56. package/build/server/common/node/Env.js.map +0 -1
  57. package/build/server/common/node/childProcessUtil.js +0 -209
  58. package/build/server/common/node/childProcessUtil.js.map +0 -1
  59. package/build/server/common/node/findPort.js +0 -38
  60. package/build/server/common/node/findPort.js.map +0 -1
  61. package/build/server/common/node/http.js +0 -38
  62. package/build/server/common/node/http.js.map +0 -1
  63. package/build/server/common/node/install.js +0 -132
  64. package/build/server/common/node/install.js.map +0 -1
  65. package/build/server/common/node/value.util.js +0 -8
  66. package/build/server/common/node/value.util.js.map +0 -1
  67. package/build/server/common/path_util.js +0 -86
  68. package/build/server/common/path_util.js.map +0 -1
  69. package/build/server/common/req/common.pojo.js +0 -42
  70. package/build/server/common/req/common.pojo.js.map +0 -1
  71. package/build/server/common/req/customerRouter.pojo.js +0 -9
  72. package/build/server/common/req/customerRouter.pojo.js.map +0 -1
  73. package/build/server/common/req/data.pojo.js +0 -3
  74. package/build/server/common/req/data.pojo.js.map +0 -1
  75. package/build/server/common/req/ddns.pojo.js +0 -39
  76. package/build/server/common/req/ddns.pojo.js.map +0 -1
  77. package/build/server/common/req/file.req.js +0 -49
  78. package/build/server/common/req/file.req.js.map +0 -1
  79. package/build/server/common/req/http_controller_router.js +0 -13
  80. package/build/server/common/req/http_controller_router.js.map +0 -1
  81. package/build/server/common/req/net.pojo.js +0 -71
  82. package/build/server/common/req/net.pojo.js.map +0 -1
  83. package/build/server/common/req/setting.req.js +0 -140
  84. package/build/server/common/req/setting.req.js.map +0 -1
  85. package/build/server/common/req/ssh.pojo.js +0 -13
  86. package/build/server/common/req/ssh.pojo.js.map +0 -1
  87. package/build/server/common/req/sys.pojo.js +0 -29
  88. package/build/server/common/req/sys.pojo.js.map +0 -1
  89. package/build/server/common/req/user.req.js +0 -117
  90. package/build/server/common/req/user.req.js.map +0 -1
  91. package/build/server/common/word_detection_js.js +0 -142
  92. package/build/server/common/word_detection_js.js.map +0 -1
  93. package/build/server/main/domain/ai_agent/ai_agent.constant.js +0 -142
  94. package/build/server/main/domain/ai_agent/ai_agent.constant.js.map +0 -1
  95. package/build/server/main/domain/ai_agent/ai_agent.controller.js +0 -136
  96. package/build/server/main/domain/ai_agent/ai_agent.controller.js.map +0 -1
  97. package/build/server/main/domain/ai_agent/ai_agent.service.js +0 -715
  98. package/build/server/main/domain/ai_agent/ai_agent.service.js.map +0 -1
  99. package/build/server/main/domain/ai_agent/ai_agent.tools.js +0 -79
  100. package/build/server/main/domain/ai_agent/ai_agent.tools.js.map +0 -1
  101. package/build/server/main/domain/ai_agent/ai_agent.worker.js +0 -169
  102. package/build/server/main/domain/ai_agent/ai_agent.worker.js.map +0 -1
  103. package/build/server/main/domain/bin/bin.file.util.js +0 -109
  104. package/build/server/main/domain/bin/bin.file.util.js.map +0 -1
  105. package/build/server/main/domain/bin/bin.js +0 -147
  106. package/build/server/main/domain/bin/bin.js.map +0 -1
  107. package/build/server/main/domain/bin/get_bin_dependency.js +0 -36
  108. package/build/server/main/domain/bin/get_bin_dependency.js.map +0 -1
  109. package/build/server/main/domain/crypto/crypto.controller.js +0 -50
  110. package/build/server/main/domain/crypto/crypto.controller.js.map +0 -1
  111. package/build/server/main/domain/crypto/crypto.service.js +0 -112
  112. package/build/server/main/domain/crypto/crypto.service.js.map +0 -1
  113. package/build/server/main/domain/data/DataUtil.js +0 -127
  114. package/build/server/main/domain/data/DataUtil.js.map +0 -1
  115. package/build/server/main/domain/data/basedata/base_data_util.js +0 -214
  116. package/build/server/main/domain/data/basedata/base_data_util.js.map +0 -1
  117. package/build/server/main/domain/data/data_type.js +0 -92
  118. package/build/server/main/domain/data/data_type.js.map +0 -1
  119. package/build/server/main/domain/ddns/ddns.ali.server.js +0 -77
  120. package/build/server/main/domain/ddns/ddns.ali.server.js.map +0 -1
  121. package/build/server/main/domain/ddns/ddns.controller.js +0 -88
  122. package/build/server/main/domain/ddns/ddns.controller.js.map +0 -1
  123. package/build/server/main/domain/ddns/ddns.dnspod.service.js +0 -102
  124. package/build/server/main/domain/ddns/ddns.dnspod.service.js.map +0 -1
  125. package/build/server/main/domain/ddns/ddns.pre.js +0 -104
  126. package/build/server/main/domain/ddns/ddns.pre.js.map +0 -1
  127. package/build/server/main/domain/ddns/ddns.service.js +0 -161
  128. package/build/server/main/domain/ddns/ddns.service.js.map +0 -1
  129. package/build/server/main/domain/ddns/ddns.tengxun.service.js +0 -46
  130. package/build/server/main/domain/ddns/ddns.tengxun.service.js.map +0 -1
  131. package/build/server/main/domain/ddns/tx/abstract_client.js +0 -247
  132. package/build/server/main/domain/ddns/tx/abstract_client.js.map +0 -1
  133. package/build/server/main/domain/ddns/tx/dnspod_client.js +0 -38
  134. package/build/server/main/domain/ddns/tx/dnspod_client.js.map +0 -1
  135. package/build/server/main/domain/ddns/tx/dnspod_models.js +0 -3
  136. package/build/server/main/domain/ddns/tx/dnspod_models.js.map +0 -1
  137. package/build/server/main/domain/ddns/tx/exception/tencent_cloud_sdk_exception.js +0 -38
  138. package/build/server/main/domain/ddns/tx/exception/tencent_cloud_sdk_exception.js.map +0 -1
  139. package/build/server/main/domain/ddns/tx/http/fetch.js +0 -3
  140. package/build/server/main/domain/ddns/tx/http/fetch.js.map +0 -1
  141. package/build/server/main/domain/ddns/tx/http/http_connection.js +0 -181
  142. package/build/server/main/domain/ddns/tx/http/http_connection.js.map +0 -1
  143. package/build/server/main/domain/ddns/tx/interface.js +0 -5
  144. package/build/server/main/domain/ddns/tx/interface.js.map +0 -1
  145. package/build/server/main/domain/ddns/tx/sdk_version.js +0 -5
  146. package/build/server/main/domain/ddns/tx/sdk_version.js.map +0 -1
  147. package/build/server/main/domain/ddns/tx/sign.js +0 -142
  148. package/build/server/main/domain/ddns/tx/sign.js.map +0 -1
  149. package/build/server/main/domain/ddns/tx/sse_response_model.js +0 -89
  150. package/build/server/main/domain/ddns/tx/sse_response_model.js.map +0 -1
  151. package/build/server/main/domain/file/FileUtil.js +0 -230
  152. package/build/server/main/domain/file/FileUtil.js.map +0 -1
  153. package/build/server/main/domain/file/file.compress.js +0 -246
  154. package/build/server/main/domain/file/file.compress.js.map +0 -1
  155. package/build/server/main/domain/file/file.controller.js +0 -450
  156. package/build/server/main/domain/file/file.controller.js.map +0 -1
  157. package/build/server/main/domain/file/file.service.js +0 -1276
  158. package/build/server/main/domain/file/file.service.js.map +0 -1
  159. package/build/server/main/domain/file/search/file.search.js +0 -78
  160. package/build/server/main/domain/file/search/file.search.js.map +0 -1
  161. package/build/server/main/domain/file/search/file.search.worker.js +0 -107
  162. package/build/server/main/domain/file/search/file.search.worker.js.map +0 -1
  163. package/build/server/main/domain/file/search/file.type.js +0 -3
  164. package/build/server/main/domain/file/search/file.type.js.map +0 -1
  165. package/build/server/main/domain/file/workflow/workflow.process.js +0 -100
  166. package/build/server/main/domain/file/workflow/workflow.process.js.map +0 -1
  167. package/build/server/main/domain/file/workflow/workflow.service.js +0 -659
  168. package/build/server/main/domain/file/workflow/workflow.service.js.map +0 -1
  169. package/build/server/main/domain/file/workflow/workflow.util.js +0 -111
  170. package/build/server/main/domain/file/workflow/workflow.util.js.map +0 -1
  171. package/build/server/main/domain/navindex/navindex.controller.js +0 -73
  172. package/build/server/main/domain/navindex/navindex.controller.js.map +0 -1
  173. package/build/server/main/domain/net/net.controller.js +0 -318
  174. package/build/server/main/domain/net/net.controller.js.map +0 -1
  175. package/build/server/main/domain/net/net.datautil.js +0 -8
  176. package/build/server/main/domain/net/net.datautil.js.map +0 -1
  177. package/build/server/main/domain/net/net.service.js +0 -627
  178. package/build/server/main/domain/net/net.service.js.map +0 -1
  179. package/build/server/main/domain/net/tcp.forward.client.service.js +0 -223
  180. package/build/server/main/domain/net/tcp.forward.client.service.js.map +0 -1
  181. package/build/server/main/domain/net/tcp.forward.controller.js +0 -482
  182. package/build/server/main/domain/net/tcp.forward.controller.js.map +0 -1
  183. package/build/server/main/domain/net/tcp.forward.server.service.js +0 -407
  184. package/build/server/main/domain/net/tcp.forward.server.service.js.map +0 -1
  185. package/build/server/main/domain/net/type.js +0 -3
  186. package/build/server/main/domain/net/type.js.map +0 -1
  187. package/build/server/main/domain/net/util/NetClientUtil.js +0 -76
  188. package/build/server/main/domain/net/util/NetClientUtil.js.map +0 -1
  189. package/build/server/main/domain/net/util/NetServerUtil.js +0 -128
  190. package/build/server/main/domain/net/util/NetServerUtil.js.map +0 -1
  191. package/build/server/main/domain/net/util/NetUtil.js +0 -187
  192. package/build/server/main/domain/net/util/NetUtil.js.map +0 -1
  193. package/build/server/main/domain/net/util/tcp.client.js +0 -211
  194. package/build/server/main/domain/net/util/tcp.client.js.map +0 -1
  195. package/build/server/main/domain/net/util/tcp_stream_util.js +0 -69
  196. package/build/server/main/domain/net/util/tcp_stream_util.js.map +0 -1
  197. package/build/server/main/domain/net/util/type.js +0 -3
  198. package/build/server/main/domain/net/util/type.js.map +0 -1
  199. package/build/server/main/domain/net/virtual/tcp_proxy.js +0 -125
  200. package/build/server/main/domain/net/virtual/tcp_proxy.js.map +0 -1
  201. package/build/server/main/domain/net/virtual/virtual.client.service.js +0 -402
  202. package/build/server/main/domain/net/virtual/virtual.client.service.js.map +0 -1
  203. package/build/server/main/domain/net/virtual/virtual.controller.js +0 -211
  204. package/build/server/main/domain/net/virtual/virtual.controller.js.map +0 -1
  205. package/build/server/main/domain/net/virtual/virtual.server.service.js +0 -72
  206. package/build/server/main/domain/net/virtual/virtual.server.service.js.map +0 -1
  207. package/build/server/main/domain/pre/lifeRecordService.js +0 -79
  208. package/build/server/main/domain/pre/lifeRecordService.js.map +0 -1
  209. package/build/server/main/domain/rdp/lib/asn1/ber.js +0 -66
  210. package/build/server/main/domain/rdp/lib/asn1/ber.js.map +0 -1
  211. package/build/server/main/domain/rdp/lib/asn1/index.js +0 -9
  212. package/build/server/main/domain/rdp/lib/asn1/index.js.map +0 -1
  213. package/build/server/main/domain/rdp/lib/asn1/spec.js +0 -56
  214. package/build/server/main/domain/rdp/lib/asn1/spec.js.map +0 -1
  215. package/build/server/main/domain/rdp/lib/asn1/univ.js +0 -315
  216. package/build/server/main/domain/rdp/lib/asn1/univ.js.map +0 -1
  217. package/build/server/main/domain/rdp/lib/core/error.js +0 -25
  218. package/build/server/main/domain/rdp/lib/core/error.js.map +0 -1
  219. package/build/server/main/domain/rdp/lib/core/index.js +0 -13
  220. package/build/server/main/domain/rdp/lib/core/index.js.map +0 -1
  221. package/build/server/main/domain/rdp/lib/core/layer.js +0 -135
  222. package/build/server/main/domain/rdp/lib/core/layer.js.map +0 -1
  223. package/build/server/main/domain/rdp/lib/core/log.js +0 -25
  224. package/build/server/main/domain/rdp/lib/core/log.js.map +0 -1
  225. package/build/server/main/domain/rdp/lib/core/rle.js +0 -22699
  226. package/build/server/main/domain/rdp/lib/core/rle.js.map +0 -1
  227. package/build/server/main/domain/rdp/lib/core/type.js +0 -245
  228. package/build/server/main/domain/rdp/lib/core/type.js.map +0 -1
  229. package/build/server/main/domain/rdp/lib/index.js +0 -6
  230. package/build/server/main/domain/rdp/lib/index.js.map +0 -1
  231. package/build/server/main/domain/rdp/lib/protocol/cert.js +0 -115
  232. package/build/server/main/domain/rdp/lib/protocol/cert.js.map +0 -1
  233. package/build/server/main/domain/rdp/lib/protocol/index.js +0 -11
  234. package/build/server/main/domain/rdp/lib/protocol/index.js.map +0 -1
  235. package/build/server/main/domain/rdp/lib/protocol/nla.js +0 -549
  236. package/build/server/main/domain/rdp/lib/protocol/nla.js.map +0 -1
  237. package/build/server/main/domain/rdp/lib/protocol/pdu/caps.js +0 -486
  238. package/build/server/main/domain/rdp/lib/protocol/pdu/caps.js.map +0 -1
  239. package/build/server/main/domain/rdp/lib/protocol/pdu/cliprdr.js +0 -167
  240. package/build/server/main/domain/rdp/lib/protocol/pdu/cliprdr.js.map +0 -1
  241. package/build/server/main/domain/rdp/lib/protocol/pdu/data.js +0 -876
  242. package/build/server/main/domain/rdp/lib/protocol/pdu/data.js.map +0 -1
  243. package/build/server/main/domain/rdp/lib/protocol/pdu/global.js +0 -260
  244. package/build/server/main/domain/rdp/lib/protocol/pdu/global.js.map +0 -1
  245. package/build/server/main/domain/rdp/lib/protocol/pdu/index.js +0 -13
  246. package/build/server/main/domain/rdp/lib/protocol/pdu/index.js.map +0 -1
  247. package/build/server/main/domain/rdp/lib/protocol/pdu/lic.js +0 -199
  248. package/build/server/main/domain/rdp/lib/protocol/pdu/lic.js.map +0 -1
  249. package/build/server/main/domain/rdp/lib/protocol/pdu/sec.js +0 -333
  250. package/build/server/main/domain/rdp/lib/protocol/pdu/sec.js.map +0 -1
  251. package/build/server/main/domain/rdp/lib/protocol/rdp.js +0 -255
  252. package/build/server/main/domain/rdp/lib/protocol/rdp.js.map +0 -1
  253. package/build/server/main/domain/rdp/lib/protocol/t125/gcc.js +0 -354
  254. package/build/server/main/domain/rdp/lib/protocol/t125/gcc.js.map +0 -1
  255. package/build/server/main/domain/rdp/lib/protocol/t125/index.js +0 -7
  256. package/build/server/main/domain/rdp/lib/protocol/t125/index.js.map +0 -1
  257. package/build/server/main/domain/rdp/lib/protocol/t125/mcs.js +0 -318
  258. package/build/server/main/domain/rdp/lib/protocol/t125/mcs.js.map +0 -1
  259. package/build/server/main/domain/rdp/lib/protocol/t125/per.js +0 -188
  260. package/build/server/main/domain/rdp/lib/protocol/t125/per.js.map +0 -1
  261. package/build/server/main/domain/rdp/lib/protocol/tpkt.js +0 -94
  262. package/build/server/main/domain/rdp/lib/protocol/tpkt.js.map +0 -1
  263. package/build/server/main/domain/rdp/lib/protocol/x224.js +0 -207
  264. package/build/server/main/domain/rdp/lib/protocol/x224.js.map +0 -1
  265. package/build/server/main/domain/rdp/lib/security/index.js +0 -7
  266. package/build/server/main/domain/rdp/lib/security/index.js.map +0 -1
  267. package/build/server/main/domain/rdp/lib/security/jsbn.js +0 -1372
  268. package/build/server/main/domain/rdp/lib/security/jsbn.js.map +0 -1
  269. package/build/server/main/domain/rdp/lib/security/md4.js +0 -401
  270. package/build/server/main/domain/rdp/lib/security/md4.js.map +0 -1
  271. package/build/server/main/domain/rdp/lib/security/rc4.js +0 -45
  272. package/build/server/main/domain/rdp/lib/security/rc4.js.map +0 -1
  273. package/build/server/main/domain/rdp/lib/security/rsa.js +0 -15
  274. package/build/server/main/domain/rdp/lib/security/rsa.js.map +0 -1
  275. package/build/server/main/domain/rdp/lib/security/x509.js +0 -106
  276. package/build/server/main/domain/rdp/lib/security/x509.js.map +0 -1
  277. package/build/server/main/domain/rdp/rdp.controller.js +0 -116
  278. package/build/server/main/domain/rdp/rdp.controller.js.map +0 -1
  279. package/build/server/main/domain/rdp/rdp.service.js +0 -117
  280. package/build/server/main/domain/rdp/rdp.service.js.map +0 -1
  281. package/build/server/main/domain/setting/setting.controller.js +0 -621
  282. package/build/server/main/domain/setting/setting.controller.js.map +0 -1
  283. package/build/server/main/domain/setting/setting.prefile.js +0 -69
  284. package/build/server/main/domain/setting/setting.prefile.js.map +0 -1
  285. package/build/server/main/domain/setting/setting.service.js +0 -763
  286. package/build/server/main/domain/setting/setting.service.js.map +0 -1
  287. package/build/server/main/domain/shell/shell.controller.js +0 -92
  288. package/build/server/main/domain/shell/shell.controller.js.map +0 -1
  289. package/build/server/main/domain/shell/shell.service.js +0 -448
  290. package/build/server/main/domain/shell/shell.service.js.map +0 -1
  291. package/build/server/main/domain/shell/util.js +0 -101
  292. package/build/server/main/domain/shell/util.js.map +0 -1
  293. package/build/server/main/domain/ssh/ssh.controller.js +0 -203
  294. package/build/server/main/domain/ssh/ssh.controller.js.map +0 -1
  295. package/build/server/main/domain/ssh/ssh.service.js +0 -238
  296. package/build/server/main/domain/ssh/ssh.service.js.map +0 -1
  297. package/build/server/main/domain/ssh/ssh.ssh2.js +0 -217
  298. package/build/server/main/domain/ssh/ssh.ssh2.js.map +0 -1
  299. package/build/server/main/domain/sys/sys.controller.js +0 -374
  300. package/build/server/main/domain/sys/sys.controller.js.map +0 -1
  301. package/build/server/main/domain/sys/sys.docker.service.js +0 -339
  302. package/build/server/main/domain/sys/sys.docker.service.js.map +0 -1
  303. package/build/server/main/domain/sys/sys.process.service.js +0 -218
  304. package/build/server/main/domain/sys/sys.process.service.js.map +0 -1
  305. package/build/server/main/domain/sys/sys.service.js +0 -85
  306. package/build/server/main/domain/sys/sys.service.js.map +0 -1
  307. package/build/server/main/domain/sys/sys.sys.service.js +0 -206
  308. package/build/server/main/domain/sys/sys.sys.service.js.map +0 -1
  309. package/build/server/main/domain/sys/sys.systemd.service.js +0 -276
  310. package/build/server/main/domain/sys/sys.systemd.service.js.map +0 -1
  311. package/build/server/main/domain/sys/sys.utl.js +0 -42
  312. package/build/server/main/domain/sys/sys.utl.js.map +0 -1
  313. package/build/server/main/domain/user/user.controller.js +0 -277
  314. package/build/server/main/domain/user/user.controller.js.map +0 -1
  315. package/build/server/main/domain/user/user.hash.js +0 -8
  316. package/build/server/main/domain/user/user.hash.js.map +0 -1
  317. package/build/server/main/domain/user/user.service.js +0 -584
  318. package/build/server/main/domain/user/user.service.js.map +0 -1
  319. package/build/server/main/domain/video/video.controller.js +0 -71
  320. package/build/server/main/domain/video/video.controller.js.map +0 -1
  321. package/build/server/main/domain/video/video.service.js +0 -45
  322. package/build/server/main/domain/video/video.service.js.map +0 -1
  323. package/build/server/main/main.js +0 -171
  324. package/build/server/main/main.js.map +0 -1
  325. package/build/server/main/other/Result.js +0 -25
  326. package/build/server/main/other/Result.js.map +0 -1
  327. package/build/server/main/other/cache.js +0 -50
  328. package/build/server/main/other/cache.js.map +0 -1
  329. package/build/server/main/other/config.js +0 -6
  330. package/build/server/main/other/config.js.map +0 -1
  331. package/build/server/main/other/middleware/AuthMiddleware.js +0 -101
  332. package/build/server/main/other/middleware/AuthMiddleware.js.map +0 -1
  333. package/build/server/main/other/middleware/GlobalErrorHandler.js +0 -23
  334. package/build/server/main/other/middleware/GlobalErrorHandler.js.map +0 -1
  335. package/build/server/main/other/middleware/decorator.js +0 -15
  336. package/build/server/main/other/middleware/decorator.js.map +0 -1
  337. package/build/server/main/other/middleware/redirect.js +0 -20
  338. package/build/server/main/other/middleware/redirect.js.map +0 -1
  339. package/build/server/main/server.js +0 -22
  340. package/build/server/main/server.js.map +0 -1
  341. package/build/server/main/threads/filecat/threads.filecat.js +0 -16
  342. package/build/server/main/threads/filecat/threads.filecat.js.map +0 -1
  343. package/build/server/main/threads/filecat/threads.work.filecat.js +0 -7
  344. package/build/server/main/threads/filecat/threads.work.filecat.js.map +0 -1
  345. package/build/server/main/threads/threads.main.js +0 -224
  346. package/build/server/main/threads/threads.main.js.map +0 -1
  347. package/build/server/main/threads/threads.type.js +0 -19
  348. package/build/server/main/threads/threads.type.js.map +0 -1
  349. package/build/server/main/threads/threads.work.js +0 -52
  350. package/build/server/main/threads/threads.work.js.map +0 -1
  351. package/build/server/main/watch.js +0 -187
  352. package/build/server/main/watch.js.map +0 -1
  353. package/build/server/tsconfig.tsbuildinfo +0 -1
  354. package/build/server/web/project/util/noty.js +0 -45
  355. package/build/server/web/project/util/noty.js.map +0 -1
  356. /package/build/dist/{325.cebabea5cc1b75a2fd96.js.LICENSE.txt → 325.38c4e7ae26722532128b.js.LICENSE.txt} +0 -0
  357. /package/build/dist/{377.4047ae540e74884d3ff5.js.LICENSE.txt → 377.e76765d911fff4b869ca.js.LICENSE.txt} +0 -0
  358. /package/build/dist/{584.d402a562c450dd79b543.js.LICENSE.txt → 584.221a52cee9ef0da9cbed.js.LICENSE.txt} +0 -0
  359. /package/build/dist/{661.d169e2fe7193a840d43a.js.LICENSE.txt → 661.e178f121f1ab48042080.js.LICENSE.txt} +0 -0
  360. /package/build/dist/{943.d055d58eee66f1ab0414.js.LICENSE.txt → 943.a4ab415e3902e7c1ef59.js.LICENSE.txt} +0 -0
  361. /package/build/dist/{main.494c8bcf15274aeca600.js.LICENSE.txt → main.c4f75ef0d08185dc8a49.js.LICENSE.txt} +0 -0
@@ -1,1276 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FileServiceImpl = exports.FileService = void 0;
7
- const file_pojo_1 = require("../../../common/file.pojo");
8
- const fs_1 = __importDefault(require("fs"));
9
- const fs_extra_1 = __importDefault(require("fs-extra"));
10
- const path_1 = __importDefault(require("path"));
11
- const Result_1 = require("../../other/Result");
12
- const rimraf_1 = require("rimraf");
13
- const ValueUtil_1 = require("../../../common/ValueUtil");
14
- const setting_service_1 = require("../setting/setting.service");
15
- const WsData_1 = require("../../../common/frame/WsData");
16
- const Result_pojo_1 = require("../../../common/Result.pojo");
17
- const file_compress_1 = require("./file.compress");
18
- const get_bin_dependency_1 = require("../bin/get_bin_dependency");
19
- const FileMenuType_1 = require("../../../common/FileMenuType");
20
- const StringUtil_1 = require("../../../common/StringUtil");
21
- const systeminformation_1 = __importDefault(require("systeminformation"));
22
- const multer_1 = __importDefault(require("multer"));
23
- const user_service_1 = require("../user/user.service");
24
- const user_req_1 = require("../../../common/req/user.req");
25
- const FileUtil_1 = require("./FileUtil");
26
- const { node_process_watcher } = (0, get_bin_dependency_1.get_bin_dependency)("node-process-watcher", false);
27
- const ListUtil_1 = require("../../../common/ListUtil");
28
- const path_util_1 = require("../../../common/path_util");
29
- const DataUtil_1 = require("../data/DataUtil");
30
- const data_type_1 = require("../data/data_type");
31
- const shell_service_1 = require("../shell/shell.service");
32
- const archiver = require('archiver');
33
- const mime = require('mime-types');
34
- const chokidar = require('chokidar');
35
- const iconv = require('iconv-lite');
36
- class FileService {
37
- constructor() {
38
- this.fileUploadOptions = {
39
- storage: multer_1.default.diskStorage({
40
- destination: (req, file, cb) => {
41
- cb(null, req.fileDir);
42
- },
43
- filename: (req, file, cb) => {
44
- cb(null, req.fileName);
45
- }
46
- })
47
- };
48
- this.upload = (0, multer_1.default)({
49
- storage: this.fileUploadOptions.storage,
50
- }).single('file');
51
- this.upload_num_set = {};
52
- this.file_upload_count_map = new Map();
53
- this.file_change_watcher_map = new Map();
54
- }
55
- utf8ToEncoding(utf8Str, targetEncoding, outputFormat = 'buffer') {
56
- const buffer = iconv.encode(utf8Str, targetEncoding);
57
- switch (outputFormat.toLowerCase()) {
58
- case 'buffer':
59
- return buffer;
60
- case 'hex':
61
- return buffer.toString('hex');
62
- case 'base64':
63
- return buffer.toString('base64');
64
- case 'string':
65
- if (['latin1', 'iso-8859-1'].includes(targetEncoding.toLowerCase())) {
66
- return buffer.toString('binary');
67
- }
68
- else {
69
- throw new Error(`outputFormat 'string' 仅支持 'latin1' 或 'iso-8859-1' 编码`);
70
- }
71
- default:
72
- throw new Error(`不支持的 outputFormat: ${outputFormat},可选 'buffer' | 'hex' | 'base64' | 'string'`);
73
- }
74
- }
75
- async get_file_base_info(token, param_path) {
76
- let sysPath = decodeURIComponent(param_path);
77
- const root_path = setting_service_1.settingService.getFileRootPath(token);
78
- if ((0, path_util_1.isAbsolutePath)(sysPath)) {
79
- }
80
- else {
81
- sysPath = path_1.default.join(root_path, sysPath);
82
- }
83
- user_service_1.userService.check_user_path(token, sysPath);
84
- const stat = await FileUtil_1.FileUtil.statSync(sysPath);
85
- return {
86
- name: path_1.default.basename(sysPath),
87
- path: sysPath,
88
- size: stat.size,
89
- isFile: stat.isFile(),
90
- isSymbolicLink: stat.isSymbolicLink(),
91
- createdAt: stat.birthtime?.getTime(),
92
- modifiedAt: stat.mtime?.getTime(),
93
- accessedAt: stat.atime?.getTime(),
94
- mode: stat.mode,
95
- uid: stat.uid,
96
- uname: (0, shell_service_1.getSys)() === user_req_1.SysEnum.win ? node_process_watcher?.get_file_owner(sysPath)?.username : node_process_watcher?.get_username_by_uid(stat.uid)
97
- };
98
- }
99
- async getFile(param_path, token) {
100
- const result = {
101
- files: [],
102
- folders: []
103
- };
104
- const root_path = setting_service_1.settingService.getFileRootPath(token);
105
- let sysPath = decodeURIComponent(param_path);
106
- if ((0, path_util_1.isAbsolutePath)(sysPath)) {
107
- }
108
- else {
109
- sysPath = path_1.default.join(root_path, sysPath);
110
- }
111
- user_service_1.userService.check_user_path(token, sysPath);
112
- if (!await FileUtil_1.FileUtil.access(sysPath)) {
113
- return (0, Result_1.Fail)("路径不存在", Result_pojo_1.RCode.Fail);
114
- }
115
- const stats = await FileUtil_1.FileUtil.statSync(sysPath);
116
- if (stats.isFile()) {
117
- const name = path_1.default.basename(sysPath);
118
- const buffer = await FileUtil_1.FileUtil.readFileSync(sysPath);
119
- const pojo = (0, Result_1.Sucess)(buffer.toString(), Result_pojo_1.RCode.PreFile);
120
- pojo.message = name;
121
- return pojo;
122
- }
123
- const items = await FileUtil_1.FileUtil.readdirSync(sysPath);
124
- for (const item of items) {
125
- const filePath = path_1.default.join(sysPath, item);
126
- let stats = null;
127
- try {
128
- stats = await FileUtil_1.FileUtil.statSync(filePath);
129
- }
130
- catch (e) {
131
- continue;
132
- }
133
- const mtime = stats ? new Date(stats.mtime).getTime() : 0;
134
- if (stats && stats.isFile()) {
135
- const type = (0, FileMenuType_1.getFileFormat)(item);
136
- result.files?.push({
137
- type: type,
138
- name: item,
139
- mtime: mtime,
140
- size: stats.size,
141
- isLink: stats?.isSymbolicLink(),
142
- path: path_1.default.join(param_path, item)
143
- });
144
- }
145
- else if (stats && stats.isDirectory()) {
146
- result.folders?.push({
147
- type: file_pojo_1.FileTypeEnum.folder,
148
- name: item,
149
- mtime: mtime,
150
- isLink: stats?.isSymbolicLink(),
151
- path: param_path
152
- });
153
- }
154
- else {
155
- result.files?.push({
156
- type: file_pojo_1.FileTypeEnum.dev,
157
- name: item,
158
- mtime: mtime,
159
- size: stats?.size,
160
- path: path_1.default.join(param_path, item)
161
- });
162
- }
163
- }
164
- return (0, Result_1.Sucess)(result);
165
- }
166
- async get_list(token, param_path, page_num, page_size, search) {
167
- const result = {
168
- files: []
169
- };
170
- const root_path = setting_service_1.settingService.getFileRootPath(token);
171
- const sysPath = path_1.default.join(root_path, param_path ? decodeURIComponent(param_path) : "");
172
- user_service_1.userService.check_user_path(token, sysPath);
173
- let items = await FileUtil_1.FileUtil.readdirSync(sysPath);
174
- items = (0, ListUtil_1.list_paginate)(items, page_num, page_size).list;
175
- for (const item of items) {
176
- const filePath = path_1.default.join(sysPath, item);
177
- let stats = null;
178
- try {
179
- stats = await FileUtil_1.FileUtil.statSync(filePath);
180
- }
181
- catch (e) {
182
- console.log("读取错误", e);
183
- }
184
- let type;
185
- let p;
186
- let size;
187
- if (!stats)
188
- continue;
189
- if (stats.isFile()) {
190
- type = (0, FileMenuType_1.getFileFormat)(item);
191
- p = path_1.default.join(param_path, item);
192
- size = stats.size;
193
- }
194
- else if (stats.isDirectory()) {
195
- type = file_pojo_1.FileTypeEnum.folder;
196
- p = param_path;
197
- }
198
- else {
199
- type = file_pojo_1.FileTypeEnum.dev;
200
- p = path_1.default.join(param_path, item);
201
- size = stats.size;
202
- }
203
- const mtime = stats ? new Date(stats.mtime).getTime() : 0;
204
- const pojo = {
205
- type,
206
- name: item,
207
- mtime: mtime,
208
- size,
209
- isLink: stats?.isSymbolicLink(),
210
- path: p
211
- };
212
- result.files.push(pojo);
213
- }
214
- return (0, Result_1.Sucess)(result);
215
- }
216
- async get_folder_info(fpath, token, wss) {
217
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), decodeURIComponent(fpath));
218
- user_service_1.userService.check_user_path(token, sysPath);
219
- node_process_watcher?.on_folder_size(sysPath, (file_num, total_size) => {
220
- wss.send(WsData_1.CmdType.folder_size_info, [file_num, total_size]);
221
- });
222
- wss.setClose(() => {
223
- node_process_watcher?.stop_folder_size(sysPath);
224
- });
225
- }
226
- async stop_folder_info(fpath, token) {
227
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), decodeURIComponent(fpath));
228
- user_service_1.userService.check_user_path(token, sysPath);
229
- node_process_watcher?.stop_folder_size(sysPath);
230
- }
231
- async getFileInfo(type, fpath, token, wss) {
232
- let info = {};
233
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), decodeURIComponent(fpath));
234
- user_service_1.userService.check_user_path(token, sysPath);
235
- switch (type) {
236
- case file_pojo_1.FileTypeEnum.folder:
237
- if (wss) {
238
- this.getDiskSizeForPath(sysPath).then(data => {
239
- const result = new WsData_1.WsData(WsData_1.CmdType.file_info);
240
- result.context = data;
241
- wss.sendData(result.encode());
242
- }).catch(error => {
243
- console.log(error);
244
- });
245
- }
246
- else {
247
- info = await this.getDiskSizeForPath(sysPath);
248
- }
249
- break;
250
- case file_pojo_1.FileTypeEnum.upload_folder:
251
- {
252
- const list = setting_service_1.settingService.get_dir_upload_max_num();
253
- for (const it of list) {
254
- if (user_service_1.userService.isSubPath(it.path, sysPath)) {
255
- info.dir_upload_max_num_value = it;
256
- }
257
- }
258
- }
259
- break;
260
- default:
261
- break;
262
- }
263
- info.now_absolute_path = sysPath;
264
- return info;
265
- }
266
- async uploadFile(filePath, req, res, token) {
267
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), filePath ? decodeURIComponent(filePath) : "");
268
- user_service_1.userService.check_user_path(token, sysPath);
269
- user_service_1.userService.check_user_only_path(token, sysPath);
270
- if ((req.query.dir === "1")) {
271
- if (!await FileUtil_1.FileUtil.access(sysPath))
272
- await FileUtil_1.FileUtil.mkdirSync(sysPath, { recursive: true });
273
- return;
274
- }
275
- let upload_max_key;
276
- let max_num;
277
- for (const it of setting_service_1.settingService.get_dir_upload_max_num()) {
278
- if (user_service_1.userService.isSubPath(it.path, sysPath) && it.sys_upload_num !== undefined) {
279
- upload_max_key = it.path;
280
- max_num = it.sys_upload_num;
281
- }
282
- }
283
- if (upload_max_key) {
284
- let v = this.upload_num_set[upload_max_key];
285
- if (v === undefined) {
286
- v = 1;
287
- }
288
- else {
289
- v++;
290
- }
291
- if (v > max_num)
292
- throw " upload file num max ";
293
- this.upload_num_set[upload_max_key] = v;
294
- }
295
- req['fileDir'] = path_1.default.dirname(sysPath);
296
- req['fileName'] = path_1.default.basename(sysPath);
297
- req.on('close', () => {
298
- if (upload_max_key) {
299
- if (this.upload_num_set[upload_max_key]) {
300
- this.upload_num_set[upload_max_key]--;
301
- }
302
- }
303
- });
304
- return new Promise((resolve) => {
305
- try {
306
- this.upload(req, res, (err) => {
307
- if (err) {
308
- console.log(err);
309
- }
310
- if (upload_max_key) {
311
- if (this.upload_num_set[upload_max_key]) {
312
- this.upload_num_set[upload_max_key]--;
313
- }
314
- }
315
- resolve(1);
316
- });
317
- }
318
- catch (e) {
319
- if (upload_max_key) {
320
- if (this.upload_num_set[upload_max_key]) {
321
- this.upload_num_set[upload_max_key]--;
322
- }
323
- }
324
- resolve(1);
325
- }
326
- });
327
- }
328
- async file_upload_pre(data) {
329
- const param = data.context;
330
- const token = data.wss.token;
331
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), param.file_path ? decodeURIComponent(param.file_path) : "");
332
- user_service_1.userService.check_user_path(token, sysPath);
333
- user_service_1.userService.check_user_only_path(token, sysPath);
334
- if (param.is_dir) {
335
- if (!await FileUtil_1.FileUtil.access(sysPath))
336
- await FileUtil_1.FileUtil.mkdirSync(sysPath, { recursive: true });
337
- return;
338
- }
339
- let max_num;
340
- let upload_max_key;
341
- for (const it of setting_service_1.settingService.get_dir_upload_max_num()) {
342
- if (user_service_1.userService.isSubPath(it.path, sysPath) && it.sys_upload_num !== undefined) {
343
- upload_max_key = it.path;
344
- max_num = it.sys_upload_num;
345
- }
346
- }
347
- if (upload_max_key) {
348
- let v = this.upload_num_set[upload_max_key];
349
- if (v === undefined) {
350
- v = 1;
351
- }
352
- else {
353
- v++;
354
- }
355
- if (v > max_num)
356
- throw " upload file num max ";
357
- this.upload_num_set[upload_max_key] = v;
358
- }
359
- data.wss.setClose(() => {
360
- if (upload_max_key) {
361
- if (this.upload_num_set[upload_max_key]) {
362
- this.upload_num_set[upload_max_key]--;
363
- }
364
- }
365
- });
366
- let value = this.file_upload_count_map.get(sysPath);
367
- if (value) {
368
- value.buffer_list = new Array(param.parallel_done_num).fill(undefined);
369
- value.parallel_done_num = 0;
370
- if (param.lastModified !== value.lastModified) {
371
- if (await FileUtil_1.FileUtil.access(sysPath)) {
372
- await FileUtil_1.FileUtil.unlinkSync(sysPath);
373
- }
374
- }
375
- else if (await FileUtil_1.FileUtil.access(sysPath)) {
376
- return { upload_data_size: value.upload_data_size };
377
- }
378
- }
379
- file_compress_1.fileCompress.lifeStart(sysPath, upload_max_key, async (key) => {
380
- this.file_upload_count_map.delete(upload_max_key);
381
- value.writeStream.end();
382
- value.buffer_list = null;
383
- this.file_upload_count_map.delete(sysPath);
384
- });
385
- if (await FileUtil_1.FileUtil.access(sysPath)) {
386
- await FileUtil_1.FileUtil.truncateSync(sysPath);
387
- }
388
- param.file_full_path = sysPath;
389
- value = {
390
- upload_data_size: 0,
391
- wss: data.wss,
392
- lastModified: param.lastModified,
393
- buffer_list: new Array(param.parallel_done_num).fill(undefined),
394
- sys_file_max_num: max_num,
395
- sys_file_upload_max_key: upload_max_key,
396
- parallel_done_num: 0,
397
- writeStream: fs_1.default.createWriteStream(sysPath)
398
- };
399
- this.file_upload_count_map.set(sysPath, value);
400
- return { upload_data_size: value.upload_data_size };
401
- }
402
- async file_upload(data) {
403
- const param = data.context;
404
- const token = data.wss.token;
405
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), param.file_path ? decodeURIComponent(param.file_path) : "");
406
- user_service_1.userService.check_user_path(token, sysPath);
407
- user_service_1.userService.check_user_only_path(token, sysPath);
408
- file_compress_1.fileCompress.lifeHeart(sysPath);
409
- const num_value = this.file_upload_count_map.get(sysPath);
410
- try {
411
- num_value.buffer_list[param.part_count] = data.bin_context;
412
- delete data.bin_context;
413
- num_value.parallel_done_num++;
414
- if (num_value.parallel_done_num !== param.parallel_done_num) {
415
- return;
416
- }
417
- num_value.parallel_done_num = 0;
418
- for (const add_chunk of num_value.buffer_list) {
419
- num_value.writeStream.write(add_chunk);
420
- num_value.upload_data_size += add_chunk.length;
421
- }
422
- num_value.buffer_list.length = 0;
423
- num_value.buffer_list = new Array(param.parallel_done_num).fill(undefined);
424
- if (param.chunk_index === param.total_chunk_index - 1) {
425
- if (num_value.sys_file_upload_max_key) {
426
- if (this.upload_num_set[num_value.sys_file_upload_max_key]) {
427
- this.upload_num_set[num_value.sys_file_upload_max_key]--;
428
- }
429
- }
430
- this.file_upload_count_map.delete(sysPath);
431
- num_value.writeStream.end();
432
- }
433
- }
434
- catch (e) {
435
- console.log(e);
436
- if (num_value.sys_file_upload_max_key) {
437
- if (this.upload_num_set[num_value.sys_file_upload_max_key]) {
438
- this.upload_num_set[num_value.sys_file_upload_max_key]--;
439
- }
440
- }
441
- num_value.writeStream.end();
442
- this.file_upload_count_map.delete(sysPath);
443
- }
444
- }
445
- async deletes(token, filePath) {
446
- if (!filePath) {
447
- return (0, Result_1.Sucess)("1");
448
- }
449
- let sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), decodeURIComponent(filePath));
450
- user_service_1.userService.check_user_path(token, sysPath);
451
- if (user_service_1.userService.protectionCheck(sysPath, token) || setting_service_1.settingService.protectionCheck(sysPath)) {
452
- return (0, Result_1.Fail)("1", Result_pojo_1.RCode.PROTECT_FILE);
453
- }
454
- if (setting_service_1.settingService.get_recycle_bin_status()) {
455
- sysPath = (0, StringUtil_1.removeTrailingPath)(sysPath);
456
- const cyc_map_list = setting_service_1.settingService.get_recycle_dir_map_list();
457
- for (const it of cyc_map_list) {
458
- let cyc_p;
459
- let check_cyc_p = "";
460
- if (it.length > 1 && !!it[1]) {
461
- cyc_p = (0, StringUtil_1.removeTrailingPath)(it[1]);
462
- check_cyc_p = it[0];
463
- }
464
- else {
465
- cyc_p = (0, StringUtil_1.removeTrailingPath)(it[0]);
466
- }
467
- if (cyc_p === sysPath) {
468
- throw "cyc dir not to del";
469
- }
470
- if (check_cyc_p !== "" && !user_service_1.userService.isSubPath(check_cyc_p, sysPath)) {
471
- continue;
472
- }
473
- if (user_service_1.userService.isSubPath(cyc_p, sysPath)) {
474
- continue;
475
- }
476
- const ext_name = path_1.default.extname(sysPath);
477
- const fileName = path_1.default.basename(filePath, ext_name);
478
- let p = path_1.default.join(cyc_p, `${fileName}${ext_name}`);
479
- if (await FileUtil_1.FileUtil.access(p)) {
480
- p = await FileUtil_1.FileUtil.getUniqueFileName(p);
481
- }
482
- await this.cut_exec(sysPath, p);
483
- return (0, Result_1.Sucess)("1");
484
- }
485
- }
486
- const stats = await FileUtil_1.FileUtil.statSync(sysPath);
487
- if (stats.isFile()) {
488
- await FileUtil_1.FileUtil.unlinkSync(sysPath);
489
- }
490
- else {
491
- await (0, rimraf_1.rimraf)(sysPath);
492
- }
493
- return (0, Result_1.Sucess)("1");
494
- }
495
- async save(token, context, filePath) {
496
- if (context === null || context === undefined) {
497
- return;
498
- }
499
- let sysPath = decodeURIComponent(filePath);
500
- if ((0, path_util_1.isAbsolutePath)(sysPath)) {
501
- }
502
- else {
503
- sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), sysPath);
504
- }
505
- user_service_1.userService.check_user_path(token, sysPath);
506
- user_service_1.userService.check_user_only_path(token, sysPath);
507
- await FileUtil_1.FileUtil.writeFileSyncWithUtf8bom(sysPath, context);
508
- }
509
- async common_base64_save(token, filepath, base64_context, type) {
510
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), filepath);
511
- user_service_1.userService.check_user_path(token, sysPath);
512
- user_service_1.userService.check_user_only_path(token, sysPath);
513
- const binaryData = Buffer.from(base64_context, 'base64');
514
- if (type === file_pojo_1.base64UploadType.all || type === file_pojo_1.base64UploadType.start) {
515
- await FileUtil_1.FileUtil.writeFileSync(sysPath, binaryData);
516
- }
517
- else if (type === file_pojo_1.base64UploadType.part) {
518
- await FileUtil_1.FileUtil.appendFileSync(sysPath, binaryData);
519
- }
520
- }
521
- async cut(token, data) {
522
- if (!data) {
523
- return;
524
- }
525
- const root_path = setting_service_1.settingService.getFileRootPath(token);
526
- const sysPath = path_1.default.join(root_path);
527
- const toSysPath = path_1.default.join(root_path, data.to ? decodeURIComponent(data.to) : "");
528
- user_service_1.userService.check_user_path(token, sysPath);
529
- user_service_1.userService.check_user_path(token, toSysPath);
530
- for (const file of data.files) {
531
- await this.cut_exec(decodeURIComponent(path_1.default.join(sysPath, file)), decodeURIComponent(path_1.default.join(toSysPath, path_1.default.basename(file))));
532
- }
533
- }
534
- async cut_exec(source_path, to_file) {
535
- await FileUtil_1.FileUtil.renameSync(source_path, to_file);
536
- await (0, rimraf_1.rimraf)(source_path);
537
- }
538
- async copy(token, data) {
539
- if (!data) {
540
- return;
541
- }
542
- const root_path = setting_service_1.settingService.getFileRootPath(token);
543
- const sysPath = path_1.default.join(root_path);
544
- const toSysPath = path_1.default.join(root_path, data.to ? decodeURIComponent(data.to) : "");
545
- user_service_1.userService.check_user_path(token, sysPath);
546
- user_service_1.userService.check_user_only_path(token, sysPath);
547
- user_service_1.userService.check_user_path(token, toSysPath);
548
- user_service_1.userService.check_user_only_path(token, toSysPath);
549
- for (const file of data.files) {
550
- const filePath = decodeURIComponent(path_1.default.join(sysPath, file));
551
- await fs_extra_1.default.copy(filePath, decodeURIComponent(path_1.default.join(toSysPath, path_1.default.basename(file))), { overwrite: true });
552
- }
553
- }
554
- async newFile(token, data) {
555
- await this.todoNew(token, 2, data);
556
- }
557
- async newDir(token, data) {
558
- await this.todoNew(token, 1, data);
559
- }
560
- async todoNew(token, type, data) {
561
- if (data === null || data === undefined) {
562
- return;
563
- }
564
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), decodeURIComponent(data.name));
565
- user_service_1.userService.check_user_path(token, sysPath);
566
- user_service_1.userService.check_user_only_path(token, sysPath);
567
- if (await FileUtil_1.FileUtil.access(sysPath)) {
568
- return;
569
- }
570
- if (type === 1) {
571
- await FileUtil_1.FileUtil.mkdirSync(sysPath, { recursive: true });
572
- }
573
- else {
574
- await FileUtil_1.FileUtil.writeFileSync(sysPath, data.context ?? "");
575
- }
576
- }
577
- async rename(token, data) {
578
- if (!data) {
579
- return;
580
- }
581
- const root_path = setting_service_1.settingService.getFileRootPath(token);
582
- const sysPath = path_1.default.join(root_path, decodeURIComponent(data.name));
583
- user_service_1.userService.check_user_path(token, sysPath);
584
- const sysPathNew = path_1.default.join(root_path, decodeURIComponent(data.newName));
585
- await fs_extra_1.default.rename(sysPath, sysPathNew);
586
- }
587
- download_one_file(file_name, file_size, file_path, res, param) {
588
- const encodedFileName = encodeURIComponent(file_name).replace(/%20/g, '+');
589
- let handle_type = "";
590
- if (param?.handle_type_ !== undefined) {
591
- handle_type = param.handle_type_;
592
- }
593
- else {
594
- handle_type = "attachment";
595
- if (file_name.endsWith('.pdf')) {
596
- handle_type = "inline";
597
- }
598
- }
599
- res.set({
600
- "Content-Type": mime.lookup(file_name) || "application/octet-stream",
601
- "Content-Length": file_size,
602
- "Content-Disposition": `${handle_type}; filename="${encodedFileName}"; filename*=UTF-8''${encodedFileName}`
603
- });
604
- if (param?.cache) {
605
- res.setHeader('Cache-Control', 'public, max-age=86400 ');
606
- }
607
- else if (param?.cache_length) {
608
- res.setHeader('Cache-Control', `public, max-age=${param.cache_length}`);
609
- }
610
- const readStream = fs_1.default.createReadStream(file_path);
611
- readStream.pipe(res);
612
- }
613
- async download_for_private(ctx) {
614
- let file = ctx.query.file;
615
- if (!file || !file.length) {
616
- ctx.res.status(404).send('File not found');
617
- return;
618
- }
619
- const token = ctx.query['token'];
620
- const cache = ctx.query['cache'];
621
- const show = ctx.query['show'];
622
- const range = ctx.header("Range");
623
- const res = ctx.res;
624
- if (!Array.isArray(file)) {
625
- const p = decodeURIComponent(file);
626
- if ((0, path_util_1.isAbsolutePath)(p)) {
627
- file = p;
628
- }
629
- else {
630
- file = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), decodeURIComponent(file));
631
- }
632
- user_service_1.userService.check_user_path(token, file);
633
- }
634
- else {
635
- const files = file;
636
- const new_files = [];
637
- for (const file of files) {
638
- let sysPath = decodeURIComponent(file);
639
- if ((0, path_util_1.isAbsolutePath)(sysPath)) {
640
- }
641
- else {
642
- sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), sysPath);
643
- }
644
- user_service_1.userService.check_user_path(token, sysPath);
645
- new_files.push(sysPath);
646
- }
647
- file = new_files;
648
- }
649
- this.download({ file, token, cache, show, range, res });
650
- }
651
- async download_for_public(ctx) {
652
- const file = ctx.query.file;
653
- if (!file || !file.length) {
654
- ctx.res.status(404).send('File not found');
655
- return;
656
- }
657
- const cache = ctx.query['cache'];
658
- const show = ctx.query['show'];
659
- const range = ctx.header("Range");
660
- const res = ctx.res;
661
- const share_id = ctx.query['share_id'];
662
- const share_token = ctx.query['share_token'];
663
- const list = setting_service_1.settingService.get_share_file_list();
664
- let item;
665
- for (const i of list) {
666
- if (i.id === share_id) {
667
- const statics = DataUtil_1.DataUtil.get(data_type_1.data_common_key.share_file_list_key_download_statics, data_type_1.file_key.statics_tag) ?? {};
668
- statics[i.id] = (statics[i.id] ?? 0) + 1;
669
- DataUtil_1.DataUtil.set(data_type_1.data_common_key.share_file_list_key_download_statics, statics, data_type_1.file_key.statics_tag);
670
- item = i;
671
- break;
672
- }
673
- }
674
- if (!item) {
675
- res.status(400).send("未知分享");
676
- return;
677
- }
678
- if (item.token) {
679
- if (item.token !== share_token) {
680
- res.status(400).send("token错误");
681
- return;
682
- }
683
- }
684
- this.download({ file, cache, show, range, res });
685
- }
686
- async download({ file, cache, show, range, res }) {
687
- if (!Array.isArray(file)) {
688
- const sysPath = decodeURIComponent(file);
689
- const fileName = path_1.default.basename(sysPath);
690
- const stats = await FileUtil_1.FileUtil.statSync(sysPath);
691
- const fileSize = stats.size;
692
- if (range) {
693
- const encodedFileName = encodeURIComponent(fileName).replace(/%20/g, '+');
694
- const [start, end] = range.replace(/bytes=/, "").split("-");
695
- const startByte = parseInt(start, 10);
696
- const endByte = end ? parseInt(end, 10) : fileSize - 1;
697
- if (startByte >= fileSize) {
698
- res.status(416).send("Requested range not satisfiable");
699
- return;
700
- }
701
- const chunkSize = endByte - startByte + 1;
702
- const readStream = fs_1.default.createReadStream(sysPath, { start: startByte, end: endByte });
703
- res.status(206);
704
- res.set({
705
- "Content-Range": `bytes ${startByte}-${endByte}/${fileSize}`,
706
- "Accept-Ranges": "bytes",
707
- "Content-Length": chunkSize,
708
- "Content-Type": mime.lookup(fileName) || "application/octet-stream",
709
- "Content-Disposition": `attachment; filename="${encodedFileName}"; filename*=UTF-8''${encodedFileName}`
710
- });
711
- readStream.pipe(res);
712
- return;
713
- }
714
- if (stats.isFile()) {
715
- this.download_one_file(fileName, fileSize, sysPath, res, {
716
- cache: cache === "1",
717
- handle_type_: show === "1" ? "inline" : "attachment"
718
- });
719
- }
720
- else {
721
- res.attachment(path_1.default.basename(sysPath) + ".zip");
722
- const archive = archiver('zip', { zlib: { level: 5 } });
723
- archive.pipe(res);
724
- archive.directory(sysPath, path_1.default.basename(sysPath));
725
- archive.finalize();
726
- }
727
- }
728
- else {
729
- const files = file;
730
- const archive = archiver('zip', {
731
- zlib: { level: 5 }
732
- });
733
- res.attachment("output.zip");
734
- res.set('Content-Type', 'application/octet-stream');
735
- archive.pipe(res);
736
- for (const file of files) {
737
- const sysPath = decodeURIComponent(file);
738
- const stats = await FileUtil_1.FileUtil.statSync(sysPath);
739
- if (stats.isFile()) {
740
- archive.file(sysPath, { name: path_1.default.basename(sysPath) });
741
- }
742
- else {
743
- archive.directory(sysPath, path_1.default.basename(sysPath));
744
- }
745
- }
746
- archive.finalize();
747
- }
748
- }
749
- async file_video_trans(data) {
750
- const pojo = data.context;
751
- user_service_1.userService.check_user_auth(pojo.token, user_req_1.UserAuth.filecat_file_context_update_upload_created_copy_decompression);
752
- const wss = data.wss;
753
- const root_path = setting_service_1.settingService.getFileRootPath(pojo.token);
754
- const sysPath = path_1.default.join(root_path, decodeURIComponent(pojo.source_filename));
755
- const sysPathNew = path_1.default.join(root_path, decodeURIComponent(pojo.to_filename));
756
- (await setting_service_1.settingService.getFfmpeg())(sysPath)
757
- .toFormat(pojo.to_format)
758
- .on('start', function (commandLine) {
759
- const result = new WsData_1.WsData(WsData_1.CmdType.file_video_trans_progress);
760
- result.context = 0;
761
- wss.sendData(result.encode());
762
- })
763
- .on('progress', function (progress) {
764
- const result = new WsData_1.WsData(WsData_1.CmdType.file_video_trans_progress);
765
- result.context = progress.percent.toFixed(0);
766
- wss.sendData(result.encode());
767
- })
768
- .on('error', function (err, stdout, stderr) {
769
- wss.ws.close();
770
- })
771
- .on('end', function () {
772
- const result = new WsData_1.WsData(WsData_1.CmdType.file_video_trans_progress);
773
- result.context = 100;
774
- wss.sendData(result.encode());
775
- })
776
- .save(sysPathNew);
777
- }
778
- async uncompress(data) {
779
- const pojo = data.context;
780
- user_service_1.userService.check_user_auth(pojo.token, user_req_1.UserAuth.filecat_file_context_update_upload_created_copy_decompression);
781
- const source_file = decodeURIComponent(pojo.source_file);
782
- const tar_dir = decodeURIComponent(pojo.tar_dir ?? "");
783
- const directoryPath = decodeURIComponent(path_1.default.dirname(source_file));
784
- const root_path = setting_service_1.settingService.getFileRootPath(pojo.token);
785
- const targetFolder = path_1.default.join(root_path, directoryPath, tar_dir);
786
- user_service_1.userService.check_user_path(pojo.token, targetFolder);
787
- user_service_1.userService.check_user_only_path(pojo.token, targetFolder);
788
- const wss = data.wss;
789
- if (tar_dir) {
790
- await FileUtil_1.FileUtil.mkdirSync(path_1.default.join(targetFolder), { recursive: true });
791
- }
792
- const sysSourcePath = path_1.default.join(root_path, source_file);
793
- user_service_1.userService.check_user_path(pojo.token, sysSourcePath);
794
- const outHanle = (value) => {
795
- if (value === -1) {
796
- wss.ws.close();
797
- return;
798
- }
799
- const result = new WsData_1.WsData(WsData_1.CmdType.file_uncompress_progress);
800
- result.context = value;
801
- wss.sendData(result.encode());
802
- };
803
- await file_compress_1.fileCompress.handle_un(pojo.format, sysSourcePath, targetFolder, outHanle);
804
- }
805
- async FileCompress(data) {
806
- const pojo = data.context;
807
- user_service_1.userService.check_user_auth(pojo.token, user_req_1.UserAuth.filecat_file_context_update_upload_created_copy_decompression);
808
- const files = pojo.filePaths;
809
- const root_path = setting_service_1.settingService.getFileRootPath(pojo.token);
810
- const wss = data.wss;
811
- const filePaths = [], directorys = [];
812
- for (const file of files) {
813
- const name = path_1.default.join(root_path, decodeURIComponent(file));
814
- user_service_1.userService.check_user_path(pojo.token, name);
815
- user_service_1.userService.check_user_only_path(pojo.token, name);
816
- try {
817
- const stats = await FileUtil_1.FileUtil.statSync(name);
818
- if (stats.isFile()) {
819
- filePaths.push(name);
820
- }
821
- else {
822
- directorys.push(name);
823
- }
824
- }
825
- catch (e) {
826
- }
827
- }
828
- const targerFilePath = path_1.default.join(root_path, decodeURIComponent(pojo.tar_filename));
829
- const handle_progress = (value) => {
830
- {
831
- if (value === -1) {
832
- wss.ws.close();
833
- return;
834
- }
835
- const result = new WsData_1.WsData(WsData_1.CmdType.file_compress_progress);
836
- result.context = value;
837
- wss.sendData(result.encode());
838
- }
839
- };
840
- let format;
841
- switch (pojo.format) {
842
- case file_pojo_1.FileCompressType.tar:
843
- format = "tar";
844
- break;
845
- case file_pojo_1.FileCompressType.gz:
846
- await file_compress_1.fileCompress.compressGz(pojo.compress_level, targerFilePath, filePaths, directorys, handle_progress);
847
- return;
848
- case file_pojo_1.FileCompressType.rar:
849
- return;
850
- case file_pojo_1.FileCompressType.zip:
851
- format = "zip";
852
- break;
853
- case file_pojo_1.FileCompressType.tar_gz:
854
- format = "tar";
855
- break;
856
- }
857
- await file_compress_1.fileCompress.compress(format, pojo.compress_level, targerFilePath, filePaths, directorys, handle_progress, pojo.format === file_pojo_1.FileCompressType.tar_gz);
858
- }
859
- async studio_get_item(param_path, token) {
860
- const result = {
861
- list: []
862
- };
863
- const sysPath = path_1.default.join(setting_service_1.settingService.getFileRootPath(token), param_path ? decodeURIComponent(param_path) : "");
864
- user_service_1.userService.check_user_path(token, sysPath);
865
- if (!await FileUtil_1.FileUtil.access(sysPath)) {
866
- return (0, Result_1.Fail)("路径不存在", Result_pojo_1.RCode.Fail);
867
- }
868
- const stats = await FileUtil_1.FileUtil.statSync(sysPath);
869
- if (stats.isFile()) {
870
- return (0, Result_1.Fail)("是文件", Result_pojo_1.RCode.Fail);
871
- }
872
- const items = await FileUtil_1.FileUtil.readdirSync(sysPath);
873
- for (const item of items) {
874
- const filePath = path_1.default.join(sysPath, item);
875
- let stats = null;
876
- try {
877
- stats = await FileUtil_1.FileUtil.statSync(filePath);
878
- }
879
- catch (e) {
880
- continue;
881
- }
882
- result.list.push({
883
- type: stats.isFile() ? "file" : "folder",
884
- name: item,
885
- size: stats.size
886
- });
887
- }
888
- return result;
889
- }
890
- async getDiskSizeForPath(fpath) {
891
- const pojo = {};
892
- try {
893
- const diskData = await systeminformation_1.default.fsSize();
894
- const dirPath = path_1.default.resolve(fpath);
895
- let targetDisk;
896
- diskData.forEach(disk => {
897
- if (dirPath.startsWith(disk.mount)) {
898
- if (!targetDisk) {
899
- targetDisk = disk;
900
- return;
901
- }
902
- else {
903
- if (disk.mount.length > targetDisk.mount.length) {
904
- targetDisk = disk;
905
- }
906
- }
907
- }
908
- });
909
- if (targetDisk) {
910
- pojo.path = dirPath;
911
- pojo.name = path_1.default.basename(fpath);
912
- pojo.total_size = (0, ValueUtil_1.formatFileSize)(targetDisk.size);
913
- pojo.left_size = (0, ValueUtil_1.formatFileSize)(targetDisk.available);
914
- pojo.fs_type = targetDisk.type;
915
- }
916
- }
917
- catch (error) {
918
- console.error('Error fetching disk information:', error);
919
- return pojo;
920
- }
921
- return pojo;
922
- }
923
- isFirstByte(byte, encoding = "utf8") {
924
- if (byte === undefined || byte < 0 || byte > 255)
925
- throw 'Invalid byte';
926
- switch (encoding.toLowerCase()) {
927
- case 'utf8':
928
- case 'utf-8':
929
- return (byte & 0xE0) === 0xC0 || (byte & 0xF0) === 0xE0 || (byte & 0xF8) === 0xF0;
930
- case 'ascii':
931
- case 'latin1':
932
- case 'iso-8859-1':
933
- case 'windows-1252':
934
- return true;
935
- case 'gbk':
936
- case 'gb2312':
937
- return byte >= 0x81 && byte <= 0xFE;
938
- case 'big5':
939
- return byte >= 0x81 && byte <= 0xFE;
940
- default:
941
- throw 'Unsupported encoding for isFirstByte';
942
- }
943
- }
944
- convertToUtf8(input, fromEncoding) {
945
- if (fromEncoding === 'utf8' || fromEncoding === 'utf-8') {
946
- return Buffer.isBuffer(input) ? input.toString('utf8') : input;
947
- }
948
- let buf;
949
- if (typeof input === 'string') {
950
- buf = iconv.encode(input, fromEncoding);
951
- }
952
- else if (Buffer.isBuffer(input)) {
953
- buf = input;
954
- }
955
- else {
956
- throw new Error('输入必须是 Buffer 或字符串');
957
- }
958
- const str = iconv.decode(buf, fromEncoding);
959
- return str;
960
- }
961
- async go_forward_log(pojo, file_path) {
962
- let linesRead = 0;
963
- let haveReadSize = 0;
964
- const fd = await FileUtil_1.FileUtil.open(file_path, "r");
965
- let max_count = 100;
966
- while (haveReadSize < pojo.once_max_size) {
967
- if (max_count <= 0) {
968
- break;
969
- }
970
- max_count--;
971
- const buffer = Buffer.alloc(10240);
972
- let { bytesRead } = await fd.read(buffer, 0, buffer.length, pojo.position);
973
- let done = false;
974
- let last_h = -1;
975
- for (let i = 0, ch_byte_i = bytesRead - 1; i < bytesRead; i++) {
976
- if (buffer[i] === 10 || i === ch_byte_i) {
977
- let index = i;
978
- if (i === ch_byte_i && (buffer[i] & 0x80) !== 0) {
979
- for (let j = i; j > last_h; j--) {
980
- if (this.isFirstByte(buffer[j], pojo.encoding)) {
981
- index = j - 1;
982
- break;
983
- }
984
- }
985
- }
986
- linesRead++;
987
- const now_str_start = last_h + 1;
988
- const next_str_start = index + 1;
989
- pojo.context_list.push(this.convertToUtf8(buffer.subarray(now_str_start, next_str_start), pojo.encoding));
990
- pojo.context_start_position_list.push(pojo.position + now_str_start);
991
- pojo.context_position_list.push(pojo.position + next_str_start);
992
- if (linesRead >= pojo.line) {
993
- done = true;
994
- break;
995
- }
996
- last_h = index;
997
- }
998
- }
999
- if (done || bytesRead === 0) {
1000
- break;
1001
- }
1002
- else {
1003
- haveReadSize += last_h;
1004
- pojo.position += last_h + 1;
1005
- }
1006
- }
1007
- await fd.close();
1008
- return pojo;
1009
- }
1010
- async find_back_enter_index(pojo, file_path, max_len = 10240) {
1011
- const fd = await FileUtil_1.FileUtil.open(file_path, "r");
1012
- let buffer_len = max_len;
1013
- if (pojo.position < buffer_len) {
1014
- buffer_len = pojo.position;
1015
- }
1016
- let buffer = Buffer.alloc(buffer_len);
1017
- const position = pojo.position - buffer.length;
1018
- const { bytesRead } = await fd.read(buffer, 0, buffer.length, position);
1019
- for (let i = bytesRead; i >= 0; i--) {
1020
- let index = i;
1021
- if (buffer[i] === 10 || i === 0) {
1022
- if ((buffer[i] & 0x80) !== 0) {
1023
- for (let j = 0; j < bytesRead; j++) {
1024
- if (this.isFirstByte(buffer[j], pojo.encoding)) {
1025
- index = j - 1;
1026
- break;
1027
- }
1028
- }
1029
- }
1030
- const now_str_start = index === 0 && pojo.position === 0 ? 0 : index + 1;
1031
- pojo.position = position + now_str_start;
1032
- await fd.close();
1033
- return;
1034
- }
1035
- }
1036
- await fd.close();
1037
- pojo.position = position;
1038
- }
1039
- async go_back_log(pojo, file_path) {
1040
- let linesRead = 0;
1041
- let haveReadSize = 0;
1042
- const fd = await FileUtil_1.FileUtil.open(file_path, "r");
1043
- let buffer_len = 10240;
1044
- let max_count = 100;
1045
- while (haveReadSize < pojo.once_max_size) {
1046
- if (max_count <= 0) {
1047
- break;
1048
- }
1049
- max_count--;
1050
- if (pojo.position < buffer_len) {
1051
- buffer_len = pojo.position;
1052
- }
1053
- let buffer = Buffer.alloc(buffer_len);
1054
- pojo.position = pojo.position - buffer.length;
1055
- const { bytesRead } = await fd.read(buffer, 0, buffer.length, pojo.position);
1056
- let done = false;
1057
- let last_h = bytesRead;
1058
- for (let i = bytesRead; i >= 0; i--) {
1059
- let index = i;
1060
- if (buffer[i] === 10 || i === 0) {
1061
- if (i === 0 && pojo.position !== 0 && (buffer[i] & 0x80) !== 0) {
1062
- for (let j = 0; j < last_h; j++) {
1063
- if (this.isFirstByte(buffer[j], pojo.encoding)) {
1064
- index = j - 1;
1065
- break;
1066
- }
1067
- }
1068
- }
1069
- linesRead++;
1070
- const now_str_start = index === 0 && pojo.position === 0 ? 0 : index + 1;
1071
- const next_str_start = last_h + 1;
1072
- pojo.context_list.push(this.convertToUtf8(buffer.subarray(now_str_start, next_str_start), pojo.encoding));
1073
- pojo.context_start_position_list.push(pojo.position + now_str_start);
1074
- pojo.context_position_list.push(pojo.position + next_str_start);
1075
- if (linesRead >= pojo.line) {
1076
- done = true;
1077
- break;
1078
- }
1079
- last_h = index;
1080
- }
1081
- }
1082
- if (done || bytesRead === 0 || (last_h <= 0 && pojo.position === 0)) {
1083
- break;
1084
- }
1085
- else {
1086
- haveReadSize += (bytesRead - last_h);
1087
- pojo.position -= last_h - 1;
1088
- }
1089
- }
1090
- await fd.close();
1091
- return pojo;
1092
- }
1093
- async log_viewer(data) {
1094
- const pojo = data.context;
1095
- pojo.context = "";
1096
- pojo.context_list = [];
1097
- pojo.context_position_list = [];
1098
- pojo.context_start_position_list = [];
1099
- const root_path = setting_service_1.settingService.getFileRootPath(pojo.token);
1100
- const file_path = path_1.default.join(root_path, decodeURIComponent(pojo.path));
1101
- user_service_1.userService.check_user_path(data.wss.token, file_path);
1102
- const stats = await FileUtil_1.FileUtil.statSync(file_path);
1103
- const fileSize = stats.size;
1104
- pojo.max_size = fileSize;
1105
- if ((pojo.position <= 0 && pojo.back) || (!pojo.back && pojo.position >= fileSize)) {
1106
- pojo.context = '';
1107
- return pojo;
1108
- }
1109
- if (pojo.back)
1110
- return this.go_back_log(pojo, file_path);
1111
- if (pojo.find_back_enter_index)
1112
- await this.find_back_enter_index(pojo, file_path, 100);
1113
- return this.go_forward_log(pojo, file_path);
1114
- }
1115
- log_viewer_watch_cancel(data) {
1116
- this.file_change_watcher_map.delete(data.wss.token);
1117
- }
1118
- log_viewer_watch(data) {
1119
- const pojo = data.context;
1120
- if (this.file_change_watcher_map.has(data.wss.token)) {
1121
- return;
1122
- }
1123
- const wss = data.wss;
1124
- pojo.context = "";
1125
- pojo.context_list = [];
1126
- pojo.context_position_list = [];
1127
- pojo.context_start_position_list = [];
1128
- const root_path = setting_service_1.settingService.getFileRootPath(data.wss.token);
1129
- const file_path = path_1.default.join(root_path, decodeURIComponent(pojo.path));
1130
- user_service_1.userService.check_user_path(wss.token, file_path);
1131
- let watcher = chokidar.watch(file_path, {
1132
- persistent: true,
1133
- usePolling: true,
1134
- });
1135
- this.file_change_watcher_map.set(data.wss.token, watcher);
1136
- wss.setClose(() => {
1137
- watcher.close();
1138
- this.file_change_watcher_map.delete(data.wss.token);
1139
- });
1140
- let bytesRead = pojo.max_size;
1141
- watcher.on('change', (changedFilePath) => {
1142
- if (changedFilePath === file_path) {
1143
- if (!this.file_change_watcher_map.has(data.wss.token)) {
1144
- watcher.close();
1145
- return;
1146
- }
1147
- fs_1.default.stat(file_path, (err, stats) => {
1148
- if (err) {
1149
- console.error('Failed to get file stats:', err);
1150
- watcher.close();
1151
- this.file_change_watcher_map.delete(data.wss.token);
1152
- return;
1153
- }
1154
- if (stats.size > bytesRead) {
1155
- const newStream = fs_1.default.createReadStream(file_path, { encoding: 'utf8', start: bytesRead });
1156
- newStream.on('data', (chunk) => {
1157
- const str = chunk.toString();
1158
- let now_str_start = bytesRead;
1159
- let next_str_start = bytesRead + chunk.length + 1;
1160
- let index = 0;
1161
- for (let i = 0; i < str.length; i++) {
1162
- if (!/^\s$/.test(str[i])) {
1163
- break;
1164
- }
1165
- else if (str[i] === '\n' && chunk.length - 1 > i) {
1166
- index = i + 1;
1167
- now_str_start = bytesRead + index;
1168
- next_str_start + index;
1169
- break;
1170
- }
1171
- }
1172
- pojo.context_list.push(str.slice(index, chunk.length));
1173
- pojo.context_start_position_list.push(now_str_start);
1174
- pojo.context_position_list.push(next_str_start);
1175
- pojo.max_size = bytesRead + chunk.length;
1176
- const result = new WsData_1.WsData(WsData_1.CmdType.log_viewer_watch);
1177
- result.context = pojo;
1178
- wss.sendData(result.encode());
1179
- bytesRead += Buffer.byteLength(chunk, 'utf8');
1180
- pojo.context_list = [];
1181
- pojo.context_position_list = [];
1182
- pojo.context_start_position_list = [];
1183
- });
1184
- }
1185
- });
1186
- }
1187
- });
1188
- watcher.on('error', (error) => {
1189
- watcher.close();
1190
- this.file_change_watcher_map.delete(data.wss.token);
1191
- });
1192
- }
1193
- async get_share_info(id, token) {
1194
- const list = setting_service_1.settingService.get_share_file_list();
1195
- let item;
1196
- for (const i of list) {
1197
- if (i.id === id) {
1198
- item = i;
1199
- break;
1200
- }
1201
- }
1202
- if (!item)
1203
- throw "未知分享";
1204
- if (item.token) {
1205
- if (token !== item.token) {
1206
- return (0, Result_1.Sucess)("", Result_pojo_1.RCode.need_token_share);
1207
- }
1208
- }
1209
- const result = {
1210
- is_dir: true,
1211
- files: []
1212
- };
1213
- const sysPath = decodeURIComponent(item.path);
1214
- const stats = await FileUtil_1.FileUtil.statSync(item.path);
1215
- if (stats.isFile()) {
1216
- result.is_dir = false;
1217
- const mtime = stats ? new Date(stats.mtime).getTime() : 0;
1218
- const name = path_1.default.basename(sysPath);
1219
- const pojo = {
1220
- type: (0, FileMenuType_1.getFileFormat)(name),
1221
- name: name,
1222
- mtime: mtime,
1223
- size: stats.size,
1224
- isLink: stats?.isSymbolicLink(),
1225
- path: sysPath
1226
- };
1227
- result.files.push(pojo);
1228
- }
1229
- else {
1230
- let items = await FileUtil_1.FileUtil.readdirSync(sysPath);
1231
- const param_path = item.path;
1232
- for (const item of items) {
1233
- const filePath = path_1.default.join(sysPath, item);
1234
- let stats = null;
1235
- try {
1236
- stats = await FileUtil_1.FileUtil.statSync(filePath);
1237
- }
1238
- catch (e) {
1239
- console.log("读取错误", e);
1240
- }
1241
- let type;
1242
- let p;
1243
- let size;
1244
- if (!stats)
1245
- continue;
1246
- if (stats.isFile()) {
1247
- type = (0, FileMenuType_1.getFileFormat)(item);
1248
- p = path_1.default.join(param_path, item);
1249
- size = stats.size;
1250
- }
1251
- else if (stats.isDirectory()) {
1252
- continue;
1253
- }
1254
- else {
1255
- type = file_pojo_1.FileTypeEnum.dev;
1256
- p = path_1.default.join(param_path, item);
1257
- size = stats.size;
1258
- }
1259
- const mtime = stats ? new Date(stats.mtime).getTime() : 0;
1260
- const pojo = {
1261
- type,
1262
- name: item,
1263
- mtime: mtime,
1264
- size,
1265
- isLink: stats?.isSymbolicLink(),
1266
- path: p
1267
- };
1268
- result.files.push(pojo);
1269
- }
1270
- }
1271
- return (0, Result_1.Sucess)(result);
1272
- }
1273
- }
1274
- exports.FileService = FileService;
1275
- exports.FileServiceImpl = new FileService();
1276
- //# sourceMappingURL=file.service.js.map