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/useController27.js
import{k as h,M as A,o as U,c4 as tt,c as j,m as Ae,J as at,w as O,c_ as Oe,cZ as $e,db as st,dc as fe,hP as ot,ed as Me,R as nt,f as he,hQ as rt,dF as lt,gp as ct,G as it,e as ne,d3 as ut,jc as gt,a2 as dt,_ as ve,jd as pt,je as ke,jf as mt}from"./utils-lib.js?v=1777008528";import{_ as yt}from"./index131.js?v=1777008528";import{aJ as Re,aI as z,r as i,V as ft,g as oe,H as ae,c as X,w as ht,j as x,k as q,q as p,C as Y,p as s,Q as Be,y as Q,M as I,F as vt,B as bt,L as Te,s as ge,e as d,v as T,x as H,N as ie,az as wt,o as Ve,z as St,bw as _t,bm as Lt,J as Ct,I as Ee}from"./base-lib.js?v=1777008528";import{_ as Ie}from"./index206.js?v=1777008528";import{l as kt,m as Tt,n as Et,o as se,p as xe,q as xt,t as Ft,u as Pt,v as Dt,w as qt,x as At,y as Ot,z as $t,A as be,L as re,k as Mt,B as Rt,C as Bt,D as Vt,E as It,F as Fe,G as Pe,H as Nt,I as Ht,J as Gt,K as jt,M as zt,N as Jt,O as Wt,P as Ut,Q as G,R as Kt}from"./useStore9.js?v=1777008528";import{_ as Ne}from"./index118.js?v=1777008528";import{e as Yt,g as Qt,b as Zt,t as Xt,a8 as ea}from"./index3.js?v=1777008528";import{L as ta}from"./useStore10.js?v=1777008528";var B=function(e){return e.TamperProof="网站防篡改",e.Syssafe="宝塔系统加固",e.Security="堡塔防入侵",e.TamperProofRefactored="网站防篡改程序-重构版",e}(B||{});const He=Re("LOG-SOFT-STORE",()=>{const e=i([]),t=i(""),a=i(),g=i([]),c=i(""),y=i(""),f=i(""),n=i("login"),k=i(""),w=async()=>{try{const r=C=>C.map($=>({name:$,id:$}));return{data:await h({loading:"正在获取日志菜单,请稍后...",request:kt(),data:[Array,r],success:C=>{var $;e.value=C,t.value=($=C[0])==null?void 0:$.name}}),status:!0}}catch(r){return{status:!1,data:[],msg:"获取日志菜单失败"}}},v=async(r="")=>{try{const C=t.value==="Php"?Tt:Et;return{...(await h({loading:"正在获取日志数据,请稍后...",request:C({data:JSON.stringify({name:t.value,search:r})})})).data}}catch(o){return{status:!1,data:[],msg:"获取日志数据失败"}}},S=async()=>{let r={type:1,path:f.value};return await h({loading:"正在清空日志,请稍候...",request:se(r),message:!0})},L=async()=>{const r=A.load("正在获取FTP日志状态,请稍后...");try{const{status:o,msg:C}=await xe({exec_name:"getlog"});return{status:o,data:C}}catch(o){return{status:!1,data:"获取FTP日志状态失败"}}finally{r.close()}},b=async()=>{const r=A.load("正在开启FTP服务,请稍后...");try{const{status:o,msg:C}=await xe({exec_name:"start"});return{status:o,msg:C}}catch(o){return{status:!1,msg:"开启FTP服务失败"}}finally{r.close()}},_=async r=>{try{const o=await h({loading:"正在获取FTP日志,请稍后...",request:xt(r),data:{data:Array,page:String}});return Array.isArray(o==null?void 0:o.data)?{data:o.data,total:U(o.page),other:{}}:{total:0,data:[],other:{}}}catch(o){return{total:0,data:[],other:{}}}},u=async r=>{try{const o=await h({loading:"正在获取FTP操作日志,请稍后...",request:Ft(r),data:{data:Array,page:String}});return Array.isArray(o==null?void 0:o.data)?{data:o.data,total:U(o.page),other:{}}:{total:0,data:[],other:{}}}catch(o){return{total:0,data:[],other:{}}}},F=async()=>{try{const{data:r,status:o}=await h({loading:"正在获取FTP用户名,请稍后...",request:Pt({p:1,limit:99999,search:"",table:"ftps"}),data:{data:Array}});return{data:r,status:o,msg:"获取用户成功"}}catch(r){return{status:!1,data:[],msg:"获取用户失败"}}};B.TamperProof+"",B.Syssafe+"",B.Security+"",B.TamperProofRefactored+"";const P=async r=>{try{let o=null;if(t.value==="Docker"){const{data:C}=await h({request:Dt(r)});o=C,o.total=U(C.page)}else t.value===B.Syssafe?o=await D(r):t.value===B.Security&&(o=await R(r));return{data:o.data,total:o.total,other:{}}}catch(o){return{total:0,data:[],other:{}}}},D=async r=>{try{const{data:o}=await h({loading:"正在获取日志数据,请稍后...",request:qt({data:JSON.stringify({name:"syssafe",search:r.search,ROWS:r.ROWS})})});return{data:o.msg.data,total:o.total||U(o.msg.page),other:{}}}catch(o){return{total:0,data:[],other:{}}}},R=async r=>{try{const o=await h({loading:"正在获取日志数据,请稍后...",request:At({data:JSON.stringify({name:"bt_security",search:r.search,ROWS:r.ROWS})}),data:{"msg.data":[Array,C=>({data:C})],"msg.page":tt()}});return{data:o.data,total:o.total,other:{}}}catch(o){return{total:0,data:[],other:{}}}},ce=async r=>{try{return await h({loading:"正在删除日志,请稍候...",request:se({type:0,id:r.id}),message:!0,success:a.value}),{status:!0,msg:"删除日志成功"}}catch(o){return{status:!1,data:[],msg:"删除日志失败"}}},ee=i("mysqlSlow"),J=i([]),te=async r=>{try{return{data:(await Ot({data:JSON.stringify({limit:"5000",search:r})})).data.msg,status:!0,msg:""}}catch(o){return{status:!1,data:"",msg:"获取日志数据失败"}}},W=async(r,o)=>{try{return{data:(await $t({screening:J.value.length?J.value.join(","):"",keywords:r||""})).data,status:!0,msg:""}}catch(C){return{status:!1,data:"",msg:"获取日志数据失败"}}};return{menuOptions:e,currentName:t,searchValue:k,phpData:g,phpChecked:c,logsMsg:y,logPath:f,getMenuList:w,getSoftLog:v,ftpType:n,getFtpMenu:F,getFtpLogStatus:L,startFtpLog:b,getFtpLogData:_,getFtpActionLog:u,renderSysSecurityLog:R,renderSysSafeLog:D,getPluginLogData:P,mysqlActive:ee,checkList:J,getErrorMysqlData:W,getMysqlLogsData:te,handleMysqlTabClick:r=>{var o;return r==="mysqlSlow"||((o=r.props)==null?void 0:o.name)==="mysqlSlow"?te():W()},delMysqlAllLogEvent:async()=>{try{let r={type:2,assort:ee.value==="mysqlSlow"?"slow":"error"};return await h({loading:"正在清空日志,请稍候...",request:se(r),message:!0}),{status:!0,msg:"清空日志成功"}}catch(r){return{status:!1,msg:"清空日志失败"}}},delAllLogDataEvent:S,delSoftLogEvent:ce,refreshPlugin:a}}),aa=()=>{const e=He();return z(e)},{payment:Ge}=j(),{currentName:M,logsMsg:je,phpChecked:ue,phpData:N,mysqlActive:Z,ftpType:As,logPath:we,refreshPlugin:de}=aa(),{getSoftLog:sa,getFtpMenu:oa,getFtpLogStatus:na,startFtpLog:ra,getFtpActionLog:la,getFtpLogData:ca,delMysqlAllLogEvent:ia,delAllLogDataEvent:ua,getMysqlLogsData:ga,getErrorMysqlData:da,delSoftLogEvent:pa}=He(),ma=["Docker","宝塔系统加固","堡塔防入侵"],Os={title:"FTP日志-功能介绍",ps:"记录FTP登录记录,FTP上传、下载、重命名和删除记录.",source:131,desc:["FTP登录记录","FTP上传记录","FTP重命名记录","FTP删除记录"],tabImgs:[{title:"FTP日志",imgSrc:"https://www.bt.cn/Public/new/plugin/introduce/logs/ftp-logs.png"}]},De=i(!0);ft();const ya=i(""),ze=i(""),fa=i([]),ha=i(!1),$s=async(e,t)=>{const{selectedItem:a}=be();if(M.value=e.name,a.value=e.name,ya.value="",ma.includes(e.name))return de.value&&de.value();if(e.name!=="Mysql"){if(e.name!=="FTP")return await Se(e)}},Se=async(e,t)=>{M.value=e.name;const a=await sa(t);if(M.value==="Php")Ae(a)?N.value=a:N.value=Object.values(a),N.value=N.value.filter(c=>c.status),ue.value===""&&(ue.value=N.value[0].version),va(ue.value);else if(at(a)){const c=a;we.value=(c==null?void 0:c.file)||"",je.value=(c==null?void 0:c.msg)||"暂无数据"}return a},Ms=async e=>{await O({title:"清空日志【".concat(M.value,"】"),icon:"warning-filled",type:"calc",content:"风险操作,清空该日志后,将无法查到以往的日志记录,此操作不可逆,是否继续清空?"}),await ua(),Se({name:M.value})},va=e=>{var t;(t=N.value)==null||t.forEach(a=>{a.version==e&&(je.value=a.msg,we.value=a.file)})},Rs=()=>window.open("/download?filename="+we.value,"_blank","noopener,noreferrer"),ba=async()=>{var t;if(Ge.value.authType!=="ltd")return;const{data:e}=await oa();fa.value=e.map(a=>({label:a.name,value:a.name,key:a.id})),ze.value=((t=e[0])==null?void 0:t.name)||""},wa=async()=>{if((await na()).data==="stop"){await O({title:"FTP服务",content:"FTP服务未启动,无法获取日志,是否立即开启FTP服务?"});const t=await ra();return A.request(t),ha.value=!0,!1}return!0},Bs=async e=>{if(Ge.value.authType!=="ltd")return{data:[],total:0,other:{}};De.value&&(await ba(),De.value=!1);try{if(!await wa())return{data:[],total:0,other:{}};const a={...e};if(a.user_name=ze.value,delete a.ftpType,e.ftpType==="login")return await ca(a);if(e.ftpType==="action")return await la(a)}catch(t){return{data:[],total:0,other:{}}}};var K=function(e){return e.TamperProof="网站防篡改",e.Syssafe="宝塔系统加固",e.Security="堡塔防入侵",e.TamperProofRefactored="网站防篡改程序-重构版",e}(K||{});K.TamperProof+"",K.Syssafe+"",K.Security+"",K.TamperProofRefactored+"";const Sa=async e=>{await O({title:"删除日志【".concat(M.value,"】"),type:"calc",content:"风险操作,删除该日志后,将无法查到以往的日志记录,此操作不可逆,是否继续清空?"}),pa(e)},Vs=[{label:"Mysql慢日志",value:"mysqlSlow"},{label:"Mysql错误日志",value:"mysqlError"}],Is=[{label:"删除",value:"delete",event:async(e,t)=>{const a=async g=>await se({type:0,id:g.id});await e({title:"批量删除",content:"即将删除所选中的日志,是否继续操作?",column:[{prop:"log",label:"日志内容"},Zt()],onConfirm:async()=>(await t(a),de.value(),!1)})}}],qe=()=>[Yt(),{label:"用户",prop:"username"},{label:"详情",prop:"log"},{label:"操作时间",prop:"addtime",align:"right"},Qt([{title:"删除",onClick:Sa}])],Ns=oe(()=>M.value==="宝塔系统加固"?()=>qe().slice(1):()=>qe()),_a=i(""),Hs=[{label:"警告",value:"warning"},{label:"错误",value:"error"},{label:"记录",value:"note"}],Gs=async()=>{await O({title:"清空日志【Mysql".concat(Z.value==="mysqlSlow"?"慢日志":"错误日志","】"),icon:"warning-filled",content:"您真的要清空所有【Mysql".concat(Z.value==="mysqlSlow"?"慢日志":"错误日志","】吗?")}),await ia(),Je()},Je=async e=>{let t=null;Z.value==="mysqlSlow"&&(t=await ga(e)),Z.value==="mysqlError"&&(t=await da(e)),_a.value=t.data||"暂无数据"},js=async({props:e})=>{Z.value=e.name,Je("")},La=["Mysql","FTP","Docker","宝塔系统加固","堡塔防入侵"],zs=oe(()=>La.includes(M.value)),We=Re("LOG-SITE-STORE",()=>{const e=re(),{selectedWebSite:t}=z(e),a=i(!1),g=i(!1),c=i(),y=i(!1),f=i(""),n=ae({ipArea:!1,typeValue:"access",timeValue:"",searchValue:"",keywordSwitch:!1,keywordConfig:{}}),k=i(),w=ae({give:"",keyword:"",cycle:""}),v=i(!1),S=i(!1),L=i(),b=i(),_=i(!1),u=ae({site:[]}),F=i(!1),P=i(),D=i([]),R=ae({ip:"",id:0,port:""}),ce=async()=>{try{return{data:(await h({loading:"正在获取网站列表,请稍后...",request:Mt(),data:{msg:[Array,m=>{c.value=m,t.value=c.value[0]||""}]}})).msg,status:!0}}catch(l){return{msg:"获取网站列表失败 ",status:!1}}},ee=async(l,m)=>{try{const E=await h({loading:"正在清理日志中,请稍后....",request:Rt({siteName:t.value,logType:m,time_search:JSON.stringify(l)}),message:!0});return{status:E.status,msg:E.msg}}catch(E){return{msg:"清理失败",status:!1}}},J=async(l,m)=>{try{const E=await h({loading:"正在导出日志中,请稍后....",request:Bt({siteName:t.value,logType:m,time_search:JSON.stringify(l)}),data:{msg:String,status:Boolean}});return E.status&&window.open("/download?filename="+E.msg,"_blank","noopener,noreferrer"),{status:E.status,msg:"导出".concat(E.status?"成功":"失败"),data:E.msg}}catch(E){return{msg:"导出失败",status:!1}}},te=async l=>{if(t.value)try{const m=await h({loading:y,request:n.typeValue==="error"?Vt(l):It(l),data:{msg:String}});return f.value=(m==null?void 0:m.msg)||"暂无数据",{data:m.msg||"暂无数据",status:!0};W()}catch(m){}},W=async()=>{var l,m;try{const{data:E}=await Fe({sitename:t.value});return n.keywordConfig=E.config,w.give=(l=n.keywordConfig.channel)==null?void 0:l.split(",").filter(et=>et!==""),w.keyword=(m=n.keywordConfig.keys)==null?void 0:m.join(","),w.cycle=n.keywordConfig.cycle,n.keywordSwitch=E.status,{data:{...w},status:!0}}catch(E){return{msg:"获取关键字告警配置失败",status:!1}}},_e=async l=>{try{return await h({loading:"正在设置关键字告警...",request:Pe(l),message:!0}),{status:!0,msg:"设置关键字告警成功"}}catch(m){return{status:!1,msg:"设置关键字告警失败"}}},Le=async l=>{try{return await h({loading:"正在设置关键字告警配置,请稍后...",request:Pe(l),message:!0}),{status:!0,msg:"设置关键字告警成功"}}catch(m){return{status:!1,msg:"设置关键字告警失败"}}},r=async()=>{try{const{data:l}=await h({loading:"正在获取关键字告警配置,请稍后...",request:Fe({sitename:t.value})});return w.cycle=l.config.cycle,w.keyword=l.config.keys.join(","),l.config.channel!=""&&(w.give=l.config.channel.split(",")),{data:w,status:!0}}catch(l){return{msg:"获取关键字告警配置失败",status:!1}}},o=async l=>{try{if(!t.value)return;l.search||(l.search=t.value);const m=await h({loading:v,request:Nt({data:JSON.stringify(l)}),data:{data:Array,page:String}});return{data:m.data,total:U(m.page),other:{}}}catch(m){return{data:[],total:0,other:{}}}},C=async()=>{try{const l=await Ht({search:t.value});return window.open("/download?filename="+l.data.output_file,"_blank","noopener,noreferrer"),{status:!0,msg:"导出成功"}}catch(l){return{status:!1,msg:"导出失败"}}},$=async l=>{try{return await h({loading:"正在删除日志源,请稍候...",request:Gt(l),message:!0,success:Ce}),{status:!0,msg:"删除成功"}}catch(m){return{status:!1,msg:"删除失败"}}},Ze=async l=>{try{return await h({loading:"正在设置日志系统配置中...",request:l.server_id?jt(l):zt(l),message:!0}),{status:!0,msg:"设置成功"}}catch(m){return{status:!1,msg:"设置失败"}}},Xe=async l=>{try{const m=await h({loading:"正在设置日志源中...",request:Jt(l)});return A.request(m.data[0]),_.value=!1,m}catch(m){return{status:!1,msg:"设置失败"}}};i([]);const Ce=async()=>{try{const l=await h({loading:v,request:Wt(),data:Array});return{data:l,total:l.length,other:{}}}catch(l){return{data:[],total:0,other:{}}}};return{siteList:c,getSiteList:ce,logParams:n,preLoading:y,logMsg:f,logScanForm:k,msgForm:w,getSiteLogsData:te,setKeyWordConfigEvent:_e,clearWebLogEvent:ee,outWebLogEvent:J,getKeywordAlarmData:W,getScanData:r,tableLoading:v,getOperateLog:o,outLogs:C,sForm:b,logSysForm:P,sendSource:_,logSystemDialog:F,logSystemForm:R,sourceForm:u,logSystemData:L,logSystemLoad:S,logSystemList:D,getLogSystemData:Ce,getLogSystemSite:async()=>{try{return await h({loading:"正在获取日志服务系统配置中,请稍后...",request:Ut(),data:[Array,D]}),D.value.length>0&&(R.ip=D.value[0].ip,R.port=D.value[0].port,R.id=D.value[0].id),{data:D.value,status:!0}}catch(l){return{msg:"获取日志服务系统配置失败",status:!1}}},logSystemConfirm:Ze,sendSourceConfirm:Xe,delLogSourceEvent:$,onConfirmKeyConfig:Le,isRefreshLogSystem:g,isRefreshList:a}}),Js=()=>z(We()),{selectedItem:Ca}=be(),ka=e=>{let t=[];const a=new Date,g=new Date(a.getFullYear(),a.getMonth(),a.getDate()).getTime()/1e3,c=Math.floor(new Date().getTime()/1e3);switch(e){case"7":t=[g-7*24*60*60,c];break;case"30":t=[g-30*24*60*60,c];break;case"180":t=[g-180*24*60*60,c];break}return t},Ws=async(e,t)=>{switch(e){case"ssh":ta().outLogs(t);break;case"login":G().outLoginLogEvent(t);break;case"crontab":G().outShellLogEvent(t);break;case"website":const a=ka(t.day);We().outWebLogEvent(a,t.type);break}},Ta=(e,t)=>{switch(t){case"soft":Se(e);break;case"crontab":V(e);break}},Ea=(e,t)=>{const a=t==="crontab"?"id":"name",g=e.find(c=>String(c[a])===Ca.value);Ta(g,t),A.success("刷新成功")},le=e=>Xt({type:22,name:"日志",id:999,...e}),xa={class:"flex items-start w-full"},Fa=["onClick","tabindex"],Pa={key:2,class:"menu p-[20px] bg-[#f1f1f120]"},Da={class:"flex-1"},qa={class:"log-view"},Aa={class:"flex items-center"},Oa=X({__name:"index",props:{menuOptions:{default:()=>[]},logsType:{default:"pre"},width:{default:"24"},height:{default:"68"},logContent:{default:""}},emits:["tab-click","search"],setup(e,{emit:t}){const{mainHeight:a}=j(),g=e,c=t,y=re(),{searchValue:f,selectedItem:n}=z(y),k=oe(()=>g.logsType==="Mysql"?a.value-300:g.logsType==="crontab"?a.value-248:a.value-188),w=oe(()=>g.logsType==="crontab"?"id":"name");return ht(()=>g.menuOptions[0],v=>{v&&(n.value=String(v[w.value]))},{once:!0}),(v,S)=>{const L=Oe,b=wt,_=Ie;return x(),q("div",xa,[p("div",{class:Te("flex flex-col mr-[16px]"),style:I("width:".concat(e.width,"rem;"))},[e.logsType=="crontab"?(x(),Y(L,{key:0,class:"mb-[8px] !w-[24rem]",modelValue:s(f),"onUpdate:modelValue":S[0]||(S[0]=u=>Be(f)?f.value=u:null),onSearch:s(ye),placeholder:"请输入日志名称"},null,8,["modelValue","onSearch"])):Q("",!0),e.menuOptions.length>0?(x(),q("div",{key:1,class:"menu",style:I("height:".concat(s(k)-(e.logsType=="crontab"?56:-5),"px;min-height:400px"))},[(x(!0),q(vt,null,bt(e.menuOptions,(u,F)=>(x(),q("span",{onClick:P=>c("tab-click",u),tabindex:F,key:F,style:I("width:".concat(e.width,"rem")),class:Te("menu-hover ".concat(String(u[s(w)])===s(n)?"activeClass":""))},ge(u.tabProps)+" "+ge(u.name),15,Fa))),128))],4)):(x(),q("span",Pa,[d(b,null,{image:T(()=>[...S[2]||(S[2]=[p("i",{class:"svgtofont-empty !text-[4.8rem] text-#999"},null,-1)])]),description:T(()=>[...S[3]||(S[3]=[H("暂无数据",-1)])]),_:1})]))],4),ie(v.$slots,"LogView",{},()=>[p("div",Da,[p("div",qa,[p("div",Aa,[ie(v.$slots,"LogLeft",{},void 0,!0),p("div",{class:"flex items-center",onClick:S[1]||(S[1]=u=>s(le)())},[...S[4]||(S[4]=[p("i",{class:"svgtofont-desired text-medium"},null,-1),p("span",{class:"bt-link"},"需求反馈",-1)])])]),ie(v.$slots,"LogRight",{},void 0,!0)]),d(_,{class:"w-full flex-1",content:e.logContent,isHtml:!0,autoScroll:!0,fullScreen:{title:"全屏查看-日志",onRefresh:()=>{s(Ea)(e.menuOptions,e.logsType)}},style:I("height:"+s(k)+"px;min-height:400px")},null,8,["content","fullScreen","style"])])],!0)])}}}),$a=$e(Oa,[["__scopeId","data-v-47ceb292"]]),Ma={class:"flex items-center"},Ra={key:0,class:"flex items-center inline-block"},Ba=X({__name:"crontab-log",setup(e){const{mainHeight:t}=j(),a=G(),{logsMsg:g,currentItem:c,crontabForm:y}=z(a);return Ve(async()=>{await ye(),await V(pe.value[0])}),(f,n)=>{const k=St,w=st,v=_t,S=yt;return x(),q("div",{class:"flex items-start",style:I({height:s(t)-195+"px",minHeight:"400px"})},[d($a,{logsType:"crontab","menu-options":s(pe),logContent:s(g),onTabClick:s(V),onSearch:s(ye)},{LogLeft:T(()=>[d(k,{class:"!mr-[12px]",onClick:n[0]||(n[0]=L=>s(Ss)(s(c)))},{default:T(()=>[...n[7]||(n[7]=[H(" 清理日志 ",-1)])]),_:1}),s(me)?(x(),Y(k,{key:0,onClick:s(Ls)},{default:T(()=>[...n[8]||(n[8]=[H(" 导出日志 ",-1)])]),_:1},8,["onClick"])):Q("",!0)]),LogRight:T(()=>[p("div",Ma,[s(me)?(x(),q("div",Ra,[d(w,{class:"mr-[12px]",type:"button",onChange:n[1]||(n[1]=L=>s(V)(s(c))),modelValue:s(y).type,"onUpdate:modelValue":n[2]||(n[2]=L=>s(y).type=L),options:s(ws)},null,8,["modelValue","options"]),d(v,{modelValue:s(y).time_search,"onUpdate:modelValue":n[3]||(n[3]=L=>s(y).time_search=L),format:"YYYY/MM/DD","value-format":"x",onChange:n[4]||(n[4]=L=>s(V)(s(c))),onClear:n[5]||(n[5]=L=>s(V)(s(c))),type:"daterange",placement:"bottom-end","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期"},null,8,["modelValue"])])):Q("",!0),d(S,{class:"ml-8px",onRefresh:n[6]||(n[6]=L=>s(V)(s(c)))})])]),_:1},8,["menu-options","logContent","onTabClick","onSearch"])],4)}}}),Va={class:"flex items-center"},Ia={class:"ml-1rem"},Na=X({__name:"login-log",setup(e){j();const t=G(),{getLoginLogsEvent:a}=t,g=he(),c=async()=>{await v(),g.success("刷新成功")},{BtOperation:y}=fe({options:[{label:"刷新日志",type:"button",onClick:c},{label:"导出日志",type:"button",onClick:()=>{vs(L.data)}},{label:"清空日志",type:"button",onClick:()=>{hs(v)}}]}),f=ot({options:is,key:"login_type"}),{BtTable:n,BtSearch:k,BtPage:w,refresh:v,BtRadioButton:S,config:L}=Me({request:b=>{const{p:_,...u}=b;return a({page:_,...u})},columns:[{label:"IP地址(归属地)",prop:"remote_addr",minWidth:100,render:b=>{var _;return d("span",null,[b.remote_addr,H("("),((_=b==null?void 0:b.area)==null?void 0:_.info)||"",H(")")])}},{label:"用户代理",width:800,prop:"user_agent"},{label:"登录状态",render:b=>d("span",{class:"text-".concat(b.login_type?"primary":"danger")},[H("登录"),b.login_type?"成功":"失败"])},{label:"时间",width:150,prop:"login_time",sortable:!0,align:"right",render:b=>nt(b.login_time)}],extension:[f]});return(b,_)=>{const u=Ne;return x(),Y(u,null,{"header-left":T(()=>[p("div",Va,[d(s(y)),p("div",{class:"flex items-center ml-1rem",onClick:_[0]||(_[0]=F=>s(le)())},[..._[1]||(_[1]=[p("i",{class:"svgtofont-desired text-medium"},null,-1),p("span",{class:"bt-link"},"需求反馈",-1)])])])]),"header-right":T(()=>[d(s(S)),p("div",Ia,[d(s(k),{class:"w-[32rem]",placeholder:"请输入搜索关键字"})])]),content:T(()=>[d(s(n),{onSortChange:s(fs)},null,8,["onSortChange"])]),"footer-right":T(()=>[d(s(w))]),_:1})}}}),Ha={class:"flex items-center"},Ga=X({__name:"operate-log",setup(e){const{panel:t}=j(),a=he(),g=async()=>{await v(),a.success("刷新成功")},c=()=>"这是我宝塔面板近期操作日志,帮我分析是否有安全风险:\n".concat(JSON.stringify(b.data)),{BtOperation:y}=fe({options:[{type:"button",label:"刷新日志",onClick:g},{type:"button",label:"导出日志",onClick:()=>{if(!b.data.length)return A.error("暂无数据导出");gs({search:L.value.search})}},{type:"button",label:"清空日志",onClick:()=>ps(v)},{type:"button",label:"IP操作统计",onClick:ys}]}),f=rt({options:us,key:"log_type",other:{placeholder:"请选择分类",filterable:!0,class:"!w-16rem mr-1rem "}}),{BtTable:n,BtSearch:k,BtPage:w,refresh:v,BtTableSelect:S,param:L,config:b}=Me({request:_=>ds({..._,table:"logs"}),columns:[{label:"用户",prop:"username",width:180},{label:"操作类型",prop:"type",width:100,sortable:!0},{label:"详情",render:function(_){const F=new DOMParser().parseFromString(_.log,"text/html");return d("span",{innerHTML:lt(F.body.textContent||"")},null)}},{label:"操作时间",width:150,prop:"addtime",align:"right",sortable:!0}],extension:[f]});return(_,u)=>{const F=ea,P=Ne;return x(),Y(P,null,{"header-left":T(()=>[p("div",Ha,[d(s(y)),p("div",{class:"flex items-center ml-1rem",onClick:u[0]||(u[0]=D=>s(le)())},[...u[1]||(u[1]=[p("i",{class:"svgtofont-desired text-medium"},null,-1),p("span",{class:"bt-link"},"需求反馈",-1)])]),s(t).showAiTip?(x(),Y(F,{key:0,class:"ml-[1rem]",tips:[{text:"AI分析操作日志",message:c}]},null,8,["tips"])):Q("",!0)])]),"header-right":T(()=>[d(s(S)),d(s(k),{class:"!w-[28rem]",placeholder:"请输入搜索关键字"})]),content:T(()=>[d(s(n))]),"footer-right":T(()=>[d(s(w))]),_:1})}}}),ja={class:"flex items-center justify-between mb-[12px]"},za={class:"flex items-center"},Ja={class:"ml-[1.6rem]"},Wa={class:"inline-flex items-center"},Ua=X({__name:"run-log",setup(e){const{mainHeight:t}=j(),a=G(),{search:g,logMsg:c,size:y}=z(a),{getRunDataEvent:f}=a,{containerRef:n,tipStyle:k,selectedText:w,handleAiAnalyze:v}=ct({customPrompt:"这是我宝塔面板的运行日志,帮我分析是否有安全风险:\n"}),S=he(),L=async()=>{await f(),S.success("刷新成功")},{BtOperation:b}=fe({options:[{label:"刷新日志",type:"button",onClick:L},{label:"清空日志",type:"button",onClick:()=>bs()}]});return Ve(f),(_,u)=>{const F=Oe;return x(),q("div",null,[p("div",ja,[p("div",za,[d(s(b)),p("span",Ja,"日志大小:"+ge(s(it)(s(y))),1),p("div",{class:"flex items-center ml-1rem",onClick:u[0]||(u[0]=P=>s(le)())},[...u[3]||(u[3]=[p("i",{class:"svgtofont-desired text-medium"},null,-1),p("span",{class:"bt-link"},"需求反馈",-1)])])]),p("div",Wa,[d(F,{modelValue:s(g),"onUpdate:modelValue":u[1]||(u[1]=P=>Be(g)?g.value=P:null),onSearch:s(f),placeholder:"请输入搜索关键字",class:"!w-[30rem]"},null,8,["modelValue","onSearch"])])]),p("div",{class:"flex relative",ref_key:"logContainerRef",ref:n},[d(Ie,{content:s(c),isHtml:!0,autoScroll:!0,fullScreen:{title:"全屏查看-运行日志",onRefresh:s(f)},style:I("height:".concat(s(t)-240,"px;min-height:40rem"))},null,8,["content","fullScreen","style"]),d(Lt,{name:"tip-fade"},{default:T(()=>[s(w)?(x(),q("div",{key:0,class:"log-ai-tip",style:I(s(k)),onClick:u[2]||(u[2]=(...P)=>s(v)&&s(v)(...P))},[...u[4]||(u[4]=[p("img",{src:"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='14' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='3.001' x2='12.142' y1='0' y2='1.302' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23C2C63E'/%3E%3Cstop offset='1' stop-color='%2329A73A'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='11.464' x2='15.12' y1='9.333' y2='9.853' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23C2C63E'/%3E%3Cstop offset='1' stop-color='%2329A73A'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg fill-rule='evenodd'%3E%3Cpath fill='url(%23a)' d='m7.52 4.258 4.322 1.576L7.52 7.41 5.921 11.67l-1.6-4.259L0 5.834l4.322-1.576L5.922 0z'/%3E%3Cpath fill='url(%23b)' d='m13.271 11.036 1.73.63-1.73.63-.64 1.704-.64-1.703-1.728-.63 1.729-.631.64-1.703z'/%3E%3C/g%3E%3C/svg%3E",class:"ai-icon"},null,-1),p("span",{class:"tip-text"},"AI分析",-1)])],4)):Q("",!0)]),_:1})],512)])}}}),Ka=$e(Ua,[["__scopeId","data-v-d94653f3"]]),{getLogsMenu:Ya,outWebSiteEvent:Qa,getLogsInfoEvent:Za,clearRunLogsEvent:Xa,clearOpLogsEvent:es,getLogsDataEvent:ts,clearShellLogEvent:as,outShellLogEvent:Us,getIpDataEvent:ss,outLoginLogEvent:Ks,clearLoginLogEvent:os}=G(),{clearDataForm:ns,outDataForm:Ue,configData:Ke,selectedItem:rs}=be(),{currentItem:Ye,isRefreshList:Qe,crontabForm:ls}=Kt(),cs=re(),pe=i([]),me=i(!1),Ys=[{label:"操作日志",name:"operateLog",render:()=>d(Ga,null,null)},{label:"登录日志",name:"loginLog",lazy:!0,render:()=>d(Na,null,null)},{label:"运行日志",name:"runLog",lazy:!0,render:()=>d(Ka,null,null)},{label:"计划任务日志",name:"crontabLog",lazy:!0,render:()=>d(Ba,null,null)}],is=[{label:"全部",value:""},{label:"登录成功",value:"1"},{label:"登录失败",value:"0"}],us=[{label:"全部",value:"全部"},{label:"网站管理",value:"网站管理"},{label:"用户登录",value:"用户登录"},{label:"数据库管理",value:"数据库管理"},{label:"FTP管理",value:"FTP管理"},{label:"文件管理",value:"文件管理"},{label:"安装器",value:"安装器"},{label:"软件管理",value:"软件管理"},{label:"守护程序",value:"守护程序"},{label:"面板设置",value:"面板设置"},{label:"进程管理",value:"进程管理"},{label:"面板配置",value:"面板配置"},{label:"PHP配置",value:"PHP配置"},{label:"计划任务",value:"计划任务"},{label:"防火墙管理",value:"防火墙管理"}],Qs=e=>{},gs=async({search:e},t)=>{e&&await O({title:"导出日志",icon:"warning-filled",content:"是否导出关键字为【".concat(e,"】的面板操作日志?")});const a=await Qa(e);window.open("/download?filename="+a.data.output_file,"_blank","noopener,noreferrer")},ds=async e=>{try{const t=e;return t.search||delete t.search,t.log_type==="全部"&&(t.log_type=""),await Za(t)}catch(t){return{data:[],total:0,other:{}}}},ps=async e=>{await O({icon:"warning-filled",type:"input",title:"清空面板操作日志",input:{content:"清空日志"},content:"风险操作,清空该日志后,将无法查询面板以往的操作记录,是否继续操作?"});const t=await es();e&&e(t)},ms=[{label:"IP地址",prop:"ip"},{label:"IP属地",prop:"info"},{label:"操作次数",prop:"operation_num"}],ys=async()=>{const{data:e}=await ss();e.sort((t,a)=>a.operation_num-t.operation_num),ne({title:"IP操作统计",area:60,component:()=>d("div",{class:"p-20px"},[Ct(d(ut,{"max-height":"360",column:ms,data:e},null),[[Ee("bt-loading"),"ipLoading"],[Ee("bt-loading"),"'正在加载表格数据,请稍后...'","title"]])])})},fs=({column:e,prop:t,order:a},g)=>{const y=gt(((f,n)=>n==="ascending"?pt(ke(f)):mt(ke(f)))(t,a),g);return{data:y,total:y.length,other:{}}},hs=async e=>{try{await O({icon:"warning-filled",type:"input",title:"清空面板登录日志",input:{content:"清空日志"},content:"风险操作,清空该日志后,将无法查到以往的日志记录,此操作不可逆,是否继续清空?"}),await os(),Qe.value=!0,e&&e()}catch(t){}},vs=async e=>{if(e.length===0)return A.error("暂无数据导出");Ue.value.type=cs.getType("login"),Ke.value={type:"login"},ne({title:"导出日志",area:44,component:()=>ve(()=>import("./index160.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),showFooter:!0})},bs=async e=>(await O({icon:"warning-filled",title:"清空面板运行日志",type:"calc",content:"风险操作,清空该日志后,将无法查到以往的日志记录,此操作不可逆,是否继续清空?"}),await Xa()),ws=[{label:"全部",value:""},{label:"异常",value:"warring"}],V=async e=>{try{if(!dt(e,"object",!1,null,!0))return A.error("当前未选定日志数据");Ye.value=e,rs.value=String(e.id),me.value=e.sType==="webshell";const{type:a,time_search:g}=ls.value;let c=[];const y=g;Ae(y)&&y.length&&(c=[y[0]/1e3,y[1]/1e3]);const f={type:a,id:e.id,time_search:JSON.stringify(c)},{status:n,msg:k}=await ts(f);n||A.error(k)}catch(t){return{data:"获取日志错误!",status:!1}}},Ss=async e=>{ne({title:"清理【"+e.name+"】日志",area:44,component:()=>ve(()=>import("./index333.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{tips:"",type:"crontab",clearEvent:()=>_s()},showFooter:!0})},_s=async e=>{const{day:t}=ns.value;await O({icon:"warning-filled",type:"calc",title:"清空日志",content:"清空".concat(t!=="all"?t+"天外":"","日志后,将无法查询").concat(t!=="all"?t+"天外":"","日志记录,此操作不可逆,是否继续清理?")});const a=await as({id:Ye.value.id,day:t==="all"?"":t});return Qe.value=!0,a},Ls=async()=>{Ue.value.type=re().getType("crontab"),Ke.value={type:"crontab"},ne({title:"导出日志",area:44,component:()=>ve(()=>import("./index160.js?v=1777008528"),__vite__mapDeps([]),import.meta.url),compData:{type:"crontab"},showFooter:!0})},ye=async e=>{const t=await Ya(e);pe.value=t.data};export{$a as A,Js as B,ka as C,We as L,Is as T,ha as a,He as b,Qs as c,le as d,Vs as e,fa as f,Je as g,Gs as h,De as i,Hs as j,js as k,Ns as l,_a as m,Se as n,Ws as o,Os as p,zs as q,Bs as r,ya as s,Ys as t,ze as u,ma as v,Rs as w,Ms as x,va as y,$s as z};
function __vite__mapDeps(indexes) {
  if (!__vite__mapDeps.viteFileDeps) {
    __vite__mapDeps.viteFileDeps = []
  }
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}