U
    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kr@d}qqd} qPqnd}|S )N.   r      TF)splitlenisdigitintrange)Z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)messageZ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fileZfoZCcmResponser   r   r   get_ccm_responseD   s    
r4   r   c                    s   d  fddt| D S )N c                 3   s   | ]}t  V  qd S N)randomZchoice).0_charsr   r   	<genexpr>Y   s     zid_generator.<locals>.<genexpr>)joinr   )sizer;   r   r:   r   id_generatorX   s    r?   c                  C   s
   t  } | S r6   )r?   )Z
command_idr   r   r   get_ccm_command_id\   s    r@   c                 C   s.   d}t d d t|  d | }t| d S )Nr    r!   r"   )r'   r   r(   remove)r0   r1   r2   r   r   r   delete_ccm_responsea   s    rB   c                 C   sh   zFt jddgdd}| D ] }| |krd|krda W dS qdaW dS  t jk
rb   daY dS X d S )	NZpsZauxT)universal_newlinesZgrepr%   r   F)r   check_output
splitlinesZCCMCalledProcessError)Zprocess_nameoutputliner   r   r   is_ccm_runningj   s    
rI   zmain.py)socketsysr+   ZarrayZloggingr   r   r(   globalSettingsstringr7   
DeviceNamedeviceZresponse_txt_pathr   r   r   r4   Zascii_uppercaseZdigitsr?   r@   rB   rI   r   r   r   r   <module>   s*   	