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/index76.js
import{r as L,$ as ue,g as de,e as u,av as W,c as M,aC as H,a0 as B,w as J,x as R,j as E,k as U,q as k,v as P,F as pe,B as fe,C as me,s as z,p as n,M as ge,R as K,am as _e,an as he,z as ve,aW as ye,_ as X,o as be}from"./base-lib.js?v=1777008528";import"./file-icon.js?v=1777008528";import{k as D,h7 as Te,w as Pe,h8 as xe,e as w,_ as O,X as Ne,f as ee,a0 as ke,h9 as Ce,ha as Le,o as Se,hb as Fe,c as we,G as De,da as $e,cZ as Re}from"./utils-lib.js?v=1777008528";import{c6 as Z,e as ze,g as Be}from"./index3.js?v=1777008528";import{F as Ee}from"./form-item.js?v=1777008528";import{_ as Oe}from"./index118.js?v=1777008528";import{F as Ae}from"./files-path.js?v=1777008528";import{u as te}from"./useStore12.js?v=1777008528";import"./__commonjsHelpers__.js?v=1777008528";import"./index119.js?v=1777008528";import"./index116.js?v=1777008528";const S=ee(),Ie=e=>e.map(r=>({...r,isLocal:r.is_local,label:r.remarks,value:r.id})),Ve=async({nodeId:e,path:r,p:a,showRow:i,search:s})=>{if(!e)return{data:[]};try{const f=await D({request:Le({p:a,showRow:i,node_id:e,path:r,search:s})}),{data:_}=f,{path:p,dir:c,files:l,bt_sync:m,tamper_data:v}=_,{dirs:x,files:N,msg:T}=v||{dirs:[],files:[],msg:""},d=new Array(c.length+l.length);let g=0;for(let h=0;h<c.length;h++)d[g++]={...Z("dir",c[h],T?"":x[h],p,m),vid:"dir".concat(g),nodeId:e,loading:W(!1)};for(let h=0;h<l.length;h++)d[g++]={...Z("file",l[h],T?"":N[h],p),vid:"file".concat(g),nodeId:e};return{data:d,total:Se(_.page),path:p}}catch(f){return{data:[],path:r}}},qe=async e=>{if(!(e.loading||e.dirSize))try{e.loading=!0;const{data:r}=await D({request:Te({node_id:e.nodeId,path:e.path})});e.dirSize=r.size,e.loading=!1}catch(r){e.loading=!1}},Me=async(e,r)=>{await Pe({title:"删除文件",content:'确定要删除文件 "'.concat(e.fileName,'" 吗?')}),await D({message:!0,loading:"删除中...",request:xe({node_id:e.nodeId,path:e.path,is_dir:e.isFile?0:1})}),r()},j=L(null),Ue=ue(()=>{S.error("不能直接上传文件到系统根目录!")},2e3),je=(e,r,a,i)=>{var s,f;if(e.preventDefault(),r==="/"){Ue();return}(s=e==null?void 0:e.dataTransfer)!=null&&s.items&&Array.from((f=e==null?void 0:e.dataTransfer)==null?void 0:f.items).some(p=>p.kind==="file")&&(j.value||ae(r,a,i))},ae=(e,r,a)=>{if(e==="/"){S.error("不能直接上传文件到系统根目录!");return}j.value=w({title:"上传文件到【".concat(e,"】"),area:"72",component:()=>O(()=>import("./node-upload.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{path:e,nodeId:r,refresh:a},onCancel:()=>{a(),j.value=null}})},q=(e,r)=>{const a="node_file_path_".concat(e);return r!==void 0?(localStorage.setItem(a,r),r):localStorage.getItem(a)||"/"},Q=({lpver:e})=>!!e;let b=null;const We=async e=>{try{if(Q(e.sourceNode)&&Q(e.targetNode)){S.error("当前两节点均为1panel节点,无法创建文件分发任务"),e.callback();return}if(e.targetPath==="/"){S.error("目标节点处于根目录,无法创建文件分发任务"),e.callback();return}const r=await Ge(e),a=await D({message:!0,loading:"创建传输任务...",request:Fe({source_node_id:e.sourceNode.id,target_node_id:e.targetNode.id,source_path_list:JSON.stringify(e.sourcePathList.value.map(i=>({path:i.path,is_dir:!i.isFile,size:i.size}))),target_path:e.targetPath,default_mode:r})});e.callback(),a.status&&se(e.complete)}catch(r){e.callback()}},se=async(e,r=!1)=>{const a=L({source_path:"",target_path:"",target_node:"",source_node:"",file_count:0,file_complete:0,file_error:0,fileList:[]});let i=null;const s=()=>{b==null||b.close(),b=ke({route:"/ws_modsoc",onMessage:(p,c)=>{const l=JSON.parse(c.data);if(l.type==="end"){b==null||b.close(),i&&i.unmount(),r||(a.value={...l.task,fileList:l.file_status_list},_(),S.success("文件传输完成"),e());return}l.type==="error"&&S.error(l.msg),i||(i=!0,f()),l.task&&(a.value={...l.task,fileList:l.file_status_list})},onDisconnected:()=>{e()}}),b==null||b.send({mod_name:"node",sub_mod_name:"file_transfer",def_name:"transfer_status",callback:"xxxxxxo",data:{}})},f=async()=>{i=await w({title:"文件传输日志",area:75,component:()=>O(()=>import("./index472.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:a,onCancel:()=>{b==null||b.close(),i=null},btns:!1})},_=async()=>{let p=0,c=0;const l=[],m=[];a.value.fileList&&(a.value.fileList.forEach(v=>{v.status==="complete"?(p++,m.push(v)):(c++,l.push(v))}),w({title:"文件传输结果",area:45,component:()=>O(()=>import("./transfer-result.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{success:p,fail:c,sendList:L([...l,...m])}}))};s()},Ge=async e=>new Promise((r,a)=>{w({title:"文件传输",area:45,component:()=>O(()=>import("./transfer-confirm.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),btn:!0,compData:{...e,complete:i=>{r(i)}},onCancel:()=>{a(!1)}})}),He=async(e,r,a)=>{const i=async p=>{try{return await D({message:!0,loading:"创建中...",request:Ce({node_id:r.toString(),path:"".concat(e,"/").concat(p.value.name).replace(/\/\//g,"/")})}),!0}catch(c){return!1}finally{a()}};let s=null;const{BtForm:f,submit:_}=Ne({data:()=>({name:""}),options:p=>de(()=>[Ee("名称","name",{attrs:{class:"!w-[23rem]",placeholder:"请输入文件夹名称",onkeydown:async c=>{c.key==="Enter"&&(c.preventDefault(),c.stopPropagation(),await _()&&(s==null||s.unmount()))}},rules:[{required:!0,message:"请输入文件夹名称"},{validator:(c,l,m)=>{if(RegExp(/[\*\|\:\\\"\/\<\>\?]+/).test(l)){m(new Error("文件夹名称不能包含特殊字符"));return}m()},trigger:["blur","change"]}]})]),submit:async(p,c,l)=>{try{return await c(),await i(p)}catch(m){return!1}}});s=await w({title:"新建文件夹【".concat(e,"】"),area:45,component:()=>u("div",{class:"p-[2rem]"},[u(f,null,null)]),btn:!0,onConfirm:_})},Je={class:"flex items-center mb-[1.6rem]"},Ke={class:"flex flex-col !h-[5rem] pt-[1rem]"},Xe={class:"mb-0 leading-[1.2rem] !vertical-middle"},Ze={class:"text-tertiary text-small"},Qe={class:"flex items-center gap-3"},Ye={class:"flex items-center gap-3"},et={class:"text-tertiary"},Y=M({__name:"files-list-card",props:{panelType:{type:String,required:!0}},setup(e,{expose:r}){const a=e,{mainHeight:i}=we(),{currentNodes:s}=te(),f=L([]),_=H("nodeList",L([])),p=H("createTask",(t,o,$)=>{}),c=L([]),l=L(q(s.value[a.panelType]));B("currentPath",l);const m=L({p:1,showRow:200,path:W(l),search:""}),v=t=>{switch(a.panelType){case"source":return t===s.value.target;case"target":return t===s.value.source}},x=t=>{if(!t){c.value=_.value;return}c.value=_.value.filter(o=>o.label.includes(t)||o.server_ip.includes(t))};J(_,t=>{c.value=t}),J(()=>s.value[a.panelType],()=>{N(),le.value.limit=100,I(q(s.value[a.panelType])),C()});const N=()=>{const t=s.value[a.panelType];t&&localStorage.setItem("fileTransfer_".concat(a.panelType,"_nodeId"),t)},T=[ze({key:"vid"}),{label:"文件名称",prop:"name",minWidth:200,showOverflowTooltip:!0,render:t=>u("div",{class:"flex items-center files-list"},[u("i",{class:"icon-bg ".concat(["zip","rar","7z","gz","tar.gz","tgz","war"].includes(t.ext)?"compress":t.ext,"-icon")},null),u("span",{onClick:()=>ne(t),class:"cursor-pointer hover:text-primary truncate ml-[4px] fileName ".concat(t.isReName?"hidden":""),title:t.fileName+t.isLink},[t.fileName+t.isLink])])},{label:"文件大小",prop:"size",width:120,render:t=>{switch(t.ext){case"folder":return u(ie,{row:t},null);default:return De(t.size)}}},Be([{title:a.panelType==="source"?"发送到右侧":"发送到左侧",width:100,onClick:t=>G(t)},{title:"删除",onClick:t=>Me(t,C)}])],{BtTable:d,BtSearch:g,BtPage:h,BtColumn:nt,refresh:C,ref:A,param:le}=$e({request:async({p:t,limit:o,search:$})=>{const F=await Ve({nodeId:s.value[a.panelType],path:m.value.path,p:t,showRow:o,search:$});return q(s.value[a.panelType],F.path),I(F.path),A.value.clearAllSelect(),F},columns:T,extension:[]}),re=async t=>{I(t),C()},I=t=>{switch(l.value=t,a.panelType){case"source":s.value.sourcePath=t;break;case"target":s.value.targetPath=t;break}},ne=t=>{t.isFile||(l.value="".concat(t.path),C())},G=async t=>{try{const o=t==="all"?f.value:[t];p(a.panelType,o,()=>{A.value.clearAllSelect()})}catch(o){A.value.clearAllSelect()}},oe=t=>{f.value=t},ie=M({props:{row:{type:Object,required:!0}},setup(t){return()=>u("a",{class:"flex items-center",title:"点击计算大小",onClick:()=>qe(t.row)},[t.row.loading&&u("span",{class:"svgtofont-el-loading animate-spin mr-2px"},null),t.row.loading&&u("span",{class:""},[R("计算中")]),!t.row.loading&&u("div",{class:"text-primary cursor-pointer"},[t.row.dirSize===void 0?"计算":t.row.dirSize])])}});return r({refresh:C}),(t,o)=>{const $=_e,F=he,V=ve,ce=ye;return E(),U("div",{class:"rounded-base module-ui shadow-[0 1px 3px 1px rgba(var(--el-color-black-rgb), 0.05)]",onDragenter:o[4]||(o[4]=K(()=>{},["prevent"])),onDragover:o[5]||(o[5]=K(y=>n(je)(y,n(l),n(s)[a.panelType],n(C)),["prevent"]))},[k("div",Je,[u(F,{class:"!w-[16rem] mr-[1.6rem]",modelValue:n(s)[a.panelType],"onUpdate:modelValue":o[0]||(o[0]=y=>n(s)[a.panelType]=y),filterable:"","filter-method":x,onChange:t.handleNodeChange},{default:P(()=>[(E(!0),U(pe,null,fe(n(c),y=>(E(),me($,{class:"!h-[5rem]",key:y.value,label:y.label,value:y.value,disabled:v(y.value)},{default:P(()=>[k("div",Ke,[k("span",Xe,z(y.label),1),k("span",Ze,z(y.server_ip),1)])]),_:2},1032,["label","value","disabled"]))),128))]),_:1},8,["modelValue","onChange"]),u(Ae,{initialPath:n(l),onPathChange:re,onRefresh:n(C)},null,8,["initialPath","onRefresh"])]),u(n(Oe),null,{"header-left":P(()=>[u(V,{type:"primary",disabled:!n(m).path,onClick:o[1]||(o[1]=y=>n(ae)(n(l),n(s)[a.panelType],n(C)))},{default:P(()=>[...o[6]||(o[6]=[R(" 上传文件 ",-1)])]),_:1},8,["disabled"]),u(V,{type:"default",disabled:!n(m).path,onClick:o[2]||(o[2]=y=>n(He)(n(l),n(s)[a.panelType],n(C)))},{default:P(()=>[...o[7]||(o[7]=[R(" 新建文件夹 ",-1)])]),_:1},8,["disabled"])]),"header-right":P(()=>[k("div",Qe,[u(n(g),{disabled:!n(m).path,placeholder:"请输入文件名称"},null,8,["disabled"])])]),content:P(()=>[u(n(d),{style:ge("height:".concat(n(i)-290,"px")),onSelectionChange:oe},null,8,["style"])]),"footer-left":P(()=>[k("div",Ye,[u(ce,{content:"请先选择文件",placement:"top",disabled:n(f).length>0},{default:P(()=>[u(V,{type:"primary",disabled:n(f).length===0,onClick:o[3]||(o[3]=y=>G("all"))},{default:P(()=>[R("发送到"+z(a.panelType==="source"?"右侧":"左侧"),1)]),_:1},8,["disabled"])]),_:1},8,["disabled"]),k("span",et,"当前选中"+z(n(f).length)+"个文件",1)])]),"footer-right":P(()=>[u(n(h),{layout:"prev, pager, next"})]),_:1})],32)}}}),tt={class:"file-transfer"},at={class:"transfer-container"},st={class:"transfer-panel left-panel"},lt={class:"transfer-panel right-panel"},rt=M({__name:"index",setup(e){const{getAllNodeList:r,currentNodes:a}=te(),i=ee(),s=L([]);B("nodeList",s);const f=X("leftPanelRef"),_=X("rightPanelRef"),p=async()=>{const l=await r();s.value=Ie(l.data);const m=Number(localStorage.getItem("fileTransfer_source_nodeId")),v=Number(localStorage.getItem("fileTransfer_target_nodeId"));let x=null,N=null,T=null;for(let d=0;d<s.value.length;d++)s.value[d].isLocal?(T=s.value[d].id,a.value.localNodeId=T):N||(N=s.value[d].id),s.value[d].id===m&&(x=s.value[d].id),s.value[d].id===v&&(N=s.value[d].id);x||(x=T),a.value.source=x,a.value.target=N},c=async(l,m,v)=>{const x=a.value[l],N=a.value[l==="source"?"target":"source"];let T=null,d=null;for(let g=0;g<s.value.length&&(s.value[g].id===x&&(T=s.value[g]),s.value[g].id===N&&(d=s.value[g]),!(T&&d));g++);if(!d){i.error("请选择目标节点"),v();return}We({sourceNode:T,targetNode:d,sourcePathList:W(m),targetPath:a.value[l==="source"?"targetPath":"sourcePath"],callback:v,complete:()=>{var g,h;l==="source"?(g=_.value)==null||g.refresh():(h=f.value)==null||h.refresh()}})};return B("refreshNodeList",p),B("createTask",c),be(()=>{p(),se(()=>{},!0)}),(l,m)=>(E(),U("div",tt,[k("div",at,[k("div",st,[u(Y,{ref_key:"leftPanelRef",ref:f,"panel-type":"source"},null,512)]),k("div",lt,[u(Y,{ref_key:"rightPanelRef",ref:_,"panel-type":"target"},null,512)])])]))}}),vt=Re(rt,[["__scopeId","data-v-d45560ca"]]);export{vt as default};
function __vite__mapDeps(indexes) {
  if (!__vite__mapDeps.viteFileDeps) {
    __vite__mapDeps.viteFileDeps = []
  }
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}