B
    v&ù`«0  ã               @   s<  d dl mZ d dl mZ d dl mZ d dl mZ d dlmZ e ¡  d dlT d dl	Z	d dl
mZ d dlZd	d
„ ZG dd„ deƒZG dd„ deƒZdd„ Zdd„ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZG d!d"„ d"eƒZG d#d$„ d$eƒZd%d&„ ZdS )'é    )Úprint_function)Úabsolute_import)Údivision)Úunicode_literals)Ústandard_library)Ú*N)Úversionc             C   s   t  | ¡}| ¡ S )N)ÚosÚpopenÚread)ÚstrZhandle© r   ú+/usr/share/cagefs-plugins/lve_diagnostic.pyÚmyExec   s    
r   c               @   s(   e Zd ZdZdZdZdZdZdd„ ZdS )Ú	LiteSpeedFÚUnknownc             C   s^   t j d¡| _t j d¡rZttdƒ d¡ƒdkrZd| _dtdƒk| _d	td
ƒk| _tdƒ}d S )Nz/usr/local/lswsz/usr/local/lsws/bin/litespeedzps aux|grep litespeedÚ
é   TÚ1z4grep enableLVE /usr/local/lsws/conf/httpd_config.xmlÚ0z$grep -i phpSuexec\> httpd_config.xmlz%file -L /usr/local/lsws/bin/litespeed)	r	   ÚpathÚisfileÚexistÚlenr   ÚsplitÚlveÚsuexec)ÚselfZarchr   r   r   Ú__init__    s    "zLiteSpeed.__init__N)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ZcorrectArchr   r   r   r   r   r      s   r   c               @   st   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ ZdS )Ú
ApacheInfoFr   c             C   s   |   |¡ d S )N)Údetect)r   r   r   r   r   r   9   s    zApacheInfo.__init__c             C   s2   t  | j ¡t  d¡krdS tdd| jj ƒ dS d S )Nz2.2.0Ti¹  z=Unable to determine list of loaded modules, apache version %sF)r   ÚLooseVersionÚprint_warningÚapache)r   r   r   r   Úcheck_version<   s    zApacheInfo.check_versionc             C   s   t | j d| d ¡dkƒS )Nú Ú_moduleéÿÿÿÿ)r   ÚmodulesÚfind)r   Únamer   r   r   ÚisModuleC   s    zApacheInfo.isModulec             C   sv   | j rr|  d¡| _|  d¡| _|  d¡| _|  d¡| _|  d¡| _|  d¡| _|  d¡| _|  d¡| _	|  d	¡| _
d S )
NÚhostinglimitsÚfcgidZphp5ÚcgiÚcgidÚsuPHPÚfastcgiÚdisable_suexecr   )Ú
moduleInfor.   r/   r0   Úphp_dsor1   r2   r3   r4   r5   r   )r   r   r   r   ÚparseModulesF   s    zApacheInfo.parseModulesc             C   sº   t j |¡| _| jr¶t|d ƒ}| d¡}xX|D ]P}| d¡dkrZ|| d¡d d … | _| d¡dkr0|| d¡d d … | _	q0W t 
| j¡t 
d	¡kr¶d
| _t|d ƒ| _|  ¡  d S )Nz -Vr   zServer version:r*   ú/r   zServer MPM:r(   z2.2Tz -M 2>&1)r	   r   r   r   r   r   r,   r   ÚrfindÚmpmr$   r6   r+   r8   )r   r   ÚtmpÚlinesÚliner   r   r   r#   R   s    

zApacheInfo.detectc             C   s€   | j rxd| j d | j d | j d | j d | j d | j d | j d | j d	 | j	 d
 | j
 d | j }|S d S d S )NzApache verion: z, mpm=z, hostinglimits=z, cgi=z, cgid=z, fcgi=z
, fastcgi=z
, php DSO=z, suphp=z	, suexec=z, disable_suexec=)r   r   r;   r/   r1   r2   r0   r4   r7   r3   r   r5   )r   r   r   r   r   r   a   s    nzApacheInfo.strN)r   r    r!   r   r   r;   r/   r0   r1   r7   r2   r3   r4   r5   r   r6   r+   r   r'   r.   r8   r#   r   r   r   r   r   r"   )   s(   r"   c             C   s$   t d| ƒ t || ƒ t d|ƒ d S )NzCODE: z
Solution: )Úprint)ÚcodeÚ	error_strÚ
error_listÚsolutionr   r   r   Úprint_erroro   s    
rD   c             C   s   t d| ƒ t || ƒ d S )Nz	WARNING: )r?   )r@   rA   rB   rC   r   r   r   r%   t   s    
r%   c               @   s4   e Zd ZdZdZdZdZdd„ Zdd„ Zdd„ Z	dS )	ÚKernelNFc             C   s^   t dƒ d¡| _| j d¡| _| jdkrN| j| jd d … | _tj d¡| _	nd| jk| _
d S )Nz/bin/uname -rr   r   r*   é   z/proc/lve/listZstab)r   ÚrstripÚ
kernelNamer,   ÚisLVEKernelr   r	   r   r   ÚisLVEEnabledÚ
isVZKernel)r   r   r   r   r   }   s    
zKernel.__init__c             C   sÂ   | j r˜| j rˆt | j¡t d¡kr&dS t | j¡t d¡krNtdd| jdƒ q–t | j¡t d¡krvtdd	| jdƒ q–td
d| jdƒ q¾tddddƒ n&| jr®tddddƒ ntdd| jdƒ d S )Nz0.8.28Tz0.8.0ié  z*You are running bugy kernel LVE version %szUpgrade Kernelz0.7.0iê  zoYou are running old kernel LVE version %s
 That version doesn't support multiple cores per LVE or memory limitsië  z5You are running very old, bugy kernel, LVE version %siì  zLVE is not enabledr   zACheck /etc/sysconfig/lve file, and make sure lve rpm is installediM  zYou are running VZ or OpenVZzWCloudLinux is not compatible, see http://www.cloudlinux.com/vz-compat.php for more infoi±  z9You are not running CloudLinux kernel. Your kernel is: %szCheck /boot/grub/grub.conf)rJ   r   r$   rD   rK   )r   r   r   r   Úcheck†   s$    
zKernel.checkc             C   sN   d}| j r|d| j d 7 }n,| jr8|d| j d 7 }n|d| j d 7 }|S )NzKernel: zOK (ú)zVZ (z	Unknown ()rJ   r   rK   rH   )r   Úresultr   r   r   r   ž   s    z
Kernel.str)
r   r    r!   r   rI   rK   rJ   r   rL   r   r   r   r   r   rE   x   s   	rE   c               @   s<   e Zd ZdZdZdZdZdd„ Zdd„ Zdd	„ Z	d
d„ Z
dS )ÚCPz
Unknown CPr   Nc             C   s   t dƒ| _tƒ | _tƒ | _d S )Nz/usr/sbin/apachectl)r"   r&   Ú
RPMCheckerÚrpmsrE   Úkernel)r   r   r   r   r   ®   s    
zCP.__init__c             C   s   | j d | j d | j ¡  S )Nr(   )r-   r   rR   r   )r   r   r   r   r   ³   s    zCP.strc             C   s   | j  ¡  | j ¡  d S )N)rR   rL   rQ   )r   r   r   r   rL   ¶   s    
zCP.checkc             C   sL   t dt| j dd¡ƒƒ t dt| j dd¡ƒƒ t dt| j dd¡ƒƒ d S )	Nzlve=r   z0.8zliblve=Úliblvezcpanel-lve=z
cpanel-lvez0.6)r?   r   rQ   r'   )r   r   r   r   Úcheck_defaultsº   s    zCP.check_defaults)r   r    r!   r-   r   rQ   rR   r   r   rL   rT   r   r   r   r   rO   ¨   s   rO   c                   s8   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡ fdd„Z‡  ZS )	ÚCPanelc                s,   t t| ƒ ¡  d| _tdƒ| _tdƒ| _d S )NZcPanelz/usr/local/cpanel/cpanel -Vz/usr/local/bin/apachectl)ÚsuperrU   r   r-   r   r   r"   r&   )r   )Ú	__class__r   r   r   Ã   s    
zCPanel.__init__c             C   s6   | j  dd¡ | j ¡ r2| j d¡s2tddddƒ d S )Nz	lve-statsz0.5-17r/   iÃ  z"hostinglimits module not installedr   zlRecompile Apache via EasyApache. You can do it either through WHM, or by running /scripts/easyapache --build)rQ   r'   r&   r.   rD   )r   r   r   r   Úcheck_11_30É   s
    
zCPanel.check_11_30c             C   sL   |   dd¡ |   dd¡ |   dd¡ | j  ¡ rH| j d¡sHtddd	d
ƒ d S )Nz
cpanel-lvez0.2zcpanel-lvemanagerzlve-cpanel-pluginz0.1r/   iÃ  z"hostinglimits module not installedr   zlRecompile Apache via EasyApache. You can do it either through WHM, or by running /scripts/easyapache --build)r'   r&   r.   rD   )r   r   r   r   Úcheck_11_28Ð   s    
zCPanel.check_11_28c                sV   t t| ƒ ¡  | j dd¡ | j dd¡ t | j¡t d¡krJ|  ¡  n|  ¡  d S )Nz	lve-statsz0.5-17zliblve-develz0.8-20z11.30)	rV   rU   rL   rQ   Ú	check_errr   r$   rX   rY   )r   )rW   r   r   rL   Ú   s    
zCPanel.check)r   r    r!   r   rX   rY   rL   Ú__classcell__r   r   )rW   r   rU   Â   s   
rU   c                   s   e Zd Z‡ fdd„Z‡  ZS )ÚPleskc                s:   t t| ƒ ¡  d| _tdƒ}| d¡d | _tdƒ| _d S )Nr\   z/bin/cat /usr/local/psa/versionr(   r   z/usr/sbin/apachectl)	rV   r\   r   r-   r   r   r   r"   r&   )r   r<   )rW   r   r   r   å   s
    zPlesk.__init__)r   r    r!   r   r[   r   r   )rW   r   r\   ä   s   r\   c                   s   e Zd Z‡ fdd„Z‡  ZS )ÚDirectAdminc                sl   t t| ƒ ¡  d| _tdƒ}| d¡}d| _tdƒ| _x0|D ](}| 	d¡dkr<| d¡d	  
¡ | _P q<W d S )
Nr]   z1/usr/local/directadmin/custombuild/build versionsr   r   z/usr/sbin/apachectlz!Installed version of DirectAdmin:r*   ú:r   )rV   r]   r   r-   r   r   r   r"   r&   r,   Ústrip)r   r<   Úitem)rW   r   r   r   í   s    


zDirectAdmin.__init__)r   r    r!   r   r[   r   r   )rW   r   r]   ì   s   r]   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚHSpherec                s>   t t| ƒ ¡  d| _tdƒ}| d¡d  ¡ | _|  ¡ | _	d S )NzH-SpherezA/bin/cat /hsphere/local/home/cpanel/shiva/psoft_config/HS_VERSIONr   r   )
rV   ra   r   r-   r   r   r_   r   Úget_apache_typer&   )r   r<   )rW   r   r   r   ú   s
    zHSphere.__init__c             C   s~   t j d¡rvtdƒ}| ¡ }| ¡  xP|D ]H}| d¡d  ¡ }| d¡d  ¡ }|dkr*|dkrjtdƒS tdƒS q*W td	ƒS )
Nz#/hsphere/shared/scripts/scripts.cfgú=r   r   Zapache_versionr   z /hsphere/shared/apache/bin/httpdz%/hsphere/shared/apache2/bin/apachectlÚ )	r	   r   r   ÚopenÚ	readlinesÚcloser   r_   r"   )r   Úfr=   r`   ÚkeyÚvaluer   r   r   rb     s    
zHSphere.get_apache_type)r   r    r!   r   rb   r[   r   r   )rW   r   ra   ù   s   ra   c                   s   e Zd Z‡ fdd„Z‡  ZS )ÚiWorxc                s0   t t| ƒ ¡  d| _| j d¡| _tdƒ| _d S )NZ	InterWorxÚ	interworxz/usr/sbin/apachectl)	rV   rk   r   r-   rQ   Úfind_versionr   r"   r&   )r   )rW   r   r   r     s    ziWorx.__init__)r   r    r!   r   r[   r   r   )rW   r   rk     s   rk   c                   s   e Zd Z‡ fdd„Z‡  ZS )ÚISPMgrc                s(   t t| ƒ ¡  d| _d| _tdƒ| _d S )NZ
ISPManagerZunkz/usr/sbin/apachectl)rV   rn   r   r-   r   r"   r&   )r   )rW   r   r   r     s    zISPMgr.__init__)r   r    r!   r   r[   r   r   )rW   r   rn     s   rn   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )rP   c             C   s   t dƒ d¡| _d S )Nz#/bin/rpm -qa --qf "%{n} %{v}-%{r}
"r   )r   r   ÚrpmList)r   r   r   r   r     s    zRPMChecker.__init__c             C   sJ   t | jƒdk r"tddt | jƒdƒ |  dd¡ |  dd¡ |  d	d¡ d S )
Né2   iÑ  z6Only %d RPMs detected, RPM database might be corruptedzPlease, contact supportr   z0.8-20z	lve-utilsz0.6rS   )r   ro   rD   rZ   )r   r   r   r   rL   #  s    zRPMChecker.checkc             C   sB   |   ||¡}|rd S |d kr,tdd|dƒ ntdd||fdƒ d S )NiÛ  zPackage %s missingz"Please install the missing packageiÜ  zPackage %s is older then %szPlease, update the package)r'   rD   )r   r-   ÚvZresr   r   r   rZ   +  s    zRPMChecker.check_errc             C   sN   xH| j D ]>}| |d ¡dkr|t|ƒd d … }t |¡t |¡kS qW d S )Nr(   r   r   )ro   r,   r   r   r$   )r   r-   rq   r>   Z
pkgVersionr   r   r   r'   5  s
    zRPMChecker.check_versionc             C   s4   t  ¡ }| dt|ƒ¡}x|D ]}d|d  S W d S )Nr-   z%sr   )ÚrpmZTransactionSetZdbMatchr   )r   r-   ZtsZmiÚhr   r   r   rm   <  s
    
zRPMChecker.find_versionN)r   r    r!   r   rL   rZ   r'   rm   r   r   r   r   rP     s
   
rP   c              C   s–   t j d¡rtƒ } n~t j d¡r(tƒ } njt j d¡rHt j d¡rHtƒ } nJt j d¡r\tƒ } n6t j d¡rptƒ } n"t	ƒ }| 
d¡d k	rŒtƒ } ntƒ } | S )Nz/usr/local/cpanel/cpanelz/usr/local/psa/versionz/usr/local/directadminz(/usr/local/directadmin/custombuild/buildz8/hsphere/local/home/cpanel/shiva/psoft_config/HS_VERSIONz/usr/local/ispmgrrl   )r	   r   r   rU   r\   Úisdirr]   ra   rn   rP   rm   rk   rO   )ZcpZrpmssr   r   r   Úget_cpD  s    ru   )Z
__future__r   r   r   r   Zfuturer   Zinstall_aliasesÚbuiltinsr	   Z	distutilsr   rr   r   Úobjectr   r"   rD   r%   rE   rO   rU   r\   r]   ra   rk   rn   rP   ru   r   r   r   r   Ú<module>   s0   F0"&