3
xHih                 @   s   d dl Z d dlZd dlZd dlT d dlZd dlZd dlmZ d dlZd dlT d dl	Z	d dl
Z
d dlZeZdZdd Zdd Zd	d
 Zdd Zde	je	j fddZdd Zdd Zdd Zeekred nd adS )    N)*)callz/home/c             C   sV   | j d}t|dkrNx:|D ],}|j rBt|tddkrBd}qqd}P qW nd}|S )N.   r      TF)splitlenisdigitintrange)Zaddressip_addrires r   $/var/www/Lyra-HSL/cgi/global_func.pycfgValidate   s    

r   c             C   sn   d}d}t | }|t | }|dkr0|jd}n&|dkrD|jd}n|dkrV|jd}|d | t| }|S )	NZ0000z</msg>	   0c   Z00i  Z000)r   rfindstr)messageZlengthtailZlength_messagek
msg_lengthr   r   r   ccm_msg_length(   s    
r   c             C   sX   y0t | }dj|| }t|d}tjt|g}W n" tk
rR } zW Y d d }~X nX d S )Nz</msg>{0}{1}</msg>zutf-8)r   formatbytes
subprocessr   CGIpath	Exception)r   r   Z
socket_cmdZ
socket_msgZprocess1er   r   r   send_ccm_msg7   s    
r"   c             C   s   ytd}t d d t|  d | }d}x0|dk rVtjj|rBd}q(|d }tjd q(W t|d	}|j }|j	  |S  t
k
r } ztj jd
ddS d }~X nX d S )Nzccm_response.txtb'r   d   e      g?rzCCM socket is not activefail)descriptionstatus)ccm_response_pathr   ospathisfiletimesleepopenreadcloser    jsonJSONEncoderencode)uuidfilenameccm_response_filefileZfoZCcmResponser!   r   r   r   get_ccm_responseF   s    

r<   r   c                s   dj  fddt| D S )N c             3   s   | ]}t j V  qd S )N)randomchoice).0_)charsr   r   	<genexpr>^   s    zid_generator.<locals>.<genexpr>)joinr   )sizerB   r   )rB   r   id_generator]   s    rF   c              C   s
   t  } | S )N)rF   )Z
command_idr   r   r   get_ccm_command_ida   s    rG   c             C   sV   y.d}t d d t|  d | }tj| W n" tk
rP } zW Y d d }~X nX d S )Nzccm_response.txtr#   r$   )r,   r   r-   remover    )r8   r9   r:   r!   r   r   r   delete_ccm_responsef   s    rI   c             C   sd   yDt jddgdd}x(|j D ]}| |krd|krdadS qW dadS  t jk
r^   dadS X d S )NZpsZauxT)universal_newlinesZgrepr'   F)r   check_output
splitlinesCCMCalledProcessError)Zprocess_nameoutputliner   r   r   is_ccm_runningr   s    rQ   zmain.py)socketsysr0   ZarrayZloggingr   r   r-   globalSettingsstringr>   r5   
DeviceNamedeviceZresponse_txt_pathr   r   r"   r<   Zascii_uppercaseZdigitsrF   rG   rI   rQ   	CCM_ChecktruerM   r   r   r   r   <module>   s0   
