hfs 3.3.0-alpha1 → 3.3.0-beta3
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.
- package/admin/assets/AccountsPage-DB7ljNHT.js +3 -0
- package/admin/assets/ArrayField-Qj2iHD7I.js +2 -0
- package/admin/assets/ConfigFilePage-TErmt0PK.js +4 -0
- package/admin/assets/CustomHtmlPage-CVmk-_JS.js +2 -0
- package/admin/assets/DataTable-DmnQXyFO.js +119 -0
- package/admin/assets/DateTimeField-BUWd2w9-.js +1 -0
- package/admin/assets/EventManager-9vwKg8as.js +1 -0
- package/admin/assets/FileField-DoBaSTxF.js +117 -0
- package/admin/assets/InternetPage-Biuer1tb.js +8 -0
- package/admin/assets/LangPage-Vd24DNK5.js +2 -0
- package/admin/assets/LogsPage-BdvttEqM.js +3 -0
- package/admin/assets/MenuButton-CHLgqU5W.js +1 -0
- package/admin/assets/MonitorPage-DlXkZUmT.js +2 -0
- package/admin/assets/OptionsPage-Zi8FmrjE.js +3 -0
- package/admin/assets/PluginsPage-BzwEIFt5.js +1 -0
- package/admin/assets/Tabs-CVipqhB9.js +1 -0
- package/admin/assets/TextEditor-BeS-mR2I.css +1 -0
- package/admin/assets/TextEditor-clbVugYM.js +34 -0
- package/admin/assets/VfsPathField-YUCV9PfL.js +1 -0
- package/admin/assets/{af-CevhRske.js → af-B1Gi_bpo.js} +1 -1
- package/admin/assets/agentIcons-DW9QViyx.js +1 -0
- package/admin/assets/{am-4ouVTwuo.js → am-B-dZnhsM.js} +1 -1
- package/admin/assets/{ar-71cK8dbb.js → ar-DsQGp6kZ.js} +1 -1
- package/admin/assets/{ar-dz-CO7oh1gG.js → ar-dz-CxlYiKtP.js} +1 -1
- package/admin/assets/{ar-iq-CjG6db8J.js → ar-iq-y4_Puo4B.js} +1 -1
- package/admin/assets/{ar-kw-DMsdR225.js → ar-kw-DTOZ0VC7.js} +1 -1
- package/admin/assets/{ar-ly-ZhxIwUOA.js → ar-ly-lPV9gApv.js} +1 -1
- package/admin/assets/{ar-ma-Bo3Z1RyK.js → ar-ma-DZqLSpeB.js} +1 -1
- package/admin/assets/{ar-sa-Db44biae.js → ar-sa-v-5vsIOR.js} +1 -1
- package/admin/assets/{ar-tn-DNWRixE0.js → ar-tn-a4q8lhXy.js} +1 -1
- package/admin/assets/{az-B6LcmVzB.js → az-Cj4yq-j-.js} +1 -1
- package/admin/assets/baseUrl-Do5CYuBZ.js +2 -0
- package/admin/assets/{be-Dp0KhO5x.js → be-B-3QlFM8.js} +1 -1
- package/admin/assets/{bg-TsOJJvBm.js → bg-A8-93xdK.js} +1 -1
- package/admin/assets/{bi-DstczOGo.js → bi-bwwEWGG2.js} +1 -1
- package/admin/assets/{bm-Bf09NN15.js → bm-DpLmtYXC.js} +1 -1
- package/admin/assets/{bn-Da3tHLgx.js → bn-DPL_BgLw.js} +1 -1
- package/admin/assets/{bn-bd-CeSalisC.js → bn-bd-DukmY_R5.js} +1 -1
- package/admin/assets/{bo-Ctxe0IKQ.js → bo-68KDEKGI.js} +1 -1
- package/admin/assets/{br-Y3dPq3Tj.js → br-gA86uwqY.js} +1 -1
- package/admin/assets/{bs-BbAlSeZx.js → bs-SfthSp42.js} +1 -1
- package/admin/assets/{ca-8-Nn97gi.js → ca-8qUtZKFe.js} +1 -1
- package/admin/assets/{cs-BD5ArFNW.js → cs-CTHcqPCX.js} +1 -1
- package/admin/assets/{cv-CdMFVXGr.js → cv-BhBW7hcO.js} +1 -1
- package/admin/assets/{cy-B3QEYlIT.js → cy-BYTS4PNY.js} +1 -1
- package/admin/assets/{da-Bju2YQ9G.js → da-BiwfOrRd.js} +1 -1
- package/admin/assets/{de-DdzCTquR.js → de-BFqyDxvo.js} +1 -1
- package/admin/assets/{de-at-DgyKCkPl.js → de-at-C7zUXXVL.js} +1 -1
- package/admin/assets/{de-ch-Dk9qkzvn.js → de-ch-BVHosAzt.js} +1 -1
- package/admin/assets/dist-DC2A6cD2.js +1 -0
- package/admin/assets/{dv-C5KWK8o4.js → dv-dvig99nB.js} +1 -1
- package/admin/assets/{el-BDL_lPlM.js → el-BtJcYjoT.js} +1 -1
- package/admin/assets/en-B26lXzkx.js +1 -0
- package/admin/assets/{en-au-CgltfNUb.js → en-au-CWzJ565h.js} +1 -1
- package/admin/assets/{en-ca-DEsKzbWO.js → en-ca-nou5bZ6q.js} +1 -1
- package/admin/assets/{en-in-C7Kv4c3w.js → en-gb-kl3giCnh.js} +1 -1
- package/admin/assets/{en-ie-aN3g-yqK.js → en-ie-C55e3apX.js} +1 -1
- package/admin/assets/{en-il-CZl2d7NK.js → en-il-HYabE6j7.js} +1 -1
- package/admin/assets/{en-tt-B5vDLhL7.js → en-in-Bri93cNM.js} +1 -1
- package/admin/assets/{en-nz-DA_sIaGR.js → en-nz-BqhpzeuX.js} +1 -1
- package/admin/assets/{en-sg-CP5PJpZf.js → en-sg-q8xv-C8V.js} +1 -1
- package/admin/assets/{en-gb-21AYC3Ik.js → en-tt-BqzQXPA5.js} +1 -1
- package/admin/assets/{eo-VE1KDD1u.js → eo-5Y962E4S.js} +1 -1
- package/admin/assets/{es-SUzi5oTU.js → es-DOQ7swrW.js} +1 -1
- package/admin/assets/{es-do-Iri0eWm8.js → es-do-Diob7juh.js} +1 -1
- package/admin/assets/{es-mx-DwneKeOc.js → es-mx-miy7RFDh.js} +1 -1
- package/admin/assets/{es-pr-C4zPUdA1.js → es-pr-CZa5Iw2n.js} +1 -1
- package/admin/assets/{es-us-BPS67etc.js → es-us-BX03CBQf.js} +1 -1
- package/admin/assets/{esm-CyNQ7bBW.js → esm-Dtaf0rWK.js} +1 -1
- package/admin/assets/{et-Ciqbfae0.js → et-DGWOmMlC.js} +1 -1
- package/admin/assets/{eu-CGhOwQpe.js → eu-D1Qj8RMh.js} +1 -1
- package/admin/assets/{fa-BWZiAv_E.js → fa--TfwKnl9.js} +1 -1
- package/admin/assets/{fi-DJmgkVsJ.js → fi-Dcbkv925.js} +1 -1
- package/admin/assets/{fo-DVez5N-g.js → fo-BPGX_WF4.js} +1 -1
- package/admin/assets/{fr-D206itJo.js → fr-CNsDHzNh.js} +1 -1
- package/admin/assets/{fr-ca-C6JiEHfi.js → fr-ca-BsNs3KIJ.js} +1 -1
- package/admin/assets/{fr-ch-DUTEuSU_.js → fr-ch-BBmdtvlB.js} +1 -1
- package/admin/assets/{fy-C_r06zH-.js → fy-q3UE-mqp.js} +1 -1
- package/admin/assets/{ga-CrdQqAN5.js → ga-C-DOgnYh.js} +1 -1
- package/admin/assets/{gd-iWHfhKAH.js → gd-mLMfry_l.js} +1 -1
- package/admin/assets/{gl-zgfy-pQ0.js → gl-CO8Bj9I_.js} +1 -1
- package/admin/assets/{gom-latn-CMZ7Vj7V.js → gom-latn-myglMmHV.js} +1 -1
- package/admin/assets/{gu-DNqIMjZc.js → gu-Bdz1OpMU.js} +1 -1
- package/admin/assets/{he-OJBbYFzL.js → he-C4lqk2AA.js} +1 -1
- package/admin/assets/{hi-ByrMhKpX.js → hi-h0Byc_UN.js} +1 -1
- package/admin/assets/{hr-CfRZXzCu.js → hr-CZV7Za1n.js} +1 -1
- package/admin/assets/{ht-DDrMtLzJ.js → ht-Dg2blNvl.js} +1 -1
- package/admin/assets/{hu-Ckeq3R6_.js → hu-DbOVhd9K.js} +1 -1
- package/admin/assets/{hy-am-OpZy7Nvg.js → hy-am-E48Q7kWE.js} +1 -1
- package/admin/assets/icons-3rupj9Xr.js +1 -0
- package/admin/assets/{id-BE8-Ys79.js → id-Cd4yWevW.js} +1 -1
- package/admin/assets/{index-eeRX25da.css → index-11n5z0Ez.css} +1 -1
- package/admin/assets/index-Dsq-sVu9.js +477 -0
- package/admin/assets/{is-BOxJcH5N.js → is-BJZYSfrA.js} +1 -1
- package/admin/assets/{it-BFlrIXvP.js → it-BRaqqFz4.js} +1 -1
- package/admin/assets/{it-ch-ILAp-lZZ.js → it-ch-BkLqxaff.js} +1 -1
- package/admin/assets/{ja-CbbYAYyn.js → ja-X_I-25cD.js} +1 -1
- package/admin/assets/{jv-CuLkRQCH.js → jv-BBBx3R3v.js} +1 -1
- package/admin/assets/{ka-BFeRDN-I.js → ka-D9Yrujqk.js} +1 -1
- package/admin/assets/{kk-CMvQxaPk.js → kk-Bz450_o8.js} +1 -1
- package/admin/assets/{km-BdQbDUNF.js → km-CKOAqvHM.js} +1 -1
- package/admin/assets/{kn-CE5AS6Nx.js → kn-k2xTBR7a.js} +1 -1
- package/admin/assets/{ko-Ctl1mHOt.js → ko-BCvoCYib.js} +1 -1
- package/admin/assets/{ku-Blbo7opr.js → ku-D6Rloctr.js} +1 -1
- package/admin/assets/{ky-iCha_cZX.js → ky-C54qnEzk.js} +1 -1
- package/admin/assets/{lb-BaP0S6h1.js → lb-y3rkrWB2.js} +1 -1
- package/admin/assets/{lo-B_Q4zUMa.js → lo-nA_dPnOU.js} +1 -1
- package/admin/assets/{lt-BOaP1KGX.js → lt-hjPmCCML.js} +1 -1
- package/admin/assets/{lv-S1XMSUX1.js → lv-Bh4qmUa_.js} +1 -1
- package/admin/assets/{me-ChOLVJHC.js → me-e32suC_n.js} +1 -1
- package/admin/assets/{mi-CnoIUOGl.js → mi-Dwbsuyr9.js} +1 -1
- package/admin/assets/{mk-BoEaxVXE.js → mk-DjUXwKRn.js} +1 -1
- package/admin/assets/{ml-BuvmVn6P.js → ml-CWjFAViF.js} +1 -1
- package/admin/assets/{mn-2bvGd1HI.js → mn-BU4qTvEl.js} +1 -1
- package/admin/assets/{mr-BAoAWQmy.js → mr-Bvnduzfb.js} +1 -1
- package/admin/assets/{ms-C2eT9r-f.js → ms-XuKVAni7.js} +1 -1
- package/admin/assets/{ms-my-D2ZXdcAf.js → ms-my-CDbnYp0g.js} +1 -1
- package/admin/assets/{mt-BL5JZC4T.js → mt-PDuxJf8J.js} +1 -1
- package/admin/assets/{my-CuJ4L0Ji.js → my-7N6SHnsD.js} +1 -1
- package/admin/assets/{nb-CjE6cT80.js → nb-Cu3KUtTR.js} +1 -1
- package/admin/assets/{ne-BL9I0cb1.js → ne-CYW0uI2a.js} +1 -1
- package/admin/assets/{nl-Dt3mtMln.js → nl-DL7cw699.js} +1 -1
- package/admin/assets/{nl-be-Am1mjZK9.js → nl-be-B3NSF-2w.js} +1 -1
- package/admin/assets/{nn-ChSewyYy.js → nn-BHITVkGB.js} +1 -1
- package/admin/assets/{oc-lnc-x6_ChCE9.js → oc-lnc-dp3c4Bty.js} +1 -1
- package/admin/assets/{pa-in-DVyN8o2P.js → pa-in-BxgIlP1T.js} +1 -1
- package/admin/assets/{pl-CqcuAUGV.js → pl-GrG6yjkB.js} +1 -1
- package/admin/assets/{pt-br-oBVRyUzP.js → pt-br-BxTgeF95.js} +1 -1
- package/admin/assets/{pt-B2BPpD7K.js → pt-cVbj6hL6.js} +1 -1
- package/admin/assets/{rn-B3e3nkfp.js → rn-DiVJ2_Jy.js} +1 -1
- package/admin/assets/{ro-C2tWFx0Q.js → ro-D1WeRyXR.js} +1 -1
- package/admin/assets/rolldown-runtime-CacB07dV.js +1 -0
- package/admin/assets/routing-Cjyek7O_.js +1 -0
- package/admin/assets/{ru-CCsEUnFL.js → ru-DZCu4V9W.js} +1 -1
- package/admin/assets/{rw-CaCkWlGA.js → rw-DfFpVc_g.js} +1 -1
- package/admin/assets/{sd-90Zixcez.js → sd-yDyBYxtQ.js} +1 -1
- package/admin/assets/{se-DaZXpLsK.js → se-EJKibocp.js} +1 -1
- package/admin/assets/sha512-DJtGRwVu.js +1 -0
- package/admin/assets/{si-CSoBAkgi.js → si-BCBV00rO.js} +1 -1
- package/admin/assets/{sk-pgQaqa2z.js → sk-B2VvG_mo.js} +1 -1
- package/admin/assets/{sl-Cr5kSdA7.js → sl-BTYmt65M.js} +1 -1
- package/admin/assets/{sq-Pxi2MZOP.js → sq-BaLGKAHu.js} +1 -1
- package/admin/assets/{sr-Fdc9-lC-.js → sr-DarE-95b.js} +1 -1
- package/admin/assets/{sr-cyrl-06jNWqpg.js → sr-cyrl-CrwXFtkw.js} +1 -1
- package/admin/assets/{ss-BjEzSMit.js → ss-CbBe1RUs.js} +1 -1
- package/admin/assets/{sv-CqWqUpcA.js → sv-Baw7Je9j.js} +1 -1
- package/admin/assets/{sv-fi-CsO2xQHd.js → sv-fi-CVHORXkw.js} +1 -1
- package/admin/assets/{sw-xQUdgYhn.js → sw-k1H_OzIi.js} +1 -1
- package/admin/assets/{ta-epbFrZ1M.js → ta-Bc4ZaZT9.js} +1 -1
- package/admin/assets/{te-DusTwU6q.js → te-ClciACZi.js} +1 -1
- package/admin/assets/{tet-ylc9v4gl.js → tet-B75w1oSG.js} +1 -1
- package/admin/assets/{tg-2QfVTAJf.js → tg-CuH2ARRk.js} +1 -1
- package/admin/assets/{th-QIm0Mh7I.js → th-LvExAoJ6.js} +1 -1
- package/admin/assets/{tk-140KMZeW.js → tk-2CFwTMKo.js} +1 -1
- package/admin/assets/{tl-ph-S7IZkbx3.js → tl-ph-CNJ_lViV.js} +1 -1
- package/admin/assets/{tlh-C2fYb34-.js → tlh-9UbKQkHo.js} +1 -1
- package/admin/assets/{tr-Be-IM6i4.js → tr-Cu4P4OMe.js} +1 -1
- package/admin/assets/{tzl-DMy30zde.js → tzl-D97WsZW-.js} +1 -1
- package/admin/assets/{tzm-Cu882cHO.js → tzm-CURkYgMY.js} +1 -1
- package/admin/assets/{tzm-latn-BYxpYHet.js → tzm-latn-BRGsWK-9.js} +1 -1
- package/admin/assets/{ug-cn-Cl8Jqk2E.js → ug-cn-Cd4exKOc.js} +1 -1
- package/admin/assets/{uk-B-8XymtC.js → uk-DEXM3PIH.js} +1 -1
- package/admin/assets/{ur-ChGuAlvQ.js → ur-DpUycj07.js} +1 -1
- package/admin/assets/{uz-QbfaW7fT.js → uz-CznjzufA.js} +1 -1
- package/admin/assets/{uz-latn-DIQivLCy.js → uz-latn-Baga58FN.js} +1 -1
- package/admin/assets/{vi-C2CmYlDu.js → vi-BrZWcL2C.js} +1 -1
- package/admin/assets/{x-pseudo-BWgm1XlP.js → x-pseudo-BY6J4I7_.js} +1 -1
- package/admin/assets/{yo-8bNbPP6u.js → yo-Dkeaym0x.js} +1 -1
- package/admin/assets/{zh-CeNSRZ4r.js → zh-C2fOZUKR.js} +1 -1
- package/admin/assets/{zh-cn-BlbF5C_X.js → zh-cn-CiA7hMZm.js} +1 -1
- package/admin/assets/{zh-hk-kg1c_VSK.js → zh-hk-EkoniWh0.js} +1 -1
- package/admin/assets/{zh-tw-BCl4UsPA.js → zh-tw-KDgos-kB.js} +1 -1
- package/admin/index.html +3 -2
- package/frontend/assets/{dist-legacy-DYE1EOcc.js → dist-legacy-BNFW04Ss.js} +1 -1
- package/frontend/assets/index-legacy-2akkos6t.js +1 -0
- package/frontend/assets/{lib-legacy-C4Gw_0kX.js → lib-legacy-CO5spnaN.js} +1 -1
- package/frontend/assets/{sha512-legacy-D3RbPSpl.js → sha512-legacy-BuJAJxVV.js} +1 -1
- package/frontend/index.html +1 -1
- package/npm-shrinkwrap.json +9 -9
- package/package.json +1 -1
- package/src/api.get_file_list.js +10 -8
- package/src/api.vfs.js +4 -8
- package/src/basicWeb.js +2 -1
- package/src/consoleLog.js +9 -11
- package/src/const.js +1 -1
- package/src/cross.js +5 -1
- package/src/index.js +1 -0
- package/src/plugins.js +2 -1
- package/src/serveGuiFiles.js +2 -1
- package/src/vfs.js +41 -6
- package/src/watchLoad.js +4 -1
- package/src/webdav.js +45 -42
- package/admin/assets/dist-KY_8edrw.js +0 -1
- package/admin/assets/en-Ds3H1Wec.js +0 -1
- package/admin/assets/index-34fRsXFH.js +0 -765
- package/admin/assets/sha512-DlGRFb_l.js +0 -1
- package/frontend/assets/index-legacy-Br-Lpsst.js +0 -1
package/src/webdav.js
CHANGED
|
@@ -317,33 +317,33 @@ const webdav = async (ctx, next) => {
|
|
|
317
317
|
ctx.status = 207;
|
|
318
318
|
const outPath = webdavHrefPath(path, node, ctx);
|
|
319
319
|
const res = ctx.body = new stream_1.PassThrough({ encoding: 'utf8' });
|
|
320
|
-
res.write(`<?xml version="1.0" encoding="utf-8" ?><multistatus xmlns="DAV:">`);
|
|
320
|
+
res.write(`<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">`);
|
|
321
321
|
await sendEntry(node);
|
|
322
322
|
if (isList) {
|
|
323
323
|
depth = Math.max(0, depth - 1);
|
|
324
324
|
for await (const n of (0, vfs_1.walkNode)(node, { ctx, depth }))
|
|
325
325
|
await sendEntry(n, true);
|
|
326
326
|
}
|
|
327
|
-
res.write(`</multistatus>`);
|
|
327
|
+
res.write(`</D:multistatus>`);
|
|
328
328
|
res.end();
|
|
329
329
|
async function sendEntry(node, append = false) {
|
|
330
330
|
if ((0, vfs_1.nodeIsLink)(node))
|
|
331
331
|
return;
|
|
332
332
|
const name = (0, vfs_1.getNodeName)(node);
|
|
333
333
|
const isDir = await (0, vfs_1.nodeIsFolder)(node);
|
|
334
|
-
const st = await (0, vfs_1.nodeStats)(node);
|
|
335
|
-
res.write(`<response>
|
|
336
|
-
<href>${lodash_1.default.escape(outPath + (append ? (0, cross_1.pathEncode)(name, true) + (isDir ? '/' : '') : ''))}</href>
|
|
337
|
-
<propstat>
|
|
338
|
-
<prop>
|
|
339
|
-
${(0, cross_1.prefix)('<getlastmodified>', st?.mtime?.toGMTString(), '</getlastmodified>')}
|
|
340
|
-
${(0, cross_1.prefix)('<creationdate>', (st?.birthtime || st?.ctime)?.toISOString().replace(/\..*/, '-00:00'), '</creationdate>')}
|
|
341
|
-
${isDir ? '<resourcetype><collection/></resourcetype>'
|
|
342
|
-
: `<resourcetype/><getcontentlength>${st?.size}</getcontentlength>`}
|
|
343
|
-
</prop>
|
|
344
|
-
<status>HTTP/1.1 200 OK</status>
|
|
345
|
-
</propstat>
|
|
346
|
-
</response>
|
|
334
|
+
const st = append && node.see_without_probing ? undefined : await (0, vfs_1.nodeStats)(node);
|
|
335
|
+
res.write(`<D:response>
|
|
336
|
+
<D:href>${lodash_1.default.escape(outPath + (append ? (0, cross_1.pathEncode)(name, true) + (isDir ? '/' : '') : ''))}</D:href>
|
|
337
|
+
<D:propstat>
|
|
338
|
+
<D:prop>
|
|
339
|
+
${(0, cross_1.prefix)('<D:getlastmodified>', st?.mtime?.toGMTString(), '</D:getlastmodified>')}
|
|
340
|
+
${(0, cross_1.prefix)('<D:creationdate>', (st?.birthtime || st?.ctime)?.toISOString().replace(/\..*/, '-00:00'), '</D:creationdate>')}
|
|
341
|
+
${isDir ? '<D:resourcetype><D:collection/></D:resourcetype>'
|
|
342
|
+
: `<D:resourcetype/><D:getcontentlength>${st?.size}</D:getcontentlength>`}
|
|
343
|
+
</D:prop>
|
|
344
|
+
<D:status>HTTP/1.1 200 OK</D:status>
|
|
345
|
+
</D:propstat>
|
|
346
|
+
</D:response>
|
|
347
347
|
`);
|
|
348
348
|
}
|
|
349
349
|
}
|
|
@@ -407,14 +407,14 @@ const webdav = async (ctx, next) => {
|
|
|
407
407
|
return /<([^>]+)>/.exec(ifHeader)?.[1] || '';
|
|
408
408
|
}
|
|
409
409
|
function renderLockResponse(token, seconds) {
|
|
410
|
-
return `<?xml version="1.0" encoding="utf-8"?><prop xmlns="DAV:"><lockdiscovery><activelock>
|
|
411
|
-
<locktype><write/></locktype>
|
|
412
|
-
<lockscope><exclusive/></lockscope>
|
|
413
|
-
<locktoken><href>${lodash_1.default.escape(token)}</href></locktoken>
|
|
414
|
-
<lockroot><href>${lodash_1.default.escape(path)}</href></lockroot>
|
|
415
|
-
<depth>0</depth>
|
|
416
|
-
<timeout>Second-${seconds}</timeout>
|
|
417
|
-
</activelock></lockdiscovery></prop>`;
|
|
410
|
+
return `<?xml version="1.0" encoding="utf-8"?><D:prop xmlns:D="DAV:"><D:lockdiscovery><D:activelock>
|
|
411
|
+
<D:locktype><D:write/></D:locktype>
|
|
412
|
+
<D:lockscope><D:exclusive/></D:lockscope>
|
|
413
|
+
<D:locktoken><D:href>${lodash_1.default.escape(token)}</D:href></D:locktoken>
|
|
414
|
+
<D:lockroot><D:href>${lodash_1.default.escape(path)}</D:href></D:lockroot>
|
|
415
|
+
<D:depth>0</D:depth>
|
|
416
|
+
<D:timeout>Second-${seconds}</D:timeout>
|
|
417
|
+
</D:activelock></D:lockdiscovery></D:prop>`;
|
|
418
418
|
}
|
|
419
419
|
};
|
|
420
420
|
exports.webdav = webdav;
|
|
@@ -452,14 +452,18 @@ async function applyProppatchProp(prop, node, path, ctx) {
|
|
|
452
452
|
const k = prop.name.toLowerCase();
|
|
453
453
|
if (PROPPATCH_PROTECTED_LIVE_PROPS.has(k))
|
|
454
454
|
return cross_1.HTTP_FORBIDDEN;
|
|
455
|
-
if (
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
455
|
+
if (!PROPPATCH_UTIME_PROPS.has(k)
|
|
456
|
+
&& !(const_1.IS_WINDOWS && k === 'win32fileattributes'))
|
|
457
|
+
return cross_1.HTTP_OK; // PROPPATCH is only persisted when HFS gets real dead-property storage; no-op success keeps Windows and macOS clients from aborting writes
|
|
458
|
+
const { source } = node;
|
|
459
|
+
if (!source)
|
|
460
|
+
return cross_1.HTTP_FORBIDDEN;
|
|
461
|
+
// WebDAV clients patch metadata right after upload; outside that short same-username grace, metadata writes are file modifications
|
|
462
|
+
const missingWritePerm = canOverwrite.has(path + (0, cross_1.prefix)('|', (0, auth_1.getCurrentUsername)(ctx))) ? 0
|
|
463
|
+
: (0, vfs_1.statusCodeForMissingPerm)(node, 'can_delete', ctx, false);
|
|
464
|
+
if (missingWritePerm)
|
|
465
|
+
return missingWritePerm;
|
|
466
|
+
if (PROPPATCH_UTIME_PROPS.has(k)) {
|
|
463
467
|
const date = new Date(String(prop.value));
|
|
464
468
|
if (isNaN(Number(date)))
|
|
465
469
|
return cross_1.HTTP_BAD_REQUEST;
|
|
@@ -467,18 +471,17 @@ async function applyProppatchProp(prop, node, path, ctx) {
|
|
|
467
471
|
const atime = k === 'win32lastaccesstime' ? date : stats?.atime ?? new Date();
|
|
468
472
|
const mtime = k === 'win32lastmodifiedtime' ? date : stats?.mtime ?? new Date();
|
|
469
473
|
// WebDAV clients often use dead properties for file times; apply the portable subset instead of only pretending success
|
|
470
|
-
await (0, promises_1.utimes)(
|
|
474
|
+
await (0, promises_1.utimes)(source, atime, mtime);
|
|
471
475
|
}
|
|
472
|
-
|
|
476
|
+
else {
|
|
473
477
|
const attributes = parseWindowsFileAttributes(prop.value);
|
|
474
478
|
if (attributes === undefined)
|
|
475
479
|
return cross_1.HTTP_BAD_REQUEST;
|
|
476
480
|
// fswin is already our Windows attribute bridge; this keeps PROPPATCH metadata aligned with the actual filesystem
|
|
477
|
-
const ok = await new Promise(resolve => fswin_1.default.setAttributes(
|
|
481
|
+
const ok = await new Promise(resolve => fswin_1.default.setAttributes(source, lodash_1.default.mapValues(WINDOWS_FILE_ATTRIBUTE_FLAGS, flag => Boolean(attributes & flag)), ok => resolve(Boolean(ok))));
|
|
478
482
|
if (!ok)
|
|
479
483
|
return cross_1.HTTP_SERVER_ERROR;
|
|
480
484
|
}
|
|
481
|
-
// PROPPATCH is only persisted when HFS gets real dead-property storage; no-op success keeps Windows and macOS clients from aborting writes
|
|
482
485
|
return cross_1.HTTP_OK;
|
|
483
486
|
}
|
|
484
487
|
function parseWindowsFileAttributes(v) {
|
|
@@ -492,13 +495,13 @@ function parseWindowsFileAttributes(v) {
|
|
|
492
495
|
}
|
|
493
496
|
function renderProppatchResponse(path, statuses) {
|
|
494
497
|
const byStatus = lodash_1.default.groupBy(statuses, 'status');
|
|
495
|
-
return `<?xml version="1.0" encoding="utf-8" ?><multistatus xmlns="DAV:"><response>
|
|
496
|
-
<href>${lodash_1.default.escape(path)}</href>
|
|
497
|
-
${lodash_1.default.map(byStatus, (items, status) => `<propstat>
|
|
498
|
-
<prop>${items.map(({ prop }) =>
|
|
499
|
-
<status>HTTP/1.1 ${status} ${lodash_1.default.escape(cross_1.HTTP_MESSAGES[Number(status)] || http_1.STATUS_CODES[Number(status)] || '')}</status>
|
|
500
|
-
</propstat>`).join('')}
|
|
501
|
-
</response></multistatus>`;
|
|
498
|
+
return `<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:"><D:response>
|
|
499
|
+
<D:href>${lodash_1.default.escape(path)}</D:href>
|
|
500
|
+
${lodash_1.default.map(byStatus, (items, status) => `<D:propstat>
|
|
501
|
+
<D:prop>${items.map(({ prop }) => `<D:${prop}/>`).join('')}</D:prop>
|
|
502
|
+
<D:status>HTTP/1.1 ${status} ${lodash_1.default.escape(cross_1.HTTP_MESSAGES[Number(status)] || http_1.STATUS_CODES[Number(status)] || '')}</D:status>
|
|
503
|
+
</D:propstat>`).join('')}
|
|
504
|
+
</D:response></D:multistatus>`;
|
|
502
505
|
}
|
|
503
506
|
function getXmlChildren(obj, name) {
|
|
504
507
|
if (!obj || typeof obj !== 'object')
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./index-34fRsXFH.js";var t=e(((e,t)=>{t.exports={}})),n=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.crossEnvCrypto=void 0;try{let n=typeof window<`u`&&window.crypto||t().webcrypto;if(n){if(!n.subtle)throw Error(`Crypto.Subtle is undefined. Make sure you are using HTTPS in a compatible browser.`);let t=e=>t=>n.subtle.digest(e,t);e.crossEnvCrypto={randomBytes:n.getRandomValues.bind(n),hashFunctions:{SHA1:t(`SHA-1`),SHA256:t(`SHA-256`),SHA384:t(`SHA-384`),SHA512:t(`SHA-512`)}}}else{let n=t(),r=e=>t=>n.createHash(e).update(t).digest().buffer;e.crossEnvCrypto={randomBytes:n.randomFillSync,hashFunctions:{SHA1:r(`sha1`),SHA256:r(`sha256`),SHA384:r(`sha384`),SHA512:r(`sha512`)}}}}catch(e){throw console.error(e),Error(`No suitable crypto library was found. You may need a polyfill.`)}})),r=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SRPParameters=void 0;var t=n(),r=class e{constructor(t=e.PrimeGroup[2048],n=e.H.SHA512){if(this.primeGroup=t,this.H=n,this.NBits=this.primeGroup.N.toString(2).length,!n)throw Error(`Hash function required`)}};e.SRPParameters=r,r.PrimeGroup={256:{N:BigInt(`125617018995153554710546479714086468244499594888726646874671447258204721048803`),g:BigInt(2)},512:{N:BigInt(`11144252439149533417835749556168991736939157778924947037200268358613863350040339017097790259154750906072491181606044774215413467851989724116331597513345603`),g:BigInt(2)},768:{N:BigInt(`1087179135105457859072065649059069760280540086975817629066444682366896187793570736574549981488868217843627094867924800342887096064844227836735667168319981288765377499806385489913341488724152562880918438701129530606139552645689583147`),g:BigInt(2)},1024:{N:BigInt(`167609434410335061345139523764350090260135525329813904557420930309800865859473551531551523800013916573891864789934747039010546328480848979516637673776605610374669426214776197828492691384519453218253702788022233205683635831626913357154941914129985489522629902540768368409482248290641036967659389658897350067939`),g:BigInt(2)},1536:{N:BigInt(`1486998185923128292816507353619409521152457662596380074614818966810244974827752411420380336514078832314731499938313197533147998565301020797040787428051479639316928015998415709101293902971072960487527411068082311763171549170528008620813391411445907584912865222076100726050255271567749213905330659264908657221124284665444825474741087704974475795505492821585749417639344967192301749033325359286273431675492866492416941152646940908101472416714421046022696100064262587`),g:BigInt(2)},2048:{N:BigInt(`21766174458617435773191008891802753781907668374255538511144643224689886235383840957210909013086056401571399717235807266581649606472148410291413364152197364477180887395655483738115072677402235101762521901569820740293149529620419333266262073471054548368736039519702486226506248861060256971802984953561121442680157668000761429988222457090413873973970171927093992114751765168063614761119615476233422096442783117971236371647333871414335895773474667308967050807005509320424799678417036867928316761272274230314067548291133582479583061439577559347101961771406173684378522703483495337037655006751328447510550299250924469288819`),g:BigInt(2)}},r.H={SHA1:t.crossEnvCrypto.hashFunctions.SHA1,SHA256:t.crossEnvCrypto.hashFunctions.SHA256,SHA384:t.crossEnvCrypto.hashFunctions.SHA384,SHA512:t.crossEnvCrypto.hashFunctions.SHA512}})),i=e((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.modPow=e.hashBitCount=e.createVerifierAndSalt=e.createVerifier=e.generateRandomBigInt=e.generateRandomString=e.hashPadded=e.hash=e.padStartArrayBuffer=e.stringToArrayBuffer=e.arrayBufferToBigInt=e.bigIntToArrayBuffer=void 0;var r=n(),i=BigInt(0),a=BigInt(1),o=BigInt(2);e.bigIntToArrayBuffer=e=>{let t=e.toString(16),n=new ArrayBuffer(Math.ceil(t.length/2)),r=new Uint8Array(n),i=0;t.length%2!=0&&(r[0]=parseInt(t[0],16),i=1);for(let e=0;e<n.byteLength;e++)r[e+i]=parseInt(t.slice(2*e+i,2*e+2+i),16);return n},e.arrayBufferToBigInt=e=>{let t=[];return new Uint8Array(e).forEach(e=>{t.push((`0`+e.toString(16)).slice(-2))}),BigInt(`0x${t.join(``)}`)};function s(e){return new TextEncoder().encode(e).buffer}e.stringToArrayBuffer=s,e.padStartArrayBuffer=(e,t)=>{let n=new Uint8Array(e);if(n.length<t){let e=new Uint8Array(t);return e.fill(0,0,t-n.length),e.set(n,t-n.length),e}return n};function c(e,...t){let n=t.reduce((e,t)=>e+t.byteLength,0),r=new Uint8Array(n);for(let e=0,n=0;n<t.length;n++)r.set(new Uint8Array(t[n]),e),e+=t[n].byteLength;return e.H(r)}e.hash=c;function l(t,n,...r){return c(t,...r.map(t=>e.padStartArrayBuffer(t,n)))}e.hashPadded=l;function u(e=10){let t=new Uint8Array(Math.ceil(Math.ceil(e/2)));return r.crossEnvCrypto.randomBytes(t),t.reduce((e,t)=>{let n=t.toString(16).toString();return n.length===1?e+`0`+n:e+n},``).slice(0,e)}e.generateRandomString=u;function d(t=16){return e.arrayBufferToBigInt(h(t))}e.generateRandomBigInt=d;function f(e,n,r,i){return t(this,void 0,void 0,function*(){if(!n||!n.trim())throw Error(`Identity (I) must not be null or empty.`);if(!r)throw Error(`Salt (s) must not be null.`);if(!i)throw Error(`Password (P) must not be null`);let t=yield e.computeX(n,r,i);return e.computeVerifier(t)})}e.createVerifier=f;function p(e,n,r,i){return t(this,void 0,void 0,function*(){let t=yield e.generateRandomSalt(i);return{s:t,v:yield f(e,n,t,r)}})}e.createVerifierAndSalt=p,e.hashBitCount=n=>t(void 0,void 0,void 0,function*(){return(yield c(n,e.bigIntToArrayBuffer(BigInt(1)))).byteLength*8});function m(e,t,n){let r=a;for(;t>i;)t%o==a?(r=e*r%n,t-=a):(e=e*e%n,t/=o);return r}e.modPow=m;var h=e=>{let t=new Uint8Array(e);return r.crossEnvCrypto.randomBytes(t),t.buffer}})),a=e((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.SRPRoutines=void 0;var n=i();e.SRPRoutines=class{constructor(e){this.parameters=e}hash(...e){return n.hash(this.parameters,...e)}hashPadded(...e){let t=Math.trunc((this.parameters.NBits+7)/8);return n.hashPadded(this.parameters,t,...e)}computeK(){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hashPadded(n.bigIntToArrayBuffer(this.parameters.primeGroup.N),n.bigIntToArrayBuffer(this.parameters.primeGroup.g)))})}generateRandomSalt(e){return t(this,void 0,void 0,function*(){let t=yield n.hashBitCount(this.parameters),r=e||2*t/8;return n.generateRandomBigInt(r)})}computeX(e,r,i){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hash(n.bigIntToArrayBuffer(r),yield this.computeIdentityHash(e,i)))})}computeXStep2(e,r){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hash(n.bigIntToArrayBuffer(e),r))})}computeIdentityHash(e,r){return t(this,void 0,void 0,function*(){return yield this.hash(n.stringToArrayBuffer(r))})}computeVerifier(e){return n.modPow(this.parameters.primeGroup.g,e,this.parameters.primeGroup.N)}generatePrivateValue(){let e=Math.max(256,this.parameters.NBits),t;do t=n.generateRandomBigInt(e/8)%this.parameters.primeGroup.N;while(t===BigInt(0));return t}computeClientPublicValue(e){return n.modPow(this.parameters.primeGroup.g,e,this.parameters.primeGroup.N)}isValidPublicValue(e){return e%this.parameters.primeGroup.N!==BigInt(0)}computeU(e,r){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hashPadded(n.bigIntToArrayBuffer(e),n.bigIntToArrayBuffer(r)))})}computeClientEvidence(e,r,i,a,o){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hash(n.bigIntToArrayBuffer(i),n.bigIntToArrayBuffer(a),n.bigIntToArrayBuffer(o)))})}computeServerEvidence(e,r,i){return t(this,void 0,void 0,function*(){return n.arrayBufferToBigInt(yield this.hash(n.bigIntToArrayBuffer(e),n.bigIntToArrayBuffer(r),n.bigIntToArrayBuffer(i)))})}computeClientSessionKey(e,t,r,i,a){let o=this.parameters.primeGroup.N,s=r*t+i,c=n.modPow(this.parameters.primeGroup.g,t,o)*e%o;return n.modPow(a+o-c,s,o)}}})),o=e((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.SRPClientSessionStep2=e.SRPClientSessionStep1=e.SRPClientSession=void 0,e.SRPClientSession=class{constructor(e){this.routines=e}step1(e,r){return t(this,void 0,void 0,function*(){if(!e||!e.trim())throw Error(`User identity must not be null nor empty`);if(!r)throw Error(`User password must not be null`);let t=yield this.routines.computeIdentityHash(e,r);return new n(this.routines,e,t)})}};var n=class e{constructor(e,t,n){this.routines=e,this.I=t,this.IH=n}step2(e,n){return t(this,void 0,void 0,function*(){if(!e)throw Error(`Salt (s) must not be null`);if(!n)throw Error(`Public server value (B) must not be null`);let t=yield this.routines.computeXStep2(e,this.IH),i=this.routines.generatePrivateValue(),a=this.routines.computeClientPublicValue(i),o=yield this.routines.computeK(),s=yield this.routines.computeU(a,n),c=this.routines.computeClientSessionKey(o,t,s,i,n),l=yield this.routines.computeClientEvidence(this.I,e,a,n,c);return new r(this.routines,a,l,c)})}toJSON(){return{I:this.I,IH:Array.from(new Uint8Array(this.IH))}}static fromState(t,n){return new e(t,n.I,new Uint8Array(n.IH).buffer)}};e.SRPClientSessionStep1=n;var r=class e{constructor(e,t,n,r){this.routines=e,this.A=t,this.M1=n,this.S=r}step3(e){return t(this,void 0,void 0,function*(){if(!e)throw Error(`Server evidence (M2) must not be null`);if((yield this.routines.computeServerEvidence(this.A,this.M1,this.S))!==e)throw Error(`Bad server credentials`)})}toJSON(){return{A:this.A.toString(16),M1:this.M1.toString(16),S:this.S.toString(16)}}static fromState(t,n){return new e(t,BigInt(`0x`+n.A),BigInt(`0x`+n.M1),BigInt(`0x`+n.S))}};e.SRPClientSessionStep2=r})),s=e((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.SRPServerSessionStep1=e.SRPServerSession=void 0;var n=i();e.SRPServerSession=class{constructor(e){this.routines=e}step1(e,n,i){return t(this,void 0,void 0,function*(){let t=this.routines.generatePrivateValue(),o=yield this.routines.computeK(),s=a(this.routines.parameters,o,i,t);return new r(this.routines,e,n,i,t,s)})}};var r=class e{constructor(e,t,n,r,i,a){this.routines=e,this.identifier=t,this.salt=n,this.verifier=r,this.b=i,this.B=a}sessionKey(e){return t(this,void 0,void 0,function*(){if(e===null)throw Error(`Client public value (A) must not be null`);if(!this.routines.isValidPublicValue(e))throw Error(`Invalid Client public value (A): ${e.toString(16)}`);let t=yield this.routines.computeU(e,this.B);return o(this.routines.parameters.primeGroup.N,this.verifier,t,e,this.b)})}step2(e,n){return t(this,void 0,void 0,function*(){if(!n)throw Error(`Client evidence (M1) must not be null`);let t=yield this.sessionKey(e);if((yield this.routines.computeClientEvidence(this.identifier,this.salt,e,this.B,t))!==n)throw Error(`Bad client credentials`);return this.routines.computeServerEvidence(e,n,t)})}toJSON(){return{identifier:this.identifier,salt:this.salt.toString(16),verifier:this.verifier.toString(16),b:this.b.toString(16),B:this.B.toString(16)}}static fromState(t,n){return new e(t,n.identifier,BigInt(`0x`+n.salt),BigInt(`0x`+n.verifier),BigInt(`0x`+n.b),BigInt(`0x`+n.B))}};e.SRPServerSessionStep1=r;var a=(e,t,r,i)=>(n.modPow(e.primeGroup.g,i,e.primeGroup.N)+r*t)%e.primeGroup.N,o=(e,t,r,i,a)=>n.modPow(n.modPow(t,r,e)*i,a,e)})),c=e((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.generateRandomBigInt=e.arrayBufferToBigInt=e.bigIntToArrayBuffer=e.createVerifierAndSalt=e.SRPServerSessionStep1=e.SRPServerSession=e.SRPClientSessionStep2=e.SRPClientSessionStep1=e.SRPClientSession=e.SRPRoutines=e.SRPParameters=void 0;var t=r();Object.defineProperty(e,"SRPParameters",{enumerable:!0,get:function(){return t.SRPParameters}});var n=a();Object.defineProperty(e,"SRPRoutines",{enumerable:!0,get:function(){return n.SRPRoutines}});var c=o();Object.defineProperty(e,"SRPClientSession",{enumerable:!0,get:function(){return c.SRPClientSession}}),Object.defineProperty(e,"SRPClientSessionStep1",{enumerable:!0,get:function(){return c.SRPClientSessionStep1}}),Object.defineProperty(e,"SRPClientSessionStep2",{enumerable:!0,get:function(){return c.SRPClientSessionStep2}});var l=s();Object.defineProperty(e,"SRPServerSession",{enumerable:!0,get:function(){return l.SRPServerSession}}),Object.defineProperty(e,"SRPServerSessionStep1",{enumerable:!0,get:function(){return l.SRPServerSessionStep1}});var u=i();Object.defineProperty(e,"createVerifierAndSalt",{enumerable:!0,get:function(){return u.createVerifierAndSalt}}),Object.defineProperty(e,"bigIntToArrayBuffer",{enumerable:!0,get:function(){return u.bigIntToArrayBuffer}}),Object.defineProperty(e,"arrayBufferToBigInt",{enumerable:!0,get:function(){return u.arrayBufferToBigInt}}),Object.defineProperty(e,"generateRandomBigInt",{enumerable:!0,get:function(){return u.generateRandomBigInt}})}));export default c();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./index-34fRsXFH.js";var t=e({default:()=>n}),n={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}};export{t as n,n as t};
|