3
މfi                 @   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addressZip_addrires r   %/var/www/Lyra-ICLA/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_msg8   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_responseG   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   )sizerA   r   )rA   r   id_generator^   s    rE   c              C   s
   t  } | S )N)rE   )Z
command_idr   r   r   get_ccm_command_idb   s    rF   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   )r7   r8   r9   r    r   r   r   delete_ccm_responseg   s    rH   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_runnings   s    rP   zmain.py)socketsysr/   ZarrayZloggingr   r   r,   globalSettingsstringr=   r4   
DeviceNamedeviceZresponse_txt_pathr   r   r!   r;   Zascii_uppercaseZdigitsrE   rF   rH   rP   	CCM_ChecktruerL   r   r   r   r   <module>   s0   
