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/index16.js
import{w as q,k as G,M as w,e as k,_ as x,m as K,J as Q,fP as W,a3 as X,c as Y,da as Z,G as ee,cT as te,cU as ae,K as se,cP as oe}from"./utils-lib.js?v=1777008528";import{H as I,r as n,e as s,U as le,c as L,g as ne,x as p,o as re,j as H,k as ue,v as _,q as B,p as m,J as ie,K as ce,Q as pe,z as _e,ba as me,aX as de,C as fe}from"./base-lib.js?v=1777008528";import{_ as be}from"./index118.js?v=1777008528";import{e as ke,F as ge,g as he,aI as ve,b as ye}from"./index3.js?v=1777008528";import{i as b,d as g}from"./useMethod.js?v=1777008528";import{M as we,N,O as xe,c as Ee}from"./config.js?v=1777008528";import{L as z,R as C,S as V}from"./useMethod4.js?v=1777008528";import{restorePhpSiteData as De,restorePhpSiteDataLog as Be}from"./site.js?v=1777008528";import{_ as Ce}from"./index206.js?v=1777008528";const Te=async()=>{try{const{data:e}=await we();return{data:e.data,total:e.data.length,other:{}}}catch(e){}},Ae=async e=>{window.open("/download?filename=".concat(e.backup_file),"_blank","noopener,noreferrer")},Fe=async e=>{try{await q({title:"删除备份",content:"是否删除备份文件?",type:"calc"}),await G({loading:"正在删除备份,请稍后...",request:N({timestamp:e.timestamp}),message:!0}),b.value=!0}catch(t){}},Pe=async(e,t)=>{if(t==="confirm"){const r=n(!1);let u=0;await q({title:"还原备份",content:()=>s("div",null,[s("div",null,["网站【".concat(e.name,"】数据即将被覆盖,是否继续?")]),s("div",null,[s(le,{modelValue:r.value,"onUpdate:modelValue":l=>r.value=l,label:"还原网站配置文件"},null)])]),type:"calc"});try{De({id:e.id,reconf:r.value?"True":"False"});const l=L({setup(){const f=n("获取中..."),i=async()=>{clearTimeout(u);const h=await Be({pid:e.pid});f.value=h.log,h.restore_status?w.request(h):u=setTimeout(()=>{i()},1500)};return i(),()=>s("div",{class:"flex-wrap"},[s(Ce,{class:"h-[40rem] !rounded-none",content:f.value},null)])}});k({title:"还原日志",component:()=>s(l,null,null),area:55})}catch(l){}}else{if(g.value={operateType:"restore",...e},e.status==="backup-running"){w.error("备份正在运行,请稍后再试");return}e.status==="restore-running"&&(z.value=C()),k({title:"还原备份",component:()=>x(()=>import("./index450.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),area:84,btn:["确定还原","取消"],showFooter:!0})}},Le=async e=>{g.value={operateType:"detail",...e},k({title:"【".concat(e.backup_name,"】备份还原详情"),component:()=>x(()=>import("./detail-back.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),area:78})},ze=e=>{k({title:"上传文件",area:"72",component:()=>x(()=>import("./index424.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{path:"/www/backup/backup_restore"},onOpen:()=>{var r;const t=document.querySelector(".upload-files-tips");if(t){const u=document.createElement("ul");u.className="text-secondary mt-[2px] leading-[2rem] text-small ml-[20px] list-disc";const l=document.createElement("li");l.textContent="只有在此处备份的文件,才会在备份列表中显示",u.appendChild(l),(r=t.parentNode)==null||r.insertBefore(u,t.nextSibling)}},onCancel:()=>{e()}})},Se=async e=>{g.value={operateType:"log",...e},k({title:"备份日志",component:()=>x(()=>import("./log-back.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),area:60})},y=I({backup_time:"",file_size:"",time_count:"",size:"",path:"","SHA-256":""}),Ve=async e=>{try{const t=await xe({timestamp:e.timestamp});z.value=C()}catch(t){}},Oe=n(),Ze=n(!1),et=async()=>{try{V.value=!0;const e={timestamp:g.value.timestamp,type:qe.value},{data:{data:t}}=await Ee(e);y.time_count=t.total_time,y.size=t.backup_file_size,y["SHA-256"]=t.backup_file_sha256,y.path=t.backup_file,y.backup_time=t.done_time,Oe.value=t.data_status;const r=Re(t.data_status);return{data:r,total:r.length,other:{}}}catch(e){}finally{V.value=!1}},Re=e=>{const t={ssh_list:"防火墙",crontab_list:"计划任务",term_list:"终端",database_list:"数据库",site_list:"网站",ftp_list:"FTP",plugin_list:"插件",env_list:"运行环境"},r=Object.keys(e);let u=[];return r.forEach(l=>{if(K(e[l])&&e[l].length>0){let f=e[l].filter(i=>i.status&&i.status===3);f.length>0&&f.forEach(i=>{u.push({name:i.name,msg:i.err_msg||"未知错误"})})}else Q(e[l])&&e[l].status===3&&u.push({name:t[l],msg:e[l].err_msg||"未知错误"})}),u};n(!1);n([]);n([]);n([]);n([]);n([]);n([]);const d=n(!1),U=n(0),$=async e=>{try{let t=new FormData;t.append("blob",e.file),t.append("f_size",e.data.f_size),t.append("f_path",e.data.f_path),t.append("f_name",e.data.f_name),t.append("f_start",e.data.f_start);let r={headers:{"Content-Type":"multipart/form-data","x-http-token":window.vite_public_request_token}};const u=await W.post("/files?action=upload",t,r);X(u.data)?(d.value||(d.value=!0),U.value=Math.floor(u.data/e.data.f_size*100),$(e)):(d.value=!1,w.request(u.data))}catch(t){w.error("导入失败"),d.value=!1,b.value=!0}},qe=n("backup"),O=async()=>{g.value={operateType:"add"},k({title:"创建备份",area:84,showFooter:!0,component:()=>x(()=>import("./index450.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),btn:["备份","取消"]})},R={database:"数据库",site:"网站",ftp:"FTP",crontab:"计划任务",term:"终端",firewall:"防火墙",plugin:"插件",other:"其他",runtime:"运行环境"};n(Object.keys(R).reduce((e,t)=>(e[t]={name:R[t],list:[]},e),{}));const Ie={class:"flex items-center"},He={class:"p-[20px]"},Ne=L({__name:"index",setup(e){const{panel:t}=Y(),r=ae([{label:"删除",value:"delete",event:async(a,o,c,v,E,D)=>{const A=async(F,P)=>await N({timestamp:F.timestamp});await a({title:"删除备份",column:[{label:"备份名称",prop:"backup_name"},ye()],content:"删除后不可恢复,确定删除吗?",onConfirm:async()=>(await o(A),b.value=!0,!1)})}}]),{BtTable:u,BtBatch:l,BtRefresh:f}=Z({request:Te,columns:ne(()=>[ke({key:"timestamp"}),{label:"备份名称",prop:"backup_name"},{label:"状态",render:a=>{const o=a.backup_status===1||a.restore_status===1,c=a.backup_status===0,v=a.restore_status===1,E=s("div",null,[s("span",null,[p("成功("),a.backup_count.success||0,p(")")]),s("span",{class:"!ml-[4px]"},[p("失败("),a.backup_count.failed||0,p(")")])]),D=o||c;return s("div",{class:"inline-flex items-center"},[s("span",{style:"background:".concat(a.backup_count.failed?"var(--el-color-danger)":"var(--el-color-primary)"),class:"rounded-full w-[6px] h-[6px] mr-[4px] ".concat(D?"!hidden":"")},null),o&&s("span",{class:"ml-2px text-[var(--el-color-warning-light-3)] cursor-pointer",onClick:()=>{g.value.operateType=v?"restore":"backup",z.value=C()}},[v?"还原中":"备份中"]),c&&s("span",{class:"ml-2px text-tertiary"},[p("等待备份")]),!o&&!c&&E])}},ge({prop:"backup_path",label:"备份文件"}),{label:"备份大小",prop:"backup_file_size",sortable:!0,render:a=>s("span",null,[ee(Number(a.backup_file_size))])},{label:"备份时间",prop:"backup_time",sortable:!0},{label:"创建时间",prop:"create_time",sortable:!0},he([{title:"立即备份",width:70,onClick:Ve,isHide:a=>a.backup_status!==0&&a.backup_status!==1},{title:"下载",onClick:Ae,isHide:a=>a.backup_status===0||a.backup_status===1},{title:"还原",onClick:Pe,isHide:a=>a.backup_status===0||a.backup_status===1},{title:"详情",onClick:Le},{title:"日志",onClick:Se},{title:"删除",onClick:Fe}])]),extension:[te(b),r],empty:()=>s("span",null,[p("您的列表为空,您可以"),s("span",{class:"bt-link",onClick:O},[p("创建一个备份")])])}),i={"x-http-token":window.vite_public_request_token},h=n(null),j=n(null),T=I({f_size:0,f_path:"/www/backup/backup_restore/",f_name:"",f_start:0}),M=a=>{T.f_size=a.size,T.f_name=a.name},J=(a,o,c)=>{w.error("导入失败"),d.value=!1,b.value=!0},S=(a,o,c)=>{d.value=!1,b.value=!0};return re(()=>{window.openFilePath=()=>ve({path:"/www/backup/whole_machine_backup"}),setTimeout(()=>{const a=localStorage.getItem("hasJump");t.value.migration&&a&&(C("restore"),localStorage.removeItem("hasJump"))},1e3)}),(a,o)=>{const c=_e,v=me,E=be,D=de,A=se,F=oe;return H(),ue("div",null,[s(E,null,{"header-left":_(()=>[B("div",Ie,[s(v,{class:"upload-demo h-[0] w-[0]",ref_key:"upload",ref:h,name:"blob",data:m(T),action:"#",headers:i,"http-request":m($),accept:".tar,.gz","show-file-list":!1,multiple:!1,"auto-upload":!0,"on-error":J,"on-success":S,"on-change":M},{default:_(()=>[ie(s(c,{ref_key:"open",ref:j,size:"default",type:"default"},{default:_(()=>[...o[2]||(o[2]=[p(" 选择文件 ",-1)])]),_:1},512),[[ce,!1]])]),_:1},8,["data","http-request"]),s(c,{type:"primary",onClick:m(O)},{default:_(()=>[...o[3]||(o[3]=[p("创建备份",-1)])]),_:1},8,["onClick"]),s(c,{onClick:o[0]||(o[0]=P=>m(ze)(S))},{default:_(()=>[...o[4]||(o[4]=[p("上传文件",-1)])]),_:1}),o[5]||(o[5]=B("span",{class:"text-tertiary ml-4px"},"上传格式为.tar,.gz文件",-1))])]),"header-right":_(()=>[s(m(f))]),content:_(()=>[s(m(u))]),"footer-left":_(()=>[s(m(l))]),_:1}),s(A,{modelValue:m(d),"onUpdate:modelValue":o[1]||(o[1]=P=>pe(d)?d.value=P:null),area:52,title:!1},{default:_(()=>[B("div",He,[o[6]||(o[6]=B("span",{class:"mb-[0.8rem]"},null,-1)),s(D,{"text-inside":!0,"stroke-width":20,percentage:m(U)},null,8,["percentage"])])]),_:1},8,["modelValue"]),s(F,{class:"mt-[1rem]",options:[{isHtml:!0,content:"9.5以前版本的备份还原不会在备份列表中显示,如有需要请<span class='bt-link' onClick='openFilePath()'>点击查看</span>"}]})])}}}),Ue=L({__name:"index",setup(e){return(t,r)=>(H(),fe(Ne))}}),tt=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));export{Oe as a,y as b,qe as d,et as g,tt as i,Ze as s};
function __vite__mapDeps(indexes) {
  if (!__vite__mapDeps.viteFileDeps) {
    __vite__mapDeps.viteFileDeps = []
  }
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}