hfs 0.26.9 → 0.27.2
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/README.md +15 -2
- package/admin/assets/index-509bb1d6.js +415 -0
- package/admin/assets/index-60a380a7.css +1 -0
- package/{frontend/assets/sha512.6af42937.js → admin/assets/sha512-738f0943.js} +2 -2
- package/admin/index.html +2 -2
- package/frontend/assets/index-6e178dfd.css +1 -0
- package/frontend/assets/index-aea7654e.js +85 -0
- package/{admin/assets/sha512.9dfe82e1.js → frontend/assets/sha512-bf915587.js} +2 -2
- package/frontend/index.html +3 -3
- package/package.json +2 -6
- package/plugins/vhosting/plugin.js +23 -20
- package/src/QuickZipStream.js +1 -1
- package/src/ThrottledStream.js +1 -1
- package/src/adminApis.js +5 -5
- package/src/api.accounts.js +10 -10
- package/src/api.auth.js +17 -17
- package/src/api.file_list.js +13 -6
- package/src/api.helpers.js +6 -6
- package/src/api.monitor.js +2 -0
- package/src/api.plugins.js +1 -0
- package/src/api.vfs.js +15 -12
- package/src/apiMiddleware.js +7 -4
- package/src/block.js +1 -0
- package/src/commands.js +1 -0
- package/src/config.js +1 -1
- package/src/connections.js +1 -1
- package/src/const.js +18 -7
- package/src/crypt.js +1 -1
- package/src/debounceAsync.js +1 -0
- package/src/events.js +1 -1
- package/src/frontEndApis.js +1 -1
- package/src/github.js +3 -1
- package/src/index.js +3 -2
- package/src/listen.js +1 -1
- package/src/log.js +4 -4
- package/src/middlewares.js +30 -10
- package/src/misc.js +1 -1
- package/src/perm.js +31 -29
- package/src/plugins.js +1 -1
- package/src/serveFile.js +11 -11
- package/src/serveGuiFiles.js +4 -4
- package/src/sse.js +3 -2
- package/src/throttler.js +1 -1
- package/src/update.js +1 -0
- package/src/util-files.js +17 -2
- package/src/util-generators.js +1 -0
- package/src/util-http.js +3 -1
- package/src/vfs.js +29 -27
- package/src/watchLoad.js +1 -1
- package/src/zip.js +3 -2
- package/admin/assets/index.bb5198ec.js +0 -281
- package/admin/assets/index.dcc78777.css +0 -1
- package/frontend/assets/index.27a78796.js +0 -85
- package/frontend/assets/index.93366732.css +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{c as SF}from"./index.
|
|
1
|
+
import{c as SF}from"./index-aea7654e.js";function OF(iF,hF){for(var eF=0;eF<hF.length;eF++){const tF=hF[eF];if(typeof tF!="string"&&!Array.isArray(tF)){for(const w in tF)if(w!=="default"&&!(w in iF)){const lF=Object.getOwnPropertyDescriptor(tF,w);lF&&Object.defineProperty(iF,w,lF.get?lF:{enumerable:!0,get:()=>tF[w]})}}}return Object.freeze(Object.defineProperty(iF,Symbol.toStringTag,{value:"Module"}))}var EF={},UF={get exports(){return EF},set exports(iF){EF=iF}};/*
|
|
2
2
|
* [js-sha512]{@link https://github.com/emn178/js-sha512}
|
|
3
3
|
*
|
|
4
4
|
* @version 0.8.0
|
|
5
5
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
|
6
6
|
* @copyright Chen, Yi-Cyuan 2014-2018
|
|
7
7
|
* @license MIT
|
|
8
|
-
*/(function(sF){(function(){var hF="input is invalid type",eF="finalize already called",tF=typeof window=="object",w=tF?window:{};w.JS_SHA512_NO_WINDOW&&(tF=!1);var lF=!tF&&typeof self=="object",_F=!w.JS_SHA512_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;_F?w=SF:lF&&(w=self);var bF=!w.JS_SHA512_NO_COMMON_JS&&!0&&sF.exports,aF=!w.JS_SHA512_NO_ARRAY_BUFFER&&typeof ArrayBuffer!="undefined",F="0123456789abcdef".split(""),wF=[-2147483648,8388608,32768,128],xF=[24,16,8,0],iF=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],fF=["hex","array","digest","arrayBuffer"],C=[];(w.JS_SHA512_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}),aF&&(w.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(x){return typeof x=="object"&&x.buffer&&x.buffer.constructor===ArrayBuffer});var vF=function(x,r){return function(e){return new v(r,!0).update(e)[x]()}},nF=function(x){var r=vF("hex",x);r.create=function(){return new v(x)},r.update=function(B){return r.create().update(B)};for(var e=0;e<fF.length;++e){var o=fF[e];r[o]=vF(o,x)}return r},dF=function(x,r){return function(e,o){return new rF(e,r,!0).update(o)[x]()}},oF=function(x){var r=dF("hex",x);r.create=function(B){return new rF(B,x)},r.update=function(B,l){return r.create(B).update(l)};for(var e=0;e<fF.length;++e){var o=fF[e];r[o]=dF(o,x)}return r};function v(x,r){r?(C[0]=C[1]=C[2]=C[3]=C[4]=C[5]=C[6]=C[7]=C[8]=C[9]=C[10]=C[11]=C[12]=C[13]=C[14]=C[15]=C[16]=C[17]=C[18]=C[19]=C[20]=C[21]=C[22]=C[23]=C[24]=C[25]=C[26]=C[27]=C[28]=C[29]=C[30]=C[31]=C[32]=0,this.blocks=C):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],x==384?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):x==256?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):x==224?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=x,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1}v.prototype.update=function(x){if(this.finalized)throw new Error(eF);var r,e=typeof x;if(e!=="string"){if(e==="object"){if(x===null)throw new Error(hF);if(aF&&x.constructor===ArrayBuffer)x=new Uint8Array(x);else if(!Array.isArray(x)&&(!aF||!ArrayBuffer.isView(x)))throw new Error(hF)}else throw new Error(hF);r=!0}for(var o,B=0,l,c=x.length,s=this.blocks;B<c;){if(this.hashed&&(this.hashed=!1,s[0]=this.block,s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=s[8]=s[9]=s[10]=s[11]=s[12]=s[13]=s[14]=s[15]=s[16]=s[17]=s[18]=s[19]=s[20]=s[21]=s[22]=s[23]=s[24]=s[25]=s[26]=s[27]=s[28]=s[29]=s[30]=s[31]=s[32]=0),r)for(l=this.start;B<c&&l<128;++B)s[l>>2]|=x[B]<<xF[l++&3];else for(l=this.start;B<c&&l<128;++B)o=x.charCodeAt(B),o<128?s[l>>2]|=o<<xF[l++&3]:o<2048?(s[l>>2]|=(192|o>>6)<<xF[l++&3],s[l>>2]|=(128|o&63)<<xF[l++&3]):o<55296||o>=57344?(s[l>>2]|=(224|o>>12)<<xF[l++&3],s[l>>2]|=(128|o>>6&63)<<xF[l++&3],s[l>>2]|=(128|o&63)<<xF[l++&3]):(o=65536+((o&1023)<<10|x.charCodeAt(++B)&1023),s[l>>2]|=(240|o>>18)<<xF[l++&3],s[l>>2]|=(128|o>>12&63)<<xF[l++&3],s[l>>2]|=(128|o>>6&63)<<xF[l++&3],s[l>>2]|=(128|o&63)<<xF[l++&3]);this.lastByteIndex=l,this.bytes+=l-this.start,l>=128?(this.block=s[32],this.start=l-128,this.hash(),this.hashed=!0):this.start=l}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},v.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var x=this.blocks,r=this.lastByteIndex;x[32]=this.block,x[r>>2]|=wF[r&3],this.block=x[32],r>=112&&(this.hashed||this.hash(),x[0]=this.block,x[1]=x[2]=x[3]=x[4]=x[5]=x[6]=x[7]=x[8]=x[9]=x[10]=x[11]=x[12]=x[13]=x[14]=x[15]=x[16]=x[17]=x[18]=x[19]=x[20]=x[21]=x[22]=x[23]=x[24]=x[25]=x[26]=x[27]=x[28]=x[29]=x[30]=x[31]=x[32]=0),x[30]=this.hBytes<<3|this.bytes>>>29,x[31]=this.bytes<<3,this.hash()}},v.prototype.hash=function(){var x=this.h0h,r=this.h0l,e=this.h1h,o=this.h1l,B=this.h2h,l=this.h2l,c=this.h3h,s=this.h3l,E=this.h4h,D=this.h4l,d=this.h5h,_=this.h5l,b=this.h6h,S=this.h6l,O=this.h7h,U=this.h7l,y=this.blocks,A,z,P,H,I,h,t,i,a,EF,CF,cF,DF,uF,pF,AF,BF,Z,q,f,n,u,p,Q,FF;for(A=32;A<160;A+=2)f=y[A-30],n=y[A-29],z=(f>>>1|n<<31)^(f>>>8|n<<24)^f>>>7,P=(n>>>1|f<<31)^(n>>>8|f<<24)^(n>>>7|f<<25),f=y[A-4],n=y[A-3],H=(f>>>19|n<<13)^(n>>>29|f<<3)^f>>>6,I=(n>>>19|f<<13)^(f>>>29|n<<3)^(n>>>6|f<<26),f=y[A-32],n=y[A-31],u=y[A-14],p=y[A-13],h=(p&65535)+(n&65535)+(P&65535)+(I&65535),t=(p>>>16)+(n>>>16)+(P>>>16)+(I>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(z&65535)+(H&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(z>>>16)+(H>>>16)+(i>>>16),y[A]=a<<16|i&65535,y[A+1]=t<<16|h&65535;var J=x,M=r,g=e,R=o,j=B,N=l,T=c,K=s,m=E,V=D,W=d,k=_,Y=b,X=S,$=O,G=U;for(AF=g&j,BF=R&N,A=0;A<160;A+=8)z=(J>>>28|M<<4)^(M>>>2|J<<30)^(M>>>7|J<<25),P=(M>>>28|J<<4)^(J>>>2|M<<30)^(J>>>7|M<<25),H=(m>>>14|V<<18)^(m>>>18|V<<14)^(V>>>9|m<<23),I=(V>>>14|m<<18)^(V>>>18|m<<14)^(m>>>9|V<<23),EF=J&g,CF=M&R,Z=EF^J&j^AF,q=CF^M&N^BF,Q=m&W^~m&Y,FF=V&k^~V&X,f=y[A],n=y[A+1],u=iF[A],p=iF[A+1],h=(p&65535)+(n&65535)+(FF&65535)+(I&65535)+(G&65535),t=(p>>>16)+(n>>>16)+(FF>>>16)+(I>>>16)+(G>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(Q&65535)+(H&65535)+($&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(Q>>>16)+(H>>>16)+($>>>16)+(i>>>16),f=a<<16|i&65535,n=t<<16|h&65535,h=(q&65535)+(P&65535),t=(q>>>16)+(P>>>16)+(h>>>16),i=(Z&65535)+(z&65535)+(t>>>16),a=(Z>>>16)+(z>>>16)+(i>>>16),u=a<<16|i&65535,p=t<<16|h&65535,h=(K&65535)+(n&65535),t=(K>>>16)+(n>>>16)+(h>>>16),i=(T&65535)+(f&65535)+(t>>>16),a=(T>>>16)+(f>>>16)+(i>>>16),$=a<<16|i&65535,G=t<<16|h&65535,h=(p&65535)+(n&65535),t=(p>>>16)+(n>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(i>>>16),T=a<<16|i&65535,K=t<<16|h&65535,z=(T>>>28|K<<4)^(K>>>2|T<<30)^(K>>>7|T<<25),P=(K>>>28|T<<4)^(T>>>2|K<<30)^(T>>>7|K<<25),H=($>>>14|G<<18)^($>>>18|G<<14)^(G>>>9|$<<23),I=(G>>>14|$<<18)^(G>>>18|$<<14)^($>>>9|G<<23),cF=T&J,DF=K&M,Z=cF^T&g^EF,q=DF^K&R^CF,Q=$&m^~$&W,FF=G&V^~G&k,f=y[A+2],n=y[A+3],u=iF[A+2],p=iF[A+3],h=(p&65535)+(n&65535)+(FF&65535)+(I&65535)+(X&65535),t=(p>>>16)+(n>>>16)+(FF>>>16)+(I>>>16)+(X>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(Q&65535)+(H&65535)+(Y&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(Q>>>16)+(H>>>16)+(Y>>>16)+(i>>>16),f=a<<16|i&65535,n=t<<16|h&65535,h=(q&65535)+(P&65535),t=(q>>>16)+(P>>>16)+(h>>>16),i=(Z&65535)+(z&65535)+(t>>>16),a=(Z>>>16)+(z>>>16)+(i>>>16),u=a<<16|i&65535,p=t<<16|h&65535,h=(N&65535)+(n&65535),t=(N>>>16)+(n>>>16)+(h>>>16),i=(j&65535)+(f&65535)+(t>>>16),a=(j>>>16)+(f>>>16)+(i>>>16),Y=a<<16|i&65535,X=t<<16|h&65535,h=(p&65535)+(n&65535),t=(p>>>16)+(n>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(i>>>16),j=a<<16|i&65535,N=t<<16|h&65535,z=(j>>>28|N<<4)^(N>>>2|j<<30)^(N>>>7|j<<25),P=(N>>>28|j<<4)^(j>>>2|N<<30)^(j>>>7|N<<25),H=(Y>>>14|X<<18)^(Y>>>18|X<<14)^(X>>>9|Y<<23),I=(X>>>14|Y<<18)^(X>>>18|Y<<14)^(Y>>>9|X<<23),uF=j&T,pF=N&K,Z=uF^j&J^cF,q=pF^N&M^DF,Q=Y&$^~Y&m,FF=X&G^~X&V,f=y[A+4],n=y[A+5],u=iF[A+4],p=iF[A+5],h=(p&65535)+(n&65535)+(FF&65535)+(I&65535)+(k&65535),t=(p>>>16)+(n>>>16)+(FF>>>16)+(I>>>16)+(k>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(Q&65535)+(H&65535)+(W&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(Q>>>16)+(H>>>16)+(W>>>16)+(i>>>16),f=a<<16|i&65535,n=t<<16|h&65535,h=(q&65535)+(P&65535),t=(q>>>16)+(P>>>16)+(h>>>16),i=(Z&65535)+(z&65535)+(t>>>16),a=(Z>>>16)+(z>>>16)+(i>>>16),u=a<<16|i&65535,p=t<<16|h&65535,h=(R&65535)+(n&65535),t=(R>>>16)+(n>>>16)+(h>>>16),i=(g&65535)+(f&65535)+(t>>>16),a=(g>>>16)+(f>>>16)+(i>>>16),W=a<<16|i&65535,k=t<<16|h&65535,h=(p&65535)+(n&65535),t=(p>>>16)+(n>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(i>>>16),g=a<<16|i&65535,R=t<<16|h&65535,z=(g>>>28|R<<4)^(R>>>2|g<<30)^(R>>>7|g<<25),P=(R>>>28|g<<4)^(g>>>2|R<<30)^(g>>>7|R<<25),H=(W>>>14|k<<18)^(W>>>18|k<<14)^(k>>>9|W<<23),I=(k>>>14|W<<18)^(k>>>18|W<<14)^(W>>>9|k<<23),AF=g&j,BF=R&N,Z=AF^g&T^uF,q=BF^R&K^pF,Q=W&Y^~W&$,FF=k&X^~k&G,f=y[A+6],n=y[A+7],u=iF[A+6],p=iF[A+7],h=(p&65535)+(n&65535)+(FF&65535)+(I&65535)+(V&65535),t=(p>>>16)+(n>>>16)+(FF>>>16)+(I>>>16)+(V>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(Q&65535)+(H&65535)+(m&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(Q>>>16)+(H>>>16)+(m>>>16)+(i>>>16),f=a<<16|i&65535,n=t<<16|h&65535,h=(q&65535)+(P&65535),t=(q>>>16)+(P>>>16)+(h>>>16),i=(Z&65535)+(z&65535)+(t>>>16),a=(Z>>>16)+(z>>>16)+(i>>>16),u=a<<16|i&65535,p=t<<16|h&65535,h=(M&65535)+(n&65535),t=(M>>>16)+(n>>>16)+(h>>>16),i=(J&65535)+(f&65535)+(t>>>16),a=(J>>>16)+(f>>>16)+(i>>>16),m=a<<16|i&65535,V=t<<16|h&65535,h=(p&65535)+(n&65535),t=(p>>>16)+(n>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(i>>>16),J=a<<16|i&65535,M=t<<16|h&65535;h=(r&65535)+(M&65535),t=(r>>>16)+(M>>>16)+(h>>>16),i=(x&65535)+(J&65535)+(t>>>16),a=(x>>>16)+(J>>>16)+(i>>>16),this.h0h=a<<16|i&65535,this.h0l=t<<16|h&65535,h=(o&65535)+(R&65535),t=(o>>>16)+(R>>>16)+(h>>>16),i=(e&65535)+(g&65535)+(t>>>16),a=(e>>>16)+(g>>>16)+(i>>>16),this.h1h=a<<16|i&65535,this.h1l=t<<16|h&65535,h=(l&65535)+(N&65535),t=(l>>>16)+(N>>>16)+(h>>>16),i=(B&65535)+(j&65535)+(t>>>16),a=(B>>>16)+(j>>>16)+(i>>>16),this.h2h=a<<16|i&65535,this.h2l=t<<16|h&65535,h=(s&65535)+(K&65535),t=(s>>>16)+(K>>>16)+(h>>>16),i=(c&65535)+(T&65535)+(t>>>16),a=(c>>>16)+(T>>>16)+(i>>>16),this.h3h=a<<16|i&65535,this.h3l=t<<16|h&65535,h=(D&65535)+(V&65535),t=(D>>>16)+(V>>>16)+(h>>>16),i=(E&65535)+(m&65535)+(t>>>16),a=(E>>>16)+(m>>>16)+(i>>>16),this.h4h=a<<16|i&65535,this.h4l=t<<16|h&65535,h=(_&65535)+(k&65535),t=(_>>>16)+(k>>>16)+(h>>>16),i=(d&65535)+(W&65535)+(t>>>16),a=(d>>>16)+(W>>>16)+(i>>>16),this.h5h=a<<16|i&65535,this.h5l=t<<16|h&65535,h=(S&65535)+(X&65535),t=(S>>>16)+(X>>>16)+(h>>>16),i=(b&65535)+(Y&65535)+(t>>>16),a=(b>>>16)+(Y>>>16)+(i>>>16),this.h6h=a<<16|i&65535,this.h6l=t<<16|h&65535,h=(U&65535)+(G&65535),t=(U>>>16)+(G>>>16)+(h>>>16),i=(O&65535)+($&65535)+(t>>>16),a=(O>>>16)+($>>>16)+(i>>>16),this.h7h=a<<16|i&65535,this.h7l=t<<16|h&65535},v.prototype.hex=function(){this.finalize();var x=this.h0h,r=this.h0l,e=this.h1h,o=this.h1l,B=this.h2h,l=this.h2l,c=this.h3h,s=this.h3l,E=this.h4h,D=this.h4l,d=this.h5h,_=this.h5l,b=this.h6h,S=this.h6l,O=this.h7h,U=this.h7l,y=this.bits,A=F[x>>28&15]+F[x>>24&15]+F[x>>20&15]+F[x>>16&15]+F[x>>12&15]+F[x>>8&15]+F[x>>4&15]+F[x&15]+F[r>>28&15]+F[r>>24&15]+F[r>>20&15]+F[r>>16&15]+F[r>>12&15]+F[r>>8&15]+F[r>>4&15]+F[r&15]+F[e>>28&15]+F[e>>24&15]+F[e>>20&15]+F[e>>16&15]+F[e>>12&15]+F[e>>8&15]+F[e>>4&15]+F[e&15]+F[o>>28&15]+F[o>>24&15]+F[o>>20&15]+F[o>>16&15]+F[o>>12&15]+F[o>>8&15]+F[o>>4&15]+F[o&15]+F[B>>28&15]+F[B>>24&15]+F[B>>20&15]+F[B>>16&15]+F[B>>12&15]+F[B>>8&15]+F[B>>4&15]+F[B&15]+F[l>>28&15]+F[l>>24&15]+F[l>>20&15]+F[l>>16&15]+F[l>>12&15]+F[l>>8&15]+F[l>>4&15]+F[l&15]+F[c>>28&15]+F[c>>24&15]+F[c>>20&15]+F[c>>16&15]+F[c>>12&15]+F[c>>8&15]+F[c>>4&15]+F[c&15];return y>=256&&(A+=F[s>>28&15]+F[s>>24&15]+F[s>>20&15]+F[s>>16&15]+F[s>>12&15]+F[s>>8&15]+F[s>>4&15]+F[s&15]),y>=384&&(A+=F[E>>28&15]+F[E>>24&15]+F[E>>20&15]+F[E>>16&15]+F[E>>12&15]+F[E>>8&15]+F[E>>4&15]+F[E&15]+F[D>>28&15]+F[D>>24&15]+F[D>>20&15]+F[D>>16&15]+F[D>>12&15]+F[D>>8&15]+F[D>>4&15]+F[D&15]+F[d>>28&15]+F[d>>24&15]+F[d>>20&15]+F[d>>16&15]+F[d>>12&15]+F[d>>8&15]+F[d>>4&15]+F[d&15]+F[_>>28&15]+F[_>>24&15]+F[_>>20&15]+F[_>>16&15]+F[_>>12&15]+F[_>>8&15]+F[_>>4&15]+F[_&15]),y==512&&(A+=F[b>>28&15]+F[b>>24&15]+F[b>>20&15]+F[b>>16&15]+F[b>>12&15]+F[b>>8&15]+F[b>>4&15]+F[b&15]+F[S>>28&15]+F[S>>24&15]+F[S>>20&15]+F[S>>16&15]+F[S>>12&15]+F[S>>8&15]+F[S>>4&15]+F[S&15]+F[O>>28&15]+F[O>>24&15]+F[O>>20&15]+F[O>>16&15]+F[O>>12&15]+F[O>>8&15]+F[O>>4&15]+F[O&15]+F[U>>28&15]+F[U>>24&15]+F[U>>20&15]+F[U>>16&15]+F[U>>12&15]+F[U>>8&15]+F[U>>4&15]+F[U&15]),A},v.prototype.toString=v.prototype.hex,v.prototype.digest=function(){this.finalize();var x=this.h0h,r=this.h0l,e=this.h1h,o=this.h1l,B=this.h2h,l=this.h2l,c=this.h3h,s=this.h3l,E=this.h4h,D=this.h4l,d=this.h5h,_=this.h5l,b=this.h6h,S=this.h6l,O=this.h7h,U=this.h7l,y=this.bits,A=[x>>24&255,x>>16&255,x>>8&255,x&255,r>>24&255,r>>16&255,r>>8&255,r&255,e>>24&255,e>>16&255,e>>8&255,e&255,o>>24&255,o>>16&255,o>>8&255,o&255,B>>24&255,B>>16&255,B>>8&255,B&255,l>>24&255,l>>16&255,l>>8&255,l&255,c>>24&255,c>>16&255,c>>8&255,c&255];return y>=256&&A.push(s>>24&255,s>>16&255,s>>8&255,s&255),y>=384&&A.push(E>>24&255,E>>16&255,E>>8&255,E&255,D>>24&255,D>>16&255,D>>8&255,D&255,d>>24&255,d>>16&255,d>>8&255,d&255,_>>24&255,_>>16&255,_>>8&255,_&255),y==512&&A.push(b>>24&255,b>>16&255,b>>8&255,b&255,S>>24&255,S>>16&255,S>>8&255,S&255,O>>24&255,O>>16&255,O>>8&255,O&255,U>>24&255,U>>16&255,U>>8&255,U&255),A},v.prototype.array=v.prototype.digest,v.prototype.arrayBuffer=function(){this.finalize();var x=this.bits,r=new ArrayBuffer(x/8),e=new DataView(r);return e.setUint32(0,this.h0h),e.setUint32(4,this.h0l),e.setUint32(8,this.h1h),e.setUint32(12,this.h1l),e.setUint32(16,this.h2h),e.setUint32(20,this.h2l),e.setUint32(24,this.h3h),x>=256&&e.setUint32(28,this.h3l),x>=384&&(e.setUint32(32,this.h4h),e.setUint32(36,this.h4l),e.setUint32(40,this.h5h),e.setUint32(44,this.h5l)),x==512&&(e.setUint32(48,this.h6h),e.setUint32(52,this.h6l),e.setUint32(56,this.h7h),e.setUint32(60,this.h7l)),r},v.prototype.clone=function(){var x=new v(this.bits,!1);return this.copyTo(x),x},v.prototype.copyTo=function(x){var r=0,e=["h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","start","bytes","hBytes","finalized","hashed","lastByteIndex"];for(r=0;r<e.length;++r)x[e[r]]=this[e[r]];for(r=0;r<this.blocks.length;++r)x.blocks[r]=this.blocks[r]};function rF(x,r,e){var o,B=typeof x;if(B!=="string"){if(B==="object"){if(x===null)throw new Error(hF);if(aF&&x.constructor===ArrayBuffer)x=new Uint8Array(x);else if(!Array.isArray(x)&&(!aF||!ArrayBuffer.isView(x)))throw new Error(hF)}else throw new Error(hF);o=!0}var l=x.length;if(!o){for(var c=[],l=x.length,s=0,E,D=0;D<l;++D)E=x.charCodeAt(D),E<128?c[s++]=E:E<2048?(c[s++]=192|E>>6,c[s++]=128|E&63):E<55296||E>=57344?(c[s++]=224|E>>12,c[s++]=128|E>>6&63,c[s++]=128|E&63):(E=65536+((E&1023)<<10|x.charCodeAt(++D)&1023),c[s++]=240|E>>18,c[s++]=128|E>>12&63,c[s++]=128|E>>6&63,c[s++]=128|E&63);x=c}x.length>128&&(x=new v(r,!0).update(x).array());for(var d=[],_=[],D=0;D<128;++D){var b=x[D]||0;d[D]=92^b,_[D]=54^b}v.call(this,r,e),this.update(_),this.oKeyPad=d,this.inner=!0,this.sharedMemory=e}rF.prototype=new v,rF.prototype.finalize=function(){if(v.prototype.finalize.call(this),this.inner){this.inner=!1;var x=this.array();v.call(this,this.bits,this.sharedMemory),this.update(this.oKeyPad),this.update(x),v.prototype.finalize.call(this)}},rF.prototype.clone=function(){var x=new rF([],this.bits,!1);this.copyTo(x),x.inner=this.inner;for(var r=0;r<this.oKeyPad.length;++r)x.oKeyPad[r]=this.oKeyPad[r];return x};var L=nF(512);L.sha512=L,L.sha384=nF(384),L.sha512_256=nF(256),L.sha512_224=nF(224),L.sha512.hmac=oF(512),L.sha384.hmac=oF(384),L.sha512_256.hmac=oF(256),L.sha512_224.hmac=oF(224),bF?sF.exports=L:(w.sha512=L.sha512,w.sha384=L.sha384,w.sha512_256=L.sha512_256,w.sha512_224=L.sha512_224)})()})(yF);const UF=yF.exports,RF=OF({__proto__:null,default:UF},[yF.exports]);export{RF as s};
|
|
8
|
+
*/(function(iF){(function(){var hF="input is invalid type",eF="finalize already called",tF=typeof window=="object",w=tF?window:{};w.JS_SHA512_NO_WINDOW&&(tF=!1);var lF=!tF&&typeof self=="object",_F=!w.JS_SHA512_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;_F?w=SF:lF&&(w=self);var bF=!w.JS_SHA512_NO_COMMON_JS&&!0&&iF.exports,aF=!w.JS_SHA512_NO_ARRAY_BUFFER&&typeof ArrayBuffer!="undefined",F="0123456789abcdef".split(""),wF=[-2147483648,8388608,32768,128],xF=[24,16,8,0],sF=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],fF=["hex","array","digest","arrayBuffer"],C=[];(w.JS_SHA512_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}),aF&&(w.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(x){return typeof x=="object"&&x.buffer&&x.buffer.constructor===ArrayBuffer});var vF=function(x,r){return function(e){return new v(r,!0).update(e)[x]()}},nF=function(x){var r=vF("hex",x);r.create=function(){return new v(x)},r.update=function(B){return r.create().update(B)};for(var e=0;e<fF.length;++e){var o=fF[e];r[o]=vF(o,x)}return r},dF=function(x,r){return function(e,o){return new rF(e,r,!0).update(o)[x]()}},oF=function(x){var r=dF("hex",x);r.create=function(B){return new rF(B,x)},r.update=function(B,l){return r.create(B).update(l)};for(var e=0;e<fF.length;++e){var o=fF[e];r[o]=dF(o,x)}return r};function v(x,r){r?(C[0]=C[1]=C[2]=C[3]=C[4]=C[5]=C[6]=C[7]=C[8]=C[9]=C[10]=C[11]=C[12]=C[13]=C[14]=C[15]=C[16]=C[17]=C[18]=C[19]=C[20]=C[21]=C[22]=C[23]=C[24]=C[25]=C[26]=C[27]=C[28]=C[29]=C[30]=C[31]=C[32]=0,this.blocks=C):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],x==384?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):x==256?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):x==224?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=x,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1}v.prototype.update=function(x){if(this.finalized)throw new Error(eF);var r,e=typeof x;if(e!=="string"){if(e==="object"){if(x===null)throw new Error(hF);if(aF&&x.constructor===ArrayBuffer)x=new Uint8Array(x);else if(!Array.isArray(x)&&(!aF||!ArrayBuffer.isView(x)))throw new Error(hF)}else throw new Error(hF);r=!0}for(var o,B=0,l,c=x.length,s=this.blocks;B<c;){if(this.hashed&&(this.hashed=!1,s[0]=this.block,s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=s[8]=s[9]=s[10]=s[11]=s[12]=s[13]=s[14]=s[15]=s[16]=s[17]=s[18]=s[19]=s[20]=s[21]=s[22]=s[23]=s[24]=s[25]=s[26]=s[27]=s[28]=s[29]=s[30]=s[31]=s[32]=0),r)for(l=this.start;B<c&&l<128;++B)s[l>>2]|=x[B]<<xF[l++&3];else for(l=this.start;B<c&&l<128;++B)o=x.charCodeAt(B),o<128?s[l>>2]|=o<<xF[l++&3]:o<2048?(s[l>>2]|=(192|o>>6)<<xF[l++&3],s[l>>2]|=(128|o&63)<<xF[l++&3]):o<55296||o>=57344?(s[l>>2]|=(224|o>>12)<<xF[l++&3],s[l>>2]|=(128|o>>6&63)<<xF[l++&3],s[l>>2]|=(128|o&63)<<xF[l++&3]):(o=65536+((o&1023)<<10|x.charCodeAt(++B)&1023),s[l>>2]|=(240|o>>18)<<xF[l++&3],s[l>>2]|=(128|o>>12&63)<<xF[l++&3],s[l>>2]|=(128|o>>6&63)<<xF[l++&3],s[l>>2]|=(128|o&63)<<xF[l++&3]);this.lastByteIndex=l,this.bytes+=l-this.start,l>=128?(this.block=s[32],this.start=l-128,this.hash(),this.hashed=!0):this.start=l}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},v.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var x=this.blocks,r=this.lastByteIndex;x[32]=this.block,x[r>>2]|=wF[r&3],this.block=x[32],r>=112&&(this.hashed||this.hash(),x[0]=this.block,x[1]=x[2]=x[3]=x[4]=x[5]=x[6]=x[7]=x[8]=x[9]=x[10]=x[11]=x[12]=x[13]=x[14]=x[15]=x[16]=x[17]=x[18]=x[19]=x[20]=x[21]=x[22]=x[23]=x[24]=x[25]=x[26]=x[27]=x[28]=x[29]=x[30]=x[31]=x[32]=0),x[30]=this.hBytes<<3|this.bytes>>>29,x[31]=this.bytes<<3,this.hash()}},v.prototype.hash=function(){var x=this.h0h,r=this.h0l,e=this.h1h,o=this.h1l,B=this.h2h,l=this.h2l,c=this.h3h,s=this.h3l,E=this.h4h,D=this.h4l,d=this.h5h,_=this.h5l,b=this.h6h,S=this.h6l,O=this.h7h,U=this.h7l,y=this.blocks,A,z,P,H,I,h,t,i,a,CF,cF,DF,uF,pF,yF,AF,BF,Z,q,f,n,u,p,Q,FF;for(A=32;A<160;A+=2)f=y[A-30],n=y[A-29],z=(f>>>1|n<<31)^(f>>>8|n<<24)^f>>>7,P=(n>>>1|f<<31)^(n>>>8|f<<24)^(n>>>7|f<<25),f=y[A-4],n=y[A-3],H=(f>>>19|n<<13)^(n>>>29|f<<3)^f>>>6,I=(n>>>19|f<<13)^(f>>>29|n<<3)^(n>>>6|f<<26),f=y[A-32],n=y[A-31],u=y[A-14],p=y[A-13],h=(p&65535)+(n&65535)+(P&65535)+(I&65535),t=(p>>>16)+(n>>>16)+(P>>>16)+(I>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(z&65535)+(H&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(z>>>16)+(H>>>16)+(i>>>16),y[A]=a<<16|i&65535,y[A+1]=t<<16|h&65535;var J=x,M=r,g=e,R=o,j=B,N=l,T=c,K=s,m=E,V=D,W=d,k=_,Y=b,X=S,$=O,G=U;for(AF=g&j,BF=R&N,A=0;A<160;A+=8)z=(J>>>28|M<<4)^(M>>>2|J<<30)^(M>>>7|J<<25),P=(M>>>28|J<<4)^(J>>>2|M<<30)^(J>>>7|M<<25),H=(m>>>14|V<<18)^(m>>>18|V<<14)^(V>>>9|m<<23),I=(V>>>14|m<<18)^(V>>>18|m<<14)^(m>>>9|V<<23),CF=J&g,cF=M&R,Z=CF^J&j^AF,q=cF^M&N^BF,Q=m&W^~m&Y,FF=V&k^~V&X,f=y[A],n=y[A+1],u=sF[A],p=sF[A+1],h=(p&65535)+(n&65535)+(FF&65535)+(I&65535)+(G&65535),t=(p>>>16)+(n>>>16)+(FF>>>16)+(I>>>16)+(G>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(Q&65535)+(H&65535)+($&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(Q>>>16)+(H>>>16)+($>>>16)+(i>>>16),f=a<<16|i&65535,n=t<<16|h&65535,h=(q&65535)+(P&65535),t=(q>>>16)+(P>>>16)+(h>>>16),i=(Z&65535)+(z&65535)+(t>>>16),a=(Z>>>16)+(z>>>16)+(i>>>16),u=a<<16|i&65535,p=t<<16|h&65535,h=(K&65535)+(n&65535),t=(K>>>16)+(n>>>16)+(h>>>16),i=(T&65535)+(f&65535)+(t>>>16),a=(T>>>16)+(f>>>16)+(i>>>16),$=a<<16|i&65535,G=t<<16|h&65535,h=(p&65535)+(n&65535),t=(p>>>16)+(n>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(i>>>16),T=a<<16|i&65535,K=t<<16|h&65535,z=(T>>>28|K<<4)^(K>>>2|T<<30)^(K>>>7|T<<25),P=(K>>>28|T<<4)^(T>>>2|K<<30)^(T>>>7|K<<25),H=($>>>14|G<<18)^($>>>18|G<<14)^(G>>>9|$<<23),I=(G>>>14|$<<18)^(G>>>18|$<<14)^($>>>9|G<<23),DF=T&J,uF=K&M,Z=DF^T&g^CF,q=uF^K&R^cF,Q=$&m^~$&W,FF=G&V^~G&k,f=y[A+2],n=y[A+3],u=sF[A+2],p=sF[A+3],h=(p&65535)+(n&65535)+(FF&65535)+(I&65535)+(X&65535),t=(p>>>16)+(n>>>16)+(FF>>>16)+(I>>>16)+(X>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(Q&65535)+(H&65535)+(Y&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(Q>>>16)+(H>>>16)+(Y>>>16)+(i>>>16),f=a<<16|i&65535,n=t<<16|h&65535,h=(q&65535)+(P&65535),t=(q>>>16)+(P>>>16)+(h>>>16),i=(Z&65535)+(z&65535)+(t>>>16),a=(Z>>>16)+(z>>>16)+(i>>>16),u=a<<16|i&65535,p=t<<16|h&65535,h=(N&65535)+(n&65535),t=(N>>>16)+(n>>>16)+(h>>>16),i=(j&65535)+(f&65535)+(t>>>16),a=(j>>>16)+(f>>>16)+(i>>>16),Y=a<<16|i&65535,X=t<<16|h&65535,h=(p&65535)+(n&65535),t=(p>>>16)+(n>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(i>>>16),j=a<<16|i&65535,N=t<<16|h&65535,z=(j>>>28|N<<4)^(N>>>2|j<<30)^(N>>>7|j<<25),P=(N>>>28|j<<4)^(j>>>2|N<<30)^(j>>>7|N<<25),H=(Y>>>14|X<<18)^(Y>>>18|X<<14)^(X>>>9|Y<<23),I=(X>>>14|Y<<18)^(X>>>18|Y<<14)^(Y>>>9|X<<23),pF=j&T,yF=N&K,Z=pF^j&J^DF,q=yF^N&M^uF,Q=Y&$^~Y&m,FF=X&G^~X&V,f=y[A+4],n=y[A+5],u=sF[A+4],p=sF[A+5],h=(p&65535)+(n&65535)+(FF&65535)+(I&65535)+(k&65535),t=(p>>>16)+(n>>>16)+(FF>>>16)+(I>>>16)+(k>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(Q&65535)+(H&65535)+(W&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(Q>>>16)+(H>>>16)+(W>>>16)+(i>>>16),f=a<<16|i&65535,n=t<<16|h&65535,h=(q&65535)+(P&65535),t=(q>>>16)+(P>>>16)+(h>>>16),i=(Z&65535)+(z&65535)+(t>>>16),a=(Z>>>16)+(z>>>16)+(i>>>16),u=a<<16|i&65535,p=t<<16|h&65535,h=(R&65535)+(n&65535),t=(R>>>16)+(n>>>16)+(h>>>16),i=(g&65535)+(f&65535)+(t>>>16),a=(g>>>16)+(f>>>16)+(i>>>16),W=a<<16|i&65535,k=t<<16|h&65535,h=(p&65535)+(n&65535),t=(p>>>16)+(n>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(i>>>16),g=a<<16|i&65535,R=t<<16|h&65535,z=(g>>>28|R<<4)^(R>>>2|g<<30)^(R>>>7|g<<25),P=(R>>>28|g<<4)^(g>>>2|R<<30)^(g>>>7|R<<25),H=(W>>>14|k<<18)^(W>>>18|k<<14)^(k>>>9|W<<23),I=(k>>>14|W<<18)^(k>>>18|W<<14)^(W>>>9|k<<23),AF=g&j,BF=R&N,Z=AF^g&T^pF,q=BF^R&K^yF,Q=W&Y^~W&$,FF=k&X^~k&G,f=y[A+6],n=y[A+7],u=sF[A+6],p=sF[A+7],h=(p&65535)+(n&65535)+(FF&65535)+(I&65535)+(V&65535),t=(p>>>16)+(n>>>16)+(FF>>>16)+(I>>>16)+(V>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(Q&65535)+(H&65535)+(m&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(Q>>>16)+(H>>>16)+(m>>>16)+(i>>>16),f=a<<16|i&65535,n=t<<16|h&65535,h=(q&65535)+(P&65535),t=(q>>>16)+(P>>>16)+(h>>>16),i=(Z&65535)+(z&65535)+(t>>>16),a=(Z>>>16)+(z>>>16)+(i>>>16),u=a<<16|i&65535,p=t<<16|h&65535,h=(M&65535)+(n&65535),t=(M>>>16)+(n>>>16)+(h>>>16),i=(J&65535)+(f&65535)+(t>>>16),a=(J>>>16)+(f>>>16)+(i>>>16),m=a<<16|i&65535,V=t<<16|h&65535,h=(p&65535)+(n&65535),t=(p>>>16)+(n>>>16)+(h>>>16),i=(u&65535)+(f&65535)+(t>>>16),a=(u>>>16)+(f>>>16)+(i>>>16),J=a<<16|i&65535,M=t<<16|h&65535;h=(r&65535)+(M&65535),t=(r>>>16)+(M>>>16)+(h>>>16),i=(x&65535)+(J&65535)+(t>>>16),a=(x>>>16)+(J>>>16)+(i>>>16),this.h0h=a<<16|i&65535,this.h0l=t<<16|h&65535,h=(o&65535)+(R&65535),t=(o>>>16)+(R>>>16)+(h>>>16),i=(e&65535)+(g&65535)+(t>>>16),a=(e>>>16)+(g>>>16)+(i>>>16),this.h1h=a<<16|i&65535,this.h1l=t<<16|h&65535,h=(l&65535)+(N&65535),t=(l>>>16)+(N>>>16)+(h>>>16),i=(B&65535)+(j&65535)+(t>>>16),a=(B>>>16)+(j>>>16)+(i>>>16),this.h2h=a<<16|i&65535,this.h2l=t<<16|h&65535,h=(s&65535)+(K&65535),t=(s>>>16)+(K>>>16)+(h>>>16),i=(c&65535)+(T&65535)+(t>>>16),a=(c>>>16)+(T>>>16)+(i>>>16),this.h3h=a<<16|i&65535,this.h3l=t<<16|h&65535,h=(D&65535)+(V&65535),t=(D>>>16)+(V>>>16)+(h>>>16),i=(E&65535)+(m&65535)+(t>>>16),a=(E>>>16)+(m>>>16)+(i>>>16),this.h4h=a<<16|i&65535,this.h4l=t<<16|h&65535,h=(_&65535)+(k&65535),t=(_>>>16)+(k>>>16)+(h>>>16),i=(d&65535)+(W&65535)+(t>>>16),a=(d>>>16)+(W>>>16)+(i>>>16),this.h5h=a<<16|i&65535,this.h5l=t<<16|h&65535,h=(S&65535)+(X&65535),t=(S>>>16)+(X>>>16)+(h>>>16),i=(b&65535)+(Y&65535)+(t>>>16),a=(b>>>16)+(Y>>>16)+(i>>>16),this.h6h=a<<16|i&65535,this.h6l=t<<16|h&65535,h=(U&65535)+(G&65535),t=(U>>>16)+(G>>>16)+(h>>>16),i=(O&65535)+($&65535)+(t>>>16),a=(O>>>16)+($>>>16)+(i>>>16),this.h7h=a<<16|i&65535,this.h7l=t<<16|h&65535},v.prototype.hex=function(){this.finalize();var x=this.h0h,r=this.h0l,e=this.h1h,o=this.h1l,B=this.h2h,l=this.h2l,c=this.h3h,s=this.h3l,E=this.h4h,D=this.h4l,d=this.h5h,_=this.h5l,b=this.h6h,S=this.h6l,O=this.h7h,U=this.h7l,y=this.bits,A=F[x>>28&15]+F[x>>24&15]+F[x>>20&15]+F[x>>16&15]+F[x>>12&15]+F[x>>8&15]+F[x>>4&15]+F[x&15]+F[r>>28&15]+F[r>>24&15]+F[r>>20&15]+F[r>>16&15]+F[r>>12&15]+F[r>>8&15]+F[r>>4&15]+F[r&15]+F[e>>28&15]+F[e>>24&15]+F[e>>20&15]+F[e>>16&15]+F[e>>12&15]+F[e>>8&15]+F[e>>4&15]+F[e&15]+F[o>>28&15]+F[o>>24&15]+F[o>>20&15]+F[o>>16&15]+F[o>>12&15]+F[o>>8&15]+F[o>>4&15]+F[o&15]+F[B>>28&15]+F[B>>24&15]+F[B>>20&15]+F[B>>16&15]+F[B>>12&15]+F[B>>8&15]+F[B>>4&15]+F[B&15]+F[l>>28&15]+F[l>>24&15]+F[l>>20&15]+F[l>>16&15]+F[l>>12&15]+F[l>>8&15]+F[l>>4&15]+F[l&15]+F[c>>28&15]+F[c>>24&15]+F[c>>20&15]+F[c>>16&15]+F[c>>12&15]+F[c>>8&15]+F[c>>4&15]+F[c&15];return y>=256&&(A+=F[s>>28&15]+F[s>>24&15]+F[s>>20&15]+F[s>>16&15]+F[s>>12&15]+F[s>>8&15]+F[s>>4&15]+F[s&15]),y>=384&&(A+=F[E>>28&15]+F[E>>24&15]+F[E>>20&15]+F[E>>16&15]+F[E>>12&15]+F[E>>8&15]+F[E>>4&15]+F[E&15]+F[D>>28&15]+F[D>>24&15]+F[D>>20&15]+F[D>>16&15]+F[D>>12&15]+F[D>>8&15]+F[D>>4&15]+F[D&15]+F[d>>28&15]+F[d>>24&15]+F[d>>20&15]+F[d>>16&15]+F[d>>12&15]+F[d>>8&15]+F[d>>4&15]+F[d&15]+F[_>>28&15]+F[_>>24&15]+F[_>>20&15]+F[_>>16&15]+F[_>>12&15]+F[_>>8&15]+F[_>>4&15]+F[_&15]),y==512&&(A+=F[b>>28&15]+F[b>>24&15]+F[b>>20&15]+F[b>>16&15]+F[b>>12&15]+F[b>>8&15]+F[b>>4&15]+F[b&15]+F[S>>28&15]+F[S>>24&15]+F[S>>20&15]+F[S>>16&15]+F[S>>12&15]+F[S>>8&15]+F[S>>4&15]+F[S&15]+F[O>>28&15]+F[O>>24&15]+F[O>>20&15]+F[O>>16&15]+F[O>>12&15]+F[O>>8&15]+F[O>>4&15]+F[O&15]+F[U>>28&15]+F[U>>24&15]+F[U>>20&15]+F[U>>16&15]+F[U>>12&15]+F[U>>8&15]+F[U>>4&15]+F[U&15]),A},v.prototype.toString=v.prototype.hex,v.prototype.digest=function(){this.finalize();var x=this.h0h,r=this.h0l,e=this.h1h,o=this.h1l,B=this.h2h,l=this.h2l,c=this.h3h,s=this.h3l,E=this.h4h,D=this.h4l,d=this.h5h,_=this.h5l,b=this.h6h,S=this.h6l,O=this.h7h,U=this.h7l,y=this.bits,A=[x>>24&255,x>>16&255,x>>8&255,x&255,r>>24&255,r>>16&255,r>>8&255,r&255,e>>24&255,e>>16&255,e>>8&255,e&255,o>>24&255,o>>16&255,o>>8&255,o&255,B>>24&255,B>>16&255,B>>8&255,B&255,l>>24&255,l>>16&255,l>>8&255,l&255,c>>24&255,c>>16&255,c>>8&255,c&255];return y>=256&&A.push(s>>24&255,s>>16&255,s>>8&255,s&255),y>=384&&A.push(E>>24&255,E>>16&255,E>>8&255,E&255,D>>24&255,D>>16&255,D>>8&255,D&255,d>>24&255,d>>16&255,d>>8&255,d&255,_>>24&255,_>>16&255,_>>8&255,_&255),y==512&&A.push(b>>24&255,b>>16&255,b>>8&255,b&255,S>>24&255,S>>16&255,S>>8&255,S&255,O>>24&255,O>>16&255,O>>8&255,O&255,U>>24&255,U>>16&255,U>>8&255,U&255),A},v.prototype.array=v.prototype.digest,v.prototype.arrayBuffer=function(){this.finalize();var x=this.bits,r=new ArrayBuffer(x/8),e=new DataView(r);return e.setUint32(0,this.h0h),e.setUint32(4,this.h0l),e.setUint32(8,this.h1h),e.setUint32(12,this.h1l),e.setUint32(16,this.h2h),e.setUint32(20,this.h2l),e.setUint32(24,this.h3h),x>=256&&e.setUint32(28,this.h3l),x>=384&&(e.setUint32(32,this.h4h),e.setUint32(36,this.h4l),e.setUint32(40,this.h5h),e.setUint32(44,this.h5l)),x==512&&(e.setUint32(48,this.h6h),e.setUint32(52,this.h6l),e.setUint32(56,this.h7h),e.setUint32(60,this.h7l)),r},v.prototype.clone=function(){var x=new v(this.bits,!1);return this.copyTo(x),x},v.prototype.copyTo=function(x){var r=0,e=["h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","start","bytes","hBytes","finalized","hashed","lastByteIndex"];for(r=0;r<e.length;++r)x[e[r]]=this[e[r]];for(r=0;r<this.blocks.length;++r)x.blocks[r]=this.blocks[r]};function rF(x,r,e){var o,B=typeof x;if(B!=="string"){if(B==="object"){if(x===null)throw new Error(hF);if(aF&&x.constructor===ArrayBuffer)x=new Uint8Array(x);else if(!Array.isArray(x)&&(!aF||!ArrayBuffer.isView(x)))throw new Error(hF)}else throw new Error(hF);o=!0}var l=x.length;if(!o){for(var c=[],l=x.length,s=0,E,D=0;D<l;++D)E=x.charCodeAt(D),E<128?c[s++]=E:E<2048?(c[s++]=192|E>>6,c[s++]=128|E&63):E<55296||E>=57344?(c[s++]=224|E>>12,c[s++]=128|E>>6&63,c[s++]=128|E&63):(E=65536+((E&1023)<<10|x.charCodeAt(++D)&1023),c[s++]=240|E>>18,c[s++]=128|E>>12&63,c[s++]=128|E>>6&63,c[s++]=128|E&63);x=c}x.length>128&&(x=new v(r,!0).update(x).array());for(var d=[],_=[],D=0;D<128;++D){var b=x[D]||0;d[D]=92^b,_[D]=54^b}v.call(this,r,e),this.update(_),this.oKeyPad=d,this.inner=!0,this.sharedMemory=e}rF.prototype=new v,rF.prototype.finalize=function(){if(v.prototype.finalize.call(this),this.inner){this.inner=!1;var x=this.array();v.call(this,this.bits,this.sharedMemory),this.update(this.oKeyPad),this.update(x),v.prototype.finalize.call(this)}},rF.prototype.clone=function(){var x=new rF([],this.bits,!1);this.copyTo(x),x.inner=this.inner;for(var r=0;r<this.oKeyPad.length;++r)x.oKeyPad[r]=this.oKeyPad[r];return x};var L=nF(512);L.sha512=L,L.sha384=nF(384),L.sha512_256=nF(256),L.sha512_224=nF(224),L.sha512.hmac=oF(512),L.sha384.hmac=oF(384),L.sha512_256.hmac=oF(256),L.sha512_224.hmac=oF(224),bF?iF.exports=L:(w.sha512=L.sha512,w.sha384=L.sha384,w.sha512_256=L.sha512_256,w.sha512_224=L.sha512_224)})()})(UF);const gF=EF,jF=OF({__proto__:null,default:gF},[EF]);export{jF as s};
|
package/frontend/index.html
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0" />
|
|
6
|
-
<link href="fontello.css" rel="stylesheet" />
|
|
6
|
+
<link href="/fontello.css" rel="stylesheet" />
|
|
7
7
|
<script>SESSION = _HFS_SESSION_</script>
|
|
8
8
|
<title>File Server</title>
|
|
9
|
-
<script type="module" crossorigin src="/assets/index.
|
|
10
|
-
<link rel="stylesheet" href="/assets/index.
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-aea7654e.js"></script>
|
|
10
|
+
<link rel="stylesheet" href="/assets/index-6e178dfd.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div hidden>_HFS_PLUGINS_</div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hfs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.2",
|
|
4
4
|
"description": "HTTP File Server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"file server",
|
|
@@ -13,16 +13,12 @@
|
|
|
13
13
|
"scripts": {
|
|
14
14
|
"watch-server": "cross-env DEV=1 nodemon --ignore tests/ --watch src -e ts,tsx --exec ts-node src",
|
|
15
15
|
"watch-server-proxied": "cross-env FRONTEND_PROXY=3005 ADMIN_PROXY=3006 npm run watch-server",
|
|
16
|
-
"watch-shared": "cd shared && tsc --watch",
|
|
17
|
-
"watch-form": "cd mui-grid-form && tsc --watch",
|
|
18
16
|
"start-frontend": "npm run start --workspace=frontend",
|
|
19
17
|
"start-admin": "npm run start --workspace=admin",
|
|
20
|
-
"build-all": "npm audit --omit=dev && rm -rf dist && npm i && npm run build-
|
|
18
|
+
"build-all": "npm audit --omit=dev && rm -rf dist && npm i && npm run build-server && npm run build-frontend && npm run build-admin && echo COMPLETED",
|
|
21
19
|
"build-server": "rm -rf dist/src dist/plugins && tsc --target es2018 && touch package.json && cp -v -r package.json README* LICENSE* plugins dist && find dist -name .DS_Store -delete",
|
|
22
20
|
"build-frontend": "npm run build --workspace=frontend",
|
|
23
21
|
"build-admin": "npm run build --workspace=admin",
|
|
24
|
-
"build-shared": "npm run build --workspace=shared",
|
|
25
|
-
"build-form": "npm run build --workspace=mui-grid-form",
|
|
26
22
|
"server-for-test": "node dist/src --cwd . --config tests",
|
|
27
23
|
"server-for-test-dev": "cross-env DEV=1 nodemon --ignore tests/ --watch src -e ts,tsx --exec ts-node src -- --cwd . --config tests",
|
|
28
24
|
"test": "mocha -r ts-node/register 'tests/**/*.ts'",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
exports.description = "If you want to have different home folders, based on domain"
|
|
2
|
-
exports.version =
|
|
2
|
+
exports.version = 3 // support masks for host
|
|
3
3
|
exports.apiRequired = 2 // 2 is for the config 'array'
|
|
4
4
|
|
|
5
5
|
exports.config = {
|
|
@@ -7,7 +7,7 @@ exports.config = {
|
|
|
7
7
|
label: '',
|
|
8
8
|
type: 'array',
|
|
9
9
|
fields: {
|
|
10
|
-
host: { label: "Domain" },
|
|
10
|
+
host: { label: "Domain", helperText: "Masks supported: domain.*|other.*" },
|
|
11
11
|
root: { helperText: "Root path in VFS" },
|
|
12
12
|
}
|
|
13
13
|
},
|
|
@@ -17,24 +17,27 @@ exports.config = {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
exports.init = api =>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
toModify = ctx
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
exports.init = api => {
|
|
21
|
+
const { isMatch } = api.require('micromatch')
|
|
22
|
+
return {
|
|
23
|
+
middleware(ctx) {
|
|
24
|
+
let toModify = ctx
|
|
25
|
+
if (ctx.path.startsWith(api.const.SPECIAL_URI)) { // special uris should be excluded...
|
|
26
|
+
toModify = ctx.params
|
|
27
|
+
if (toModify.path === undefined) // ...unless they carry a path in the query. In that case we'll work that.
|
|
28
|
+
return
|
|
29
|
+
}
|
|
30
|
+
const hosts = api.getConfig('hosts')
|
|
31
|
+
if (!hosts?.length) return
|
|
32
|
+
for (const row of hosts)
|
|
33
|
+
if (isMatch(ctx.host, row.host)) {
|
|
34
|
+
toModify.path = row.root + toModify.path
|
|
35
|
+
return
|
|
36
|
+
}
|
|
37
|
+
if (api.getConfig('mandatory')) {
|
|
38
|
+
ctx.socket.destroy()
|
|
39
|
+
return true
|
|
34
40
|
}
|
|
35
|
-
if (api.getConfig('mandatory')) {
|
|
36
|
-
ctx.socket.destroy()
|
|
37
|
-
return true
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
|
-
}
|
|
43
|
+
}
|
package/src/QuickZipStream.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This file is part of HFS - Copyright 2021-
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
3
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
4
|
if (k2 === undefined) k2 = k;
|
|
5
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
package/src/ThrottledStream.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This file is part of HFS - Copyright 2021-
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.ThrottleGroup = exports.ThrottledStream = void 0;
|
|
5
5
|
const stream_1 = require("stream");
|
package/src/adminApis.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This file is part of HFS - Copyright 2021-
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
3
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
4
|
if (k2 === undefined) k2 = k;
|
|
5
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -60,7 +60,7 @@ exports.adminApis = {
|
|
|
60
60
|
const noHttp = ((_a = v.port) !== null && _a !== void 0 ? _a : listen_1.portCfg.get()) < 0 || !st.httpSrv.listening;
|
|
61
61
|
const noHttps = ((_b = v.https_port) !== null && _b !== void 0 ? _b : listen_1.httpsPortCfg.get()) < 0 || !st.httpsSrv.listening;
|
|
62
62
|
if (noHttp && noHttps)
|
|
63
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
63
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_FORBIDDEN, "You cannot switch off both http and https ports");
|
|
64
64
|
await (0, config_1.setConfig)(v);
|
|
65
65
|
}
|
|
66
66
|
return {};
|
|
@@ -95,7 +95,7 @@ exports.adminApis = {
|
|
|
95
95
|
},
|
|
96
96
|
async save_pem({ cert, private_key, name = 'self' }) {
|
|
97
97
|
if (!cert || !private_key)
|
|
98
|
-
return new apiMiddleware_1.ApiError(
|
|
98
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST);
|
|
99
99
|
const files = { cert: name + '.cert', private_key: name + '.key' };
|
|
100
100
|
await (0, promises_1.writeFile)(files.private_key, private_key);
|
|
101
101
|
await (0, promises_1.writeFile)(files.cert, cert);
|
|
@@ -107,7 +107,7 @@ exports.adminApis = {
|
|
|
107
107
|
doAtStart(list) {
|
|
108
108
|
const logger = log_1.loggers.find(l => l.name === file);
|
|
109
109
|
if (!logger)
|
|
110
|
-
return list.error(
|
|
110
|
+
return list.error(const_1.HTTP_NOT_FOUND, true);
|
|
111
111
|
const input = (0, fs_1.createReadStream)(logger.path);
|
|
112
112
|
input.on('error', async (e) => {
|
|
113
113
|
if (e.code === 'ENOENT') // ignore ENOENT, consider it an empty log
|
|
@@ -152,7 +152,7 @@ exports.adminApis = {
|
|
|
152
152
|
for (const k in exports.adminApis) {
|
|
153
153
|
const was = exports.adminApis[k];
|
|
154
154
|
exports.adminApis[k] = (params, ctx) => ctxAdminAccess(ctx) ? was(params, ctx)
|
|
155
|
-
: new apiMiddleware_1.ApiError(const_1.
|
|
155
|
+
: new apiMiddleware_1.ApiError(const_1.HTTP_UNAUTHORIZED);
|
|
156
156
|
}
|
|
157
157
|
exports.localhostAdmin = (0, config_1.defineConfig)('localhost_admin', true);
|
|
158
158
|
function ctxAdminAccess(ctx) {
|
package/src/api.accounts.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This file is part of HFS - Copyright 2021-
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
3
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
@@ -19,35 +19,35 @@ function prepareAccount(ac) {
|
|
|
19
19
|
}
|
|
20
20
|
const apis = {
|
|
21
21
|
get_usernames() {
|
|
22
|
-
return { list: Object.keys(
|
|
22
|
+
return { list: Object.keys(perm_1.accountsConfig.get()) };
|
|
23
23
|
},
|
|
24
24
|
get_account({ username }, ctx) {
|
|
25
25
|
return prepareAccount((0, perm_1.getAccount)(username || (0, perm_1.getCurrentUsername)(ctx)))
|
|
26
|
-
|| new apiMiddleware_1.ApiError(
|
|
26
|
+
|| new apiMiddleware_1.ApiError(const_1.HTTP_NOT_FOUND);
|
|
27
27
|
},
|
|
28
28
|
get_accounts() {
|
|
29
|
-
return { list: Object.values(
|
|
29
|
+
return { list: Object.values(perm_1.accountsConfig.get()).map(prepareAccount) };
|
|
30
30
|
},
|
|
31
31
|
get_admins() {
|
|
32
|
-
return { list:
|
|
32
|
+
return { list: lodash_1.default.filter(perm_1.accountsConfig.get(), perm_1.accountCanLoginAdmin).map(ac => ac.username) };
|
|
33
33
|
},
|
|
34
34
|
set_account({ username, changes }) {
|
|
35
35
|
const { admin } = changes;
|
|
36
36
|
if (admin === null)
|
|
37
37
|
changes.admin = undefined;
|
|
38
38
|
else if (admin !== undefined && typeof admin !== 'boolean')
|
|
39
|
-
return new apiMiddleware_1.ApiError(
|
|
39
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST, "invalid admin");
|
|
40
40
|
const acc = (0, perm_1.setAccount)(username, changes);
|
|
41
|
-
return acc ? lodash_1.default.pick(acc, 'username') : new apiMiddleware_1.ApiError(
|
|
41
|
+
return acc ? lodash_1.default.pick(acc, 'username') : new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST);
|
|
42
42
|
},
|
|
43
43
|
add_account({ username, ...rest }) {
|
|
44
44
|
if ((0, perm_1.getAccount)(username))
|
|
45
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
45
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_FORBIDDEN);
|
|
46
46
|
const acc = (0, perm_1.addAccount)(username, rest);
|
|
47
|
-
return acc ? lodash_1.default.pick(acc, 'username') : new apiMiddleware_1.ApiError(
|
|
47
|
+
return acc ? lodash_1.default.pick(acc, 'username') : new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST);
|
|
48
48
|
},
|
|
49
49
|
del_account({ username }) {
|
|
50
|
-
return (0, perm_1.delAccount)(username) ? {} : new apiMiddleware_1.ApiError(
|
|
50
|
+
return (0, perm_1.delAccount)(username) ? {} : new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST);
|
|
51
51
|
},
|
|
52
52
|
async change_password_others({ username, newPassword }) {
|
|
53
53
|
return (0, api_helpers_1.changePasswordHelper)((0, perm_1.getAccount)(username), newPassword);
|
package/src/api.auth.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This file is part of HFS - Copyright 2021-
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.change_srp = exports.change_password = exports.refresh_session = exports.logout = exports.loginSrp2 = exports.srpStep1 = exports.loginSrp1 = exports.login = void 0;
|
|
5
5
|
const perm_1 = require("./perm");
|
|
@@ -17,7 +17,7 @@ const ongoingLogins = {}; // store data that doesn't fit session object
|
|
|
17
17
|
async function loggedIn(ctx, username) {
|
|
18
18
|
const s = ctx.session;
|
|
19
19
|
if (!s)
|
|
20
|
-
return ctx.throw(
|
|
20
|
+
return ctx.throw(const_1.HTTP_SERVER_ERROR, 'session');
|
|
21
21
|
if (username === false) {
|
|
22
22
|
delete s.username;
|
|
23
23
|
ctx.cookies.set('csrf', '');
|
|
@@ -33,28 +33,28 @@ function makeExp() {
|
|
|
33
33
|
}
|
|
34
34
|
const login = async ({ username, password }, ctx) => {
|
|
35
35
|
if (!username || !password) // some validation
|
|
36
|
-
return new apiMiddleware_1.ApiError(
|
|
36
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST);
|
|
37
37
|
const acc = (0, perm_1.getAccount)(username);
|
|
38
38
|
if (!acc)
|
|
39
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
39
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_UNAUTHORIZED);
|
|
40
40
|
if (!acc.hashed_password)
|
|
41
|
-
return new apiMiddleware_1.ApiError(
|
|
41
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_NOT_ACCEPTABLE);
|
|
42
42
|
if (!await (0, crypt_1.verifyPassword)(acc.hashed_password, password))
|
|
43
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
43
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_UNAUTHORIZED);
|
|
44
44
|
if (!ctx.session)
|
|
45
|
-
return new apiMiddleware_1.ApiError(
|
|
45
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_SERVER_ERROR);
|
|
46
46
|
await loggedIn(ctx, username);
|
|
47
47
|
return { ...makeExp(), redirect: acc.redirect };
|
|
48
48
|
};
|
|
49
49
|
exports.login = login;
|
|
50
50
|
const loginSrp1 = async ({ username }, ctx) => {
|
|
51
51
|
if (!username)
|
|
52
|
-
return new apiMiddleware_1.ApiError(
|
|
52
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST);
|
|
53
53
|
const account = (0, perm_1.getAccount)(username);
|
|
54
54
|
if (!ctx.session)
|
|
55
|
-
return new apiMiddleware_1.ApiError(
|
|
55
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_SERVER_ERROR);
|
|
56
56
|
if (!account) // TODO simulate fake account to prevent knowing valid usernames
|
|
57
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
57
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_UNAUTHORIZED);
|
|
58
58
|
try {
|
|
59
59
|
const { step1, ...rest } = await srpStep1(account);
|
|
60
60
|
const sid = Math.random();
|
|
@@ -70,7 +70,7 @@ const loginSrp1 = async ({ username }, ctx) => {
|
|
|
70
70
|
exports.loginSrp1 = loginSrp1;
|
|
71
71
|
async function srpStep1(account) {
|
|
72
72
|
if (!account.srp)
|
|
73
|
-
throw
|
|
73
|
+
throw const_1.HTTP_NOT_ACCEPTABLE;
|
|
74
74
|
const [salt, verifier] = account.srp.split('|');
|
|
75
75
|
const srpSession = new tssrp6a_1.SRPServerSession(srp6aNimbusRoutines);
|
|
76
76
|
const step1 = await srpSession.step1(account.username, BigInt(salt), BigInt(verifier));
|
|
@@ -80,9 +80,9 @@ exports.srpStep1 = srpStep1;
|
|
|
80
80
|
const loginSrp2 = async ({ pubKey, proof }, ctx) => {
|
|
81
81
|
var _a;
|
|
82
82
|
if (!ctx.session)
|
|
83
|
-
return new apiMiddleware_1.ApiError(
|
|
83
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_SERVER_ERROR);
|
|
84
84
|
if (!ctx.session.login)
|
|
85
|
-
return new apiMiddleware_1.ApiError(
|
|
85
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_CONFLICT);
|
|
86
86
|
const { username, sid } = ctx.session.login;
|
|
87
87
|
const step1 = ongoingLogins[sid];
|
|
88
88
|
try {
|
|
@@ -95,7 +95,7 @@ const loginSrp2 = async ({ pubKey, proof }, ctx) => {
|
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
97
|
catch (e) {
|
|
98
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
98
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_UNAUTHORIZED, String(e));
|
|
99
99
|
}
|
|
100
100
|
finally {
|
|
101
101
|
delete ongoingLogins[sid];
|
|
@@ -104,14 +104,14 @@ const loginSrp2 = async ({ pubKey, proof }, ctx) => {
|
|
|
104
104
|
exports.loginSrp2 = loginSrp2;
|
|
105
105
|
const logout = async ({}, ctx) => {
|
|
106
106
|
if (!ctx.session)
|
|
107
|
-
return new apiMiddleware_1.ApiError(
|
|
107
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_SERVER_ERROR);
|
|
108
108
|
await loggedIn(ctx, false);
|
|
109
109
|
// 401 is a convenient code for OK: the browser clears a possible http authentication (hopefully), and Admin automatically triggers login dialog
|
|
110
|
-
return new apiMiddleware_1.ApiError(
|
|
110
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_UNAUTHORIZED);
|
|
111
111
|
};
|
|
112
112
|
exports.logout = logout;
|
|
113
113
|
const refresh_session = async ({}, ctx) => {
|
|
114
|
-
return !ctx.session ? new apiMiddleware_1.ApiError(
|
|
114
|
+
return !ctx.session ? new apiMiddleware_1.ApiError(const_1.HTTP_SERVER_ERROR) : {
|
|
115
115
|
username: (0, perm_1.getCurrentUsername)(ctx),
|
|
116
116
|
adminUrl: (0, adminApis_1.ctxAdminAccess)(ctx) ? const_1.ADMIN_URI : undefined,
|
|
117
117
|
...makeExp(),
|
package/src/api.file_list.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This file is part of HFS - Copyright 2021-
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
3
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
@@ -11,27 +11,34 @@ const promises_1 = require("fs/promises");
|
|
|
11
11
|
const plugins_1 = require("./plugins");
|
|
12
12
|
const misc_1 = require("./misc");
|
|
13
13
|
const lodash_1 = __importDefault(require("lodash"));
|
|
14
|
+
const const_1 = require("./const");
|
|
14
15
|
const file_list = async ({ path, offset, limit, search, omit, sse }, ctx) => {
|
|
15
16
|
let node = await (0, vfs_1.urlToNode)(path || '/', ctx);
|
|
16
17
|
const list = new apiMiddleware_1.SendListReadable();
|
|
17
18
|
if (!node)
|
|
18
|
-
return fail(
|
|
19
|
+
return fail(const_1.HTTP_NOT_FOUND);
|
|
19
20
|
if (!(0, vfs_1.hasPermission)(node, 'can_read', ctx))
|
|
20
21
|
return fail((0, vfs_1.cantReadStatusCode)(node));
|
|
21
22
|
if ((0, misc_1.dirTraversal)(search))
|
|
22
|
-
return fail(
|
|
23
|
+
return fail(const_1.HTTP_FOOL);
|
|
23
24
|
if (node.default)
|
|
24
25
|
return (sse ? list.custom : lodash_1.default.identity)({ redirect: path }); // sse will wrap the object in a 'custom' message, otherwise we plainly return the object
|
|
25
26
|
if (!await (0, vfs_1.nodeIsDirectory)(node))
|
|
26
|
-
return fail(
|
|
27
|
+
return fail(const_1.HTTP_METHOD_NOT_ALLOWED);
|
|
27
28
|
offset = Number(offset);
|
|
28
29
|
limit = Number(limit);
|
|
29
30
|
const filter = (0, misc_1.pattern2filter)(search);
|
|
30
31
|
const walker = (0, vfs_1.walkNode)(node, ctx, search ? Infinity : 0);
|
|
31
32
|
const onDirEntryHandlers = (0, plugins_1.mapPlugins)(plug => plug.onDirEntry);
|
|
33
|
+
const can_upload = (0, vfs_1.hasPermission)(node, 'can_upload', ctx);
|
|
32
34
|
if (!sse)
|
|
33
|
-
return {
|
|
35
|
+
return {
|
|
36
|
+
can_upload,
|
|
37
|
+
list: await (0, misc_1.asyncGeneratorToArray)(produceEntries())
|
|
38
|
+
};
|
|
34
39
|
setTimeout(async () => {
|
|
40
|
+
if (can_upload)
|
|
41
|
+
list.custom({ props: { can_upload } });
|
|
35
42
|
for await (const entry of produceEntries())
|
|
36
43
|
list.add(entry);
|
|
37
44
|
list.close();
|
|
@@ -67,7 +74,7 @@ const file_list = async ({ path, offset, limit, search, omit, sse }, ctx) => {
|
|
|
67
74
|
}
|
|
68
75
|
if (omit) {
|
|
69
76
|
if (omit !== 'c')
|
|
70
|
-
ctx.throw(
|
|
77
|
+
ctx.throw(const_1.HTTP_BAD_REQUEST, 'omit');
|
|
71
78
|
if (!entry.m)
|
|
72
79
|
entry.m = entry.c;
|
|
73
80
|
delete entry.c;
|
package/src/api.helpers.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This file is part of HFS - Copyright 2021-
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.changeSrpHelper = exports.changePasswordHelper = void 0;
|
|
5
5
|
const perm_1 = require("./perm");
|
|
@@ -7,9 +7,9 @@ const apiMiddleware_1 = require("./apiMiddleware");
|
|
|
7
7
|
const const_1 = require("./const");
|
|
8
8
|
async function changePasswordHelper(account, newPassword) {
|
|
9
9
|
if (!newPassword) // clear text version
|
|
10
|
-
return
|
|
10
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST, 'missing parameters');
|
|
11
11
|
if (!account)
|
|
12
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
12
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_UNAUTHORIZED);
|
|
13
13
|
await (0, perm_1.updateAccount)(account, account => {
|
|
14
14
|
account.password = newPassword;
|
|
15
15
|
});
|
|
@@ -18,11 +18,11 @@ async function changePasswordHelper(account, newPassword) {
|
|
|
18
18
|
exports.changePasswordHelper = changePasswordHelper;
|
|
19
19
|
async function changeSrpHelper(account, salt, verifier) {
|
|
20
20
|
if (perm_1.allowClearTextLogin.get())
|
|
21
|
-
return new apiMiddleware_1.ApiError(
|
|
21
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_NOT_ACCEPTABLE);
|
|
22
22
|
if (!salt || !verifier)
|
|
23
|
-
return
|
|
23
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST, 'missing parameters');
|
|
24
24
|
if (!account)
|
|
25
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
25
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_UNAUTHORIZED);
|
|
26
26
|
await (0, perm_1.updateAccount)(account, account => {
|
|
27
27
|
(0, perm_1.saveSrpInfo)(account, salt, verifier);
|
|
28
28
|
delete account.hashed_password; // remove leftovers
|
package/src/api.monitor.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
2
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
5
|
};
|
|
@@ -23,6 +24,7 @@ const apis = {
|
|
|
23
24
|
const list = new apiMiddleware_1.SendListReadable({ addAtStart: (0, connections_1.getConnections)().map(c => serializeConnection(c)) });
|
|
24
25
|
const throttledUpdate = lodash_1.default.throttle(update, 1000 / 20); // try to avoid clogging with updates
|
|
25
26
|
const state = Symbol('state'); // undefined=added, Timeout=add-pending, false=removed
|
|
27
|
+
list.props({ you: ctx.ip });
|
|
26
28
|
return list.events(ctx, {
|
|
27
29
|
connection(conn) {
|
|
28
30
|
conn[state] = setTimeout(() => add(conn), 100);
|
package/src/api.plugins.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
2
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
5
|
};
|
package/src/api.vfs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This file is part of HFS - Copyright 2021-
|
|
2
|
+
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
|
|
3
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
@@ -21,7 +21,10 @@ async function urlToNodeOriginal(uri) {
|
|
|
21
21
|
}
|
|
22
22
|
const apis = {
|
|
23
23
|
async get_vfs() {
|
|
24
|
-
return {
|
|
24
|
+
return {
|
|
25
|
+
root: vfs_1.vfs && await recur(vfs_1.vfs),
|
|
26
|
+
defaultPerms: vfs_1.defaultPerms,
|
|
27
|
+
};
|
|
25
28
|
async function recur(node) {
|
|
26
29
|
const dir = await (0, vfs_1.nodeIsDirectory)(node);
|
|
27
30
|
const stats = {};
|
|
@@ -49,8 +52,8 @@ const apis = {
|
|
|
49
52
|
async set_vfs({ uri, props }) {
|
|
50
53
|
const n = await urlToNodeOriginal(uri);
|
|
51
54
|
if (!n)
|
|
52
|
-
return new apiMiddleware_1.ApiError(
|
|
53
|
-
props = pickProps(props, ['name', 'source', '
|
|
55
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_NOT_FOUND, 'path not found');
|
|
56
|
+
props = pickProps(props, ['name', 'source', 'masks', 'default', ...Object.keys(vfs_1.defaultPerms)]);
|
|
54
57
|
props = (0, misc_1.objSameKeys)(props, v => v === null ? undefined : v); // null is a way to serialize undefined, that will restore default values
|
|
55
58
|
if (props.masks && typeof props.masks !== 'object')
|
|
56
59
|
delete props.masks;
|
|
@@ -63,35 +66,35 @@ const apis = {
|
|
|
63
66
|
async add_vfs({ under, source, name }) {
|
|
64
67
|
const n = under ? await urlToNodeOriginal(under) : vfs_1.vfs;
|
|
65
68
|
if (!n)
|
|
66
|
-
return new apiMiddleware_1.ApiError(
|
|
69
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_NOT_FOUND, 'invalid under');
|
|
67
70
|
if (n.isTemp || !await (0, vfs_1.nodeIsDirectory)(n))
|
|
68
|
-
return new apiMiddleware_1.ApiError(const_1.
|
|
71
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_FORBIDDEN, 'invalid under');
|
|
69
72
|
if ((0, misc_1.isWindowsDrive)(source))
|
|
70
73
|
source += '\\'; // slash must be included, otherwise it will refer to the cwd of that drive
|
|
71
74
|
const a = n.children || (n.children = []);
|
|
72
75
|
if (source && a.find(x => x.source === source))
|
|
73
|
-
return new apiMiddleware_1.ApiError(
|
|
76
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_CONFLICT, 'already present');
|
|
74
77
|
a.unshift({ source, name });
|
|
75
78
|
await (0, vfs_1.saveVfs)();
|
|
76
79
|
return {};
|
|
77
80
|
},
|
|
78
81
|
async del_vfs({ uris }) {
|
|
79
82
|
if (!uris || !Array.isArray(uris))
|
|
80
|
-
return new apiMiddleware_1.ApiError(
|
|
83
|
+
return new apiMiddleware_1.ApiError(const_1.HTTP_BAD_REQUEST, 'invalid uris');
|
|
81
84
|
return {
|
|
82
85
|
errors: await Promise.all(uris.map(async (uri) => {
|
|
83
86
|
if (typeof uri !== 'string')
|
|
84
|
-
return
|
|
87
|
+
return const_1.HTTP_BAD_REQUEST;
|
|
85
88
|
const node = await urlToNodeOriginal(uri);
|
|
86
89
|
if (!node)
|
|
87
|
-
return
|
|
90
|
+
return const_1.HTTP_NOT_FOUND;
|
|
88
91
|
const parent = (0, path_1.dirname)(uri);
|
|
89
92
|
const parentNode = await urlToNodeOriginal(parent);
|
|
90
93
|
if (!parentNode)
|
|
91
|
-
return const_1.
|
|
94
|
+
return const_1.HTTP_FORBIDDEN;
|
|
92
95
|
const { children } = parentNode;
|
|
93
96
|
if (!children) // shouldn't happen
|
|
94
|
-
return
|
|
97
|
+
return const_1.HTTP_SERVER_ERROR;
|
|
95
98
|
const idx = children.indexOf(node);
|
|
96
99
|
children.splice(idx, 1);
|
|
97
100
|
(0, vfs_1.saveVfs)();
|