a
    d                     @   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
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d dS )    N)*)callz/home/c                 C   sT   |  d}t|dkrL|D ].}| r@t|tddv r@d}qqd} qPqnd}|S )N.   r      TF)splitlenisdigitintrange)addressZ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|d}n&|dkrD|d}n|dkrV|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   s0   t | }d|| }t|d}tt|g}d S )Nz</msg>{0}{1}</msg>zutf-8)r   formatbytes
subprocessr   CGIpath)r   r   Z
socket_cmdZ
socket_msgZprocess1r   r   r   send_ccm_msg8   s    
r!   c                 C   sp   d}t d d t|  d | }d}|dk rRtj|r>d}q$|d }td q$t|d	}| }|	  |S )
Nccm_response.txtb'r   d   e      g?r)
ccm_response_pathr   ospathisfiletimesleepopenreadclose)uuidfilenameccm_response_filefilefoZCcmResponser   r   r   get_ccm_responseD   s    
r7   r   c                    s   d  fddt| D S )N c                 3   s   | ]}t  V  qd S N)randomchoice).0_charsr   r   	<genexpr>Y       zid_generator.<locals>.<genexpr>)joinr   )sizer?   r   r>   r   id_generatorX   s    rD   c                  C   s
   t  } | S r9   )rD   )Z
command_idr   r   r   get_ccm_command_id\   s    rE   c                 C   s.   d}t d d t|  d | }t| d S )Nr"   r#   r$   )r)   r   r*   remove)r2   r3   r4   r   r   r   delete_ccm_responsea   s    rG   c                 C   sf   zFt jddgdd}| D ] }| |v rd|vrda W dS qdaW dS  t jy`   daY dS 0 d S )	NZpsZauxT)universal_newlinesZgrepr'   r   F)r   check_output
splitlinesCCMCalledProcessError)Zprocess_nameoutputliner   r   r   is_ccm_runningj   s    
rO   zmain.py)socketsysr-   arrayZloggingr   r   r*   globalSettingsstringr:   
DeviceNamedeviceZresponse_txt_pathr   r   r!   r7   ascii_uppercasedigitsrD   rE   rG   rO   r   r   r   r   <module>   s*   	