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/safeDetect.js
import{c as Y,t as Z,r as y,H as I,g as N,o as Q,I as ss,J as ts,p as t,j as o,k as n,q as r,L as w,C as S,F as i,e as h,x as m,s as d,y as _,v as es,B,aX as os,z as rs}from"./base-lib.js?v=1777008528";import{c as as,dD as R,R as cs,d8 as ns,a0 as ls,cZ as is}from"./utils-lib.js?v=1777008528";import{aS as ds}from"./firewall.js?v=1777008528";import{H as us}from"./index387.js?v=1777008528";import"./__commonjsHelpers__.js?v=1777008528";import"./index3.js?v=1777008528";import"./index119.js?v=1777008528";import"./index116.js?v=1777008528";const ps={id:"safeDetectList"},_s={class:"progress-header"},fs={class:"progress-header-cot"},gs={key:0,class:"relative"},ms={class:"absolute top-[1.6rem] left-[2.6rem] flex flex-col"},vs={class:"progress-header-cot"},hs={class:"scanning-progress-title"},ys={class:"color-org"},ws={class:"color-red"},Ss={class:"scanning-progress-cont"},Cs={class:"progress-header-cot"},Es={class:"progress-cont-list"},ks=["onClick"],Ts={class:"progress_type"},xs={class:"progress_status"},bs={key:0,class:"text-danger"},Ds={key:1,class:"text-warning"},Ns={key:1},Bs={key:2,class:"text-secondary"},Rs={key:0},Ms={key:0,class:"progress_fold"},Vs={class:"progress_item_body"},As={class:"info_cont"},Hs={class:"info_cont_desc"},Os=Y({__name:"safeDetect",setup(Ps){const{payment:M}=as(),V=us(),{authType:A}=Z(M.value),H=y(!1),C=[{color:"#888",text:"未安装"},{color:"#666",text:"良好"},{color:"#e6a23c",text:"警告"},{color:"red",text:"危险"}],O={system_account:"系统账户",sshd_service:"SSHD远程服务",file_mode:"重要文件权限及属性",software:"重点软件检测",other:"其他项目检测",backdoor:"后门检测",proc:"恶意进程",history:"历史命令",log:"日志排查",rootkit:"rootkit检测"},P={scanStatus:!1,isEnd:!1,error:0,warn:0,time:0,progress:0,progressColor:"var(--el-color-primary)",progressConfig:{system_account:[],sshd_service:[],file_mode:[],software:[],other:[],backdoor:[],proc:[],history:[],log:[],rootkit:[]},statusTotal:{},allArr:[],result:{},progressStatus:{},active:{system_account:!1,sshd_service:!1,file_mode:!1,software:!1,other:!1,backdoor:!1,proc:!1,history:!1,log:!1,rootkit:!1}},u=y({}),s=I({...P}),j=l=>l+" 分";let p=null;const L=()=>{p=ls({route:"/ws_project",onMessage:F})},$=N(()=>s.scanStatus&&!s.isEnd?"正在扫描":u.value.status?"上次检测时间 "+(R(u.value.msg.time)==="刚刚"?"一分钟内":R(u.value.msg.time)):"当前未进行安全检测"),E=y(""),k=y(""),z=N(()=>s.scanStatus&&!s.isEnd?"正在扫描-".concat(E.value):s.isEnd?"检测时间:"+cs(s.time/1e3,"yyyy-MM-dd"):u.value.status?"若长时间未检测,服务器可能存在安全风险,建议立即检测":"当前安全风险未知,请立即检测"),F=(l,a)=>{if(a.data){const e=JSON.parse(a.data.replace(/'/g,'"'));e.hasOwnProperty("callback")?(p==null||p.close(),s.scanStatus=!1,s.isEnd=!0,s.time=new Date().getTime()):(E.value=e.name,k.value=e.topic,s.progress=parseInt(e.progress),s.progressConfig[e.topic].push(e),s.progressConfig[e.topic].sort((g,v)=>g.status===1&&v.status!==1?1:g.status!==1&&v.status===1?-1:v.status-g.status),s.statusTotal[e.topic]=J(s.progressConfig[e.topic]),s.allArr.push(e),e.status===3&&s.error++,(e.status===2||e.status===3)&&s.warn++,e.status!==1&&(s.progressColor="#fc6d26"))}},J=l=>{const a={};return l.forEach(e=>{a[e.status]?a[e.status]++:a[e.status]=1}),a},W=l=>{s.active[l]=!s.active[l]},q=()=>{if(A.value!=="ltd")return V.openPayView();if(s.scanStatus&&!s.isEnd||s.isEnd,s.scanStatus&&!s.isEnd){p==null||p.close(),T();return}else s.isEnd&&T();s.scanStatus=!0,L(),p==null||p.send({mod_name:"safe_detect",def_name:"get_safe_scan",ws_callback:""})},T=()=>{s.scanStatus=!1,s.isEnd=!1,s.error=0,s.warn=0,s.time=0,s.progress=0,s.progressColor="var(--el-color-primary)",s.progressConfig={system_account:[],sshd_service:[],file_mode:[],software:[],other:[],backdoor:[],proc:[],history:[],log:[],rootkit:[]},s.statusTotal={},s.allArr=[],s.result={},s.progressStatus={},s.active={system_account:!1,sshd_service:!1,file_mode:!1,software:!1,other:!1,backdoor:!1,proc:!1,history:!1,log:!1,rootkit:!1}},G=async()=>{try{const l=await ds();u.value=l.data}catch(l){}};return Q(()=>{G()}),(l,a)=>{var x,b,D;const e=ns,g=os,v=rs,K=ss("bt-loading");return ts((o(),n("div",ps,[a[6]||(a[6]=r("div",{class:"text-large mb-6"},"服务器安全检测",-1)),r("div",_s,[r("div",fs,[r("div",{class:w("progresscirclebar "+(t(u).status?"security ":"")+"text-["+(((x=t(u).msg)==null?void 0:x.security_count)===100?" var(--el-color-primary) ":" #fc6d26 ")+"]")},[t(u).status?(o(),n(i,{key:1},[t(s).scanStatus&&!t(s).isEnd?(o(),n("div",gs,[h(g,{class:"animate-spin",type:"circle",percentage:70,"show-text":!1,"stroke-width":4,"define-back-color":"#fff",color:t(s).warn||t(s).error?"#fc6d26":"var(--el-color-primary)",width:100},null,8,["color"]),r("div",ms,[h(e,{class:"w-[full] px-[.4rem]",src:"/firewall/icon-safe-detect".concat(t(s).warn||t(s).error?"-org":"",".svg")},null,8,["src"]),a[0]||(a[0]=r("span",{class:"text-small font-bold py-[.4rem] leading-none"}," 安全检测 ",-1))])])):(o(),S(g,{key:1,type:"circle",percentage:(b=t(u).msg)==null?void 0:b.security_count,format:j,color:((D=t(u).msg)==null?void 0:D.security_count)===100?"var(--el-color-primary)":"#fc6d26",width:100},null,8,["percentage","color"]))],64)):(o(),S(e,{key:0,class:"w-[10rem]",src:"/firewall/icon-safe-detect.svg"}))],2)]),r("div",vs,[r("div",hs,[t(s).isEnd?(o(),n(i,{key:1},[a[5]||(a[5]=m(" 检测已完成 ",-1)),t(s).error>0||t(s).warn>0?(o(),n(i,{key:0},[a[4]||(a[4]=m(" ,一共发现 ",-1)),t(s).warn>0?(o(),n(i,{key:0},[r("span",ys,d(t(s).warn),1),a[1]||(a[1]=m(" 项风险项 ",-1))],64)):_("",!0),t(s).error>0?(o(),n(i,{key:1},[a[2]||(a[2]=m(" (包含 ",-1)),r("span",ws,d(t(s).error),1),a[3]||(a[3]=m(" 项危险项,请立即处理) ",-1))],64)):_("",!0)],64)):_("",!0)],64)):(o(),n(i,{key:0},[m(d(t($)),1)],64))]),t(s).scanStatus?(o(),S(g,{key:0,percentage:t(s).progress,color:t(s).warn||t(s).error?"#fc6d26":"var(--el-color-primary)","stroke-width":10},null,8,["percentage","color"])):_("",!0),r("div",Ss,d(t(z)),1)]),r("div",Cs,[h(v,{type:t(s).scanStatus&&!t(s).isEnd?"warning":"primary",onClick:q,plain:!!(t(s).scanStatus&&!t(s).isEnd)},{default:es(()=>[m(d(t(s).scanStatus&&!t(s).isEnd?"取消扫描":t(s).isEnd?"重新检测":"立即检测"),1)]),_:1},8,["type","plain"])])]),r("div",Es,[(o(),n(i,null,B(O,(U,c)=>r("div",{key:c,class:w([c+"_item "+(t(s).active[c]?"active":""),"progress_item"])},[r("div",{class:"progress_item_header",onClick:f=>W(c)},[r("div",Ts,[h(e,{class:"title-icon",src:"/firewall/icon-"+c+".svg"},null,8,["src"]),r("span",null,d(U),1)]),r("div",xs,[t(s).statusTotal[c]?(o(),n(i,{key:0},[t(s).statusTotal[c][3]||t(s).statusTotal[c][2]?(o(),n(i,{key:0},[t(s).statusTotal[c][3]?(o(),n("span",bs," 发现"+d(t(s).statusTotal[c][3])+"项危险 ",1)):_("",!0),t(s).statusTotal[c][2]?(o(),n("span",Ds,d((t(s).statusTotal[c][3]?"":"发现")+t(s).statusTotal[c][2])+"项警告 ",1)):_("",!0)],64)):t(s).scanStatus&&t(k)==c?(o(),n("span",Ns," 正在扫描... ")):(o(),n("span",Bs,"无风险项"))],64)):(o(),n(i,{key:1},[t(s).scanStatus&&!t(s).statusTotal[c]?(o(),n("span",Rs," 等待扫描 ")):_("",!0)],64))]),t(s).progressConfig[c]&&t(s).progressConfig[c].length?(o(),n("div",Ms,[h(e,{src:"/firewall/arrow-down.svg",class:"mt-[.6rem]"})])):_("",!0)],8,ks),r("div",Vs,[t(s).progressConfig[c]&&t(s).progressConfig[c].length?(o(!0),n(i,{key:0},B(t(s).progressConfig[c],(f,X)=>(o(),n("div",{key:X,class:w([f.info?"active":"","progress_item_info"])},[r("div",As,[r("div",null,d(f.name.replace("分析网站","")),1),r("div",{class:w("text-["+C[f.status<0?0:f.status].color+"]")},d(C[f.status<0?0:f.status].text),3)]),r("div",Hs,d(f.info||""),1)],2))),128)):_("",!0)])],2)),64))])])),[[K,t(H)]])}}}),Gs=is(Os,[["__scopeId","data-v-7c7093b6"]]);export{Gs as default};