5/9eIddlmZddlmZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z ddl mZddlmZmZmZdadadadadadadad Zd Zd ZdZd Zd ZdZ dZ!dZ"da#da$dZ%dZ&dZ'ej()ereZneZdZ*dZ+d?dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4d Z5d!Z6d"Z7d#Z8d$Z9d%Z:d&Z;d'Zd*Z?d+Z@d,ZAd-ZBd.ZCd/ZDd0ZEd1ZFd2ZGd3ZHd4ZId5ZJd6ZKd7ZLd8ZMd9ZNd:ZOd;ZPd@d>ZQdS)A)absolute_import)print_functionN) SysCtlConfSYSCTL_CL_CONF_FILE)get_cl_version)SafeConfigParserNoSectionError NoOptionError0apachez%/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_ea4rRs# w~~.//t 5rc0dadada tj}|da|da|dan#YnxYw t d5}|}tjd|d}tjd |d}d ad ||a dddd S#1swxYwYn#YnxYwtj d rdadad Stj drdadad Stj dstj drdadad Stj drdadad Stj drdadad Stj drdadad Stj drdadad Stj drdadad SdS) NUnknown0nameversionadditional_infoz/hsphere/shared/versionzRelease:\s+(.+)rzVersion:\s+(.+)H-Spherez{0}.{1}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_TYPEcpapiget_cp_descriptionopenreadrefindallformatrrisfileisdir) panel_datafdatareleasers rgetCPr?Ys GJK -// V$ *  !23     + , , 6688Dj!3T::1=Gj!3T::1=G G"))'7;;J                     w~~+,, t w}}())$ t  w~~?@@ GMM= > >  t w}})** t w}}\"" t w}}'(( t  w~~/00$ t w~~788 t 5s8+48C A$B</ C<CCCCC c t|d}|}|n#t$r|cYSwxYw|D]}|}||rb||}t|dkr:|d|kr|dcS|S)Nrr)r4 readlinescloseIOErrorstrip startswithsplitlen)fileName paramName separator default_valr<contentline linePartss rget_param_from_filerSs 3  ++--  ,,zz|| ??9 % % , 9--II!##)A,*<*<*>*>)*K*K |))+++++ s8; A  A ctrtStjdrdantjdrdantjdrdantjdstjdrd 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/sharedrrrr r!r"r#r$r)r*r+r,r'r(r%r&r-r.rr)r/rrr9r:r2r3)r;s r getCPNamerZs w~~0117  0 1 13  < = =/  6 7 7+ 27==IZ;[;[+  - . .'  ( ) )#  - . .!  * + + $ A B B w}}@AA   ) * *  1 2 2 $ | $ $  + , ,   9 : :  -//   (GGG Nrcddlm}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'>3 iworx-pma iworx-web iworx-horde iworx-backup iworx-sqmail sw-cp-server avahi-autoipdiworx-roundcubesystemd-networksystemd-bus-proxyeximadmincpsesdrwebiworxlsadmmuninmysqlnginxviapmclamavcpanelnagiospsaadmpsaftpdovecotmailmanpolkitdpopuservarnishdiradmindovenullfirebirdsaslauth majordomo nfsnobody cpanelhorde cpanellogin cpanelrrdtool horde_sysuser webappsapachecpanellogaholiccpanelphpgadmincpanelroundcubecpaneleximfiltercpanelphpmyadmincpanelphppgadmincpaneleximscannerroundcube_sysusercpanelconnecttrackiworx_support_userFTrDusersclnN)clcommonr\rZ get_uid_dictpw_name) status_reportr\rescp_nameclpwddr sys_usersuidfoundentrys radd_server_statsr s  CkkG)D 'e  A E   IsV  E} ))*  QJECLM%rctrtStjts.t dtzdzt jd tdd}| t| dd dd kr)| dd an t| dtd z}tj|stt!j|gt jt jd }|\}}| an#t(t*tf$rd aYnwxYwtS#t dtzdzt jdYdSxYw)NzError: missing z config file.rDF) interpolationstrict license_checkEMAIL@_getemail_scriptTstdoutstderrtextzroot@localhost.localdomainz Error: bad )CP_ADMIN_EMAILrrr9CL_CONFIG_FILEprintsysexitrr5getrHfindrZr/FileNotFoundError subprocessPopenPIPE communicater r )parserget_email_scriptpouterrs rgetCPAdminEmailr1s 7>>. ) ) .>???  !).000 N### ::ow / / 5 5 7 7 <  #)::owGY?Y#Z#Z w~~&677,++$&6%7 XbXgnrsss]]__ c!$"M3DE > > >!= > mN*?:;;;  s2"BG6B*F! G!F=:G<F== G0G:cHtjdrdSdS)Nz/etc/cxsTF)rrr:rrr CXS_checkrQs" w}}Z  turc~ttdkr#tjdrdSdSdS)NrUz&/usr/local/apache/modules/mod_suphp.soTF)rZr/rrr9rrrmod_suPHP_checkrZs< KKK( 7>>B C C 45urcttdkrCtdkrdatdkrda t jtjan#YnxYwdSdS)NrrUnobodyrhttpdTF)rZr0r/ APACHE_UNAMEpwdgetpwnampw_gid APACHE_GIDrrrget_apache_gidrfsi KKKS h  #L j "L l33:JJ  Dtus AAc: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_litespeedr}s ' ( ( C,A,C,CCrcJtjtS)z* Detects LSWS Enterprise presence )rrr9LITESPEED_CONFIG_FILErrrrrs 7>>/ 0 00rcJtjtS)z( Detects OpenLiteSpeed presence )rrr9LITESPEED_OPEN_CONFIG_FILErrrrrs 7>>4 5 55rc ttd5}|cdddS#1swxYwYdS#tt t f$rYdSwxYw)z\ Determine Litespeed version. Works for both LSWS Enterprise and OpenLiteSpeed. rBNr@)r4LITESPEED_VERSION_FILEr5rHrOSErrorrG)r<s rget_litespeed_versionrs  (# . . $!6688>>## $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ w 0rrs3A&A  A AAAAA21A2cRtjtrdSdS)NTF)rrr9POSTGRE_SERVER_FILErrrdetect_postgresqlrs# w~~)**turcxttdkr tdd}|}||dddddd S#Yd SxYwd S) NrWz,/usr/local/directadmin/conf/directadmin.confrBz admindir=rD r/rriF)rZr/r4r5rFrJrH)r<rs rdetect_DA_adminrs KKK- CSIIA&&((C GGIII99[))!,22488;AA#FFrJPPRR R 77us BB22B7cZtjtr t td}t |}|tjdt|zrdSdS#YdSxYwdS)NrB/proc/TF) rrr9CL_SETUP_LOCK_FILEr4intr5rFr:str)r<pids rcheck_CL_installingrs w~~())  '--Aaffhh--C GGIIIw}}Xc#hh.// tu 55us A9B##B(ctjdr$ tjdjadS#YdSxYwdS)Nz/usr/local/nagiosrtTF)rrr:rrr NAGIOS_GIDrrr get_nagiosrsJ w}}()) h//6J4 55us <Ac8tddd}|dkrdSdS)Nz//usr/local/directadmin/custombuild/options.conf cloudlinux=yesTF)rS) check_results rda_check_optionsrs+&'XZfhkllLuturc~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:tttSN)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|dgtjtjd}|\}}g}|d}|ddD]b}|s |dd}n#t $rd }YnwxYw|d krM||c|S#ttf$rYdSwxYw) Nz/usr/sbin/httpdz-MTrrrD rr@) rrrrrJrH IndexErrorappendrrG)bin_execrrrrrQmods rrrs H  h-jojodh i i i==??SiiooG D  jjll((--a0    byy NN3     G tts6A+C0-BC B-*C,B--!CC$#C$c~tj|ddtjdd}|dS)z0 Executes command with bash interpreter Tz /bin/bashr)shell executablerrbufsizer)rrrr)commandprocs rexecuter  sH       D     a  rcz tr8tdt|tdzzdz}n4tdt|tzdz}|ddkrdSdS#t $rYdSt tf$rYdSwxYw)Nz/usr/bin/strings _ea4z | grep jailz jail errorrTF)rr rrZrKeyErrorrGr)locationresults rcheck_binary_has_jailr0s  88 `03x f@T7U3V3VVYgghhFF03x 7L3M3MMP^^__F ;;| $ $ * *45 tt W uusBB B:&B:9B:c td}|ddkrdSdS#ttf$rYdSwxYw)Nz/usr/sbin/sshd -T | grep usepamz usepam yesrTF)r rrGr)rs rcheck_SSHd_UsePAMrAs]:;; ;;| $ $ * *45 W tts(.AAc4ttdSdSr)r/rZrrr init_cp_namerLs rc4ttdkS)NrWrr/rrris_darRsNNN m ##rc4ttdkS)NrXrrrr is_ispmanagerrXsNNN l ""rc,ttSr)rr1rrrispmanager5_typer_sNNN rctdkS)NMaster)r1rrrispmanager5_is_masterr!es ( ""rc4ttdkS)NrUrrrr is_cpanelr#jsNNN h rc4ttdkS)NrVrrrris_pleskr%psNNN g rc4ttdkS)NrYrrrris_internetworxr'vNNN k !!rc4ttdkS)Nrrrrr is_hspherer*|sNNN j  rc4ttdkS)Nrrrrr is_hostingngr,r(rc4ttdkS)Nrrrrr is_unknownr.sNNN i rcDtj}tdt|zdz}|D]U}|dr>|dd}t|cSVdS)zD Returns 0 if there is no openvz, otherwise returns node id rz/statuszenvID::rDr) rgetpidr4rrErIrJrHr)rlinesrQenv_ids r is_openvzr4s )++C CHH$y0 1 1 ; ; = =E ??8 $ $ ZZ__Q'--//Fv;;     1rc@tjdS)Nz/usr/sbin/cagefsctlrrrris_cagefs_installedr6s 7>>/ 0 00rrTc\t|||d}||S|dvS)N)rO)true1ron)rSlower) file_name param_namerNrO config_vals rget_boolean_paramr?s=$Y ISWXXXJ     !; ;;r)Nr@)rT)R __future__rrrrr6rrclcommon.cpapir2clcommon.sysctlrrclcommon.utilsrfuture.moves.configparserrr r r/r0r1rrrrrrrrPOSTGRE_SYSTEMD_PATHPOSTGRE_INITD_PATHrr USEPAM_FILErr!SHARED_PRO_EDITION_HUMAN_READABLESHARED_EDITION_HUMAN_READABLESOLO_EDITION_HUMAN_READABLErr9rr?rSrZrrrrrrrrrrrrrrrrrrrr rrrrrrr!r#r%r'r*r,r.r4r6r?rrrrKsD'&&&&&%%%%%%  ;;;;;;;;))))))UUUUUUUUUU        ?E2C2-,$  $>! 627>>&''-.,YYYz    "???D$$$P@.DDD111666         "   666 . . .4 ! ! !   " $$$ ### ###   """ !!! """       111<<<<<