PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /opt/imunify360/venv/share/imunify360/scripts
Viewing File: /opt/imunify360/venv/share/imunify360/scripts/imunify-doctor.sh
#!/bin/bash VERSION="8.5.3" LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 DEST=/root/cl-report UPLOAD_URL=https://doctor.cloudlinux.com/doctor/upload CAT=`command -v cat` UNAME=`command -v uname` CP="Unknown" SERVER_ID= main_ip='NA' scriptname="imunify-doctor" IMUNIFY360_PIDFILE=/var/run/imunify360.pid IMUNIFY360_AGENT_PIDFILE=/var/run/imunify360-agent.pid # custom tmp dir from imunify360.spec for symlink attack prevention tmpdir=/var/imunify360/tmp sqlite_path=/opt/alt/sqlite/usr/bin/sqlite3 IMUNIFY360_DB=/var/imunify360/imunify360.db IMUNIFY360_RESIDENT_DB=/var/imunify360/imunify360-resident.db IMUNIFY360_IPLIST_DB=/var/imunify360/imunify360-ipsetlists.db db_command="$sqlite_path $IMUNIFY360_DB" db_command_resident="$sqlite_path $IMUNIFY360_RESIDENT_DB" db_command_iplist="$sqlite_path $IMUNIFY360_IPLIST_DB" cleanup() { rm -f $DEST $DEST.wget } test_curl() { command -v curl >/dev/null 2>&1 return $? } test_wget() { command -v wget >/dev/null 2>&1 if [ 0 -eq $? ]; then if [ -x `command -v wget` ]; then return 0 fi fi return 1 } curl_upload() { curl -s -H "serverid: $SERVER_ID" -F reportfile=@"$DEST" $UPLOAD_URL } wget_upload() { echo -e "--FILEUPLOAD\r\n" > $DEST.wget echo -e "--FILEUPLOAD\r\n" > $DEST.wget echo -e "Content-Disposition: form-data; name=\"reportfile\"; filename=\"$DEST\"\r\n" >> $DEST.wget echo -e "Content-Type: application/octet-stream\r\n" >> $DEST.wget echo -e "Media Type: application/octet-stream\r\n\r\n" >> $DEST.wget cat $DEST >> $DEST.wget echo -e "--FILEUPLOAD--\r\n" >> $DEST.wget wget -O - -qq -t 1 --header="serverid: $SERVER_ID" --header="Content-type: multipart/form-data; boundary=FILEUPLOAD" --post-file $DEST.wget $UPLOAD_URL } get_server_id() { SERVER_ID=$(/opt/imunify360/venv/bin/python -c 'import json; import sys; print(json.load(sys.stdin)["id"])' < /var/imunify360/license.json) if [[ -z "$SERVER_ID" ]]; then SERVER_ID="${main_ip//./_}" fi } init_main_ip() { if test_curl then main_ip=`curl -s -L http://cloudlinux.com/showip.php` 2>/dev/null else main_ip=`wget -qq -O - http://cloudlinux.com/showip.php` 2>/dev/null fi } get_main_ip() { sep "Main IP" echo "$main_ip" >> $DEST echo >>$DEST } upload() { if test_curl then curl_upload else wget_upload fi } report_error_and_exit() { echo "$1" exit 1 } mecho(){ echo $1 >> $DEST } start(){ if ! test_wget; then if ! test_curl; then echo "Cannot find wget or curl" fi #echo "Using curl" fi echo "------ CL INFO ---" > $DEST } time_stamp(){ echo "" >> $DEST echo "TS: $(date)" >> $DEST } sep(){ echo "------ $1 ---" >> $DEST } run(){ sep "$1" sh -c "$1" >> $DEST 2>&1 time_stamp } run_cb(){ sep "$1" $1 >> $DEST 2>&1 result=$? time_stamp return $result } dump() { sep "cat $1" $CAT $1 >> $DEST 2>&1 echo >> $DEST 2>&1 time_stamp } detect_cp() { CP_VERSION="Unknown" SOFTACULOUS=0 if [ -d "/usr/local/psa/admin/" ]; then CP="Plesk" CP_VERSION=`cat /usr/local/psa/version` if [ -e "/usr/local/softaculous" ]; then SOFTACULOUS=1; fi fi if [ -d "/usr/local/cpanel/whostmgr/docroot/" ]; then CP="cPanel" CP_VERSION=`/usr/local/cpanel/cpanel -V` if [ -e "/usr/local/cpanel/whostmgr/cgi/softaculous" ]; then SOFTACULOUS=1; fi fi if [ -d "/usr/local/interworx/" ]; then CP="InterWorx" CP_VERSION=`cat /usr/local/interworx/iworx.ini|grep version` if [ -e "/usr/local/softaculous" ]; then SOFTACULOUS=1; fi fi if [ -d "/usr/local/ispmgr/" ]; then CP="ISPmanager" CP_VERSION=`/usr/local/ispmgr/bin/ispmgr -v` if [ -e "/usr/local/softaculous" ]; then SOFTACULOUS=1; fi fi if [ -d "/usr/local/directadmin/plugins/" ]; then CP="DirectAdmin" CP_VERSION=`/usr/local/directadmin/custombuild/build versions|sed -n 2p|cut -d":" -f2` if [ -e "/usr/local/directadmin/plugins/softaculous" ]; then SOFTACULOUS=1; fi fi if [ -d "/usr/local/hostingcontroller/" ]; then CP="Hosting Controller" if [ -e "/usr/local/softaculous" ]; then SOFTACULOUS=1; fi fi if [ -d "/hsphere/shared" ]; then CP="H-Sphere" fi sep "Control Panel" mecho "CP: $CP" mecho "VERSION: $CP_VERSION" mecho "SOFTACULOUS: $SOFTACULOUS" } detect_httpd() { PERL_BIN=$(which perl 2>>/dev/null) echo echo "HTTP Server Running Processes: " echo IFS=$(echo -en "\n\b") for proc in $(ps -eo pid,user,group,cmd 2>>/dev/null | egrep "\b(httpd|apache2|litespeed|lshttpd)\b" | grep -v "egrep"); do echo "[$proc]" proc_pid=$(echo "$proc" | awk '{print$1}') echo "Bin:" $(readlink "/proc/${proc_pid}/exe" 2>>/dev/null) echo "Environment:" cat "/proc/${proc_pid}/environ" 2>>/dev/null | tr '\0' '\n' | head -30 echo done unset IFS echo http_bins=$(ps -eo pid,comm 2>>/dev/null | egrep "\b(httpd|apache2)\b" | awk '{print "/proc/"$1"/exe"}' | xargs -n 1 readlink | uniq | egrep "\b(httpd|apache2)\b") for http_bin in "$http_bins"; do if [ -z "$http_bin" ]; then continue fi echo "HTTP Binary Info: " echo -e "$http_bin\n" $http_bin -V 2>&1 echo $http_bin -M 2>&1 echo if [ -z "$PERL_BIN" ]; then continue fi httpd_root=$($http_bin -V | grep HTTPD_ROOT | cut -d= -f2 | tr -d '"' ) httpd_config=$($http_bin -V | grep SERVER_CONFIG_FILE | cut -d= -f2 | tr -d '"' ) if [ -z "$httpd_config" ]; then continue fi if [ ! ${httpd_config:0:1} = "/" ]; then httpd_config="$httpd_root/$httpd_config" fi pl_script_path="$(dirname $(readlink -e "$0"))/mk_apache_conf_digest.pl" if [ -e "$pl_script_path" ]; then echo "Server Configs:" $PERL_BIN "$pl_script_path" "$httpd_config" "$httpd_root" 2>>/dev/null fi done } http_server_info() { detect_httpd 2>>/dev/null | head -5000 } backup_systems_info() { if [ ! -f /var/restore_infected/acronis_api_token.json ]; then echo "/var/restore_infected/acronis_api_token.json: no such file." else echo "/var/restore_infected/acronis_api_token.json: " # "username": "AB-99658-51" /opt/imunify360/venv/bin/python -m json.tool < /var/restore_infected/acronis_api_token.json fi echo echo "imunify360-agent backup-systems extended-status: " imunify360-agent backup-systems extended-status -v --json | tee $tmpdir/backup_systems_info.$$ /opt/imunify360/evnv/bin/python >$tmpdir/backup_systems_info.$$.current <<ENDPY import json print(json.load(open("$tmpdir/backup_systems_info.$$"))["items"]["backup_system"]) ENDPY rm $tmpdir/backup_systems_info.$$ rm $tmpdir/backup_systems_info.$$.current } webshield_selfcheck() { /usr/share/imunify360-webshield/self_check.py } pam_db_size() { mod_db_path=$(awk -F= '$1 == "mod_db_path" {print $2}' /etc/pam_imunify/i360.ini) du --human-readable --summarize "$mod_db_path" } version() { sep "Version of doctor script" echo "Version: $VERSION" >> $DEST } trap cleanup EXIT start version init_main_ip get_main_ip get_server_id detect_cp run "date" run "$CAT /proc/cpuinfo" run "$UNAME -a" run "$UNAME -r" run "$UNAME -m" run "$UNAME -p" run "$UNAME -o" dump "/etc/redhat-release" dump "/etc/os-release" dump "/var/imunify360/license.json" dump "/etc/sysconfig/imunify360/imunify360.config" dump "/etc/sysconfig/imunify360/imunify360-merged.config" run "tail -n +1 /etc/sysconfig/imunify360/imunify360.config.d/*" dump "/etc/sysconfig/imunify360/cpanel/imunify360.conf" run "ls -lhaR /var/lib/unified-access-logger" run "du -hs0 /var/lib/unified-access-logger" run "tail -n3000 /var/log/imunify360/console.log" run "tail -n3000 /var/log/imunify360/debug.log" run "tail -n3000 /var/log/imunify360/network.log" run "tail -n3000 /var/log/imunify360/acronis-installer.log" run "tail -n3000 /var/log/imunify360/error.log" run "tail -n3000 /var/log/imunify360-webshield/access.log" run "tail -n3000 /var/log/imunify360-webshield/error.log" run "tail -n3000 /var/ossec/logs/alerts/alerts.log" run "tail -n3000 /usr/local/directadmin/custombuild/custombuild.log" run "tail -n3000 /var/log/patchman/patchman.log" dump "/etc/issue" dump "/etc/sysconfig/kernel" dump "/etc/sysconfig/kcare/systemid" dump "/proc/uptime" dump "/proc/loadavg" dump "/proc/vmstat" dump "/proc/devices" dump "/proc/diskstats" dump "/proc/cmdline" dump "/proc/mdstat" dump "/proc/meminfo" dump "/proc/swaps" dump "/proc/filesystems" dump "/proc/mounts" dump "/proc/interrupts" dump "/boot/grub/grub.conf" dump "/proc/version" dump "/etc/passwd" run "ls -la /etc/apt/sources.list.d/" run "tail -n 50 /etc/apt/sources.list.d/*imunify*" run "ls -la /etc/apt/preferences.d/" run "tail -n 50 /etc/apt/preferences.d/*" run "zgrep -C 5 imunify /var/log/apt/history.log*" run "zgrep -C 5 imunify /var/log/apt/term.log*" run "apt policy imunify360-firewall" run "ls -la /etc/yum.repos.d/" run "tail -n 50 /etc/yum.repos.d/{*imunify360*,*sensor*}" run "grep DEFAULT /etc/default/grub" run "grep vmlinuz /boot/grub2/grub.cfg| sed 's/root=.*//'" dump "/boot/grub2/grub.cfg" dump "/proc/zoneinfo" run "ls /etc/grub.conf /boot/grub/grub.conf /boot/grub/menu.lst" run "ls -l /boot" run "grep Port /etc/ssh/sshd_config" run "dmidecode" run "systemd-detect-virt" run "virt-what" run "ipcs -m|sed -e s/-/=/g" run "sysctl -a" dump "/etc/sysctl.conf" run 'rpm -q -a --queryformat="%{N}|%{V}-%{R}|%{arch}\n"' packages=$(rpm -qa imunify* 2>>/dev/null) for package in $packages; do run "rpm -V $package" done run "dpkg -l" run "tail -n10000 /var/log/messages" run "ls -lR /var/cache/kcare/" dump "/etc/sysconfig/kcare/kcare.conf" dump "/etc/kdump.conf" run "/opt/imunify360/venv/bin/python -m pip freeze" [[ -f "$IMUNIFY360_PIDFILE" ]] && run "echo ${IMUNIFY360_PIDFILE}; ls -l /proc/$(cat ${IMUNIFY360_PIDFILE})/fd" [[ -f "$IMUNIFY360_AGENT_PIDFILE" ]] && run "echo ${IMUNIFY360_AGENT_PIDFILE}; ls -l /proc/$(cat ${IMUNIFY360_AGENT_PIDFILE})/fd" run "df -h" dump "/etc/userdomains" run "ps aux --sort=-%mem | head -20" run "ps aux --sort=-%cpu | head -20" run "ps aux | grep -i imunify" run "crontab -l" run "service imunify360 status" run "service imunify-antivirus status" run "service imunify360-webshield status" run "service wsshdict status" run "service firewalld status" run "service ossec-hids status" run "service fail2ban status" run "service httpd status" run "service lshttpd status" run "service patchman-client status" run_cb "webshield_selfcheck" run_cb "pam_db_size" run "imunify360-pam status --yaml" run "ls -la /etc/pam.d/" run "cat /etc/pam_imunify/i360.ini" if [ -e "/usr/sbin/csf" ]; then run "csf --status" run "lfd --status ; echo $?" run "service lfd status" run "service csf status" run "csf -V" dump "/etc/csf/csf.conf" dump "/etc/csf/csf.deny" dump "/etc/csf/csf.allow" dump "/etc/csf/csf.ignore" run "tail -n3000 /var/log/lfd.log" fi run "cxs --version" if [ -e "/usr/bin/firewall-cmd" ]; then run "timeout 5 firewall-cmd -V" run "timeout 5 firewall-cmd --state" run "tail -n3000 /var/log/firewalld" fi run "service cpanel status" dump "/var/cpanel/dnsonly" run "service mysql status" run "ps aux | grep -i cphulk" run "ipset -V" run "ipset save | head -n3000" run "ipset list -t | head -n3000" run "iptables -V" run "iptables-save | head -n3000" dump "/proc/sys/net/ipv6/conf/all/disable_ipv6" run "ifconfig" run "echo .tables | $db_command" run "echo \"select plugin, count(*) from incident;\" | $db_command_resident" run "echo \"select listname, count(*) from iplist;\" | $db_command_resident" run "echo \"select iplist_id, count(*) from iplistrecord;\" | $db_command_iplist" run "echo \"select * from iplist order by ctime desc limit 1000;\" | $db_command_resident" run "echo \"select * from incident order by timestamp desc limit 1000;\" | $db_command_resident" run "echo \"select * from country limit 1000;\" | $db_command" run "echo \"select * from country_list order by ctime desc limit 1000;\" | $db_command" run "echo \"select * from last_synclist limit 1000;\" | $db_command_resident" run "echo \"select * from migratehistory limit 1000;\" | $db_command" run "echo \"select * from malware_hits limit 1000;\" | $db_command" run "echo \"select * from malware_ignore_path limit 1000;\" | $db_command" run "echo \"select * from malware_scans limit 1000;\" | $db_command" run "du --human-readable /var/imunify360/imunify360.db" run "imunify360-agent blacklist country list --json --limit 2000" run "imunify360-agent blacklist ip list --json --limit 2000" run "imunify360-agent graylist ip list --json --limit 2000" run "imunify360-agent whitelist country list --json --limit 2000" run "imunify360-agent whitelist ip list --json --limit 2000" run "imunify360-agent rstatus" run "imunify360-agent rstatus --json -v" run "imunify360-agent version" run "imunify360-agent 3rdparty conflicts --json | /opt/imunify360/venv/bin/python -m json.tool" run "imunify360-agent config show --json -v" run "imunify360-agent notifications-config show --json -v" run "grep License /var/log/imunify360/console.log | tail -n 1000" run "grep 'Server is offline' /var/log/imunify360/console.log | tail -n 1000" run "grep 'SensorAlert' /var/log/imunify360/console.log | tail -n 3000" run "grep 'modsec' /var/log/imunify360/console.log | tail -n 3000" run "ls -la /etc/sysconfig/imunify360/" run_cb "backup_systems_info" run "tail -n3000 /var/log/i360deploy.log" run "tail -n3000 /var/log/imav-deploy.log" run "tail -n3000 /var/ossec/logs/active-responses.log" run "tail -n3000 /var/ossec/logs/alerts/alerts.log" run "tail -n3000 /var/log/yum.log" run "tail -n3000 /var/log/minidaemon.log" # cPanel run "tail -3000 /usr/local/apache/logs/error_log" run "tail -3000 /usr/local/apache/logs/access_log" run "tail -3000 /usr/local/apache/logs/modsec_audit.log" # EA4 run "tail -3000 /etc/apache2/logs/modsec_audit.log" # plesk run "tail -3000 /usr/local/apache/logs/modsec_audit.log" # DA run "tail -3000 /var/log/httpd/modsec_audit.log" run "tail -3000 /var/log/trueimage-setup.log" run "/usr/local/cpanel/scripts/modsec_vendor list" run "whmapi1 modsec_get_configs" run "whmapi1 modsec_get_settings" run "cat /etc/apache2/conf.d/modsec2.imunify.conf" run "cat /usr/local/apache/conf/includes/modsec2.imunify.conf" run "ls /var/cpanel/cwaf" # prepend each particular log with ==> logfilename <== string run "tail --lines +0 /var/log/imunify360/register_unregister_post_error_*.log" # prepend each particular log with ==> logfilename <== string run "tail --lines +0 /var/log/imunify360/*hardenedphp.log.*" run "tail --lines +0 /var/log/imunify360/*kernelcare.log*" run "tail --lines +0 /var/log/imunify360/*ea_php.log*" run "ls /opt/alt/php*/usr/bin/php" run "ls /opt/cpanel/ea-php*/root/usr/bin/php" run 'rpm -qa --queryformat "%{NAME} %{RELEASE}\n" "ea-php*"' run "getenforce" run "sestatus" run "ss -u -a" run "ss -x -a | grep defence360agent" run "nc -v -w 5 -i 1 imunify360.cloudlinux.com 443" run "nc -v -w 5 -i 1 148.251.142.83 443" dump "/usr/local/cpanel/version" run "ls /etc/rc.d/init.d/" run "systemctl list-units --all" run "systemctl status aibolit-resident.socket" run "curl ipinfo.io" run "netstat -tulpan | tail -n 3000" run "netstat -tulpan | wc -l" # only tcp listening sockets & program run "netstat -tlpn" run "lsmod | grep ip_set" dump "/etc/cagefs/cagefs.mp" for f in /var/log/imunify360/native_da.hook_log.* do dump $f done ### PLESK run "/usr/local/psa/admin/sbin/modsecurity_ctl --list-rules" run "/usr/local/psa/admin/sbin/modsecurity_ctl --list-rules --enabled" run "/usr/local/psa/admin/sbin/modsecurity_ctl --status" run "/usr/local/psa/bin/server_pref --show-web-app-firewall" run_cb "http_server_info" # collect info on how huge /var/cpanel/secdatadir/ip.pag is run "ls -lh /var/cpanel/secdatadir/*" run "printenv" run "/usr/libexec/run-with-intensity show" # colect webshield info run "tail -3000 /var/log/wsshdict/wsshdict.log" run "tail -3000 /var/log/imunify360/imunify360-wafd.log" # collect UAL log run "tail -3000 /var/log/imunify360/imunify360-unified-access-logger/log.rotate" if [ -e "/etc/kdump.conf" ]; then KDUMP_PATH=`grep ^path /etc/kdump.conf|cut -d' ' -f2` if [ -z "$KDUMP_PATH" ] ; then run "ls -lR /var/crash" else run "ls -lR $KDUMP_PATH" fi fi run dmesg run "ls -la /var/ossec/etc/VERSIONS/" run "ls --lcontext /var/ossec" run "ls --lcontext /var/ossec/bin" run "ls --lcontext /var/ossec/logs" run "ls -la /etc/httpd/conf/modsecurity.d/rules/" run "ls -la /etc/apache2/conf.d/modsec_vendor_configs/" run "cat /etc/httpd/conf/modsecurity.d/rules/custom/VERSION" run "cat /usr/local/directadmin/custombuild/custom/modsecurity/conf/VERSION" run "cat /etc/apache2/conf.d/modsec_vendor_configs/imunify*/VERSION;echo" run "cat /var/cpanel/modsec_cpanel_conf_datastore" run "cut -d\":\" -f1 /etc/userplans | sort -n | uniq | wc -l" run "cut -d\":\" -f1 /etc/userplans | sort -n | uniq" run "cut -d\":\" -f2 /etc/virtual/domainowners | sort -n | uniq" run "cut -d\":\" -f2 /etc/virtual/domainowners | sort -n | uniq | wc -l" run "plesk db \"SELECT COUNT(DISTINCT cl_id) FROM domains\"" run "httpd -t" run "journalctl --no-pager -u imunify360 --since -1d" run "journalctl --no-pager -u imunify360-agent --since -1d" run "journalctl --no-pager -u imunify360-unified-access-logger --since -1d" # Imunify Email run "ie-config status" upload && echo || report_error_and_exit "Report file upload failed. Please try again."