gHddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl m Z m Z dadadadadadadadZdZd ZdZd Zd Zd Zd ZdZdadadZ dZ!dZ"ej#$ereZneZdZ%dZ&d=dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1d Z2d!Z3d"Z4d#Z5d$Z6d%Z7d&Z8d'Z9d(Z:d)Z;d*Zd-Z?d.Z@d/ZAd0ZBd1ZCd2ZDd3ZEd4ZFd5ZGd6ZHd7ZId8ZJd9ZKd>d<ZLdS)?N) ConfigParserNoSectionError NoOptionError)cpapi) SysCtlConfSYSCTL_CL_CONF_FILE0apachez%/usr/local/lsws/conf/httpd_config.xmlz&/usr/local/lsws/conf/httpd_config.confz/usr/local/lsws/VERSIONz*/usr/lib/systemd/system/postgresql.servicez/etc/rc.d/init.d/postgresqlz/var/lock/cldeploy.lckz/etc/sysconfig/cloudlinuxz/etc/ssh/sshd_configzCloudLinux OS Shared ProzCloudLinux OS SharedzCloudLinux OS SolocHtjdrdSdS)Nz/etc/cpanel/ea4/is_ea4TFospathexistspy/cldetectlib.pyis_ea4rMs# w~~.//t 5rc:dadada tj}|da|da|dan#t $rYnwxYw t dd5}|}tj d |d }tj d |d }d a|d |a ddddS#1swxYwYn#t $rYnwxYwtj drdadadStj drdadadStj dstj drdadadStj drdadadStj drdadadStj drdadadStj drdadadStj drd adadSd!S)"NUnknown0nameversionadditional_infoz/hsphere/shared/versionutf-8encodingzRelease:\s+(.+)rzVersion:\s+(.+)H-Sphere.T/lib64/libnss_ng.so HostingNGnone/usr/local/cwpsrvCentOS_WEB_Panel'/etc/httpd/conf.d/atomia-pa-apache.conf!/storage/configuration/cloudlinux Atomia_agent/usr/local/CyberCP Cyberpanel /var/phmgr PlaneHoster/usr/local/vestaVesta/etc/virtualmin-licenseVirtualminWebmin/usr/local/webuzo/universal.phpWebuzoF)CP_NAME CP_VERSION CP_ISP_TYPErget_cp_description Exceptionopenreadrefindallr risfileisdir) panel_datafdatareleasers rgetCPr@Ts GJK -// V$ *  !23       +g > > > !6688Dj!3T::1=Gj!3T::1=G G#//g//J                         w~~+,, t w}}())$ t  w~~?@@ GMM= > >  t w}})** t w}}\"" t w}}'(( t  w~~/00$ t w~~788 t 5sF+4 AACAB8+ C8B<<C?B<C CCc t|dd5}|}dddn #1swxYwYn#t$r|cYSwxYw|D]}|}||rb||}t |dkr:|d|kr|dcS|S)Nrrrr)r6 readlinesIOErrorstrip startswithsplitlen) file_name param_name separator default_valr=contentline linePartss rget_param_from_filerSs2 )S7 3 3 3 $qkkmmG $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ,,zz|| ??: & & , 9--II!##)A,*<*<*>*>**L*L |))+++++ s,A5 A9A9A AActrtStjdrdantjdrdantjdrdantjdstjdrd antjd rd anttjd rd anQtjdrdan.tjdrdan tjdstjdrdantjdrdantjdrdantjdrdandtjdrdanBtjdrdan t j}|r |dand atS)!Nz/usr/local/cpanel/cpanelcPanelz/usr/local/psa/versionPleskz"/usr/local/directadmin/directadmin DirectAdminz/usr/local/ispmgr/bin/ispmgrz/usr/local/mgr5 ISPManagerz/usr/local/interworx InterWorxz/hsphere/sharedrrr r"r#r$r%r&r+r,r-r.r)r*r'r(r/r0rr)r1r rr:r;rr4)r<s r getCPNamerZs w~~0117  0 1 13  < = =/  6 7 7+ 27==IZ;[;[+  - . .'  ( ) )#  - . .!  * + + $ A B B w}}@AA   ) * *  1 2 2 $ | $ $  + , ,   9 : :  -//   (GGG Nrc,ddlm}i}t}|dkr||d<|dkr |d}n |}|}d}hd}|D]}d} |D]} | j|vrd } n| s|d z }||d <||d <d S)z Add server statistics to status_report dict :param status_report: dict to add statistics to :type status_report: dict r)ClPwdrcprVi'>4 iworx-pma iworx-web iworx-horde iworx-backup iworx-sqmail sw-cp-server avahi-autoipdiworx-roundcubesystemd-networksystemd-bus-proxyeximadmincpsesdrwebiworxlsadmmuninmysqlnginxviapmr clamavcpanelnagiospsaadmpsaftpdovecotmailmanpolkitdpopuservarnishwebappsdiradmindovenullfirebirdsaslauth majordomo nfsnobody cpanelhorde cpanellogin cpanelrrdtool horde_sysusercpanellogaholiccpanelphpgadmincpanelroundcubecpaneleximfiltercpanelphpmyadmincpanelphppgadmincpaneleximscannerroundcube_sysusercpanelconnecttrackiworx_support_userFTrEusersclnN)clcommonr\rZ get_uid_dictvaluespw_name) status_reportr\rescp_nameclpwddr sys_users pw_entriesfoundentrys radd_server_statsrs  CkkG)D 'e  A E   Ihhjj   E} ))*  QJECLM%rc<trtStjts.t dtzdzt jd tdd}| t| dd dd kr)| dd an t| dtd z}tj|stt!j|gt jt jd 5}|\}}dddn #1swxYwY| an#t(t*tf$rd aYnwxYwtS#t,$r2t dtzdzt jdYdSwxYw)NzError: missing z config file.rEF) interpolationstrict license_checkEMAIL@_getemail_scriptTstdoutstderrtextzroot@localhost.localdomainz Error: bad )CP_ADMIN_EMAILr rr:CL_CONFIG_FILEprintsysexitrr7getrHfindrZr1FileNotFoundError subprocessPopenPIPE communicaterrr5)parserget_email_scriptprocout_s rgetCPAdminEmailr+s3 7>>. ) ) .0?BCCC  D%*,,, N### ::ow / / 5 5 7 7 <  #)::owI[?[#\#\ w~~&677,++%%&%?%? 0 !--//FC 000000000000000"%"M3DE > > >!= >  mn,>???  s\"BG6A?F95F F9FF9 F!F98G9GGG G8HHc@tjdS)Nz/etc/cxs)r rr;rrr CXS_checkrPs 7== $ $$rcvttdkrdStjdS)NrUFz&/usr/local/apache/modules/mod_suphp.so)rZr1r rr:rrrmod_suPHP_checkrVs0 KKK(u 7>>B C CCrcttdkrdStdkrdatdkrda t jtjan#t$rYnwxYwdS)NrFrUnobodyrhttpdT) rZr2r1 APACHE_UNAMEpwdgetpwnampw_gid APACHE_GIDr5rrrget_apache_gidr_s{ KKKSu( *  \,//6      4sA A#"A#c:tp tS)z LiteSpeed can be enterprise or open source, and each of them stores config in different formats So this checker will search for one of them )detect_enterprise_litespeeddetect_open_litespeedrrrdetect_litespeedrvs ' ( ( C,A,C,CCrcJtjtS)z* Detects LSWS Enterprise presence )r rr:LITESPEED_CONFIG_FILErrrrrs 7>>/ 0 00rcJtjtS)z( Detects OpenLiteSpeed presence )r rr:LITESPEED_OPEN_CONFIG_FILErrrrrs 7>>4 5 55rc ttdd5}|cdddS#1swxYwYdS#tt t f$rYdSwxYw)z\ Determine Litespeed version. Works for both LSWS Enterprise and OpenLiteSpeed. rCrrNrA)r6LITESPEED_VERSION_FILEr7rHrOSErrorrG)r=s rget_litespeed_versionrs  (# @ @ @ $A6688>>## $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ w 0rrs3A&A  A AAAAA43A4cJtjtSN)r rr:POSTGRE_SERVER_FILErrrdetect_postgresqlrs 7>>- . ..rcttdkrdS tdd5}|}dddn #1swxYwY|dddd d d S#t $rYd SwxYw) NrWFz,/usr/local/directadmin/conf/directadmin.confrrz admindir=rE r/rri)rZr1r6r7rJrHr5)r=rs rdetect_DA_adminrs KKK-u @7 S S S WX&&((C               yy%%a(..t44Q7==cBB2FLLNNN wws5B9A B9AB9AA!B99 CCcTtjtsdS t td5}t |}dddn #1swxYwYtjd|S#t$rYdSwxYw)NFrr/proc/) r rr:CL_SETUP_LOCK_FILEr6intr7r;r5)r=pids rcheck_CL_installingrs 7>>, - -u $w 7 7 7 1affhh--C               w}}^c^^,,, uus4B"A, B,A00B3A04$B B'&B'ctjdsdS tjdjadS#t$rYdSwxYw)Nz/usr/local/nagiosFrtT)r rr;rrr NAGIOS_GIDr5rrr get_nagiosrs\ 7==, - -u\(++2 t uus> A  A c0tddd}|dkS)Nz//usr/local/directadmin/custombuild/options.conf cloudlinux=yes)rS) check_results rda_check_optionsrs!&'XZfhkllL 5  rc~ttd}|d}|t|n|S)z/get fs.enforce_symlinksifowner from sysctl confF) config_file mute_errorszfs.enforce_symlinksifowner)rrrr)sysctlvalues rget_symlinksifownerrs< $7U K K KF JJ3 4 4E*3u:::5rc:tttSr)SUEXEC_ENABLEDdetect_suEXEC_suPHPrrrget_suEXEC_statusrs rc:tttSr) SUPHP_ENABLEDrrrrget_suPHP_statusrs rcBdadat}|dSd|vad|vadS)NF suexec_module suphp_module)rrget_apache_modules)moduless rrrs; NM ""G$/N"g-MMMrcd} tj|dgtjtjd5}|\}}dddn #1swxYwYg}|d}|ddD]b}|s |dd}n#t $rd }YnwxYw|d krM||c|S#ttf$rYdSwxYw) Nz/usr/sbin/httpdz-MTrrrE rrA) rrrrrJrH IndexErrorappendrrG)bin_execrrrrrQmods rrrss H   t ??     ( %%''FC  ( ( ( ( ( ( ( ( ( ( ( ( ( ( (iiooG D  jjll((--a0    byy NN3     W ttsX.C'A C'AC'A)C'-B65C'6 CC'C!C''C<;C<ctj|ddtjdd5}|dcdddS#1swxYwYdS)z0 Executes command with bash interpreter Tz /bin/bashr)shell executablerrbufsizerN)rrrr)commandrs rexecuter s       % !!!$%%%%%%%%%%%%%%%%%%sA  AAcr tr8tdt|tdzzdz}n4tdt|tzdz}|ddkS#t $rYdSt tf$rYdSwxYw)Nz/usr/bin/strings _ea4z | grep jailz jail errorrF)rr strrZrKeyErrorrGr)locationresults rcheck_binary_has_jailr#s  88 `03x f@T7U3V3VVYgghhFF03x 7L3M3MMP^^__F{{<((B.. tt W uusBB B6"B65B6c td}|ddkS#ttf$rYdSwxYw)Nz/usr/sbin/sshd -T | grep usepamz usepam yesr)r rrGr)rs rcheck_SSHd_UsePAMr2sS:;;{{<((B.. W tts '*??c4ttdSdSr)r1rZrrr init_cp_namer:s rc4ttdkS)NrWrr1rrris_darAsNNN m ##rc4ttdkS)NrXrrrr is_ispmanagerrGsNNN l ""rc,ttSr)rr3rrrispmanager5_typerNsNNN rctdkS)NMaster)r3rrrispmanager5_is_masterr!Ts ( ""rc4ttdkS)NrUrrrr is_cpanelr#YsNNN h rc4ttdkS)NrVrrrris_pleskr%_sNNN g rc4ttdkS)NrYrrrris_internetworxr'eNNN k !!rc4ttdkS)Nrrrrr is_hspherer*ksNNN j  rc4ttdkS)Nr rrrr is_hostingngr,qr(rc4ttdkS)Nrrrrr is_unknownr.wsNNN i rcPtj}td|dd5}|D]a}|drJ|dd}t |ccdddSb dddn #1swxYwYd S) zD Returns 0 if there is no openvz, otherwise returns node id rz/statusrrzenvID::rENr)r getpidr6rIrJrHr)rr=rQenv_ids r is_openvzr3|s  )++C #s###g 6 6 6#! # #Dx(( #C+11336{{"" ######## # ################ 1sAB BB"Bc@tjdS)Nz/usr/sbin/cagefsctlr rrris_cagefs_installedr5s 7>>/ 0 00rrTc\t|||d}||S|dvS)N)rO)true1ron)rSlower)rLrMrNrO config_vals rget_boolean_paramr<s=$Y ISWXXXJ     !; ;;r)NrA)rT)Mr rr8rr configparserrrrrrclcommon.sysctlrrr1r2r3rrrrrrrrPOSTGRE_SYSTEMD_PATHPOSTGRE_INITD_PATHrr USEPAM_FILErr!SHARED_PRO_EDITION_HUMAN_READABLESHARED_EDITION_HUMAN_READABLESOLO_EDITION_HUMAN_READABLErr:rr@rSrZrrrrrrrrrrrrrrrrrrrr rrrrrrr!r#r%r'r*r,r.r3r5r<rrrrEsB  DDDDDDDDDD;;;;;;;;        ?E2C2-,$  $>! 627>>&''-.,YYYz     ???D$$$P!!!J%%% DDD.DDD111666   ///         !!! 666 . . .> % % %   $$$ ### ###   """ !!! """       111<<<<<