HEX
Server: nginx/1.28.3
System: Linux ip-172-31-12-242 6.17.0-1007-aws #7~24.04.1-Ubuntu SMP Thu Jan 22 21:04:49 UTC 2026 x86_64
User: root (0)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/server/panel/BTPanel/static/js/index418.js
import{aI as L,aJ as Q,r as v,H as Z,g as W,bc as X,c as Y,o as ee,a8 as le,j as h,k as T,e,v as a,p as l,F as D,B as U,C as k,q as b,s as ae,L as te,J as oe,K as ne,Q as M,am as se,an as de,T as ie,ad as ue,b4 as re,bC as me,ab as pe,bJ as _e,G as ce,S as fe}from"./base-lib.js?v=1777008528";import{k as $,m as we,$ as be,M as ve,cO as Ve,cZ as ge}from"./utils-lib.js?v=1777008528";import{u as Fe,H as xe,I as Pe}from"./useStore15.js?v=1777008528";import"./__commonjsHelpers__.js?v=1777008528";import"./index3.js?v=1777008528";import"./index119.js?v=1777008528";import"./index116.js?v=1777008528";const he=Q("FTP-ACCESS-STORE",()=>{const u=v(!1),s=v(0),i=v(0),t=v(),p=v(!1),r=v({username:"",download_bandwidth:"",upload_bandwidth:"",max_files:"",max_size:"",ratio:"",allowed_local_ips:"",denied_local_ips:"",allowed_client_ips:"",denied_client_ips:"",time_restrictions:[],max_sim_sessions:""}),m=Z({download_bandwidth:"KB",upload_bandwidth:"KB",max_size:"KB"}),d=v(["KB","MB","GB"]),_=v({}),c=W(()=>u.value?"svgtofont-el-arrow-up":"svgtofont-el-arrow-down");return{accessFormFef:t,accessForm:r,uNum:s,dNum:i,icon:c,unitForm:m,advancedConfiguration:u,unitData:d,skipNull:p,AccessData:_}}),q=()=>L(he()),{rowData:B}=Fe(),{accessFormFef:Ie,accessForm:E,uNum:O,dNum:K,unitForm:R,advancedConfiguration:A,skipNull:j,AccessData:Ne}=q(),I=(u,s,i)=>{s===""?i():s===""||typeof s>"u"||s==null&&!j?i(new Error("请输入正确的IP地址")):be(s)?i():i(new Error("请输入正确的IP地址"))},Ee=X({allowed_local_ips:[{required:!1,validator:I,message:"请输入正确的IP地址",trigger:"blur"}],denied_local_ips:[{required:!1,validator:I,message:"请输入正确的IP地址",trigger:"blur"}],allowed_client_ips:[{required:!1,validator:I,message:"请输入正确的IP地址",trigger:"blur"}],denied_client_ips:[{required:!1,validator:I,message:"请输入正确的IP地址",trigger:"blur"}]}),ye=(u=E.value)=>{const s=["allowed_local_ips","denied_local_ips","allowed_client_ips","denied_client_ips"];for(const i of s)u[i]!==""&&(u[i]=u[i].replace(/\s+/g,""),j.value=!0,I(null,u[i],t=>{if(t)throw ve.error(t.message+"或将其置空"),new Error(t.message)}))},Se=async()=>{const u=De();ye(),await Ie.value.validate();const{status:s}=await $({loading:"正在获取FTP权限数据,请稍后...",request:xe(u),data:{status:Boolean},message:!0});return s},H=()=>{A.value=!A.value},Te=(u=Ne.value)=>{let s={},i={},t=0,p=0;for(const r in u){let m=u[r];if(["download_bandwidth","upload_bandwidth","max_size"].includes(r)){const d=m.slice(-2);i[r]=d||"MB",s[r]=m.slice(0,-2)}else if(r==="time_restrictions"){if(m==""){s[r]=[new Date(2021,1,1,0,0),new Date(2021,1,1,23,59)];continue}const d=m.split("-"),_=d[0],c=d[1],N=_.slice(0,2),o=_.slice(2,4),V=c.slice(0,2),P=c.slice(2,4);s[r]=[new Date(2021,1,1,Number(N),Number(o)),new Date(2021,1,1,Number(V),Number(P))]}else if(r==="ratio"){m==""&&(m="0:0");const d=m.split(":");t=Number(d[0]),p=Number(d[1])}else s[r]=m}return{perForm:s,unitForms:i,uNums:t,dNums:p}},Be=async()=>{const{name:u}=B.value;await $({loading:"正在获取FTP权限数据,请稍后...",request:Pe({username:u}),success:({data:s})=>{const{perForm:i,unitForms:t,uNums:p,dNums:r}=Te(s);O.value=p,K.value=r,Object.assign(E.value,i),Object.assign(R.value,t)}})},Ce=()=>{B.value={},E.value={}},z=u=>{const s=u.getHours().toString().padStart(2,"0"),i=u.getMinutes().toString().padStart(2,"0");return[s,i]},De=()=>{const u=R.value,s=E.value,i=O.value,t=K.value,p=B.value.name;let r={download_bandwidth:"",upload_bandwidth:"",max_size:""};for(const d in u){let _=u[d],c=s[d];["download_bandwidth","upload_bandwidth","max_size"].includes(d)&&(c===""?r[d]="0":(_===""&&(_="KB"),r[d]=c+_))}let m="0000-0000";if(we(s.time_restrictions)&&s.time_restrictions.length>0){const d=new Date(s.time_restrictions[0]),_=new Date(s.time_restrictions[1]),[c,N]=z(d),[o,V]=z(_);m="".concat(c).concat(N,"-").concat(o).concat(V)}return s.ratio="".concat(i||"0",":").concat(t||"0"),s.ratio==="0:0"&&(s.ratio=""),{...s,time_restrictions:m,username:p,...r}},Ue={class:"p-[20px]"},ke={class:"flex"},Me=Y({__name:"index",setup(u,{expose:s}){const{accessFormFef:i,accessForm:t,uNum:p,dNum:r,icon:m,unitForm:d,advancedConfiguration:_,unitData:c}=q();return ee(Be),le(Ce),s({onConfirm:Se}),(N,o)=>{const V=se,P=de,y=ie,f=ue,w=re,g=me,F=pe,x=Ve,J=_e,G=ce,C=fe;return h(),T("div",Ue,[e(F,{model:l(t),ref_key:"accessFormFef",ref:i,class:"demo-form-inline",rules:l(Ee),"label-width":"11rem"},{default:a(()=>[e(g,null,{default:a(()=>[e(w,{span:12},{default:a(()=>[e(f,{label:"下载带宽限制"},{default:a(()=>[e(y,{type:"number",min:0,placeholder:"请输入下载带宽限制",modelValue:l(t).download_bandwidth,"onUpdate:modelValue":o[1]||(o[1]=n=>l(t).download_bandwidth=n),class:"input-with-select"},{append:a(()=>[e(P,{modelValue:l(d).download_bandwidth,"onUpdate:modelValue":o[0]||(o[0]=n=>l(d).download_bandwidth=n),placeholder:"请选择"},{default:a(()=>[(h(!0),T(D,null,U(l(c),(n,S)=>(h(),k(V,{key:S,label:n,value:n},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1})]),_:1}),e(w,{span:12},{default:a(()=>[e(f,{label:"上传带宽限制"},{default:a(()=>[e(y,{type:"number",min:0,placeholder:"请输入上传带宽限制",modelValue:l(t).upload_bandwidth,"onUpdate:modelValue":o[3]||(o[3]=n=>l(t).upload_bandwidth=n),class:"input-with-select"},{append:a(()=>[e(P,{modelValue:l(d).upload_bandwidth,"onUpdate:modelValue":o[2]||(o[2]=n=>l(d).upload_bandwidth=n),placeholder:"请选择"},{default:a(()=>[(h(!0),T(D,null,U(l(c),(n,S)=>(h(),k(V,{key:S,label:n,value:n},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["model","rules"]),e(F,{inline:!0,model:l(t),class:"demo-form-inline","label-width":"11rem"},{default:a(()=>[e(g,null,{default:a(()=>[e(w,{span:12},{default:a(()=>[e(f,{label:"最大文件数量限制"},{default:a(()=>[e(x,{type:"number",width:"18rem",min:0,modelValue:l(t).max_files,"onUpdate:modelValue":o[4]||(o[4]=n=>l(t).max_files=n),placeholder:"请输入最大文件数量限制"},null,8,["modelValue"])]),_:1})]),_:1}),e(w,{span:12},{default:a(()=>[e(f,{label:"最大文件大小限制"},{default:a(()=>[e(y,{style:{"min-width":"180px"},placeholder:"请输入内容",type:"number",min:0,modelValue:l(t).max_size,"onUpdate:modelValue":o[6]||(o[6]=n=>l(t).max_size=n),class:"input-with-select"},{append:a(()=>[e(P,{modelValue:l(d).max_size,"onUpdate:modelValue":o[5]||(o[5]=n=>l(d).max_size=n),placeholder:"请选择"},{default:a(()=>[e(V,{label:"MB",value:"MB"})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"]),e(F,{inline:!0,model:l(t),class:"demo-form-inline","label-width":"11rem"},{default:a(()=>[e(g,null,{default:a(()=>[e(w,{span:12},{default:a(()=>[e(f,{label:"时间限制"},{default:a(()=>[e(J,{format:"HH:mm",style:{width:"18rem"},"is-range":"",modelValue:l(t).time_restrictions,"onUpdate:modelValue":o[7]||(o[7]=n=>l(t).time_restrictions=n),"range-separator":"-","start-placeholder":"开始","end-placeholder":"结束",placeholder:"选择时间范围"},null,8,["modelValue"])]),_:1})]),_:1}),e(w,{span:12},{default:a(()=>[e(f,{label:"最大并发会话数"},{default:a(()=>[e(x,{width:"18rem",type:"number",min:0,modelValue:l(t).max_sim_sessions,"onUpdate:modelValue":o[8]||(o[8]=n=>l(t).max_sim_sessions=n),placeholder:"请输入最大并发会话数"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"]),e(G,null,{default:a(()=>[b("span",{class:"bt-link",onClick:o[9]||(o[9]=(...n)=>l(H)&&l(H)(...n))},ae(l(m)==="svgtofont-el-arrow-down"?"展开":"收起")+"更多配置 ",1),b("i",{class:te(l(m))},null,2)]),_:1}),oe(b("div",null,[e(F,{inline:!0,model:l(t),class:"demo-form-inline","label-width":"11rem"},{default:a(()=>[e(g,null,{default:a(()=>[e(w,{span:12},{default:a(()=>[e(f,{prop:"allowed_local_ips",label:"允许的本地IP地址"},{default:a(()=>[e(x,{width:"18rem",modelValue:l(t).allowed_local_ips,"onUpdate:modelValue":o[10]||(o[10]=n=>l(t).allowed_local_ips=n),placeholder:"请输入允许的本地IP地址"},null,8,["modelValue"])]),_:1})]),_:1}),e(w,{span:12},{default:a(()=>[e(f,{label:"拒绝的本地IP地址",prop:"denied_local_ips"},{default:a(()=>[e(x,{width:"18rem",modelValue:l(t).denied_local_ips,"onUpdate:modelValue":o[11]||(o[11]=n=>l(t).denied_local_ips=n),placeholder:"请输入拒绝的本地IP地址"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"]),e(F,{inline:!0,model:l(t),class:"demo-form-inline","label-width":"11rem"},{default:a(()=>[e(g,null,{default:a(()=>[e(w,{span:12},{default:a(()=>[e(f,{label:"允许的客户端IP地址",prop:"allowed_client_ips"},{default:a(()=>[e(x,{width:"18rem",modelValue:l(t).allowed_client_ips,"onUpdate:modelValue":o[12]||(o[12]=n=>l(t).allowed_client_ips=n),placeholder:"请输入允许的客户端IP地址"},null,8,["modelValue"])]),_:1})]),_:1}),e(w,{span:12},{default:a(()=>[e(f,{label:"拒绝的客户端IP地址",prop:"denied_client_ips"},{default:a(()=>[e(x,{width:"18rem",modelValue:l(t).denied_client_ips,"onUpdate:modelValue":o[13]||(o[13]=n=>l(t).denied_client_ips=n),placeholder:"请输入拒绝的客户端IP地址"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"]),e(F,{inline:!0,model:l(t),class:"demo-form-inline","label-width":"11rem"},{default:a(()=>[e(g,null,{default:a(()=>[e(w,{span:24},{default:a(()=>[e(f,{label:"上传和下载比率"},{default:a(()=>[b("div",ke,[e(C,{modelValue:l(p),"onUpdate:modelValue":o[14]||(o[14]=n=>M(p)?p.value=n:null),"controls-position":"right",min:0},null,8,["modelValue"]),o[16]||(o[16]=b("span",{class:"mx-12px"},":",-1)),e(C,{modelValue:l(r),"onUpdate:modelValue":o[15]||(o[15]=n=>M(r)?r.value=n:null),"controls-position":"right",min:0},null,8,["modelValue"])])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])],512),[[ne,l(_)]]),o[17]||(o[17]=b("ul",{class:"mt-8px leading-8 text-small list-disc ml-20px"},[b("li",{class:"text-danger"},"注意:填写为0或为空时都表示不做限制,将按照上一次设定值延续。"),b("li",null,"允许的 IP 地址和被拒绝的 IP 地址若配置相同,将会拒绝该ip,因为“被拒绝”的设置优先级高于“被允许”的设置。"),b("li",null,"上传和下载比率限制:以上传文件数量和下载文件数量的形式表示。例如,设置为 “1:5”,那么用户每上传1个文件,就可以下载5个文件。设定其中某一个值为0将设置失败。"),b("li",null,"时间限制:指定用户可以访问FTP的时间范围。如:09:00到18:00,表示用户只能在这个时间范围内访问FTP。"),b("li",null,"最大并发会话数:即允许与FTP服务器同时建立的最大连接数。")],-1))])}}}),Re=ge(Me,[["__scopeId","data-v-87e0d89a"]]);export{Re as default};