3
hh                 @   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)addressZip_addrires r   (/var/www/Adoption-ELS/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)message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file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   )sizerD   r   )rD   r   id_generator]   s    rH   c              C   s
   t  } | S )N)rH   )Z
command_idr   r   r   get_ccm_command_ida   s    rI   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!   )r9   r:   r;   r"   r   r   r   delete_ccm_responsef   s    rK   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    rS   zmain.py)socketsysr1   ZarrayZloggingr   r   r.   globalSettingsstringr@   r6   
DeviceNamedeviceZresponse_txt_pathr   r   r#   r>   ascii_uppercasedigitsrH   rI   rK   rS   	CCM_ChecktruerO   r   r   r   r   <module>   s0   
