hfs 3.4.0-alpha1 → 3.4.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.
Files changed (110) hide show
  1. package/admin/assets/AccountsPage-CoiPofEv.js +4 -0
  2. package/admin/assets/{ConfigFilePage-D5TZZyMR.js → ConfigFilePage-jUH2feqi.js} +1 -1
  3. package/admin/assets/{CustomHtmlPage-DV2-ufWZ.js → CustomHtmlPage-Pl_AJZrl.js} +1 -1
  4. package/admin/assets/{InternetPage-DT3wSQYQ.js → InternetPage-DIcAwhFk.js} +1 -1
  5. package/admin/assets/{LangPage-DbXCv7wR.js → LangPage-BwVY8QRD.js} +1 -1
  6. package/admin/assets/{LogsPage-DmAxUZpu.js → LogsPage-CcjS12cP.js} +1 -1
  7. package/admin/assets/{MonitorPage-D7ydOeq_.js → MonitorPage-DMVFXyMe.js} +1 -1
  8. package/admin/assets/OptionsPage-BB40ax9G.js +3 -0
  9. package/admin/assets/{PluginsPage-BYzfwuvg.js → PluginsPage-CC2dINcb.js} +1 -1
  10. package/admin/assets/{icons-CfBG9vvB.js → icons-C_ux1zLA.js} +1 -1
  11. package/admin/assets/{index-CVCnYMoB.js → index-BSSQOMG_.js} +4 -4
  12. package/admin/assets/{routing-C4l8rnk_.js → routing-Be72yFmd.js} +1 -1
  13. package/admin/index.html +1 -1
  14. package/frontend/assets/{dist-legacy-CKczq_fx.js → dist-legacy-D7Dg5w3L.js} +1 -1
  15. package/frontend/assets/index-legacy-CnazC3Dj.js +1 -0
  16. package/frontend/assets/{lib-legacy-D2tyILlj.js → lib-legacy-BxFHpdER.js} +1 -1
  17. package/frontend/assets/{sha512-legacy-CFcDeiiP.js → sha512-legacy-C8xoQBnP.js} +1 -1
  18. package/frontend/index.html +1 -1
  19. package/npm-shrinkwrap.json +66 -66
  20. package/package.json +3 -3
  21. package/plugins/antibrute/plugin.js +72 -18
  22. package/src/admin-langs/embedded.js +2 -2
  23. package/src/admin-langs/hfs-admin-lang-ar.json +34 -26
  24. package/src/admin-langs/hfs-admin-lang-bg.json +35 -27
  25. package/src/admin-langs/hfs-admin-lang-de.json +37 -29
  26. package/src/admin-langs/hfs-admin-lang-el.json +38 -30
  27. package/src/admin-langs/hfs-admin-lang-en.json +8 -0
  28. package/src/admin-langs/hfs-admin-lang-es.json +37 -29
  29. package/src/admin-langs/hfs-admin-lang-fi.json +100 -92
  30. package/src/admin-langs/hfs-admin-lang-fr.json +39 -31
  31. package/src/admin-langs/hfs-admin-lang-hu.json +37 -29
  32. package/src/admin-langs/hfs-admin-lang-it.json +35 -27
  33. package/src/admin-langs/hfs-admin-lang-ja.json +36 -28
  34. package/src/admin-langs/hfs-admin-lang-ko.json +39 -31
  35. package/src/admin-langs/hfs-admin-lang-lt.json +35 -27
  36. package/src/admin-langs/hfs-admin-lang-ms.json +36 -28
  37. package/src/admin-langs/hfs-admin-lang-nl.json +36 -28
  38. package/src/admin-langs/hfs-admin-lang-pl.json +36 -28
  39. package/src/admin-langs/hfs-admin-lang-pt-br.json +36 -28
  40. package/src/admin-langs/hfs-admin-lang-ro.json +37 -29
  41. package/src/admin-langs/hfs-admin-lang-ru.json +35 -27
  42. package/src/admin-langs/hfs-admin-lang-sr-latn.json +35 -27
  43. package/src/admin-langs/hfs-admin-lang-sr.json +39 -31
  44. package/src/admin-langs/hfs-admin-lang-th.json +35 -27
  45. package/src/admin-langs/hfs-admin-lang-tr.json +38 -30
  46. package/src/admin-langs/hfs-admin-lang-uk.json +35 -27
  47. package/src/admin-langs/hfs-admin-lang-vi.json +35 -27
  48. package/src/admin-langs/hfs-admin-lang-zh-hant.json +1149 -0
  49. package/src/admin-langs/hfs-admin-lang-zh.json +728 -720
  50. package/src/adminApis.js +2 -1
  51. package/src/adminLang.js +8 -7
  52. package/src/api.accounts.js +9 -4
  53. package/src/api.auth.js +11 -3
  54. package/src/api.log.js +1 -2
  55. package/src/api.vfs.js +3 -2
  56. package/src/auth.js +25 -14
  57. package/src/consoleLog.js +4 -0
  58. package/src/const.js +1 -1
  59. package/src/cross-const.js +1 -1
  60. package/src/cross.js +1 -1
  61. package/src/customHtml.js +3 -2
  62. package/src/deletePermission.js +120 -0
  63. package/src/events.js +6 -0
  64. package/src/index.js +3 -2
  65. package/src/lang.js +6 -1
  66. package/src/langs/embedded.js +2 -2
  67. package/src/langs/hfs-lang-ar.json +2 -1
  68. package/src/langs/hfs-lang-bg.json +2 -1
  69. package/src/langs/hfs-lang-de.json +2 -1
  70. package/src/langs/hfs-lang-el.json +2 -1
  71. package/src/langs/hfs-lang-en.json +2 -1
  72. package/src/langs/hfs-lang-es.json +2 -1
  73. package/src/langs/hfs-lang-fi.json +2 -1
  74. package/src/langs/hfs-lang-fr.json +2 -1
  75. package/src/langs/hfs-lang-hu.json +2 -1
  76. package/src/langs/hfs-lang-it.json +2 -1
  77. package/src/langs/hfs-lang-ja.json +2 -1
  78. package/src/langs/hfs-lang-ko.json +2 -1
  79. package/src/langs/hfs-lang-lt.json +2 -1
  80. package/src/langs/hfs-lang-ms.json +2 -1
  81. package/src/langs/hfs-lang-nl.json +2 -1
  82. package/src/langs/hfs-lang-pl.json +2 -1
  83. package/src/langs/hfs-lang-pt-br.json +2 -1
  84. package/src/langs/hfs-lang-ro.json +2 -1
  85. package/src/langs/hfs-lang-ru.json +2 -1
  86. package/src/langs/hfs-lang-sr-latn.json +2 -1
  87. package/src/langs/hfs-lang-sr.json +2 -1
  88. package/src/langs/hfs-lang-th.json +2 -1
  89. package/src/langs/hfs-lang-tr.json +2 -1
  90. package/src/langs/hfs-lang-uk.json +2 -1
  91. package/src/langs/hfs-lang-vi.json +2 -1
  92. package/src/langs/hfs-lang-zh-hant.json +189 -0
  93. package/src/langs/hfs-lang-zh.json +96 -98
  94. package/src/listen.js +8 -4
  95. package/src/middlewares.js +31 -28
  96. package/src/perm.js +26 -4
  97. package/src/plugins.js +2 -2
  98. package/src/serveFile.js +5 -9
  99. package/src/serveGuiAndSharedFiles.js +9 -8
  100. package/src/serveGuiFiles.js +2 -2
  101. package/src/sessionStamp.js +53 -0
  102. package/src/upload.js +1 -1
  103. package/src/uploadOwners.js +4 -2
  104. package/src/vfs.js +80 -33
  105. package/src/webdav.js +2 -2
  106. package/admin/assets/AccountsPage-C6J2hRcY.js +0 -4
  107. package/admin/assets/OptionsPage-DpN3ajRm.js +0 -3
  108. package/frontend/assets/index-legacy-ZYae30AY.js +0 -1
  109. package/src/admin-langs/hfs-admin-lang-zh-tw.json +0 -1141
  110. package/src/langs/hfs-lang-zh-tw.json +0 -187
@@ -0,0 +1,4 @@
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{B as t,Bt as n,C as r,Dt as i,E as a,En as o,Et as s,F as c,G as l,H as u,J as d,Kt as f,L as p,Nt as m,O as h,Ot as g,Qt as _,Rt as v,St as y,U as b,Ut as x,V as S,X as C,Y as w,Yt as T,Z as E,Zt as D,_ as O,_r as k,_t as A,an as j,ar as M,at as ee,b as te,bn as ne,bt as N,cn as P,d as F,dt as I,et as re,fr as L,ft as R,gn as z,gr as B,h as V,hr as H,ht as ie,ir as ae,it as U,jn as oe,k as se,kn as ce,lr as W,lt as le,mn as ue,ot as de,p as fe,qt as pe,ur as G,v as me,vr as K,vt as q,xt as he,y as ge,yr as _e,z as ve,zt as ye}from"./index-BSSQOMG_.js";import{_ as be,g as xe,h as Se,m as Ce,v as we}from"./icons-C_ux1zLA.js";var J=e(_e());G();var Te=[`password`,`password2`,`adminActualAccess`,`hasPassword`,`invalidated`,`canLogin`,`members`];function Ee({account:e,done:n,groups:c,addToBar:l,reload:d}){var f,m;let{username:h}=R(),[g,v]=(0,J.useState)(e),[x,S]=(0,J.useState)([]),C=ce();(0,J.useEffect)(()=>{var t;v(e),S(c.filter(t=>t!==e.username)),C||(t=O.current)==null||(t=t.querySelector(`input`))==null||t.focus()},[JSON.stringify(e)]);let E=!e.username,{isGroup:D}=g,O=(0,J.useRef)(),{members:k}=e,M=(f=e.plugin)==null?void 0:f.auth;return(0,J.createElement)(A,{key:e.username,formRef:O,values:g,set(e,t){v(n=>W(W({},n),{},{[t]:e}))},barSx:W({gap:2,width:`100%`},le()),stickyBar:!0,addToBar:[!E&&(0,J.createElement)(t,W(W({icon:a,title:j`Delete`,confirm:j(`Delete {username}?`,{username:e.username})},h===e.username&&{disabled:!0,title:j`Cannot delete current account`}),{},{onClick:()=>L(`del_account`,{username:e.username}).then(d)})),(0,J.createElement)(t,{icon:Ce,title:j`Invalidate past sessions`+(e.invalidated?`
2
+ `+j(`(already invalidated sessions before {timestamp})`,{timestamp:s(e.invalidated)}):``),confirm:j(`Invalidate all sessions up to now for "{username}"?`,{username:e.username}),doneMessage:!0,onClick:()=>L(`invalidate_sessions`,{username:e.username}).then(d)}),...ae(l)],fields:[{k:`username`,label:j(D?`Group name`:`Username`),autoComplete:`off`,required:!0,md:D&&!M?12:4,helperText:j`Case-insensitive`,getError:t=>t!==e.username&&L(`get_account`,{username:t}).then(t=>(t==null?void 0:t.username)===e.username?j`usernames are case-insensitive`:j`already used`,()=>!1)},M&&{k:``,md:8,comp:(0,J.createElement)(_,{severity:`info`},j`Authentication handled by a plugin`)},!D&&!M&&{k:`password`,xs:6,md:4,type:`password`,autoComplete:`new-password`,required:E,label:E?j`Password`:j`Change password`},!D&&!M&&{k:`password2`,xs:6,md:4,type:`password`,autoComplete:`new-password`,label:j`Repeat password`,getError:(e,{values:t})=>(e||``)!==(t.password||``)&&j`Enter same password`},{k:`disabled`,comp:q,fromField:e=>!e,toField:e=>!e,label:j`Enabled`,xs:12,sm:6,lg:4,helperText:g.disabled||g.canLogin!==!1?j`login_disabled_by_account_or_groups`:(0,J.createElement)(T,{sx:{color:`warning.main`},component:`span`},new Date(e.expire)<new Date?j`Login is prevented because account is expired`:j`login_disabled_by_groups`)},{k:`ignore_limits`,label:j`Ignore limits`,comp:q,xs:12,sm:6,lg:4,helperText:g.ignore_limits?j`Speed limits don't apply to this account`:j`Speed limits apply to this account`},W({k:`admin`,comp:q,fromField:e=>e||null,label:j`Admin-panel access`,xs:12,sm:6,lg:4,helperText:j`To access THIS interface you are using right now`},!e.admin&&e.adminActualAccess&&{value:!0,disabled:!0,helperText:j`inherited_permission_notice`}),!D&&{k:`require_password_change`,label:j`Require password change`,comp:q,xs:12,sm:6,lg:4,helperText:j`At next login, but can be dismissed`},{k:`disable_password_change`,label:j`Password change`,comp:y,xs:12,sm:6,lg:4,defaultValue:null,options:{[j(`default_setting`,{defaultValue:j(g.canChangePassword?`Allowed`:`Disabled`)})]:null,[j`Allowed`]:!1,[j`Disabled`]:!0}},k?D&&!k.length?(0,J.createElement)(T,{},j`No members`):k.length>0&&(0,J.createElement)(ve,{gap:0,flexWrap:`wrap`},j(`members_count`,{n:k.length}),o(`,\xA0`,(m=e.members)==null?void 0:m.map(e=>(0,J.createElement)(c.includes(e)?`i`:`span`,{},e))),(0,J.createElement)(p,{icon:a,confirm:j(`delete_items`,{n:e.members.length}),onClick:()=>L(`del_account`,{username:e.members}).then(d),sx:{verticalAlign:`text-top`}})):null,D&&(0,J.createElement)(_,{severity:`info`},j`group_add_members_hint`),{k:`belongs`,comp:he,label:j`Inherit from groups`,options:x,sm:6,lg:4,helperText:[j`Specify groups to inherit permissions from.`,D&&j`A group can inherit from another group.`,!x.length&&j`no_groups_available`].filter(Boolean).join(` `)},{k:`allow_net`,comp:b,label:j`Allowed network address`,sm:6,lg:4,placeholder:j`any address`},!D&&{k:`auto_login_net`,comp:b,label:j`Auto-login by IP address`,sm:6,lg:4,placeholder:j`none`,helperText:[j`Using a hostname?`,` `,(0,J.createElement)(u,{onClick:()=>U(j`auto_login_net_help`,{title:j`Auto-login by IP address`})},j`Configure it first`)]},{k:`redirect`,comp:F,label:j`Redirect`,placeholder:j`no`,sm:6,lg:4,helperText:j`account_redirect_hint`},{k:`expire`,label:j`Expiration`,sm:6,lg:4,comp:r,toField:e=>e&&new Date(e),helperText:j`When expired, login won't be allowed`},W(W({k:`days_to_live`,label:j`Days to live`,sm:6,lg:4,comp:N,step:`any`,min:1/1e3},g.expire&&{xs:12,disabled:!0,sx:{opacity:.2}}),{},{helperText:j`Used to set expiration on first login`}),{k:`notes`,label:j`Notes`,multiline:!0,sm:6,lg:4}],onError:U,save:W(W({children:j`Save`},w(i(g,e))),{},{onClick(){return K(function*(){var t;let{password:r=``,password2:i,adminActualAccess:a,hasPassword:o,invalidated:s,canLogin:c,members:l}=g,u=oe(g,Te),d=((t=O.current)==null?void 0:t.querySelector(`button.saveBtn`))||void 0;if(E){let e=yield L(`add_account`,u);if(r)try{yield P(g.username,r)}catch(e){throw L(`del_account`,{username:g.username}),e}n(e==null?void 0:e.username,d);return}let f=yield L(`set_account`,{username:e.username,changes:u});r&&(yield P(g.username,r),v(e=>W(W({},e),{},{password:``,password2:``}))),e.username===h&&(I.username=f.username),n(f==null?void 0:f.username,d)})()}})})}var Y=e(k());B(),G();var X={fieldSeparator:`,`,lineSeparator:`
3
+ `,quote:`"`},Z={field:0,fieldOffset:0,line:0,lineOffset:0,quoted:!1,appendCell:!1,appendField:!1,appendRow:!1},De=class extends Error{constructor(e,t){super(`Invalid CSV at ${e}:${t}`)}},Oe=class{constructor(e=X){H(this,`_rows`,[]),H(this,`_row`,[]),H(this,`_cell`,``),H(this,`_options`,X),H(this,`_state`,W({},Z)),H(this,`_index`,0),H(this,`_current`,``),H(this,`_previous`,``),H(this,`_quoteState`,W({},Z)),this._options=Object.assign({},X,e)}parse(e){for(this.reset(),this._index=0;this._index<e.length;this._index++)this._state.appendCell=!0,this._previous=this._current,this._current=e[this._index],this.handleNext();if(this._row.length>0&&(this.addField(this.fieldValue(this._cell),this._row,this._state),this.addRow(this._row,this._rows,this._state)),this._state.quoted)throw new De(this._quoteState.line,this._quoteState.lineOffset);return this.makeImmutable(),this._rows}get rows(){return this._rows}get json(){if(this.rows.length>0){let e=this.rows[0].filter(e=>typeof e==`string`);return Object.freeze(this.rows.filter((e,t)=>e&&t>0).map(t=>{let n={};return e.forEach((e,r)=>{n[e]=t[r]}),Object.freeze(n)}))}return Object.freeze([])}handleNext(){this.handleQuote()||this.handleFieldSeparator()||this.handleLineSeparator(),this.processState()}handleQuote(){return this._current===this._options.quote?(this._quoteState=W({},this._state),this._previous===`\\`?this.handleQuoteEscaped():this.handleQuoteNotEscaped(),!0):!1}handleQuoteEscaped(){this._cell=this._cell.slice(0,Math.max(0,this._cell.length-1))}handleQuoteNotEscaped(){if(this._cell.length===0||this._state.quoted)this._state.quoted=!this._state.quoted;else throw new De(this._state.line,this._state.lineOffset);this._state.appendCell=!1}handleFieldSeparator(){return this._current===this._options.fieldSeparator?(this._state.quoted||(this._state.appendCell=!1,this._state.appendField=!0),!0):!1}handleLineSeparator(){return this._current===this._options.lineSeparator?(this._state.quoted||(this._state.appendCell=!1,this._state.appendField=!0,this._state.appendRow=!0),!0):!1}processState(){this._state.appendCell&&(this._cell+=this._current),this._state.appendField&&(this.addField(this.fieldValue(this._cell),this._row,this._state),this._cell=``),this._state.appendRow&&(this.addRow(this._row,this._rows,this._state),this._row=[]),this._state.lineOffset++,this._state.fieldOffset++}fieldValue(e){return e}addField(e,t,n){t.push(e),n.field++,n.fieldOffset=-1,n.appendField=!1}addRow(e,t,n){t.push(e),n.field=0,n.line++,n.lineOffset=-1,n.appendRow=!1}makeImmutable(){this.rows.forEach(e=>{e.forEach(e=>Object.freeze(e)),Object.freeze(e)}),Object.freeze(this._rows)}reset(){this._rows=[],this._row=[],this._cell=``,this._state=W({},Z),this._index=0,this._current=``,this._previous=``,this._quoteState=W({},Z)}};G();function ke(e){return Q.apply(this,arguments)}function Q(){return Q=K(function*(e){z(function(){var t=K(function*(t){let n=t==null?void 0:t[0];if(!n)return;let r=yield ue(n);if(!r)return;let i=new Oe().parse(r.trim()),a={comp:N,min:1,max:9,xs:6,typing:!0},o={skipFirstLines:0,usernameColumn:1,passwordColumn:2,groupColumn:3,redirectColumn:4,overwriteExistingAccounts:!1},s=yield de({title:j`Import accounts from CSV`,dialogProps:{maxWidth:`sm`},values:o,form:e=>{let t=i[e.skipFirstLines||0]||[],n=l(t,W(W({},o),e));return{save:{startIcon:(0,J.createElement)(V),children:j`Go`},fields:[(0,J.createElement)(T,{sx:{p:1}},j`Total lines:`,i.length),{k:`skipFirstLines`,label:j`Skip First Lines`,comp:N,max:i.length-1,typing:!0,md:6,getError:e=>e!=null&&!Number.isInteger(e)&&`Enter an integer`,helperText:(0,J.createElement)(J.Fragment,{},j`First line: `,(0,J.createElement)(`code`,{},t.join(`, `)))},{k:`overwriteExistingAccounts`,label:j`Overwrite Existing Accounts`,comp:q,md:6},W(W({k:`usernameColumn`,label:j`Username Column`},a),{},{helperText:(0,J.createElement)(J.Fragment,{},j`First username: `,n.u)}),W(W({k:`passwordColumn`,label:j`Password Column`},a),{},{helperText:(0,J.createElement)(J.Fragment,{},j`First password: `,n.p)}),W(W({k:`groupColumn`,label:j`Group Column`},a),{},{helperText:(0,J.createElement)(J.Fragment,{},j`First group: `,n.g)}),W(W({k:`redirectColumn`,label:j`Redirect Column`},a),{},{helperText:(0,J.createElement)(J.Fragment,{},j`First redirect: `,n.r)})]}}});if(!s)return;let{close:c}=ne({title:j`Importing...`,Content(){let[t,n]=(0,J.useState)(0),[r,a]=(0,J.useState)();return(0,J.useEffect)(()=>{let t=!1;return setTimeout(K(function*(){if(t)return;let r=0,o=0,u=s.skipFirstLines,d=i.length-u,f=0;try{for(let e of i){var p;if(t)return;if(u){u--;continue}let i=l(e,s);a(i),n(f++/d),yield L(`add_account`,{username:i.u,belongs:(p=i.g)==null?void 0:p.split(`,`),redirect:i.r,overwrite:s.overwriteExistingAccounts}).then(()=>{if(i.p)return P(i.u,i.p)}).catch(e=>{if(e.code===409)return o++;r++})}}finally{c();let t=f-r-o;U([j`Results:`,j(`account_import_failed`,{n:r}),j(`account_import_succeeded`,{n:t}),j(`account_import_skipped_existing`,{n:o})].join(`
4
+ `),!t&&r?`error`:r||o?`warning`:`success`),e==null||e()}})),()=>{t=!0}},[]),(0,J.createElement)(T,{sx:{display:`flex`,gap:2,alignItems:`center`}},(0,J.createElement)(S,{icon:h,progress:t}),r==null?void 0:r.u)}});function l(e,t){return{u:e[t.usernameColumn-1],p:e[t.passwordColumn-1],g:e[t.groupColumn-1],r:e[t.redirectColumn-1]}}});return function(e){return t.apply(this,arguments)}}(),{multiple:!1,accept:`.csv`})}),Q.apply(this,arguments)}G();var Ae=` `,$=e=>e==null?void 0:e.split(Ae).at(-1);function je(){let{username:e,accountsAsTree:r}=R(),{data:i,reload:o,element:s}=c(`get_accounts`),[u,h]=(0,J.useState)([]),y=Array.isArray(u);(0,J.useEffect)(()=>{Array.isArray(i==null?void 0:i.list)&&y&&h(u.filter(e=>i.list.find(t=>(t==null?void 0:t.username)===$(e))))},[i]);let b=(0,J.useMemo)(()=>i&&Y.default.sortBy(i.list,[e=>!e.isGroup,e=>!e.adminActualAccess,`username`]),[i]),S=y&&Y.default.find(b,{username:$(u[0])}),w=E(`md`),k=!(u.length>0)||!b?null:y&&u.length>1?(0,J.createElement)(J.Fragment,{},(0,J.createElement)(ve,{},(0,J.createElement)(D,{variant:`h6`},j(`select_count`,{n:u.length})),(0,J.createElement)(p,{onClick:B,icon:a},j`Remove`)),(0,J.createElement)(n,{},Y.default.uniq(u.map($)).map(e=>(0,J.createElement)(ye,{key:e},(0,J.createElement)(v,{},e))))):M(S||F(),e=>(0,J.createElement)(Ee,{account:e,groups:b.filter(e=>e.isGroup).map(e=>e.username),addToBar:w&&[(0,J.createElement)(T,{sx:{flex:1}}),Me(e,{fontSize:`large`,sx:{p:1}}),(0,J.createElement)(t,{icon:ie,title:j`Close`,onClick:z})],reload:o,done(e,t){h(w?[e]:[]),o(),l(``,t)}}));(0,J.useEffect)(()=>{if(w||!k||!u.length)return;let{close:e}=ne({title:Y.default.isString(u)?Y.default.startCase(u):u.length>1?j`Multiple selection`:S?j(S.isGroup?`Group: `:`User: `)+S.username:`?`,Content:()=>k,onClose(e){e||z()}});return()=>void e(!0)},[w,u,S]);let A={height:`100%`,display:`flex`,flexDirection:`column`,overflow:`auto`},[N,P]=re(j`Show tree`,j`Show list`,()=>({icon:m}),r);return I.accountsAsTree=N,s||(0,J.createElement)(x,{container:!0,sx:{rowSpacing:1,columnSpacing:2,top:0,flex:`1 1 auto`,height:0}},(0,J.createElement)(x,{size:{xs:12,md:5,lg:4,xl:5},sx:A},(0,J.createElement)(T,{sx:{display:`flex`,flexWrap:`wrap`,gap:2,mb:2,boxShadow:e=>`0px -8px 4px 10px ${e.palette.background.paper}`,position:`sticky`,top:0,zIndex:2,backgroundColor:`background.paper`,width:`fit-content`}},(0,J.createElement)(fe,{variant:`contained`,startIcon:(0,J.createElement)(xe),items:[{children:j`user`,onClick:()=>h(`new-user`)},{children:j`group`,onClick:()=>h(`new-group`)},{children:j`from CSV`,onClick:()=>ke(o)}]},j`Add`),C(o),P,(b==null?void 0:b.length)>0&&(0,J.createElement)(D,{sx:{p:1}},j(`accounts_count`,{n:b.length}))),!(b!=null&&b.length)&&(0,J.createElement)(_,{severity:`info`},g(j`remote_admin_account_required`)),(0,J.createElement)(te,{multiSelect:!0,sx:{pr:4,pb:2,minWidth:`15em`},selectedItems:y?u:[],slots:{collapseIcon:O,expandIcon:me},onSelectedItemsChange(e,t){var n,r;!(e==null||(n=e.target)==null||(r=n.closest)==null)&&r.call(n,`.MuiTreeItem-iconContainer`)||h(t)}},b&&(function e(t,n=``){return t.map(t=>{var r,i;return(0,J.createElement)(ge,{key:t.username,itemId:n+t.username,label:(0,J.createElement)(T,{sx:{display:`flex`,flexWrap:`wrap`,padding:`.2em 0`,columnGap:`.5em`,alignItems:`center`}},Me(t),(t.disabled||t.canLogin===!1)&&d(we,t.disabled?j`Disabled`:j`Disabled by its groups`,t.disabled?void 0:{color:`text.secondary`}),(t.expire||t.days_to_live)&&(0,J.createElement)(Se),t.adminActualAccess&&d(se,j`Can login into Admin`),t.username,!!((r=t.belongs)!=null&&r.length)&&(0,J.createElement)(T,{sx:{color:`text.secondary`,fontSize:`small`}},`(`,(i=t.belongs)==null?void 0:i.join(`, `),`)`))},N&&e(b.filter(e=>{var n;return(n=t.directMembers)==null?void 0:n.includes(e.username)}),n+t.username+Ae))})})(N?b.filter(e=>!b.some(t=>{var n;return(n=t.members)==null?void 0:n.includes(e.username)})):b))),w&&k&&(0,J.createElement)(x,{size:`grow`,sx:W(W({},A),{},{maxWidth:`100%`})},(0,J.createElement)(pe,{sx:{overflow:`initial`}},(0,J.createElement)(f,{},k))));function F(){return{username:``,hasPassword:u===`new-user`,adminActualAccess:!1,invalidated:void 0,canLogin:!0,canChangePassword:!0,isGroup:u===`new-group`,members:[],directMembers:[]}}function z(){h([])}function B(){return V.apply(this,arguments)}function V(){return V=K(function*(){if(typeof u==`string`||u.some(t=>$(t)===e)&&!(yield ee(j`current_account_delete_warning`)))return;let t=Y.default.without(Y.default.uniq(u.map($)),e);if(!t.length)return U(j`Nothing to delete`,`info`);if(!(yield ee(j(`delete_items`,{n:t.length}))))return;let n=[];for(let e of t)(yield L(`del_account`,{username:e}).then(()=>1,()=>0))||n.push(e);if(o(),n.length)return U(j(`items_delete_failed`,{n:n.length,list:n.join(`, `)}),`error`)}),V.apply(this,arguments)}}function Me(e,t={}){return(0,J.createElement)(e.isGroup?h:be,t)}export{je as default};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime-CacB07dV.js";import{B as t,D as n,F as r,Jn as i,L as a,Qt as o,Tn as s,X as c,Yt as l,an as u,c as d,dn as f,dt as p,fn as m,fr as h,i as g,wn as _,wt as v,yr as y,yt as b,z as x}from"./index-CVCnYMoB.js";var S=e(y());function C(){p.title=u`Config file`;let{data:e,reload:y,element:C}=r(`get_config_text`,{}),[w,T]=(0,S.useState)(),[E,D]=(0,S.useState)(),[O,k]=(0,S.useState)(!1);return(0,S.useEffect)(()=>{D(e==null?void 0:e.text),T(e==null?void 0:e.text)},[e]),C||(0,S.createElement)(S.Fragment,{},(0,S.createElement)(x,{flexWrap:`wrap`,justifyContent:`space-between`},(0,S.createElement)(a,{icon:g,onClick:j,disabled:!e},u`Export without passwords`),O?(0,S.createElement)(S.Fragment,{},c(y),(0,S.createElement)(t,{icon:v,title:u`Save
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{B as t,D as n,F as r,Jn as i,L as a,Qt as o,Tn as s,X as c,Yt as l,an as u,c as d,dn as f,dt as p,fn as m,fr as h,i as g,wn as _,wt as v,yr as y,yt as b,z as x}from"./index-BSSQOMG_.js";var S=e(y());function C(){p.title=u`Config file`;let{data:e,reload:y,element:C}=r(`get_config_text`,{}),[w,T]=(0,S.useState)(),[E,D]=(0,S.useState)(),[O,k]=(0,S.useState)(!1);return(0,S.useEffect)(()=>{D(e==null?void 0:e.text),T(e==null?void 0:e.text)},[e]),C||(0,S.createElement)(S.Fragment,{},(0,S.createElement)(x,{flexWrap:`wrap`,justifyContent:`space-between`},(0,S.createElement)(a,{icon:g,onClick:j,disabled:!e},u`Export without passwords`),O?(0,S.createElement)(S.Fragment,{},c(y),(0,S.createElement)(t,{icon:v,title:u`Save
2
2
  (ctrl+enter)`,modified:w!==E,onClick:A}),(0,S.createElement)(o,{severity:`warning`,sx:{minWidth:`10em`}},u`Be careful, you can easily break things here`)):(0,S.createElement)(a,{icon:n,variant:`outlined`,onClick(){k(!0),setTimeout(()=>m(`main textarea`),500)}},u`Edit`),(0,S.createElement)(l,{sx:{flex:1,minWidth:`fit-content`}},(0,S.createElement)(b,{label:u`File path`,value:e==null?void 0:e.fullPath,size:`small`}))),C||w!==void 0&&(0,S.createElement)(l,{sx:{"& pre,& textarea":{wordBreak:`break-all !important`}}},(0,S.createElement)(_,{margin:10},(0,S.createElement)(d,{value:w,disabled:!O,style:{background:`#8881`},onValueChange:T,onKeyDown(e){[`s`,`Enter`].includes(s(e))&&(A(),e.preventDefault())}}))));function A(){return h(`set_config_text`,{text:w}).then(()=>D(w))}function j(){var t;let n=(w||``).replace(/^(\s*(\w*password|_\w*|token|srp|dynamic_dns_url):\s*).+(?:\r?\n|$)/gm,`$1removed
3
3
  `).replace(/(:\/\/)[^/@\s]+@/g,`$1removed@`)+i(`custom_html: | # this is currently ignored by hfs, just here for reference
4
4
  `,(t=e.customHtml)==null?void 0:t.replace(/^/gm,` `));n&&f(`config_no_passwords.yaml`,n)}}export{C as default};
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-CacB07dV.js";import{B as t,F as n,It as r,Jn as i,Ot as a,Q as o,Qt as s,St as c,Wn as l,X as u,Yt as d,_r as f,an as p,c as m,cr as h,dt as g,en as _,fr as v,ft as y,it as b,lr as x,on as S,or as C,q as w,tt as T,ur as E,vr as D,wt as O,yr as k}from"./index-CVCnYMoB.js";var A=e(f()),j=e(k());E();function M(e,t,n){return(0,j.createElement)(N,x({checked:e||!1,onChange(e,n){t(n)},disabled:e===void 0},n))}var N=_(r)(({theme:e,size:t})=>{let n=t&&t===`small`;return{height:n?36:48,width:n?18:26,padding:5,"& .MuiSwitch-switchBase":{margin:1,padding:0,transform:`translateY(${n?16:22}px)`,"&.Mui-checked":{color:e.palette.primary.contrastText,transform:`translateY(2px)`,"& .MuiSwitch-thumb:before":{backgroundImage:`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="${n?14:20}" width="20" viewBox="0 0 20 20"><path fill="${encodeURIComponent(e.palette.primary.contrastText)}" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"/></svg>')`},"& + .MuiSwitch-track":{backgroundColor:e.palette.grey[500]}}},"& .Mui-checked .MuiSwitch-thumb":{backgroundColor:e.palette.primary.main,boxShadow:`0px 2px 1px 1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12)`},"& .MuiSwitch-thumb":{width:n?16:24,height:n?16:24,backgroundColor:e.palette.grey[700],"&::before":{content:`''`,position:`absolute`,width:`85%`,height:`85%`,left:0,top:0,backgroundRepeat:`no-repeat`,backgroundPosition:`center`,backgroundImage:`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="${n?14:20}" width="20" viewBox="0 0 20 20"><path fill="${encodeURIComponent(e.palette.primary.contrastText)}" d="M19,13H5V11H19V13Z"/></svg>')`}},"& .MuiSwitch-track":{backgroundColor:e.palette.grey[500],borderRadius:20/2}}});E();var P={top:`top_html_body`,bottom:`bottom_html_body`};function F({setTitleSide:e}){let{data:r,reload:f,element:_}=n(`get_custom_html`),{customHtmlSection:E}=y(),[k,N]=(0,j.useState)({}),[F,I]=(0,j.useState)({});(0,j.useEffect)(()=>{r&&(I(r.sections),N(r.sections),B(r.enabled))},[r]);let L=(0,j.useMemo)(()=>{let e=A.default.sortBy(Object.keys(k),l);return e.length&&!e.includes(E)&&(g.customHtmlSection=A.default.findKey(k,Boolean)||(e==null?void 0:e[0])||``),e.map(e=>{var t;return{value:e,label:(P[e]?p(P[e]):S(i(`HTTP `,h[e])||A.default.startCase(e)))+((t=k[e])!=null&&t.trim()?` *`:``)}})},[k]),R=(0,j.useMemo)(()=>!A.default.isEqualWith(F,k,(e,t)=>!e&&!t||void 0),[F,k]),[z,B]=(0,j.useState)();e((0,j.useMemo)(()=>(0,j.createElement)(d,{sx:{display:{xs:`none`,md:`block`}}},(0,j.createElement)(s,{severity:`info`},a(p`custom_html_help`),T(`customization`,p`More help`)),(0,j.createElement)(s,{severity:`info`},p`To customize icons `,T(`customization#icons`,p`read documentation`))),[]));let V=o([`s`,`Enter`]);return _||(0,j.createElement)(j.Fragment,{},(0,j.createElement)(d,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:1}},(0,j.createElement)(c,{label:p`Section`,value:E,options:L,onChange:e=>g.customHtmlSection=e}),u(f),(0,j.createElement)(t,{ref:V.ref,icon:O,title:p`Save
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{B as t,F as n,It as r,Jn as i,Ot as a,Q as o,Qt as s,St as c,Wn as l,X as u,Yt as d,_r as f,an as p,c as m,cr as h,dt as g,en as _,fr as v,ft as y,it as b,lr as x,on as S,or as C,q as w,tt as T,ur as E,vr as D,wt as O,yr as k}from"./index-BSSQOMG_.js";var A=e(f()),j=e(k());E();function M(e,t,n){return(0,j.createElement)(N,x({checked:e||!1,onChange(e,n){t(n)},disabled:e===void 0},n))}var N=_(r)(({theme:e,size:t})=>{let n=t&&t===`small`;return{height:n?36:48,width:n?18:26,padding:5,"& .MuiSwitch-switchBase":{margin:1,padding:0,transform:`translateY(${n?16:22}px)`,"&.Mui-checked":{color:e.palette.primary.contrastText,transform:`translateY(2px)`,"& .MuiSwitch-thumb:before":{backgroundImage:`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="${n?14:20}" width="20" viewBox="0 0 20 20"><path fill="${encodeURIComponent(e.palette.primary.contrastText)}" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"/></svg>')`},"& + .MuiSwitch-track":{backgroundColor:e.palette.grey[500]}}},"& .Mui-checked .MuiSwitch-thumb":{backgroundColor:e.palette.primary.main,boxShadow:`0px 2px 1px 1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12)`},"& .MuiSwitch-thumb":{width:n?16:24,height:n?16:24,backgroundColor:e.palette.grey[700],"&::before":{content:`''`,position:`absolute`,width:`85%`,height:`85%`,left:0,top:0,backgroundRepeat:`no-repeat`,backgroundPosition:`center`,backgroundImage:`url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="${n?14:20}" width="20" viewBox="0 0 20 20"><path fill="${encodeURIComponent(e.palette.primary.contrastText)}" d="M19,13H5V11H19V13Z"/></svg>')`}},"& .MuiSwitch-track":{backgroundColor:e.palette.grey[500],borderRadius:20/2}}});E();var P={top:`top_html_body`,bottom:`bottom_html_body`};function F({setTitleSide:e}){let{data:r,reload:f,element:_}=n(`get_custom_html`),{customHtmlSection:E}=y(),[k,N]=(0,j.useState)({}),[F,I]=(0,j.useState)({});(0,j.useEffect)(()=>{r&&(I(r.sections),N(r.sections),B(r.enabled))},[r]);let L=(0,j.useMemo)(()=>{let e=A.default.sortBy(Object.keys(k),[l,e=>e]);return e.length&&!e.includes(E)&&(g.customHtmlSection=A.default.findKey(k,Boolean)||(e==null?void 0:e[0])||``),e.map(e=>{var t;return{value:e,label:(P[e]?p(P[e]):S(i(`HTTP `,h[e])||A.default.startCase(e)))+((t=k[e])!=null&&t.trim()?` *`:``)}})},[k]),R=(0,j.useMemo)(()=>!A.default.isEqualWith(F,k,(e,t)=>!e&&!t||void 0),[F,k]),[z,B]=(0,j.useState)();e((0,j.useMemo)(()=>(0,j.createElement)(d,{sx:{display:{xs:`none`,md:`block`}}},(0,j.createElement)(s,{severity:`info`},a(p`custom_html_help`),T(`customization`,p`More help`)),(0,j.createElement)(s,{severity:`info`},p`To customize icons `,T(`customization#icons`,p`read documentation`))),[]));let V=o([`s`,`Enter`]);return _||(0,j.createElement)(j.Fragment,{},(0,j.createElement)(d,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:1}},(0,j.createElement)(c,{label:p`Section`,value:E,options:L,onChange:e=>g.customHtmlSection=e}),u(f),(0,j.createElement)(t,{ref:V.ref,icon:O,title:p`Save
2
2
  (ctrl+s)`,modified:R,doneAnimation:!0,onClick:H}),w(p`Enable all sections`,void 0,M(z,function(){var e=D(function*(e){try{yield v(`set_config`,{values:{[C.disable_custom_html]:!e}}),B(e)}catch(e){b(e)}});return function(t){return e.apply(this,arguments)}}()))),(0,j.createElement)(m,{lang:E===`style`?`css`:E===`script`?`js`:`html`,value:(k==null?void 0:k[E])||``,style:{background:`#8881`},onValueChange(e){N(t=>x(x({},t),{},{[E]:e}))}}));function H(){return v(`set_custom_html`,{sections:k}).then(()=>I(k))}}export{F as default};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime-CacB07dV.js";import{A as t,An as n,Ct as r,Et as i,F as a,Gt as o,H as s,Hn as c,Ht as l,Jn as u,Jt as d,Kn as f,Kt as p,L as m,Lt as h,N as ee,Ot as g,P as _,Qt as v,R as y,S as b,St as te,T as x,U as ne,Un as S,Ut as C,Vt as re,Xn as w,Yt as T,Zt as E,_r as D,an as O,ar as k,at as A,bt as ie,ct as j,d as M,fr as N,g as P,gt as ae,hn as F,ir as I,it as L,jt as oe,lr as R,mr as se,mt as ce,nt as z,o as le,on as B,or as V,ot as ue,qt as de,rr as fe,rt as H,sr as U,st as pe,tt as me,ur as W,ut as he,vr as G,vt as ge,x as _e,xt as ve,yn as ye,yr as K,z as q}from"./index-CVCnYMoB.js";import{d as be,f as xe,l as Se,p as J,u as Ce}from"./icons-CfBG9vvB.js";var Y=e(K());W();function we({onComplete:e,checkDomain:t,fresh:n,renewError:i}){var o;let s=a(`get_acme`),{data:u,error:f}=se(`get_acme_status`),[p,h]=(0,Y.useState)(),[ee,_]=(0,Y.useState)(!1),[y,b]=(0,Y.useState)(``),x=(0,Y.useRef)(Promise.resolve()),ne=(0,Y.useRef)(0);if((0,Y.useEffect)(()=>{s.data&&h(s.data)},[s.data]),(0,Y.useEffect)(()=>{(u==null?void 0:u.state)===`done`&&u.id!==ne.current&&(ne.current=u.id,e())},[u==null?void 0:u.id,u==null?void 0:u.state]),!p)return s.element;let S=((o=s.data)==null?void 0:o.providers)||[],w=p.dns[0],E=S.find(e=>e.id===(w==null?void 0:w.provider)),D=(u==null?void 0:u.state)===`running`,k=p.domain.includes(`*.`),ie=O`HTTP validation cannot issue wildcard certificates. Select a DNS provider.`,j=p.challenge===`http-01`?`http`:(w==null?void 0:w.provider)||`dns`,M=p.challenge===`dns-01`&&w&&(!(E!=null&&E.available)||E.config_version!==w.config_version);return(0,Y.createElement)(T,{sx:{display:`grid`,gap:2}},g(O(`generate_lets_encrypt_certificate`,{letsEncryptUrl:`https://letsencrypt.org`})),(0,Y.createElement)(r,{label:O`Domain for certificate`,value:p.domain.replaceAll(`,`,`
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{A as t,An as n,Ct as r,Et as i,F as a,Gt as o,H as s,Hn as c,Ht as l,Jn as u,Jt as d,Kn as f,Kt as p,L as m,Lt as h,N as ee,Ot as g,P as _,Qt as v,R as y,S as b,St as te,T as x,U as ne,Un as S,Ut as C,Vt as re,Xn as w,Yt as T,Zt as E,_r as D,an as O,ar as k,at as A,bt as ie,ct as j,d as M,fr as N,g as P,gt as ae,hn as F,ir as I,it as L,jt as oe,lr as R,mr as se,mt as ce,nt as z,o as le,on as B,or as V,ot as ue,qt as de,rr as fe,rt as H,sr as U,st as pe,tt as me,ur as W,ut as he,vr as G,vt as ge,x as _e,xt as ve,yn as ye,yr as K,z as q}from"./index-BSSQOMG_.js";import{d as be,f as xe,l as Se,p as J,u as Ce}from"./icons-C_ux1zLA.js";var Y=e(K());W();function we({onComplete:e,checkDomain:t,fresh:n,renewError:i}){var o;let s=a(`get_acme`),{data:u,error:f}=se(`get_acme_status`),[p,h]=(0,Y.useState)(),[ee,_]=(0,Y.useState)(!1),[y,b]=(0,Y.useState)(``),x=(0,Y.useRef)(Promise.resolve()),ne=(0,Y.useRef)(0);if((0,Y.useEffect)(()=>{s.data&&h(s.data)},[s.data]),(0,Y.useEffect)(()=>{(u==null?void 0:u.state)===`done`&&u.id!==ne.current&&(ne.current=u.id,e())},[u==null?void 0:u.id,u==null?void 0:u.state]),!p)return s.element;let S=((o=s.data)==null?void 0:o.providers)||[],w=p.dns[0],E=S.find(e=>e.id===(w==null?void 0:w.provider)),D=(u==null?void 0:u.state)===`running`,k=p.domain.includes(`*.`),ie=O`HTTP validation cannot issue wildcard certificates. Select a DNS provider.`,j=p.challenge===`http-01`?`http`:(w==null?void 0:w.provider)||`dns`,M=p.challenge===`dns-01`&&w&&(!(E!=null&&E.available)||E.config_version!==w.config_version);return(0,Y.createElement)(T,{sx:{display:`grid`,gap:2}},g(O(`generate_lets_encrypt_certificate`,{letsEncryptUrl:`https://letsencrypt.org`})),(0,Y.createElement)(r,{label:O`Domain for certificate`,value:p.domain.replaceAll(`,`,`
2
2
  `),multiline:!0,required:!0,disabled:D,helperText:g(O`certificate_domains_example`),onChange(e){let t=e.replaceAll(`
3
3
  `,`,`);P(R({domain:t},t.includes(`*.`)&&{challenge:`dns-01`}))}}),p.domain.split(`,`).some(c)&&(0,Y.createElement)(v,{severity:`info`},O`acme_ip_short_lived_notice`),(0,Y.createElement)(te,{label:O`Validation`,value:j,disabled:D,options:[{value:`http`,label:`HTTP`},...j===`dns`?[{value:`dns`,label:O`Select a DNS provider`,disabled:!0}]:[],...w&&!E?[{value:w.provider,label:`DNS · `+w.provider,disabled:!0}]:[],...S.map(e=>({value:e.id,label:`DNS · `+e.label,disabled:!e.available}))],helperText:g(O(`acme_validation_help`,{url:`https://github.com/rejetto/hfs/wiki/Certificate-validation`})),onChange(e){if(e===`http`&&k)return L(ie,`error`);let t=S.find(t=>t.id===e);P(e===`http`?{challenge:`http-01`}:{challenge:`dns-01`,dns:t?[R({id:(w==null?void 0:w.id)||`main`,provider:e,config_version:t.config_version,credentials:{}},(w==null?void 0:w.provider)===e&&w.config_version===t.config_version?w:{})]:[]})}}),M&&(0,Y.createElement)(v,{severity:`error`},O`DNS provider unavailable or incompatible; update HFS or reconfigure the provider`),M&&(E==null?void 0:E.available)&&(0,Y.createElement)(d,{onClick:()=>P({dns:[{id:w.id,provider:E.id,config_version:E.config_version,credentials:{}}]})},O`Reconfigure provider`),p.challenge===`dns-01`&&(E==null?void 0:E.help_url)&&(0,Y.createElement)(re,{href:E.help_url,target:`_blank`,rel:`noopener`},O`How to get credentials`),p.challenge===`dns-01`&&w&&E&&(0,Y.createElement)(C,{container:!0,spacing:2},Object.entries(E.fields).map(([e,t])=>(0,Y.createElement)(C,{key:e,size:{xs:12,sm:6}},(0,Y.createElement)(r,{label:O(t.label||e),value:w.credentials[e]||``,disabled:D,type:t.secret?`password`:`text`,autoComplete:`off`,onChange(t){P({dns:[R(R({},w),{},{credentials:R(R({},w.credentials),{},{[e]:t})})]})}})))),(0,Y.createElement)(q,{justifyContent:`space-between`},(0,Y.createElement)(ge,{label:O`Automatic renew before expiration`,value:p.renew,disabled:D||!p.domain,onChange:e=>P({renew:e})}),(0,Y.createElement)(m,{icon:J,onClick:ae,disabled:D||ee||!p.domain||!!M||p.challenge===`dns-01`&&!E},O`Request`)),i&&(0,Y.createElement)(v,{severity:`error`},i),y&&(0,Y.createElement)(v,{severity:`error`},y),f&&(0,Y.createElement)(v,{severity:`warning`},O`Connection lost; reopen this page to check the certificate request.`),(u==null?void 0:u.state)!==`idle`&&(u==null?void 0:u.message)&&(0,Y.createElement)(v,{severity:u.state===`error`?`error`:u.state===`done`?`success`:`info`},B(u.message),u.domain&&` · `+u.domain),(u==null?void 0:u.warning)&&(0,Y.createElement)(v,{severity:`warning`},B(u.warning)),D&&(0,Y.createElement)(l));function P(e){let t=R(R({},p),e);h(t),_(!0),b(``);let n=x.current.catch(()=>{}).then(()=>N(`set_acme`,{settings:t}));x.current=n,n.catch(e=>b(String(e))).finally(()=>{x.current===n&&_(!1)})}function ae(){return F.apply(this,arguments)}function F(){return F=G(function*(){try{if(k&&p.challenge===`http-01`)throw Error(ie);yield x.current;let[e,...r]=p.domain.split(`,`);if(n(e)&&!(yield A(O`Your certificate is still good`,{trueText:O`Make a new one anyway`}))||p.challenge===`http-01`&&(!(yield A(O`acme_http_port_requirement`))||(yield t(e))))return;yield N(`make_cert`,{domain:e,altNames:r,background:!0})}catch(e){L(String(e),`error`)}}),F.apply(this,arguments)}}var Te=e(D()),Ee=z.filter(e=>H.includes(e.code)),De=`https://portforward.com/`,Oe=1080,ke=(0,Y.createElement)(`div`,{},O`internet_probably_unreachable`,` `,me(`Work-on-the-internet#double-nat`,O`Read more`));function X({setTitleSide:e}){var r,f,p;let[h,S]=(0,Y.useState)(),[C,E]=(0,Y.useState)(!1),[D,I]=(0,Y.useState)(!1),R=a(`get_status`),z=a(`get_config`,{only:[V.base_url]}),B=(r=z.data)==null?void 0:r[V.base_url],de=k([(f=R.data)==null||(f=f.http)==null?void 0:f.error,(p=R.data)==null||(p=p.https)==null?void 0:p.error],([e,t])=>e&&t?`error`:e||t?`warning`:`success`),H=a(`get_nat`,{},{timeout:30}),{data:U,error:W}=a(`get_public_ips`,{},{timeout:20}),{data:K}=H,J=K==null?void 0:K.internalPort,X=(K==null?void 0:K.mapped)&&K.mapped.private.port!==J&&K.mapped.private.port,Ne=(K==null?void 0:K.externalIp)&&U&&!U.includes(K.externalIp),Q=n();return(0,Y.useEffect)(()=>{Q.state&&Ke(!0)},[Q.state]),e((0,Y.useMemo)(()=>(0,Y.createElement)(v,{severity:`info`,sx:{display:{xs:`none`,sm:`inherit`}}},O`internet_page_intro`),[])),(0,Y.createElement)(q,{vert:!0,gap:`2em`},(0,Y.createElement)(T,{sx:{maxWidth:`40em`}},Ue()),(0,Y.createElement)(q,{gap:`2em`,flexWrap:`wrap`,maxWidth:`84em`,"&>*":{maxWidth:`40em`,width:{md:`40em`}},alignItems:`flex-start`,justifyContent:`space-between`},He(),ze(),Ie(),Fe()));function Pe(e){return e.replace(RegExp(`.+<body>(.+)<\\/body>.+`,`is`),(e,t)=>t||e).replace(/<[^>]+>/g,` `)}function Fe(){let{data:e}=se(`get_dynamic_dns_error`),n=(0,Y.useRef)();return(0,Y.useEffect)(()=>n.current&&F(n.current,`1s blink`),[e]),(0,Y.createElement)(Z,{icon:xe,title:O`Dynamic DNS updater`},e&&(0,Y.createElement)(q,{},e.error?(0,Y.createElement)(ce,{color:`error`,ref:n}):(0,Y.createElement)(ae,{color:`success`,ref:n}),i(e.ts),` – `,e.error?(O`Error: `+Pe(e.error)).slice(0,500):O`Updated successfully`),O`dynamic_dns_intro`,(0,Y.createElement)(t,{form:(e,{setValues:t})=>({fields:[(0,Y.createElement)(q,{},Te.default.map({NoIP:{url:`https://$username:$password@dynupdate.no-ip.com/nic/update?hostname=$domain`,fields:[`username`,`password`,`domain`].map(e=>({k:e,label:O(Te.default.upperFirst(e))}))},DuckDNS:{url:`https://www.duckdns.org/update/$domain/$token>OK`,fields:[{k:`domain`,label:O`Domain`,helperText:O`do NOT include the .duckdns.org part`},{k:`token`,label:O`Token`}]}},({url:e,fields:n},r)=>(0,Y.createElement)(m,{key:e,onClick:()=>ue({title:O(`{label} wizard`,{label:r}),form:{sx:{maxWidth:`20em`},before:(0,Y.createElement)(T,{sx:{mb:1}},O`The following information is stored unencrypted`),fields:n.map(e=>Te.default.isString(e)?{k:e}:e)}}).then(n=>n&&t({[V.dynamic_dns_url]:w(e,n,`$`)}))},O(`{label} wizard`,{label:r})))),{k:V.dynamic_dns_url,label:O`Updater URL`,multiline:!0,helperText:O`dynamic_dns_url_help`}]})}))}function Ie(){let e=(0,Y.useMemo)(()=>Ee.map(e=>({value:e.code,label:e.name})),[Ee]);return(0,Y.createElement)(Z,{title:O`Geo IP`,icon:oe},(0,Y.createElement)(t,{keys:[V.geo_enable,V.geo_allow,V.geo_list,V.geo_allow_unknown,V.geo_ignore_net],form:t=>{var n;return{fields:[{k:V.geo_enable,comp:ge,label:O`Enable`,helperText:g(O`geo_db_download_notice`)},...t!=null&&t[V.geo_enable]?[{k:V.geo_allow,comp:te,label:O`Rule`,options:{[O`no restriction`]:null,[O`block selected countries`]:!1,[O`allow selected countries`]:!0}},t[V.geo_allow]!=null&&{k:V.geo_list,comp:ve,label:O(`selected_countries_count`,{count:((n=t[V.geo_list])==null?void 0:n.length)||0}),valueSeparator:!1,placeholder:O`none`,options:e,renderOption:e=>(0,Y.createElement)(y,{code:e.value,long:!0}),clearable:!0,getError:e=>t[V.geo_allow]&&!(e!=null&&e.length)&&O`Cannot be empty`},t[V.geo_allow]!=null&&{k:V.geo_allow_unknown,comp:te,label:O`When country cannot be determined`,helperText:O`Local IPs are ignored`,options:{[O`Allow`]:!0,[O`Block`]:!1},sm:6},{k:V.geo_ignore_net,comp:ne,label:O`Ignore IP addresses`,placeholder:O`none`,helperText:O`Bypass geo-filtering`,sm:6}]:[]]}},addToBar:[(0,Y.createElement)(T,{sx:{flex:1}}),(0,Y.createElement)(m,{icon:x,onClick:Le},O`Lookup IP`)]}))}function Le(){return Re.apply(this,arguments)}function Re(){return Re=G(function*(){let e=yield pe(O`Lookup IP`);if(!e)return;let{country:t}=yield N(`geo_ip`,{ip:e});return t?L((0,Y.createElement)(y,{code:t,long:!0}),`success`):L(O`IP not found`,`error`)}),Re.apply(this,arguments)}function ze(){var e;let t=a(`get_cert`),{https:n}=R.data||{},r=(n==null?void 0:n.port)===-1,c=n==null?void 0:n.error;return R.element||(0,Y.createElement)(Z,{title:O`HTTPS`,icon:P,color:n!=null&&n.listening&&!c?`success`:`warning`},c?(0,Y.createElement)(v,{severity:`warning`},c):r&&(0,Y.createElement)(s,{onClick:Be},O`Not enabled`),t.element||k(t.data,e=>{var t,n;return e.none?(0,Y.createElement)(s,{onClick:l},O`No certificate configured`):(0,Y.createElement)(T,{},(0,Y.createElement)(_,{fontSize:`small`,sx:{mr:1,verticalAlign:`middle`}}),O`Current certificate`,(0,Y.createElement)(`ul`,{},(0,Y.createElement)(`li`,{},O`Domain: `,((t=e.altNames)==null?void 0:t.join(` + `))||`-`),(0,Y.createElement)(`li`,{},O`Issuer: `,((n=e.issuer)==null?void 0:n.O)||(0,Y.createElement)(`i`,{},O`self-signed`)),(0,Y.createElement)(`li`,{},O`Validity: `,[`validFrom`,`validTo`].map(t=>i(e[t])).join(` – `))))}),(0,Y.createElement)(o),(0,Y.createElement)(we,{checkDomain:We,renewError:(e=R.data)==null?void 0:e.acmeRenewError,fresh(e){var n,r,i;let a=Number(new Date((n=t.data)==null?void 0:n.validTo)),o=(a-Number(new Date((r=t.data)==null?void 0:r.validFrom)))/3;return!!(!((i=t.data)==null||(i=i.altNames)==null)&&i.includes(e)&&a-Date.now()>=o)},onComplete(){t.reload(),R.reload(),r&&Be()}}));function l(){return u.apply(this,arguments)}function u(){return u=G(function*(){yield ee(),t.reload(),R.reload()}),u.apply(this,arguments)}}function Be(){return Ve.apply(this,arguments)}function Ve(){return Ve=G(function*(){if(!(yield A(O`https_disabled_notice`,{trueText:O`Enable it`})))return;let e=he();try{yield N(`set_config`,{values:{https_port:443}}),yield fe(1e3),R.reload()}finally{e()}}),Ve.apply(this,arguments)}function He(){return z.element||(0,Y.createElement)(Z,{icon:oe,title:O`Address`},(0,Y.createElement)(q,{flexWrap:`wrap`},O`Main address: `,B?(0,Y.createElement)(`tt`,{},B):O`automatic, not configured`,(0,Y.createElement)(m,{size:`small`,variant:`outlined`,"aria-label":O`Change address`,onClick:()=>void le().then(z.reload)},O`Change`)),(0,Y.createElement)(o),(0,Y.createElement)(t,{saveOnChange:!0,onSave(){R.reload()},form:{fields:[{k:V.roots,label:O`Domain roots`,helperText:O`domain_roots_help`,comp:b,reorder:!0,fields:[{k:`host`,label:O`Domain/Host`,helperText:O`Wildcards supported: *.domain.com|other.com`,getError:e=>(e==null?void 0:e.includes(`/`))&&O`No URLs or paths here!`},{k:`root`,label:O`Home/Root`,comp:M,files:!1,placeholder:O`default`,helperText:O`Root path in VFS`,$column:{renderCell({value:e}){return e||(0,Y.createElement)(`i`,{},O`default`)}}}],toField:e=>Object.entries(e||{}).map(([e,t])=>({host:e,root:t})),fromField:e=>Object.fromEntries(e.map(e=>[e.host,e.root||``]))},{k:V.force_address,label:O`accept_listed_domains_only`,comp:ge}]}}))}function Ue(){if(H.error)return H.element;let e=U==null?void 0:U.includes(K==null?void 0:K.localIp);return(0,Y.createElement)(q,{justifyContent:`space-around`},(0,Y.createElement)(je,{name:O`Server`,icon:e?_e:be,color:de,ip:K==null?void 0:K.localIp,below:J&&(0,Y.createElement)(T,{className:`port hideInTests`},O`port `,J)}),!e&&(0,Y.createElement)(Ae),!e&&(0,Y.createElement)(je,{name:O`Router`,icon:Se,ip:K==null?void 0:K.gatewayIp,color:h?`success`:(K==null?void 0:K.mapped)&&(X?`warning`:`success`),below:D?(0,Y.createElement)(l,{sx:{height:`1em`}}):K&&(h&&!K.mapped?O(`port_number`,{port:K.externalPort||K.internalPort}):(0,Y.createElement)(s,{sx:{display:`block`},onClick:Je},O`port `,X?O`is wrong`:(K==null?void 0:K.externalPort)||(h?O`verified`:O`unknown`)))}),(0,Y.createElement)(Ae),(0,Y.createElement)(je,{name:O`Internet`,icon:Ce,ip:W?[]:U,color:h?`success`:h===!1?`error`:Ne?`warning`:void 0,below:W?String(W):C?(0,Y.createElement)(l,{sx:{height:`1em`}}):U&&(0,Y.createElement)(T,{className:`hideInTests`},Ne&&(0,Y.createElement)(s,{sx:{display:`block`},onClick:()=>L(ke,`warning`)},O`Double NAT`),h?O`Working!`:h===!1?O`Failed!`:``,` `,(B>``||(U==null?void 0:U.length)>0)&&(K==null?void 0:K.internalPort)&&(0,Y.createElement)(s,{onClick:()=>Ke()},O`Verify`)||`\xA0`)}))}function We(e){return Ge.apply(this,arguments)}function Ge(){return Ge=G(function*(e){return e&&!1===(yield N(`check_domain`,{domain:e}).catch(e=>A(String(e),{trueText:O`Continue anyway`,falseText:O`Stop`})))}),Ge.apply(this,arguments)}function Ke(){return qe.apply(this,arguments)}function qe(){return qe=G(function*(e=!1){yield H.loading;let t=H.getData();if(t&&(S(void 0),!(!e&&!(yield A(O`internet_test_intro`))))){E(!0);try{let e=B&&new URL(B).hostname;if(e&&Me(e))return L(O`non_public_ip_warning`,`warning`);let n=B;if(!c(e)&&(yield We(e)))return;let r=n&&(yield N(`self_check`,{url:n}).catch(e=>L(e.code?O`internet_test_unavailable`:e,`error`)));if(n&&!r)return;if(r!=null&&r.success)return S(!0),L((0,Y.createElement)(T,{},O`server_reachable_over_internet`,(0,Y.createElement)(`ul`,{},(0,Y.createElement)(`li`,{},r.url))),`success`);(r==null?void 0:r.success)===!1&&(yield L(g(O(`configured_address_failed_testing_ip`,{checkUrl:n})),`warning`));let i=yield N(`self_check`,{});if(i.some(e=>e.success)){S(!0);let e=(r==null?void 0:r.success)===!1&&g(O(`server_reachable_only_by_ip`,{checkUrl:n}));return L((0,Y.createElement)(T,{},e||O`server_reachable_over_internet`,(0,Y.createElement)(`ul`,{},...i.map(e=>(0,Y.createElement)(`li`,{},e.url)))),e?`warning`:`success`)}if(S(!1),X)return Xe().then(Q);if(Ne)return L(ke,`warning`);if(t.upnp&&!t.mapped)return A(O`internet_unreachable_try_port_forward`,{trueText:O`Fix it`}).then(function(){var e=G(function*(e){if(e){try{yield $(t.internalPort,``,``)}catch(e){yield $(Oe,``)}j(O`Port forwarded, now we verify again`,`success`),Q()}});return function(t){return e.apply(this,arguments)}}());let a=yield N(`get_config`,{only:[V.geo_enable,V.geo_allow]}),{close:o}=L((0,Y.createElement)(T,{},O`internet_unreachable_possible_causes`,(0,Y.createElement)(`ul`,{},a[V.geo_enable]&&a[V.geo_allow]!=null&&(0,Y.createElement)(`li`,{},O`internet_test_geo_block_cause`),!t.upnp&&(0,Y.createElement)(`li`,{},O`Your router may need to be configured. `,(0,Y.createElement)(re,{href:De,target:`help`},O`How?`)),(0,Y.createElement)(`li`,{},O`internet_test_firewall_cause`),(t.externalPort||t.internalPort)<=1024&&(0,Y.createElement)(`li`,{},O`isp_may_block_low_ports`,` `,t.upnp&&(0,Y.createElement)(d,{size:`small`,onClick(){o(),$(Oe).then(Q)}},O(`Try {HIGHER_PORT}`,{HIGHER_PORT:Oe}))),t.mapped&&(0,Y.createElement)(`li`,{},O`router_bug_reboot_hint`),(0,Y.createElement)(`li`,{},(0,Y.createElement)(`div`,{},O`internet_test_no_public_ip_cause`,me(`Work-on-the-internet#double-nat`,O`Read more`))))),`warning`)}catch(e){L(e)}finally{E(!1)}}}),qe.apply(this,arguments)}function Je(){return Ye.apply(this,arguments)}function Ye(){return Ye=G(function*(){if(!K)return;if(X)return(yield A(O(`port_forward_wrong_port`,{mappedPort:X}),{trueText:O`Fix it`}))&&Xe();if(!K.upnp)return L((0,Y.createElement)(T,{sx:{lineHeight:1.5}},g(O(`upnp_not_available_help`,{helpUrl:De}))),`info`);let e=yield pe(g([O(`port_forward_intro`,{localPort:J}),!K.mapped&&O`port_forward_check_existing`,O(`port_forward_request_help`,{localPort:J})].filter(Boolean).join(`
4
4
 
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-CacB07dV.js";import{B as t,E as n,F as r,I as i,K as a,St as o,Yt as s,Zt as c,_r as l,an as u,ct as d,fr as f,gn as p,h as m,it as h,lr as g,mn as _,or as v,pn as y,tt as b,ur as x,vr as S,w as C,yr as w}from"./index-CVCnYMoB.js";var T=e(w()),E=e(l());x();function D({setTitleSide:e}){let{list:r,error:o,connecting:l,initializing:v,reload:y}=i(`get_langs`),x=(0,T.useMemo)(()=>E.default.uniq([`en`,...r.filter(e=>!e.admin).map(e=>e.code)]),[r]);return e(null),(0,T.createElement)(T.Fragment,{},(0,T.createElement)(s,{sx:g({mt:1,maxWidth:`50em`,flex:1},a)},(0,T.createElement)(s,{sx:{mb:1,display:`flex`,gap:1,flexDirection:{xs:`column`,sm:`row`}}},(0,T.createElement)(s,{sx:{flex:1}},(0,T.createElement)(O,{langs:x})),(0,T.createElement)(s,{sx:{flex:1}},(0,T.createElement)(k))),(0,T.createElement)(c,{component:`h2`,variant:`subtitle1`,sx:{mb:1}},u`Uploaded languages`),(0,T.createElement)(c,{variant:`body2`,sx:{mb:1}},b(`Translation#hfs-34-beta`,u`See the documentation`)),(0,T.createElement)(C,{error:o,loading:l,initializing:v,rows:(0,T.useMemo)(()=>E.default.sortBy(r.filter(e=>!e.embedded),`code`,`admin`),[r]),hideFooter:!0,fillFlex:!0,columns:[{field:`admin`,headerName:u`Interface`,width:110,valueGetter:(e,t)=>t.admin?u`Admin`:u`Frontend`},{field:`code`,headerName:u`Code`,width:110,valueFormatter:e=>e==null?void 0:e.toUpperCase()},{field:`language`,headerName:u`Language`,flex:1,minWidth:100,valueGetter:(e,t)=>A(t.code)},{field:`version`,headerName:u`Version`,width:120,hideUnder:`sm`},{field:`author`,headerName:u`Author`,flex:1,hideUnder:`sm`}],actionsHeader:(0,T.createElement)(t,{icon:m,title:u`Add`,onClick:w}),actionsProps:{width:52},actions:({row:e})=>[(0,T.createElement)(t,{icon:n,title:u`Delete`,confirm:u(`Delete language code "{code}"?`,{code:e.code}),onClick(){return S(function*(){yield f(`del_lang`,E.default.pick(e,`code`,`admin`)),e.admin?location.reload():y(),d(u`Deleted`)})()}})]})));function w(){p(function(){var e=S(function*(e){if(!e)return;let t=yield Promise.all(Array.from(e,e=>_(e).then(t=>f(`add_langs`,{langs:{[e.name]:t}})).then(()=>``,t=>`${e.name}: ${t.data||t.message||t}`)));y();let n=t.filter(Boolean);n.length?yield h(n.join(`.
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{B as t,E as n,F as r,I as i,K as a,St as o,Yt as s,Zt as c,_r as l,an as u,ct as d,fr as f,gn as p,h as m,it as h,lr as g,mn as _,or as v,pn as y,tt as b,ur as x,vr as S,w as C,yr as w}from"./index-BSSQOMG_.js";var T=e(w()),E=e(l());x();function D({setTitleSide:e}){let{list:r,error:o,connecting:l,initializing:v,reload:y}=i(`get_langs`),x=(0,T.useMemo)(()=>E.default.uniq([`en`,...r.filter(e=>!e.admin).map(e=>e.code)]),[r]);return e(null),(0,T.createElement)(T.Fragment,{},(0,T.createElement)(s,{sx:g({mt:1,maxWidth:`50em`,flex:1},a)},(0,T.createElement)(s,{sx:{mb:1,display:`flex`,gap:1,flexDirection:{xs:`column`,sm:`row`}}},(0,T.createElement)(s,{sx:{flex:1}},(0,T.createElement)(O,{langs:x})),(0,T.createElement)(s,{sx:{flex:1}},(0,T.createElement)(k))),(0,T.createElement)(c,{component:`h2`,variant:`subtitle1`,sx:{mb:1}},u`Uploaded languages`),(0,T.createElement)(c,{variant:`body2`,sx:{mb:1}},b(`Translation#hfs-34-beta`,u`See the documentation`)),(0,T.createElement)(C,{error:o,loading:l,initializing:v,rows:(0,T.useMemo)(()=>E.default.sortBy(r.filter(e=>!e.embedded),`code`,`admin`),[r]),hideFooter:!0,fillFlex:!0,columns:[{field:`admin`,headerName:u`Interface`,width:110,valueGetter:(e,t)=>t.admin?u`Admin`:u`Frontend`},{field:`code`,headerName:u`Code`,width:110,valueFormatter:e=>e==null?void 0:e.toUpperCase()},{field:`language`,headerName:u`Language`,flex:1,minWidth:100,valueGetter:(e,t)=>A(t.code)},{field:`version`,headerName:u`Version`,width:120,hideUnder:`sm`},{field:`author`,headerName:u`Author`,flex:1,hideUnder:`sm`}],actionsHeader:(0,T.createElement)(t,{icon:m,title:u`Add`,onClick:w}),actionsProps:{width:52},actions:({row:e})=>[(0,T.createElement)(t,{icon:n,title:u`Delete`,confirm:u(`Delete language code "{code}"?`,{code:e.code}),onClick(){return S(function*(){yield f(`del_lang`,E.default.pick(e,`code`,`admin`)),e.admin?location.reload():y(),d(u`Deleted`)})()}})]})));function w(){p(function(){var e=S(function*(e){if(!e)return;let t=yield Promise.all(Array.from(e,e=>_(e).then(t=>f(`add_langs`,{langs:{[e.name]:t}})).then(()=>``,t=>`${e.name}: ${t.data||t.message||t}`)));y();let n=t.filter(Boolean);n.length?yield h(n.join(`.
2
2
  `),`error`):d(u`Loaded`),Array.from(e).some(e=>e.name.startsWith(`hfs-admin-lang-`))&&location.reload()});return function(t){return e.apply(this,arguments)}}(),{accept:`.json`})}}function O({langs:e}){let t=v.force_lang,{data:n,reload:i,loading:a}=r(`get_config`,{only:[t]}),[s,c]=(0,T.useState)();(0,T.useEffect)(()=>{var e;return c((e=n==null?void 0:n[t])==null?s:e)},[n]);let[l,d]=(0,T.useState)();return(0,T.createElement)(o,{fullWidth:!0,label:u`Frontend language`,size:`small`,disabled:!!a||typeof l==`string`,value:l==null?s:l,onChange(e){return S(function*(){d(e);try{yield f(`set_config`,{values:{[t]:e}}).catch(h),yield i()}finally{d(void 0)}})()},options:[{label:u`Respect browser language`,value:``},...E.default.sortBy(e).map(e=>({value:e,label:`${e.toUpperCase()} — ${A(e)}`}))]})}function k(){let e=y().adminLangs,t=e.includes(y().adminLang)?y().adminLang:``;return(0,T.createElement)(o,{fullWidth:!0,size:`small`,sx:{minWidth:`12em`},label:u`Admin language`,value:t,options:[{value:``,label:u`Respect browser language`},...E.default.sortBy(e).map(e=>({value:e,label:`${e.toUpperCase()} — ${A(e)}`}))],onChange(e){return S(function*(){yield f(`set_config`,{values:{[v.admin_lang]:e}}),location.reload()})()}})}function A(e){try{let t=new Intl.DisplayNames([e],{type:`language`}).of(e);return t?t[0].toLocaleUpperCase(e)+t.slice(1):e.toUpperCase()}catch(t){return e.toUpperCase()}}export{D as default};
@@ -1,3 +1,3 @@
1
- import{i as e}from"./rolldown-runtime-CacB07dV.js";import{$ as t,$n as n,A as r,At as i,B as a,Bn as o,Dn as s,E as c,F as l,Ft as u,Gn as d,I as f,In as p,Jn as ee,L as m,Ln as h,Pt as g,Qn as te,R as ne,St as re,U as _,Yt as v,Z as y,Zn as ie,_r as b,an as x,ar as S,bn as ae,ct as C,dr as w,er as T,et as oe,f as se,fr as E,i as D,in as O,jn as ce,kt as le,ln as ue,lr as k,lt as A,m as de,nr as fe,nt as pe,or as j,pr as me,q as he,qn as ge,tt as M,ur as N,vn as P,vr as F,vt as I,w as _e,yr as L,z as R,zn as ve}from"./index-CVCnYMoB.js";import{a as z,c as B,i as V,m as ye,o as be,s as xe}from"./icons-CfBG9vvB.js";import{t as H}from"./routing-C4l8rnk_.js";var U=e(b()),W=e(L());N();var Se=[`ip`,`comment`];function Ce(e){let{ip:t,comment:n}=e,r=ce(e,Se),{data:i,refresh:o}=s(G,t,{delay:100,expireAfter:5e3});return(0,W.createElement)(a,k(k(k({icon:V,title:x`Block IP`,confirm:x(`Block address {ip}`,{ip:t})},i&&{disabled:!0,title:x`Blocked`}),r),{},{onClick(){return F(function*(){yield E(`add_block`,{ip:t,merge:{comment:n}}),o(),C(x`Blocked`,`success`)})()}}))}function G(e){return K.apply(this,arguments)}function K(){return K=F(function*(e){return E(`is_ip_blocked`,{ips:e}).then(e=>e.blocked)}),K.apply(this,arguments)}N();var we=[`file`,`footerSide`,`hidden`,`limit`,`filter`],q={log:`Served`,error_log:`Failed`,console:`Console`,disconnections:`Disconnections`,ips:`IPs`},J=fe(q),Te;function Ee({setTitleSide:e}){let t=J,[n,o]=H(`logs`,t),s=!y(`sm`)&&{error_log:x`Failed`,console:(0,W.createElement)(z),disconnections:(0,W.createElement)(B)},c=t[n],d=c.endsWith(`log`),f=l(`get_log_info`);return e((0,W.useMemo)(()=>d&&(f.element||S(f.data,e=>(0,W.createElement)(v,{sx:{fontSize:`smaller`}},x(`current_log_size`,{size:h(U.default.sum(Object.values(e.current)))}),(0,W.createElement)(`br`),S(Object.values(e.rotated).flat(),e=>x(`archived_files`,{n:e.length,totalSize:h(U.default.sumBy(e,`size`))}))))),[f.element,f.data,d])),(0,W.createElement)(W.Fragment,{},(0,W.createElement)(R,{gap:0},(0,W.createElement)(g,{value:n,onChange(e,t){o(t)}},t.map(e=>(0,W.createElement)(u,{label:U.default.get(s,e)||x(q[e]),key:e,sx:{minWidth:0,px:{xs:1.5,sm:2}}}))),(0,W.createElement)(v,{sx:{flex:1}}),(0,W.createElement)(a,{icon:D,title:d?x`Download as file`:x`Not available`,link:w+`get_log_file?file=${c}`,disabled:!d}),(0,W.createElement)(a,{icon:i,title:x`Options`,onClick:p})),t.map(e=>(0,W.createElement)(X,{hidden:c!==e,file:e,key:e,fillFlex:!0})));function p(){ae({title:x`Log options`,dialogProps:{sx:{maxWidth:`40em`}},Content(){return(0,W.createElement)(r,{barSx:k({gap:2,width:`100%`},A()),form:{stickyBar:!0,fields:[{k:j.log,label:x(q.log),sm:6,helperText:x`Requests are logged here. Empty to disable it.`},{k:j.error_log,label:x(q.error_log),sm:6,placeholder:x`errors go to main log`,helperText:x`error_log_help`},{k:j.log_rotation,comp:re,sm:6,label:x`Log rotation`,options:[{value:``,label:x`disabled`},...[`daily`,`weekly`,`monthly`].map(e=>({value:e,label:x(e)}))],helperText:[M(`Logs#rotation`,x`To keep log-files smaller`),x` (deletion is not automatic)`]},{k:j.dont_log_net,comp:_,label:x`Don't log address`,sm:6,placeholder:x`no exception`},{k:j.log_gui,sm:6,comp:I,label:x`Log interface loading`,helperText:x`Some requests are necessary to load the interface`},{k:j.log_api,sm:6,comp:I,label:x`Log API requests`,helperText:x`Requests for commands`},{k:j.log_ua,sm:6,comp:I,label:x`Log User-Agent`,helperText:x`user_agent_log_size_warning`},{k:j.log_host,sm:6,comp:I,label:x`Log Host header`},{k:j.log_spam,sm:6,comp:I,label:x`Log spam requests`,helperText:P(x`Failed requests that you probably don't want to see`)},{k:j.log_spam_regex,label:x`Spam URL regex`,helperText:x`log_spam_regex_help`,getError(e){try{new RegExp(e)}catch(e){return x`Invalid regular expression`}}},{k:j.track_ips,sm:6,comp:I,label:x`Keep track of IPs`,parentProps:{sx:{display:`flex`,gap:1,alignItems:`flex-start`}},after:(0,W.createElement)(m,{size:`small`,variant:`outlined`,color:`warning`,sx:{mt:`4px`},confirm:!0,doneMessage:!0,onClick:()=>E(`reset_ips`).then(Te)},x`Reset`)},{k:j.debug,sm:6,comp:I,label:x`Debug messages in console`}]}})}})}}var De=[j.log,j.error_log],Y=1e6;function X(e){let{file:r,footerSide:i,hidden:a,limit:s=Y,filter:l}=e,u=ce(e,we),[g,re]=(0,W.useState)(!1),[_,y]=(0,W.useState)(!1),[b,S]=(0,W.useState)(!1),{pause:ae,pauseButton:D}=t(),[A,fe]=oe(x`Show APIs`,x`Hide APIs`,e=>({icon:be,sx:{rotate:e?0:`180deg`}}),!0),j=(0,W.useRef)(0),[M,N]=(0,W.useState)(NaN),[P,F]=(0,W.useState)(!0),[I,L]=(0,W.useState)(0),[z,B]=(0,W.useState)(s);s=z;let V=Math.pow(2,20),[H,Se]=(0,W.useState)(!a);(0,W.useEffect)(()=>Se(e=>e||!a),[a]);let G=De.includes(r),{loading:K}=me(H&&G&&(P||I>0)&&`get_log_file`,{file:r,range:P||!I?String(-V):`0-${I}`},{skipParse:!0,skipLog:!0,onResponse(e,t){let n=t.split(`
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{$ as t,$n as n,A as r,At as i,B as a,Bn as o,Dn as s,E as c,F as l,Ft as u,Gn as d,I as f,In as p,Jn as ee,L as m,Ln as h,Pt as g,Qn as te,R as ne,St as re,U as _,Yt as v,Z as y,Zn as ie,_r as b,an as x,ar as S,bn as ae,ct as C,dr as w,er as T,et as oe,f as se,fr as E,i as D,in as O,jn as ce,kt as le,ln as ue,lr as k,lt as A,m as de,nr as fe,nt as pe,or as j,pr as me,q as he,qn as ge,tt as M,ur as N,vn as P,vr as F,vt as I,w as _e,yr as L,z as R,zn as ve}from"./index-BSSQOMG_.js";import{a as z,c as B,i as V,m as ye,o as be,s as xe}from"./icons-C_ux1zLA.js";import{t as H}from"./routing-Be72yFmd.js";var U=e(b()),W=e(L());N();var Se=[`ip`,`comment`];function Ce(e){let{ip:t,comment:n}=e,r=ce(e,Se),{data:i,refresh:o}=s(G,t,{delay:100,expireAfter:5e3});return(0,W.createElement)(a,k(k(k({icon:V,title:x`Block IP`,confirm:x(`Block address {ip}`,{ip:t})},i&&{disabled:!0,title:x`Blocked`}),r),{},{onClick(){return F(function*(){yield E(`add_block`,{ip:t,merge:{comment:n}}),o(),C(x`Blocked`,`success`)})()}}))}function G(e){return K.apply(this,arguments)}function K(){return K=F(function*(e){return E(`is_ip_blocked`,{ips:e}).then(e=>e.blocked)}),K.apply(this,arguments)}N();var we=[`file`,`footerSide`,`hidden`,`limit`,`filter`],q={log:`Served`,error_log:`Failed`,console:`Console`,disconnections:`Disconnections`,ips:`IPs`},J=fe(q),Te;function Ee({setTitleSide:e}){let t=J,[n,o]=H(`logs`,t),s=!y(`sm`)&&{error_log:x`Failed`,console:(0,W.createElement)(z),disconnections:(0,W.createElement)(B)},c=t[n],d=c.endsWith(`log`),f=l(`get_log_info`);return e((0,W.useMemo)(()=>d&&(f.element||S(f.data,e=>(0,W.createElement)(v,{sx:{fontSize:`smaller`}},x(`current_log_size`,{size:h(U.default.sum(Object.values(e.current)))}),(0,W.createElement)(`br`),S(Object.values(e.rotated).flat(),e=>x(`archived_files`,{n:e.length,totalSize:h(U.default.sumBy(e,`size`))}))))),[f.element,f.data,d])),(0,W.createElement)(W.Fragment,{},(0,W.createElement)(R,{gap:0},(0,W.createElement)(g,{value:n,onChange(e,t){o(t)}},t.map(e=>(0,W.createElement)(u,{label:U.default.get(s,e)||x(q[e]),key:e,sx:{minWidth:0,px:{xs:1.5,sm:2}}}))),(0,W.createElement)(v,{sx:{flex:1}}),(0,W.createElement)(a,{icon:D,title:d?x`Download as file`:x`Not available`,link:w+`get_log_file?file=${c}`,disabled:!d}),(0,W.createElement)(a,{icon:i,title:x`Options`,onClick:p})),t.map(e=>(0,W.createElement)(X,{hidden:c!==e,file:e,key:e,fillFlex:!0})));function p(){ae({title:x`Log options`,dialogProps:{sx:{maxWidth:`40em`}},Content(){return(0,W.createElement)(r,{barSx:k({gap:2,width:`100%`},A()),form:{stickyBar:!0,fields:[{k:j.log,label:x(q.log),sm:6,helperText:x`Requests are logged here. Empty to disable it.`},{k:j.error_log,label:x(q.error_log),sm:6,placeholder:x`errors go to main log`,helperText:x`error_log_help`},{k:j.log_rotation,comp:re,sm:6,label:x`Log rotation`,options:[{value:``,label:x`disabled`},...[`daily`,`weekly`,`monthly`].map(e=>({value:e,label:x(e)}))],helperText:[M(`Logs#rotation`,x`To keep log-files smaller`),x` (deletion is not automatic)`]},{k:j.dont_log_net,comp:_,label:x`Don't log address`,sm:6,placeholder:x`no exception`},{k:j.log_gui,sm:6,comp:I,label:x`Log interface loading`,helperText:x`Some requests are necessary to load the interface`},{k:j.log_api,sm:6,comp:I,label:x`Log API requests`,helperText:x`Requests for commands`},{k:j.log_ua,sm:6,comp:I,label:x`Log User-Agent`,helperText:x`user_agent_log_size_warning`},{k:j.log_host,sm:6,comp:I,label:x`Log Host header`},{k:j.log_spam,sm:6,comp:I,label:x`Log spam requests`,helperText:P(x`Failed requests that you probably don't want to see`)},{k:j.log_spam_regex,label:x`Spam URL regex`,helperText:x`log_spam_regex_help`,getError(e){try{new RegExp(e)}catch(e){return x`Invalid regular expression`}}},{k:j.track_ips,sm:6,comp:I,label:x`Keep track of IPs`,parentProps:{sx:{display:`flex`,gap:1,alignItems:`flex-start`}},after:(0,W.createElement)(m,{size:`small`,variant:`outlined`,color:`warning`,sx:{mt:`4px`},confirm:!0,doneMessage:!0,onClick:()=>E(`reset_ips`).then(Te)},x`Reset`)},{k:j.debug,sm:6,comp:I,label:x`Debug messages in console`}]}})}})}}var De=[j.log,j.error_log],Y=1e6;function X(e){let{file:r,footerSide:i,hidden:a,limit:s=Y,filter:l}=e,u=ce(e,we),[g,re]=(0,W.useState)(!1),[_,y]=(0,W.useState)(!1),[b,S]=(0,W.useState)(!1),{pause:ae,pauseButton:D}=t(),[A,fe]=oe(x`Show APIs`,x`Hide APIs`,e=>({icon:be,sx:{rotate:e?0:`180deg`}}),!0),j=(0,W.useRef)(0),[M,N]=(0,W.useState)(NaN),[P,F]=(0,W.useState)(!0),[I,L]=(0,W.useState)(0),[z,B]=(0,W.useState)(s);s=z;let V=Math.pow(2,20),[H,Se]=(0,W.useState)(!a);(0,W.useEffect)(()=>Se(e=>e||!a),[a]);let G=De.includes(r),{loading:K}=me(H&&G&&(P||I>0)&&`get_log_file`,{file:r,range:P||!I?String(-V):`0-${I}`},{skipParse:!0,skipLog:!0,onResponse(e,t){let n=t.split(`
2
2
  `);if(P){let[t,r]=te(`/`,e.headers.get(`Content-Range`)||``),i=Number(r);if(isNaN(i))throw p(`shouldn't happen`);N(i),t.startsWith(`bytes 0-`)?F(!1):(n.shift(),L(i-new Blob([n.join(`
3
3
  `)]).size))}else I&&(C(x(`entire_log_loaded`,{loadedSize:h(I)})),L(0));let r=d(n,e=>Ne(Oe(e,j.current++)),Boolean,!0);J(e=>[...e,...r])}}),{list:q,setList:J,error:Ee,connecting:X,initializing:ke,reload:Ae}=f(H&&`get_log`,{file:r},{limit:s,invert:!0,pause:ae,map:Ne,reconnectGraceSeconds:G?1/0:r===`ips`?60:1}),Z=r===`ips`;Z&&(Te=Ae);let Q={field:`ts`,headerName:x`Timestamp`,type:`dateTime`,width:96,valueGetter:e=>new Date(e),renderCell:({value:e})=>(0,W.createElement)(W.Fragment,{},e.toLocaleDateString(O),(0,W.createElement)(`br`),e.toLocaleTimeString(O))},$={field:`ip`,headerName:x`Address`,flex:.6,minWidth:130,maxWidth:230,mergeRender:{user:{sx:{display:`flex`,justifyContent:`space-between`,gap:`.5em`}},country:g&&{},ua:{}}},je=(0,W.useMemo)(()=>{var e;return l?q.filter(l):A||(q==null||(e=q[0])==null?void 0:e.uri)===void 0?q:q.filter(e=>!e.uri.startsWith(w))},[q,A,l]),Me=r===`console`;return a?null:(0,W.createElement)(_e,k(k({persist:`log_`+r,error:Ee,loading:X,initializing:ke||!!K,rows:je,compact:!0,actionsProps:{hideUnder:`md`},actions:Me?void 0:(({row:e})=>ge([(0,W.createElement)(Ce,{ip:e.ip,comment:`From log`}),Z&&(0,W.createElement)(m,{icon:c,confirm:!0,title:x(`Delete {ip}`,{ip:e.ip}),doneMessage:!0,onClick:()=>E(`delete_ips`,{ip:e.ip}).then(()=>J(t=>t.filter(t=>t.ip!==e.ip)))}),Z&&(0,W.createElement)(m,{icon:ye,confirm:!0,title:x(`delete_records_up_to`,{timestamp:o(e.ts)}),onClick:()=>E(`delete_ips`,{ts:e.ts}).then(e=>C(x(`items_deleted`,{n:e.n}))).then(Ae)}),G&&(0,W.createElement)(m,{icon:de,title:x`Copy request`,doneAnimation:!0,onClick:()=>ue(JSON.stringify(U.default.omit(e,`id`),void 0,2))})])),initialState:Z?{sorting:{sortModel:[{field:`ts`,sort:`desc`}]}}:void 0},u),{},{footerSide:e=>(0,W.createElement)(v,{},D,r.endsWith(`log`)&&fe,!X&&I>0&&(0,W.createElement)(m,{icon:xe,variant:`outlined`,sx:{ml:{sm:1}},labelIf:e>700,title:x(`partial_log_loaded`,{loadedSize:h(V),totalSize:h(M)}),loading:!P,onClick(){B(0),F(!1)}},x`Load whole log`),i),footerExtra:()=>s>0&&q.length>=s*.8&&(0,W.createElement)(R,{justifyContent:`flex-end`},(0,W.createElement)(m,{size:`small`,variant:`outlined`,title:x(`log_memory_limit_hint`,{limit:s.toLocaleString(O)},`Currently keeping the latest {limit} rows in memory.`),onClick:()=>B(s<Y?Y:0)},s<Y?x`Show more`:x`Unlimited rows`)),columns:Me?[Q,{field:`k`,headerName:x`Level`,hideUnder:`sm`},{field:`msg`,headerName:x`Message`,flex:1,mergeRender:{k:{override:{valueFormatter:e=>e!==`log`&&e}}}}]:Z||r===`disconnections`?[Q,$,Z&&{field:`served`,headerName:x`Requests`,width:85,sx:{whiteSpace:`pre-line`},valueGetter:(e,t)=>e===void 0?void 0:e+t.failed,renderCell:({row:e,value:t})=>t>=0&&`✅ ${e.served}\n 🚫 ${e.failed}`},{headerName:x`Country`,field:`country`,flex:1,hideUnder:!g||`md`,valueGetter:e=>{var t;return((t=U.default.find(pe,{code:e}))==null?void 0:t.name)||e},renderCell:({row:e})=>(0,W.createElement)(ne,{code:e.country,long:!0,def:`-`})},!Z&&{field:`msg`,headerName:x`Message`,flex:4}]:[$,{headerName:x`Country`,field:`country`,valueGetter:(e,t)=>{var n;return(n=t.extra)==null?void 0:n.country},hideUnder:!g||`xl`,renderCell:({value:e})=>(0,W.createElement)(ne,{code:e,def:`-`})},{field:`user`,headerName:x`Username`,flex:.3,maxWidth:200,hideUnder:`xl`},Q,{field:`method`,headerName:x`Method`,width:80,hideUnder:`xl`},{field:`status`,headerName:x`Code`,type:`number`,width:70,hideUnder:`xl`,renderCell:({value:e})=>he(ee(e+` - `,le[e])||x`Unknown`,void 0,(0,W.createElement)(v,{sx:{bgcolor:`#888a`,color:`#fff`,borderRadius:`.3em`,p:`.05em .3em`,lineHeight:`1.2em`}},e))},{field:`length`,headerName:x`Size`,type:`number`,hideUnder:`md`,valueFormatter:e=>h(e)},{headerName:x`Agent`,field:`ua`,width:60,hideUnder:!_||`md`,valueGetter:(e,t)=>{var n;return(n=t.extra)==null?void 0:n.ua},renderCell:({value:e})=>se(e)},{field:`host`,headerName:x`Host`,width:100,hideUnder:!b||`md`,valueGetter:(e,t)=>{var n;return(n=t.extra)==null?void 0:n.host}},{field:`notes`,headerName:x`Notes`,width:110,hideUnder:`sm`,cellClassName:`wrap`,renderCell:({value:e})=>e&&(0,W.createElement)(v,{sx:{whiteSpace:`pre-wrap`}},e)},{field:`uri`,headerName:x`URI`,flex:2,minWidth:100,sx:{wordBreak:`break-all`},mergeRender:{method:{},status:{}},renderCell:({value:e,row:t})=>{var n;let[r,i]=te(`?`,e).map(e=>ie(e)),a=(n=t.extra)==null?void 0:n.ul;return U.default.isArray(a)?r+a.join(` + `):r.startsWith(`/~/api/`)?x(`API {name}{params}`,{name:r.slice(w.length),params:i&&`: `+Array.from(new URLSearchParams(i)).map(e=>{var t;return`${e[0]}=${(t=T(e[1]))==null?e[1]:t}`}).join(` ; `)}):[r,i&&(0,W.createElement)(v,{key:0,component:`span`,sx:{color:`text.secondary`,fontSize:`smaller`}},`?`,i)]}},{field:`agentText`,valueGetter:(e,t)=>{var n;return(n=t.extra)==null?void 0:n.ua},headerName:x`Agent text`,flex:2,hideUnder:!0}]}));function Ne(e){if(!e)return;let{extra:t}=e;if((t!=null&&t.country||e.country)&&!g&&re(!0),t!=null&&t.ua&&!_&&y(!0),t!=null&&t.host&&!b&&S(!0),e.uri){var r,i,a;let o=e.method===`PUT`||(t==null?void 0:t.ul),s=o&&n(`?`,e.uri).includes(`partial=`);o&&(e.length=((r=t==null?void 0:t.size)==null?0:r)+(!s&&Number((i=e.uri.match(/\?.*resume=(\d+)/))==null?void 0:i[1])||0));let c=(t==null?void 0:t.speed)&&ve(t.speed,{sep:`\xA0`});e.notes=t!=null&&t.dl?x(c?`log_full_download_at_speed`:`log_full_download`,{speed:c}):o?x(s?c?`log_partial_upload_at_speed`:`log_partial_upload`:c?`log_upload_at_speed`:`log_upload`,{speed:c}):e.status===401&&(a=e.uri)!=null&&a.startsWith(`/~/api/loginSrp`)?x(t!=null&&t.u?`log_login_failed_for_user`:`log_login_failed`,{username:t==null?void 0:t.u}):U.default.map(t==null?void 0:t.params,(e,t)=>`${t}: ${e}\n`).join(``)+(e.notes||``),t!=null&&t.aborted&&(e.notes+=x` (aborted)`)}return e}}function Oe(e,t){let n=/^(.+?) (.+?) (.+?) \[(.{11}):(.{14})] "(\w+) ([^"]+) HTTP\/\d.\d" (\d+) (-|\d+) ?(.*)/.exec(e);if(!n)return;let[,r,,i,a,o,s,c,l,u,d]=n;return{id:t,ip:r,user:i===`-`?void 0:i,ts:new Date(a+` `+o),method:s,uri:c,status:Number(l),length:u===`-`?void 0:Number(u),extra:T(T(d))||void 0}}export{X as LogFile,Ee as default,Ce as t};
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-CacB07dV.js";import{$ as t,B as n,En as r,Et as i,F as a,I as o,J as s,K as c,L as l,Ln as u,Mn as d,Mt as f,Ot as p,Qt as m,R as h,Rn as g,St as _,Ut as v,V as ee,Vn as y,Xt as b,Yt as x,Z as S,_r as C,an as w,ar as T,at as E,ct as D,dt as O,et as k,f as A,fr as j,ft as te,g as ne,h as M,i as N,in as P,it as F,mr as I,on as L,or as R,q as z,un as B,v as V,w as H,yr as U,z as W,zn as G}from"./index-CVCnYMoB.js";import{c as K,n as q,r as J}from"./icons-CfBG9vvB.js";import{LogFile as Y,t as X}from"./LogsPage-DmAxUZpu.js";var Z=e(U());function re(e,t){let n=(0,Z.useRef)(e);d(()=>{n.current=e},[e]),(0,Z.useEffect)(()=>{if(t===null)return;let e=setInterval(()=>n.current(),t);return()=>clearInterval(e)},[t])}var Q=e(C());function ie({setTitleSide:e}){return e((0,Z.useMemo)(()=>(0,Z.createElement)(m,{severity:`info`,sx:{display:{xs:`none`,sm:`inherit`}}},w`proxy_connections_notice`),[])),(0,Z.createElement)(Z.Fragment,{},(0,Z.createElement)(ae),(0,Z.createElement)(oe))}function ae(){var e,t;let{data:o,element:s,reload:c}=a(`get_status`);re(c,1e4);let{data:l}=I(`get_connection_stats`),[d,f]=(0,Z.useState)(!1),p=S(`md`),m=S(`sm`),h=S(`xl`),g=B({locale:P,maxTokens:2,skipZeroes:!0});return s||(0,Z.createElement)(x,{sx:{display:`flex`,flexWrap:`wrap`,gap:{xs:.5,md:1},mb:{xs:1,sm:2}}},(d||p)&&_(`started`,{label:w`Uptime`,render:e=>g(Date.now()-+new Date(e)),title:e=>w(`started_at_colon`,{startedAt:i(e)})}),(d||m)&&_(`sent_got`,{render:e=>({[w`Sent`]:u(e[0]),[w`Got`]:u(e[1])}),title:e=>w(`since_timestamp`,{timestamp:i(e[2])}),onDelete:()=>E(w`Reset stats?`).then(e=>e&&j(`clear_persistent`,{k:[`totalSent`,`totalGot`]}).then(()=>F(w`Done`,`success`),F))}),_(`outSpeedKb`,{label:w`Outgoing traffic`,render:$,minWidth:`8.5em`}),_(`inSpeedKb`,{label:w`Input`,render:$,minWidth:`8.5em`}),(d||m)&&_(`ips`,{label:w`IPs`,title:()=>l&&w(`connections_count`,{n:l.connections,count:l.connections.toLocaleString(P)})}),(p||d||(o==null||(e=o.http)==null?void 0:e.error))&&_(`http`,{label:w`HTTP`,render:v}),(p||d||(o==null||(t=o.https)==null?void 0:t.error))&&_(`https`,{label:w`HTTPS`,render:v}),(h||d)&&_(`ram`,{label:w`RAM`,render:u}),!h&&(0,Z.createElement)(n,{size:`small`,icon:d?q:V,title:w`Show more`,onClick:()=>f(e=>!e)}));function _(e,{label:t,minWidth:n,render:i,title:a,onDelete:s}={}){var c;let u=(c=Q.default.get(l,e))==null?Q.default.get(o,e):c;if(u===void 0)return null;let d,f=a==null?void 0:a(u);return i&&(u=i(u),Array.isArray(u)&&([u,d]=u)),t||(t=L(Q.default.capitalize(e.replaceAll(`_`,` `)))),z(f,void 0,(0,Z.createElement)(b,{variant:`filled`,color:d,onDelete:s,label:r(` – `,Q.default.map(Q.default.isPlainObject(u)?u:{[t]:u},(e,t)=>(0,Z.createElement)(`span`,{style:{display:`inline-block`,minWidth:n}},(0,Z.createElement)(`b`,{},t),`: `,e)))}))}function v(e){return e.listening?[`port `+e.port,`success`]:e.error?[e.error,`error`]:`off`}}function oe(){var e;let{list:r,error:i,props:d,initializing:m}=o(`get_connections`),b=a(`get_config`,{only:[R.geo_enable]}),{monitorOnlyFiles:C}=te(),{pause:E,pauseButton:F}=t(),I=(0,Z.useMemo)(()=>{var e;return(e=C?r==null?void 0:r.filter(e=>e.op):r)==null?[]:e},[!E&&r,C]),L=S(`md`),[z,B]=k(w`Show log`,w`Hide log`,e=>({icon:f,sx:{rotate:e?0:`180deg`}}),O.monitorWithLog);O.monitorWithLog=z;let V=L&&z?6:0;return(0,Z.createElement)(Z.Fragment,{},(0,Z.createElement)(W,{},(0,Z.createElement)(W,{flex:1},(0,Z.createElement)(_,{fullWidth:!1,value:C,onChange:e=>O.monitorOnlyFiles=e,options:{[w`Show downloads+uploads`]:!0,[w`Show all connections`]:!1}})),L&&(0,Z.createElement)(W,{flex:1,justifyContent:`space-between`},z?w`Live log`:(0,Z.createElement)(x),B)),(0,Z.createElement)(v,{container:!0,sx:{flex:1},columnSpacing:1},(0,Z.createElement)(v,{size:12-V,sx:c},(0,Z.createElement)(H,{persist:`connections`,error:i,initializing:m,rows:I,getRowId:e=>e.ip+`:`+e.port,fillFlex:!0,noRows:C&&`No downloads/uploads at the moment`,actionsHeader:F,footerSide:()=>(0,Z.createElement)(W,{},(0,Z.createElement)(l,{size:`small`,icon:K,labelIf:`xl`,confirm:w`Disconnecting all connections but localhost. Continue?`,onClick:()=>j(`disconnect`,{allButLocalhost:!0}).then(e=>D(w(`Disconnected: {result}`,{result:e.result})))},w`Disconnect all`)),columns:[{field:`ip`,headerName:w`Address`,flex:1,maxWidth:400,renderCell:({row:e,value:t})=>y(t)+` :`+e.port,mergeRender:{user:{sx:{display:`flex`,justifyContent:`space-between`,gap:`.5em`}},agent:{},country:{}}},{field:`country`,headerName:w`Country`,hideUnder:((e=b.data)==null?void 0:e[R.geo_enable])!==!0||`md`,renderCell:({value:e,row:t})=>(0,Z.createElement)(h,{code:e,ip:t.ip})},{field:`user`,headerName:w`User`,hideUnder:`md`},{field:`started`,headerName:w`Started`,type:`dateTime`,width:96,hideUnder:`lg`,valueFormatter:e=>new Date(e).toLocaleTimeString(P)},{field:`path`,headerName:w`File`,flex:1.5,renderCell({value:e,row:t}){var n;if(!e||!t.op)return;let r={display:`flex`,alignItems:`center`,height:`100%`,minWidth:0,gap:1};return t.op===`browsing`?(0,Z.createElement)(x,{sx:r},(0,Z.createElement)(x,{},e,(0,Z.createElement)(x,{sx:{fontSize:`x-small`}},w`browsing`))):(0,Z.createElement)(x,{sx:r},(0,Z.createElement)(ee,{icon:t.archive?J:t.op===`upload`?M:N,progress:(n=t.opProgress)==null?t.opOffset:n,offset:t.opOffset,title:p(g(t.opProgress)+(t.opTotal?`
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{$ as t,B as n,En as r,Et as i,F as a,I as o,J as s,K as c,L as l,Ln as u,Mn as d,Mt as f,Ot as p,Qt as m,R as h,Rn as g,St as _,Ut as v,V as ee,Vn as y,Xt as b,Yt as x,Z as S,_r as C,an as w,ar as T,at as E,ct as D,dt as O,et as k,f as A,fr as j,ft as te,g as ne,h as M,i as N,in as P,it as F,mr as I,on as L,or as R,q as z,un as B,v as V,w as H,yr as U,z as W,zn as G}from"./index-BSSQOMG_.js";import{c as K,n as q,r as J}from"./icons-C_ux1zLA.js";import{LogFile as Y,t as X}from"./LogsPage-CcjS12cP.js";var Z=e(U());function re(e,t){let n=(0,Z.useRef)(e);d(()=>{n.current=e},[e]),(0,Z.useEffect)(()=>{if(t===null)return;let e=setInterval(()=>n.current(),t);return()=>clearInterval(e)},[t])}var Q=e(C());function ie({setTitleSide:e}){return e((0,Z.useMemo)(()=>(0,Z.createElement)(m,{severity:`info`,sx:{display:{xs:`none`,sm:`inherit`}}},w`proxy_connections_notice`),[])),(0,Z.createElement)(Z.Fragment,{},(0,Z.createElement)(ae),(0,Z.createElement)(oe))}function ae(){var e,t;let{data:o,element:s,reload:c}=a(`get_status`);re(c,1e4);let{data:l}=I(`get_connection_stats`),[d,f]=(0,Z.useState)(!1),p=S(`md`),m=S(`sm`),h=S(`xl`),g=B({locale:P,maxTokens:2,skipZeroes:!0});return s||(0,Z.createElement)(x,{sx:{display:`flex`,flexWrap:`wrap`,gap:{xs:.5,md:1},mb:{xs:1,sm:2}}},(d||p)&&_(`started`,{label:w`Uptime`,render:e=>g(Date.now()-+new Date(e)),title:e=>w(`started_at_colon`,{startedAt:i(e)})}),(d||m)&&_(`sent_got`,{render:e=>({[w`Sent`]:u(e[0]),[w`Got`]:u(e[1])}),title:e=>w(`since_timestamp`,{timestamp:i(e[2])}),onDelete:()=>E(w`Reset stats?`).then(e=>e&&j(`clear_persistent`,{k:[`totalSent`,`totalGot`]}).then(()=>F(w`Done`,`success`),F))}),_(`outSpeedKb`,{label:w`Outgoing traffic`,render:$,minWidth:`8.5em`}),_(`inSpeedKb`,{label:w`Input`,render:$,minWidth:`8.5em`}),(d||m)&&_(`ips`,{label:w`IPs`,title:()=>l&&w(`connections_count`,{n:l.connections,count:l.connections.toLocaleString(P)})}),(p||d||(o==null||(e=o.http)==null?void 0:e.error))&&_(`http`,{label:w`HTTP`,render:v}),(p||d||(o==null||(t=o.https)==null?void 0:t.error))&&_(`https`,{label:w`HTTPS`,render:v}),(h||d)&&_(`ram`,{label:w`RAM`,render:u}),!h&&(0,Z.createElement)(n,{size:`small`,icon:d?q:V,title:w`Show more`,onClick:()=>f(e=>!e)}));function _(e,{label:t,minWidth:n,render:i,title:a,onDelete:s}={}){var c;let u=(c=Q.default.get(l,e))==null?Q.default.get(o,e):c;if(u===void 0)return null;let d,f=a==null?void 0:a(u);return i&&(u=i(u),Array.isArray(u)&&([u,d]=u)),t||(t=L(Q.default.capitalize(e.replaceAll(`_`,` `)))),z(f,void 0,(0,Z.createElement)(b,{variant:`filled`,color:d,onDelete:s,label:r(` – `,Q.default.map(Q.default.isPlainObject(u)?u:{[t]:u},(e,t)=>(0,Z.createElement)(`span`,{style:{display:`inline-block`,minWidth:n}},(0,Z.createElement)(`b`,{},t),`: `,e)))}))}function v(e){return e.listening?[`port `+e.port,`success`]:e.error?[e.error,`error`]:`off`}}function oe(){var e;let{list:r,error:i,props:d,initializing:m}=o(`get_connections`),b=a(`get_config`,{only:[R.geo_enable]}),{monitorOnlyFiles:C}=te(),{pause:E,pauseButton:F}=t(),I=(0,Z.useMemo)(()=>{var e;return(e=C?r==null?void 0:r.filter(e=>e.op):r)==null?[]:e},[!E&&r,C]),L=S(`md`),[z,B]=k(w`Show log`,w`Hide log`,e=>({icon:f,sx:{rotate:e?0:`180deg`}}),O.monitorWithLog);O.monitorWithLog=z;let V=L&&z?6:0;return(0,Z.createElement)(Z.Fragment,{},(0,Z.createElement)(W,{},(0,Z.createElement)(W,{flex:1},(0,Z.createElement)(_,{fullWidth:!1,value:C,onChange:e=>O.monitorOnlyFiles=e,options:{[w`Show downloads+uploads`]:!0,[w`Show all connections`]:!1}})),L&&(0,Z.createElement)(W,{flex:1,justifyContent:`space-between`},z?w`Live log`:(0,Z.createElement)(x),B)),(0,Z.createElement)(v,{container:!0,sx:{flex:1},columnSpacing:1},(0,Z.createElement)(v,{size:12-V,sx:c},(0,Z.createElement)(H,{persist:`connections`,error:i,initializing:m,rows:I,getRowId:e=>e.ip+`:`+e.port,fillFlex:!0,noRows:C&&`No downloads/uploads at the moment`,actionsHeader:F,footerSide:()=>(0,Z.createElement)(W,{},(0,Z.createElement)(l,{size:`small`,icon:K,labelIf:`xl`,confirm:w`Disconnecting all connections but localhost. Continue?`,onClick:()=>j(`disconnect`,{allButLocalhost:!0}).then(e=>D(w(`Disconnected: {result}`,{result:e.result})))},w`Disconnect all`)),columns:[{field:`ip`,headerName:w`Address`,flex:1,maxWidth:400,renderCell:({row:e,value:t})=>y(t)+` :`+e.port,mergeRender:{user:{sx:{display:`flex`,justifyContent:`space-between`,gap:`.5em`}},agent:{},country:{}}},{field:`country`,headerName:w`Country`,hideUnder:((e=b.data)==null?void 0:e[R.geo_enable])!==!0||`md`,renderCell:({value:e,row:t})=>(0,Z.createElement)(h,{code:e,ip:t.ip})},{field:`user`,headerName:w`User`,hideUnder:`md`},{field:`started`,headerName:w`Started`,type:`dateTime`,width:96,hideUnder:`lg`,valueFormatter:e=>new Date(e).toLocaleTimeString(P)},{field:`path`,headerName:w`File`,flex:1.5,renderCell({value:e,row:t}){var n;if(!e||!t.op)return;let r={display:`flex`,alignItems:`center`,height:`100%`,minWidth:0,gap:1};return t.op===`browsing`?(0,Z.createElement)(x,{sx:r},(0,Z.createElement)(x,{},e,(0,Z.createElement)(x,{sx:{fontSize:`x-small`}},w`browsing`))):(0,Z.createElement)(x,{sx:r},(0,Z.createElement)(ee,{icon:t.archive?J:t.op===`upload`?M:N,progress:(n=t.opProgress)==null?t.opOffset:n,offset:t.opOffset,title:p(g(t.opProgress)+(t.opTotal?`
2
2
  `+w(`total_size`,{totalSize:u(t.opTotal)}):``))}),(0,Z.createElement)(x,{sx:{lineHeight:`1.2em`,minWidth:0}},t.archive?(0,Z.createElement)(x,{},e,(0,Z.createElement)(x,{sx:{fontSize:`x-small`,color:`text.secondary`}},t.archive)):T(e==null?void 0:e.lastIndexOf(`/`),t=>(0,Z.createElement)(x,{},e.slice(t+1),t>0&&(0,Z.createElement)(x,{sx:{fontSize:`x-small`,color:`text.secondary`}},e.slice(0,t))))))}},{field:`outSpeedKb`,headerName:w`Speed`,width:110,hideUnder:`sm`,type:`number`,renderCell:({value:e,row:t})=>$(Math.max(e||0,t.inSpeedKb||0)||void 0),mergeRender:{sent:{sx:{fontSize:`small`,textAlign:`right`}}}},{field:`sent`,headerName:w`Sent`,type:`number`,hideUnder:`md`,renderCell:({value:e,row:t})=>u(Math.max(e||0,t.got||0))},{field:`v`,headerName:w`Protocol`,align:`center`,hideUnder:1/0,renderCell:({value:e,row:t})=>(0,Z.createElement)(Z.Fragment,{},w(`ip_version`,{version:e}),t.secure&&s(ne,w`HTTPS`,{opacity:.5}))},{field:`agent`,headerName:w`Agent`,hideUnder:`lg`,renderCell:({value:e})=>A(e)}],actionsProps:{hideUnder:`sm`},actions:({row:e})=>[(0,Z.createElement)(n,{icon:K,title:w`Disconnect`,doneMessage:!0,onClick:()=>j(`disconnect`,Q.default.pick(e,[`ip`,`port`])).then(e=>e.result>0)}),(0,Z.createElement)(X,{ip:e.ip,comment:`From monitoring`,disabled:e.ip===(d==null?void 0:d.you)})]})),L&&z&&(0,Z.createElement)(v,{size:V,sx:c},(0,Z.createElement)(Y,{file:`${R.log}|${R.error_log}`,filter:C?(e=>!e.uri.startsWith(`/~/`)):void 0,fillFlex:!0,compact:!1,limit:1e3,getRowClassName:({row:e})=>e.status<400?``:`isError`,sx:{"& .isError":{backgroundColor:`#a443`}}}))))}function $(e){return e===void 0?``:G(e*1e3,{digits:1})}export{ie as default};
@@ -0,0 +1,3 @@
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{Cn as t,Ct as n,F as r,Fn as i,Ft as a,G as o,H as s,J as c,Jt as l,M as u,N as d,Nn as f,On as p,Ot as m,Pn as h,Pt as g,Qn as _,S as v,Sn as y,St as b,Tt as ee,U as x,Vn as te,W as S,Wt as C,Y as ne,Yt as w,Z as re,_n as ie,_r as ae,_t as oe,a as T,an as E,ar as D,at as O,bt as k,ct as se,dt as A,fr as ce,ft as le,it as j,j as ue,l as de,lr as M,nn as fe,or as N,pt as pe,s as me,sn as he,t as ge,tr as _e,tt as P,u as F,ur as I,vr as ve,vt as L,xn as ye,yr as R}from"./index-BSSQOMG_.js";import{t as be}from"./icons-C_ux1zLA.js";import{t as xe}from"./routing-Be72yFmd.js";var z=e(R()),B=e(ae()),V=`//---`;function Se(e){let t=e.split(RegExp(`(?:^|
2
+ )`+B.default.escapeRegExp(V),`g`)),n=[],r=!0;for(let e of t)if(r){r=!1;let t=e.trim();t&&n.push({name:``,code:t})}else{let[t,r]=_(`
3
+ `,e);n.push({name:t,code:r})}return n}var H=F();I();var U,Ce=[`net`,`frontend`,`uploads`,`others`],we=y({changes:{}});t(A,e=>{e.some(e=>e[1][0]===`config`)&&Te()});function W(){var e,t,n;let{data:_,reload:y,element:C}=r(`get_config`,{omit:[`vfs`]}),ae=le(),{changes:F}=ye(we),I=r(_&&`get_status`),R=I.data,W=I.reload,ke=()=>d(e=>{U&&Object.assign(U,e),setTimeout(W,1e3),setTimeout(W,2e3)});(0,z.useEffect)(()=>void W(),[_]);let Ae=re(`sm`),je=(0,z.useRef)(null),Me=p(),[Ne,Pe]=xe(`options`,Ce),G={},K=(e=r(`get_admins`).data)==null?void 0:e.list,q=R==null?void 0:R.connectionAddress,J=window.location.hostname===`localhost`,Fe=q==null?void 0:q.includes(`:`),Ie=[{label:E`any`,value:``,disabled:!1},{label:E`any IPv4`,value:`0.0.0.0`,disabled:!J&&(!q||Fe)},{label:E`any IPv6`,value:`::`,disabled:!J&&(!q||!Fe)},...[`127.0.0.1`,`::1`].map(e=>({label:e,value:e,disabled:!J&&q!==e})),...(R==null||(t=R.ips)==null?void 0:t.map(e=>({value:e,disabled:q!==e})))||[]];if(C)return C;if(I.error)return I.element;let Y=U===_?ae.config:A.config=U=_,Le={comp:k,min:1,unit:`KB/s`,placeholder:E`no limit`,sm:6},X={comp:k,placeholder:E`no limit`,toField:e=>e||``,sm:4},Z=Y[N.https_port]>=0;return(0,z.createElement)(oe,{sx:{maxWidth:`60em`},values:Y,set(e,t){A.config[t]=e},stickyBar:!0,onError:j,onValidation(e,t){if(!t)return;let n=e&&Object.keys(e).find(t=>e[t]);n&&G[n]!==void 0&&Pe(G[n])},save:M({children:E`Save`,ref:je,onClick:Q},ne(Object.keys(F).length>0)),barSx:{gap:2},addToBar:[(0,z.createElement)(l,{onClick(){y(),W()},startIcon:(0,z.createElement)(ee)},E`Reload`),(0,z.createElement)(l,{component:fe,href:`/config`,startIcon:(0,z.createElement)(be)},Ae?E`Config file`:E`File`)],defaults(){return{xs:6}},fields:Re({Net:[{k:N.port,comp:Ee,xs:12,sm:4,label:E`HTTP port`,status:(R==null?void 0:R.http)||!0,suggestedPort:80},{k:N.https_port,comp:Ee,xs:12,sm:4,label:E`HTTPS port`,status:(R==null?void 0:R.https)||!0,suggestedPort:443,onChange(e){return e>=0&&!Z&&!Y[N.cert]&&ke(),e}},{k:N.upnp_enabled,comp:L,xs:12,sm:4,label:E`UPnP/SSDP`,helperText:E`Port forwarding and double-NAT detection`},Z&&{k:N.cert,comp:T,sm:4,label:E`HTTPS certificate file`,helperText:P(`HTTPS#certificate`,E`What is this?`),error:D(R==null?void 0:R.https.error,e=>ue(e)&&(R.https.listening?e:[e,` - `,(0,z.createElement)(s,{key:`fix`,onClick:ke},E`make one`)]))},Z&&M({k:N.private_key,comp:T,sm:4,label:E`HTTPS private key file`},D(R==null?void 0:R.https.error,e=>u(e)?{error:!0,helperText:e}:null)),Z&&{k:N.force_https,comp:L,label:E`Force HTTPS`,sm:4,disabled:!Z||Y[N.port]<0,helperText:E`Not applied to localhost. Doesn't work with proxies.`},{k:N.listen_interface,comp:b,label:E`Listen interface`,sm:4,afterList:Ie.some(e=>e.disabled)&&(0,z.createElement)(w,{sx:{p:`8px 16px 0`,borderTop:`1px solid`,fontSize:`small`}},E`If an address is disabled, connect through it to select it`),options:Ie},M(M({k:N.max_kbps},Le),{},{sm:4,label:E`Limit output`,helperText:E`Doesn't apply to localhost`}),M(M({k:N.max_kbps_per_ip},Le),{},{sm:4,label:E`Limit output per-IP`}),M(M({k:N.max_downloads},X),{},{label:E`Max downloads`,helperText:E`Number of simultaneous downloads`}),M(M({k:N.max_downloads_per_ip},X),{},{label:E`Max downloads per-IP`}),M(M({k:N.max_downloads_per_account},X),{},{label:E`Max downloads per-account`,helperText:E`Overrides other limits`}),{k:N.admin_net,comp:x,xs:12,sm:6,label:E`Admin-panel accessible from`,placeholder:E`any address`,helperText:E`admin_net_localhost_hint`},{k:N.localhost_admin,comp:L,xs:12,sm:6,label:E`Consider localhost access as Admin`,getError:e=>!e&&(K==null?void 0:K.length)===0&&E`First create at least one admin account`,helperText:E`Access admin-panel without entering credentials`},{k:N.proxies,comp:k,xs:6,md:3,max:9,label:E`Number of incoming HTTP proxies`,placeholder:E`none`,error:ge(Y,R),helperText:Y.proxies>0?(0,z.createElement)(w,{component:`span`,sx:{color:`warning.main`}},E`Configure your firewall to allow only trusted proxies to connect to HFS.`):E`Necessary to detect users' IP`},{k:N.outbound_interface,comp:b,xs:6,md:3,label:E`Outbound interface`,options:[{label:E`automatic`,value:``},...(R==null||(n=R.ips)==null?void 0:n.map(e=>({value:e})))||[]]},{k:N.outbound_proxy,xs:6,md:4,label:E`Outbound proxy`,placeholder:E`none`,helperText:E`URL form`,getError:e=>_e(()=>e&&new URL(e)&&``,()=>`Invalid URL`)},{k:N.allowed_referer,comp:De,md:2,placeholder:E`any`,label:E`Links from other websites`,helperText:E`In case another website is linking your files`},{k:N.block,label:!1,comp:v,xs:12,prepend:!0,sm:!0,autoRowHeight:!0,form:{sx:{maxWidth:`40em`}},fields:[{k:`ip`,label:E`Blocked IP`,sm:12,required:!0,wrap:!0,$width:2,comp:x,$column:{mergeRender:{comment:{},expire:{}}},helperText:E`block_self_warning`},{k:`expire`,label:E`Expire`,$type:`dateTime`,minDate:new Date,sm:6,$hideUnder:`sm`,helperText:E`Leave empty for no expiration`},{k:`disabled`,$type:`boolean`,label:E`Enabled`,helperText:E`geo_rule_disable_hint`,toField:e=>!e,fromField:e=>e?void 0:!0,sm:6,$width:80},{k:`comment`,label:E`Comment`,$hideUnder:`sm`}]}],"Front-end":[{k:N.file_menu_on_link,comp:b,label:E`Access file menu`,md:3,options:{[E`by clicking on file name`]:!0,[E`by dedicated button`]:!1}},{k:N.menu_at_top,comp:b,md:3,label:E`Menu panel`,options:{[E`at top`]:!0,[E`at bottom`]:!1}},{k:N.title,md:6,helperText:E`You can see this in the tab of your browser`},{k:N.auto_play_seconds,comp:k,xs:6,sm:3,min:1,max:1e4,required:!0,label:E`Auto-play seconds delay`,helperText:m(E(`show_interface_default_help`,{docsUrl:f+`discussions/270`}))},{k:N.tile_size,comp:k,xs:6,sm:3,max:10,required:!0,label:E`Default tiles size`,helperText:P(`Tiles`,E`To enable tiles-mode`)},{k:N.theme,comp:b,xs:6,sm:3,options:i},{k:N.sort_by,comp:b,xs:6,sm:3,options:h},{k:N.invert_order,comp:L,xs:6,md:3},{k:N.folders_first,comp:L,xs:6,md:3},{k:N.sort_numerics,comp:L,xs:6,md:3,label:E`Sort numeric names`},{k:N.title_with_path,comp:L,xs:6,md:3},{k:N.favicon,comp:T,placeholder:E`None`,fileMask:`*.ico|`+he,xs:12,sm:6,helperText:E`The icon associated to your website`},{k:N.show_uploader,label:E`Show uploader to`,comp:me,xs:!0},{k:N.page_size,comp:k,xs:!0,min:1,required:!0,helperText:E`Entries per page`}],Uploads:[{k:N.dont_overwrite_uploading,comp:L,md:4,label:E`Uploads don't overwrite`,helperText:E`Files are automatically numbered (frontend only)`},{k:N.split_uploads,comp:k,unit:`MB`,md:2,step:.1,min:.1,fromField:e=>e*1e6,toField:e=>e?e/1e6:null,placeholder:E`disabled`,label:E`Split uploads in chunks`,helperText:E`Overcome proxy limits (frontend only)`},{k:N.delete_unfinished_uploads_after,comp:k,md:3,min:0,unit:E`seconds`,required:!0,label:E`Delete unfinished uploads after`},{k:N.min_available_mb,comp:k,md:3,min:0,unit:`MBytes`,placeholder:E`None`,label:E`Min. available disk space`,helperText:E`Reject uploads that don't comply`},{k:N.require_upload_approval_for_active_content,comp:L,xs:12,sm:6,md:4,label:E`Require approval for uploaded HTML/SVG`,helperText:E`Prevents running scripts on your website`},{k:N.own_upload_delete_hours,comp:k,xs:12,sm:6,md:3,min:0,unit:E`hours`,required:!0,label:E`Uploaders can delete their files for`,helperText:E`Set to 0 to disable`}],Others:[{k:N.show_hidden_files,comp:L,sm:3,label:E`Include hidden files`},{k:N.descript_ion_encoding,sm:3,label:E`Encoding of file DESCRIPT.ION`,comp:b,disabled:Y[N.comments_storage]===`attr`,options:[`utf8`,720,775,819,850,852,862,869,874,808,...B.default.range(1250,1257),10029,20866,21866]},{k:N.comments_storage,comp:b,xs:12,sm:6,options:{[E`in file DESCRIPT.ION`]:``,[E`in file attributes`]:`attr`,[E`in file attributes + load DESCRIPT.ION`]:`attr+ion`}},{k:N.keep_session_alive,comp:L,sm:6,md:6,helperText:E`frontend_page_open_session_hint`},{k:N.session_duration,comp:k,sm:3,md:3,min:5,unit:`seconds`,required:!0},{k:N.size_1024,label:E`KB size`,comp:b,sm:3,options:{1e3:!1,1024:!0}},{k:N.open_browser_at_start,comp:L,label:E`Open Admin-panel at start`,xs:12,sm:6,md:3,helperText:E`Browser is automatically launched with HFS`},{k:N.zip_calculate_size_for_seconds,comp:k,xs:12,sm:6,md:3,unit:`seconds`,required:!0,label:E`Calculate ZIP size for`,helperText:E`download_progress_time_hint`},{k:N.mime,comp:v,label:E`Custom MIME types`,reorder:!0,prepend:!0,xs:12,sm:12,md:6,fields:[{k:`v`,label:E`Mime type`,placeholder:E`auto`,$width:2,helperText:E`Leave empty to get automatic value`},{k:`k`,label:E`File mask`,helperText:(0,z.createElement)(S),$width:1,$column:{renderCell:({value:e,id:t})=>(0,z.createElement)(`code`,{},e,e===`*`&&t<B.default.size(Y[N.mime])-1&&c(pe,m(E`mime_order_hint`),{color:`warning.main`,ml:1}))}}],toField:e=>Object.entries(e||{}).map(([e,t])=>({k:e,v:t})),fromField:e=>Object.fromEntries(e.map(e=>[e.k,e.v||`auto`])),helperText:E`Most MIME types are detected automatically`},{k:N.force_webdav_login,comp:Oe,sm:!0,label:E`WebDAV force login`,fallbackRE:`Microsoft-WebDAV`,helperText:[E`force_login_compat_help`,P(`webdav`,E`Why?`)]},Y[N.force_webdav_login]!==!0&&{k:N.webdav_initial_auth,comp:Oe,sm:6,label:E`WebDAV initial auth`,helperText:E`force_login_once_help`},{k:N.server_code,comp:v,xs:12,fields:[{k:`name`,label:E`Name`,$width:.4,$render:({value:e})=>e.trim()||(0,z.createElement)(`i`,{},E`no name`)},{k:`code`,label:E`Code`,comp:de,lang:`js`,$hideUnder:`sm`,$render:({value:e})=>typeof e==`string`?(0,z.createElement)(ie,{},(0,H.highlight)(e,H.languages.js,`js`)):`?`,helperText:m(E(`server_code_plugin_help`,{docsUrl:f+`blob/main/dev-plugins.md`}))}],toField:e=>!e||typeof e!=`string`?[]:Se(e),fromField:ze,applyButton:{onClick:e=>Q({[N.server_code]:ze(e)})}}]})});function Re(e){let t=Object.entries(e),n=[];for(let[e,[,r]]of t.entries())for(let t of r){if(!t){n.push(t);continue}G[t.k]=e,n.push(M(M({},t),{},{parentProps:M(M({},t.parentProps),{},{hidden:e!==Ne})}))}return[{k:``,xs:12,comp:(0,z.createElement)(g,{value:Ne,variant:`scrollable`,scrollButtons:`auto`,onChange(e,t){Pe(t)}},t.map(([e])=>(0,z.createElement)(a,{key:e,label:E(e),sx:{minWidth:0}}))),parentProps:{ref:Me,sx:{position:`sticky`,top:{xs:56,sm:64,lg:0},zIndex:2,bgcolor:`background.paper`}}},...n]}function ze(e){return e.map(({name:e=``,code:t=``},n)=>n||e?`${V}${e}\n${t}\n`:t).join(``)}function Q(){return $.apply(this,arguments)}function $(){return $=ve(function*(e={}){var t,n;let r=M(M({},F),e);if(B.default.isEmpty(r))return se(E`Nothing to save`);let i=window.location,a=[N.port,N.https_port];if(a.every(e=>r[e]!==void 0))return j(E`change_both_ports_warning`,`warning`);let s=[R==null||(t=R.http)==null?void 0:t.listening,R==null||(n=R.https)==null?void 0:n.listening],c=location.protocol===`https:`;c&&(a.reverse(),s.reverse());let l=r[a[0]],u=Y[a[1]],d=u>0&&s[1],f=c?`http`:`https`;if(l<0&&!d)return j(E(`cannot_disable_only_fixed_port`,{otherProtocol:f}),`warning`);if(l===0&&!d)return j(E(`cannot_randomize_only_fixed_port`,{otherProtocol:f}),`warning`);let p=l>0&&l!=i.port;if(p&&!(yield O(E`You are changing the port and you may be disconnected`)))return;let m=N.cert in r||N.private_key in r;if(c&&m&&!(yield O(E`You may disrupt https service, kicking you out`)))return;yield ce(`set_config`,{values:r}),N.split_uploads in r&&(yield j(E`split_uploads_reload_notice`,`warning`));let h=te(i.hostname),g=i.pathname+i.hash,v=l<=0?`${c?`http:`:`https:`}//${h}:${u}${g}`:p?`${i.protocol}//${h}:${l||Y[a[0]]}${g}`:yield D(`https://${h}:${i.port}${g}`,e=>{var t;return!c&&((t=r[N.force_https])==null?_[N.force_https]:t)&&fetch(e).then(()=>e,()=>0)});if(v)return yield j(E`redirect_warning`,`warning`),window.location.href=v;let y=N.port in r||N.https_port in r;setTimeout(W,y||m?1e3:0),Object.assign(U,r),Te(),o(!1,je.current)}),$.apply(this,arguments)}}function Te(){let e={};if(A.config)for(let[t,n]of Object.entries(A.config))JSON.stringify(n)!==JSON.stringify(U==null?void 0:U[t])&&(e[t]=n);we.changes=e}function Ee({label:e,value:t,onChange:n,setApi:r,status:i,suggestedPort:a=1,error:o,helperText:s}){var c;let l=(0,z.useRef)(a);t>0&&(l.current=t);let d=Number(t>0?l.current:t)||0,f=i==null?void 0:i.error;return f&&(ue(f)||u(f)?f=void 0:o=!0),(0,z.createElement)(w,{},(0,z.createElement)(w,{sx:{display:`flex`}},(0,z.createElement)(b,{sx:{flexGrow:1},label:e,error:o,value:d,options:[{label:E`off`,value:-1},{label:E`random`,value:0},{label:E`choose`,value:l.current}],onChange:n}),t>0&&(0,z.createElement)(k,{label:E`Number`,fullWidth:!1,value:t,onChange:n,setApi:r,error:o,min:1,max:65535,helperText:s,sx:{minWidth:`5.5em`}})),i&&(0,z.createElement)(C,{error:o},i===!0?`...`:(c=f)==null?(i==null?void 0:i.listening)&&E(`Correctly working on port {port}`,{port:i.port}):c))}function De({label:e,value:t,onChange:r,error:i}){let a=!t||t===`-`,o=`example.com`;return(0,z.createElement)(w,{sx:{display:`flex`}},(0,z.createElement)(b,{label:e,value:a?t:o,options:{[E`allow all`]:``,[E`forbid all`]:`-`,[E`allow some`]:o},onChange:r,error:i,sx:a?void 0:{maxWidth:`11em`}}),!a&&(0,z.createElement)(n,{label:E`Domain to allow`,value:t,placeholder:`example.com`,onChange:r,error:i,helperText:(0,z.createElement)(S)}))}function Oe({label:e,value:t,onChange:r,error:i,helperText:a,fallbackRE:o=`.*`}){let[s,c]=(0,z.useState)(``),l=typeof t==`string`;(0,z.useEffect)(()=>c(l?t:o),[t]);let u=(0,z.useId)();return(0,z.createElement)(w,{},(0,z.createElement)(w,{sx:{display:`flex`}},(0,z.createElement)(b,{label:e,value:t,onChange:r,error:i,"aria-describedby":u,options:{[E`Off`]:!1,[E`Always`]:!0,[E`RegEx`]:s},sx:l?{maxWidth:`9em`}:void 0}),l&&(0,z.createElement)(n,{label:E`User-Agent regex`,value:t,onChange:r,error:i})),(0,z.createElement)(C,{id:u},a))}export{W as default};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-CacB07dV.js";import{Ft as t,Pt as n,an as r,n as i,r as a,yr as o}from"./index-CVCnYMoB.js";import{t as s}from"./routing-C4l8rnk_.js";var c=e(o()),l=[{label:r`Installed`,path:`installed`,Pane:a},{label:r`Get more`,path:`get`,Pane:i},{label:r`Check updates`,path:`updates`,Pane:()=>(0,c.createElement)(a,{updates:!0})}],u=l.map(e=>e.path);function d(){let[e,r]=s(`plugins`,u),{Pane:i}=l[e];return(0,c.createElement)(c.Fragment,{},(0,c.createElement)(n,{value:e,onChange(e,t){r(t)}},l.map(e=>(0,c.createElement)(t,{key:e.path,label:e.label}))),(0,c.createElement)(i))}export{d as default};
1
+ import{i as e}from"./rolldown-runtime-CacB07dV.js";import{Ft as t,Pt as n,an as r,n as i,r as a,yr as o}from"./index-BSSQOMG_.js";import{t as s}from"./routing-Be72yFmd.js";var c=e(o()),l=[{label:r`Installed`,path:`installed`,Pane:a},{label:r`Get more`,path:`get`,Pane:i},{label:r`Check updates`,path:`updates`,Pane:()=>(0,c.createElement)(a,{updates:!0})}],u=l.map(e=>e.path);function d(){let[e,r]=s(`plugins`,u),{Pane:i}=l[e];return(0,c.createElement)(c.Fragment,{},(0,c.createElement)(n,{value:e,onChange(e,t){r(t)}},l.map(e=>(0,c.createElement)(t,{key:e.path,label:e.label}))),(0,c.createElement)(i))}export{d as default};
@@ -1 +1 @@
1
- import{$t as e,tn as t}from"./index-CVCnYMoB.js";var n=t(),r=e((0,n.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20m6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9`}),`DoNotDisturb`),i=e((0,n.jsx)(`path`,{d:`M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4`}),`Person`),a=e((0,n.jsx)(`path`,{d:`M15 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m-9-2V7H4v3H1v2h3v3h2v-3h3v-2zm9 4c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4`}),`PersonAdd`),o=e([(0,n.jsx)(`path`,{d:`M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8`},`0`),(0,n.jsx)(`path`,{d:`M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z`},`1`)],`Schedule`),s=e([(0,n.jsx)(`path`,{d:`M15 2h-3.5l-1-1h-5l-1 1H1v2h14zm1 7c-.7 0-1.37.1-2 .29V5H2v12c0 1.1.9 2 2 2h5.68c1.12 2.36 3.53 4 6.32 4 3.87 0 7-3.13 7-7s-3.13-7-7-7m0 12c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5`},`0`),(0,n.jsx)(`path`,{d:`M16.5 12H15v5l3.6 2.1.8-1.2-2.9-1.7z`},`1`)],`AutoDelete`),c=e((0,n.jsx)(`path`,{d:`M2.01 21 23 12 2.01 3 2 10l15 2-15 2z`}),`Send`),l=e((0,n.jsx)(`path`,{d:`M20 13H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1M7 19c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2M20 3H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1M7 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2`}),`Dns`),u=e([(0,n.jsx)(`path`,{d:`M17 11h2v2h-2v2h2v2h-2v2h4V5h-9v1.4l5 3.57zm0-4h2v2h-2z`,opacity:`.3`},`0`),(0,n.jsx)(`path`,{d:`M10 3v1.97l.96.69L12 6.4V5h9v14h-4v2h6V3z`},`1`),(0,n.jsx)(`path`,{d:`M3 12v7h2v-5h6v5h2v-7L8 8.5z`,opacity:`.3`},`2`),(0,n.jsx)(`path`,{d:`M17 7h2v2h-2zm0 4h2v2h-2zm0 4h2v2h-2zM1 11v10h6v-5h2v5h6V11L8 6zm12 8h-2v-5H5v5H3v-7l5-3.5 5 3.5z`},`3`)],`HomeWorkTwoTone`),d=e([(0,n.jsx)(`path`,{d:`M14.99 4.59V5c0 1.1-.9 2-2 2h-2v2c0 .55-.45 1-1 1h-2v2h6c.55 0 1 .45 1 1v3h1c.89 0 1.64.59 1.9 1.4C19.19 15.98 20 14.08 20 12c0-3.35-2.08-6.23-5.01-7.41M8.99 16v-1l-4.78-4.78C4.08 10.79 4 11.39 4 12c0 4.07 3.06 7.43 6.99 7.93V18c-1.1 0-2-.9-2-2`,opacity:`.3`},`0`),(0,n.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-1.01 17.93C7.06 19.43 4 16.07 4 12c0-.61.08-1.21.21-1.78L8.99 15v1c0 1.1.9 2 2 2zm6.9-2.53c-.26-.81-1-1.4-1.9-1.4h-1v-3c0-.55-.45-1-1-1h-6v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41C17.92 5.77 20 8.65 20 12c0 2.08-.81 3.98-2.11 5.4`},`1`)],`PublicTwoTone`),f=e([(0,n.jsx)(`path`,{d:`M15 15H5v4h14v-4zm-7 3H6v-2h2zm3.5 0h-2v-2h2zm3.5 0h-2v-2h2z`,opacity:`.3`},`0`),(0,n.jsx)(`path`,{d:`M16 4.2c1.5 0 3 .6 4.2 1.7l.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2m-3.3 2.5.8.8c.7-.7 1.6-1 2.5-1s1.8.3 2.5 1l.8-.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4M19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2m0 6H5v-4h14zM6 16h2v2H6zm3.5 0h2v2h-2zm3.5 0h2v2h-2z`},`1`)],`RouterTwoTone`),p=e((0,n.jsx)(`path`,{d:`M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5m-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3z`}),`LinkOff`),m=e((0,n.jsx)(`path`,{d:`M18.6 6.62c-1.44 0-2.8.56-3.77 1.53L12 10.66 10.48 12h.01L7.8 14.39c-.64.64-1.49.99-2.4.99-1.87 0-3.39-1.51-3.39-3.38S3.53 8.62 5.4 8.62c.91 0 1.76.35 2.44 1.03l1.13 1 1.51-1.34L9.22 8.2C8.2 7.18 6.84 6.62 5.4 6.62 2.42 6.62 0 9.04 0 12s2.42 5.38 5.4 5.38c1.44 0 2.8-.56 3.77-1.53l2.83-2.5.01.01L13.52 12h-.01l2.69-2.39c.64-.64 1.49-.99 2.4-.99 1.87 0 3.39 1.51 3.39 3.38s-1.52 3.38-3.39 3.38c-.9 0-1.76-.35-2.44-1.03l-1.14-1.01-1.51 1.34 1.27 1.12c1.02 1.01 2.37 1.57 3.82 1.57 2.98 0 5.4-2.41 5.4-5.38s-2.42-5.37-5.4-5.37`}),`AllInclusive`),h=e((0,n.jsx)(`path`,{d:`M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3M7.5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S9.83 13 9 13s-1.5-.67-1.5-1.5M16 17H8v-2h8zm-1-4c-.83 0-1.5-.67-1.5-1.5S14.17 10 15 10s1.5.67 1.5 1.5S15.83 13 15 13`}),`SmartToy`),g=e((0,n.jsx)(`path`,{d:`M20 4H4c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2m0 14H4V8h16zm-2-1h-6v-2h6zM7.5 17l-1.41-1.41L8.67 13l-2.59-2.59L7.5 9l4 4z`}),`Terminal`),_=e((0,n.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12m8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8`}),`Block`),v=e((0,n.jsx)(`path`,{d:`M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m-2 6h-2v2h2v2h-2v2h-2v-2h2v-2h-2v-2h2v-2h-2V8h2v2h2z`}),`FolderZip`),y=e((0,n.jsx)(`path`,{d:`M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z`}),`ChevronLeft`),b=e((0,n.jsx)(`path`,{d:`M3 10h11v2H3zm0-2h11V6H3zm0 8h7v-2H3zm15.01-3.13.71-.71c.39-.39 1.02-.39 1.41 0l.71.71c.39.39.39 1.02 0 1.41l-.71.71zm-.71.71-5.3 5.3V21h2.12l5.3-5.3z`}),`EditNote`);export{i as _,g as a,p as c,u as d,l as f,a as g,o as h,_ as i,f as l,s as m,y as n,h as o,c as p,v as r,m as s,b as t,d as u,r as v};
1
+ import{$t as e,tn as t}from"./index-BSSQOMG_.js";var n=t(),r=e((0,n.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20m6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9`}),`DoNotDisturb`),i=e((0,n.jsx)(`path`,{d:`M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4`}),`Person`),a=e((0,n.jsx)(`path`,{d:`M15 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m-9-2V7H4v3H1v2h3v3h2v-3h3v-2zm9 4c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4`}),`PersonAdd`),o=e([(0,n.jsx)(`path`,{d:`M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8`},`0`),(0,n.jsx)(`path`,{d:`M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z`},`1`)],`Schedule`),s=e([(0,n.jsx)(`path`,{d:`M15 2h-3.5l-1-1h-5l-1 1H1v2h14zm1 7c-.7 0-1.37.1-2 .29V5H2v12c0 1.1.9 2 2 2h5.68c1.12 2.36 3.53 4 6.32 4 3.87 0 7-3.13 7-7s-3.13-7-7-7m0 12c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5`},`0`),(0,n.jsx)(`path`,{d:`M16.5 12H15v5l3.6 2.1.8-1.2-2.9-1.7z`},`1`)],`AutoDelete`),c=e((0,n.jsx)(`path`,{d:`M2.01 21 23 12 2.01 3 2 10l15 2-15 2z`}),`Send`),l=e((0,n.jsx)(`path`,{d:`M20 13H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1M7 19c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2M20 3H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1M7 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2`}),`Dns`),u=e([(0,n.jsx)(`path`,{d:`M17 11h2v2h-2v2h2v2h-2v2h4V5h-9v1.4l5 3.57zm0-4h2v2h-2z`,opacity:`.3`},`0`),(0,n.jsx)(`path`,{d:`M10 3v1.97l.96.69L12 6.4V5h9v14h-4v2h6V3z`},`1`),(0,n.jsx)(`path`,{d:`M3 12v7h2v-5h6v5h2v-7L8 8.5z`,opacity:`.3`},`2`),(0,n.jsx)(`path`,{d:`M17 7h2v2h-2zm0 4h2v2h-2zm0 4h2v2h-2zM1 11v10h6v-5h2v5h6V11L8 6zm12 8h-2v-5H5v5H3v-7l5-3.5 5 3.5z`},`3`)],`HomeWorkTwoTone`),d=e([(0,n.jsx)(`path`,{d:`M14.99 4.59V5c0 1.1-.9 2-2 2h-2v2c0 .55-.45 1-1 1h-2v2h6c.55 0 1 .45 1 1v3h1c.89 0 1.64.59 1.9 1.4C19.19 15.98 20 14.08 20 12c0-3.35-2.08-6.23-5.01-7.41M8.99 16v-1l-4.78-4.78C4.08 10.79 4 11.39 4 12c0 4.07 3.06 7.43 6.99 7.93V18c-1.1 0-2-.9-2-2`,opacity:`.3`},`0`),(0,n.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-1.01 17.93C7.06 19.43 4 16.07 4 12c0-.61.08-1.21.21-1.78L8.99 15v1c0 1.1.9 2 2 2zm6.9-2.53c-.26-.81-1-1.4-1.9-1.4h-1v-3c0-.55-.45-1-1-1h-6v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41C17.92 5.77 20 8.65 20 12c0 2.08-.81 3.98-2.11 5.4`},`1`)],`PublicTwoTone`),f=e([(0,n.jsx)(`path`,{d:`M15 15H5v4h14v-4zm-7 3H6v-2h2zm3.5 0h-2v-2h2zm3.5 0h-2v-2h2z`,opacity:`.3`},`0`),(0,n.jsx)(`path`,{d:`M16 4.2c1.5 0 3 .6 4.2 1.7l.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2m-3.3 2.5.8.8c.7-.7 1.6-1 2.5-1s1.8.3 2.5 1l.8-.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4M19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2m0 6H5v-4h14zM6 16h2v2H6zm3.5 0h2v2h-2zm3.5 0h2v2h-2z`},`1`)],`RouterTwoTone`),p=e((0,n.jsx)(`path`,{d:`M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5m-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3z`}),`LinkOff`),m=e((0,n.jsx)(`path`,{d:`M18.6 6.62c-1.44 0-2.8.56-3.77 1.53L12 10.66 10.48 12h.01L7.8 14.39c-.64.64-1.49.99-2.4.99-1.87 0-3.39-1.51-3.39-3.38S3.53 8.62 5.4 8.62c.91 0 1.76.35 2.44 1.03l1.13 1 1.51-1.34L9.22 8.2C8.2 7.18 6.84 6.62 5.4 6.62 2.42 6.62 0 9.04 0 12s2.42 5.38 5.4 5.38c1.44 0 2.8-.56 3.77-1.53l2.83-2.5.01.01L13.52 12h-.01l2.69-2.39c.64-.64 1.49-.99 2.4-.99 1.87 0 3.39 1.51 3.39 3.38s-1.52 3.38-3.39 3.38c-.9 0-1.76-.35-2.44-1.03l-1.14-1.01-1.51 1.34 1.27 1.12c1.02 1.01 2.37 1.57 3.82 1.57 2.98 0 5.4-2.41 5.4-5.38s-2.42-5.37-5.4-5.37`}),`AllInclusive`),h=e((0,n.jsx)(`path`,{d:`M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3M7.5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S9.83 13 9 13s-1.5-.67-1.5-1.5M16 17H8v-2h8zm-1-4c-.83 0-1.5-.67-1.5-1.5S14.17 10 15 10s1.5.67 1.5 1.5S15.83 13 15 13`}),`SmartToy`),g=e((0,n.jsx)(`path`,{d:`M20 4H4c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2m0 14H4V8h16zm-2-1h-6v-2h6zM7.5 17l-1.41-1.41L8.67 13l-2.59-2.59L7.5 9l4 4z`}),`Terminal`),_=e((0,n.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12m8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8`}),`Block`),v=e((0,n.jsx)(`path`,{d:`M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m-2 6h-2v2h2v2h-2v2h-2v-2h2v-2h-2v-2h2v-2h-2V8h2v2h2z`}),`FolderZip`),y=e((0,n.jsx)(`path`,{d:`M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z`}),`ChevronLeft`),b=e((0,n.jsx)(`path`,{d:`M3 10h11v2H3zm0-2h11V6H3zm0 8h7v-2H3zm15.01-3.13.71-.71c.39-.39 1.02-.39 1.41 0l.71.71c.39.39.39 1.02 0 1.41l-.71.71zm-.71.71-5.3 5.3V21h2.12l5.3-5.3z`}),`EditNote`);export{i as _,g as a,p as c,u as d,l as f,a as g,o as h,_ as i,f as l,s as m,y as n,h as o,c as p,v as r,m as s,b as t,d as u,r as v};