
    Sh\                        d dl Z d dlZd dlZd dlZd dlZd dl Z d dlZ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
Z
d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dlmZ d dlZd dlZd dlmZ d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dlZd dlZd dlZdej         d<   e j!        "                    ej#        d	          Z$e j!        "                    ej#        d
          Z%dZ&de j'        v r e(e j'        d                   Z&e j'        d         Z)d dl*Z*dde j!        "                    ej+        d          diZ,dde j!        "                    ej+        d	          diZ-dde j!        "                    ej+        d
          diZ.dej/        dde&ddddddZ0dZ1 G d dej2                  Z3 G d dej2                  Z4 G d dej2                  Z5d d!d"Z6d# Z7dS )$    N)*)gmtimestrftime)	timedelta)Image)urlparse   	with_dateezvizlinkyi  PORTMDP/Trunning)ztools.staticdir.onztools.staticdir.dirz0.0.0.0   Fz./error.logz./access.log)zserver.socket_hostzserver.socket_portserver.thread_poolz
log.screenzlog.error_filezlog.access_file)r   globalz/mnt/NUC/datac                        e Zd Z fdZej        d             Zej        dd            Zej        dd            Zd Z	 xZ
S )	
AppRunningc                    t          t          |                                            t          d           i | _        	 t          t          j                            t          d          d          5 }t          j        |          | _        d d d            n# 1 swxY w Y   t          | j                                                   d S #  Y d S xY w)Nzapp initrunning_data.picklerb)superr   __init__EKOTrunning_dataopenospathjoinrootpickleloadEKOXkeys)selffd	__class__s     /deploy/server_https/server.pyr   zAppRunning.__init__h   s    
D""$$$z$RW\\$ 566== (BD( ( ( ( ( ( ( ( ( ( ( ( ( ( (  !!!!!44s0    3C 3BC BC  B!)C Cc                 $    t          d           dS Nz0 ==================== TEST =====================okr   r&   s    r)   testzAppRunning.tests       9:::	    Nc                 B   t          |           t          j        |          }|| j        |<   t	          t
          j                            t          d          d          5 }t          j
        | j        |t          j                   d d d            n# 1 swxY w Y   dS )Nr   wb)protocolOK)r$   jsonloadsr   r   r   r   r    r!   r"   dumpHIGHEST_PROTOCOL)r&   runnerdatar'   s       r)   savezAppRunning.savey   s    v,,,	D		$"$FBGLL455t<< H	;t "v/FGGGGH H H H H H H H H H H H H H H 
s   !'BBBc                 b    t          |           t          j        | j        |                   }|S N)r$   r6   dumpsr   )r&   r:   sds      r)   r#   zAppRunning.load   s)    v,,,z$#F+,,"	)r1   c                 R    t           j                            | dt                     d S )N/running)cherrypytreemountconfig_runningr.   s    r)   rE   zAppRunning.mount   s"    
-dJ77777r1   )NNr>   )__name__
__module____qualname__r   rC   exposer/   r<   r#   rE   __classcell__r(   s   @r)   r   r   g   s        	 	 	 	 	 /  /
 /   / /   /
8 8 8 8 8 8 8r1   r   c                   d     e Zd Z fdZej        d             Zd Zej        d             Z xZ	S )AppEZvizc                     t          t          |                                            t          d           || _        d S )Nzapp ezviz init)r   rN   r   r   app0)r&   rP   r(   s     r)   r   zAppEZviz.__init__   s9    $  """$)))r1   c                 $    t          d           dS r+   r-   r.   s    r)   r/   zAppEZviz.test   r0   r1   c                 n    t                       t          j                            | dt                     d S )Nz/ezviz)EKOrC   rD   rE   config_ezvizr.   s    r)   rE   zAppEZviz.mount   +    %%%
-dHl33333r1   c                    t                       t          t          j                            t
          d          d          5 }t          d           |                                }|                    d| 	                                          }|                    dt          j                  }|dd                    | j        j                  z   z  }|cd d d            S # 1 swxY w Y   d S )N
index.htmlrmainINFOMYIPz<br> Devices : ,)rS   r   r   r   r    ezvizDirr   readreplaceinfoappr[   rP   devices_connectedr&   filer;   s      r)   indexzAppEZviz.index   s    %%%BGLL<00#66 $<<<
))++4
,,vtyy{{
+
+4
,,vsx
(
(4sxx	(CDDDD4                  s   BC!!C%(C%)
rG   rH   rI   r   rC   rJ   r/   rE   re   rK   rL   s   @r)   rN   rN      s            
 /  /4 4 4 /
 
 /
 
 
 
 
r1   rN   c                        e Zd ZdZdZdZdZeZ fdZd Z	e
j        d             Ze
j        d             Zd	 Ze
j        d
             Z xZS )AppLinkyzhttp://192.168.1.55/data_linkyr	   i  i:	 c                 R   t          t          |                                            t          d           g | j        t          t          j                                                  d| _        t          j
        | j        d          }d|_        |                                 d S )Nzapp linky init)valuesinterval_secdate )targetargsT)r   rg   r   r   Tstrdatetimenowd	threadingThreaddaemon_linkydaemonstart)r&   threadr(   s     r)   r   zAppLinky.__init__   s    $  """F!%%''(( $& 4#42>>>&&-,,.....r1   c                     t          d           	 d\  }}	 t          j                            | j                  5 }t          j        |          }t          t          |d                             dz  t          t          |d                             }}d d d            n# 1 swxY w Y   n&# t          $ r}t          |           Y d }~nd }~ww xY w| j        d                             ||f           t          | j        d                   | j        k    rK| j        d                             d           | j        d	         t!          | j        
          z
  | j        d	<   t%          j        | j                   o)Nrw   r	   )r   r   Iinstd   pappri   r   rk   )seconds)r   urllibrequesturlopenurlr6   r#   intfloat	Exceptionr$   rs   appendlenMAX_LENpopr   ro   timesleep)r&   instpppr;   es         r)   rv   zAppLinky.daemon_linky   s   x... 74					)	) GQIaLLT5g''((,c%V2E2E.F.F"TG G G G G G G G G G G G G G G
  	 	 	GGGDDDD	 6(T"I&&&
 46(t|++F8VF^i&?&?&??DF6N:df-s;   $B/ AB#B/ #B''B/ *B'+B/ /
C9CCc                     t           j                                         }t          t           j                                                   | j        d<   t	          j        | j                  }|S )Nrr   )rq   rr   rp   rs   r6   r?   )r&   rr   r@   s      r)   r;   zAppLinky.data   sN    #h'++--..$&-z$&"	)r1   c                 $    t          d           dS r+   r-   r.   s    r)   r/   zAppLinky.test   r0   r1   c                 n    t                       t          j                            | dt                     d S )Nz/linky)rS   rC   rD   rE   config_linkyr.   s    r)   rE   zAppLinky.mount   rU   r1   c                    t                       t          t          j                            t
          d          d          5 }t          d           |                                }|                    d| 	                                          }|                    dt          j                  }|cd d d            S # 1 swxY w Y   d S )NrW   rX   rY   rZ   r[   )rS   r   r   r   r    linkyDirr   r^   r_   r`   ra   r[   rc   s      r)   re   zAppLinky.index   s    %%%BGLL<00#66 $<<<
))++4
,,vtyy{{
+
+4
,,vsx
(
(4
                 s   A-B<<C C )rG   rH   rI   r   ro   KSr   r   rv   rC   rJ   r;   r/   rE   re   rK   rL   s   @r)   rg   rg      s        '	      8 /  / /  /4 4 4 /  /    r1   rg   )Fz& true : will not run the reconstructorr`   )drygitinfoc            	         t          j                    } dt          j        j        _        dt          j        j        _        t          d           t          j	                    }t          j
        |          }d}t          j        ddd          }t          |           t          t          t           t!          |                                                                                              d         }t          |           t          |           t          t           j                   t          d|t(          fz             t+                      t-          |           }}t/                      }t1          j                    }	t          t5          t           j                             t           j        D ]%}
t          |
           |
                                 &t          j                            d	d
i           t          j                            |dt@                     t          d           tC                       t          j"        | dt:                     t          dtF                     d S )NFzserver runningdirzhostname -IT)shelltextr   zhttps://%s:%dr   r|   rB   zquickstart ..r   z
end server)n)$ra   ApprC   log	error_log	propagate
access_logr   socketgethostnamegethostbyname
subprocesscheck_outputr$   listmaprp   stripsplitr[   portr   rN   rg   gpsAppGPSr   appsrE   configupdaterD   rF   rS   
quickstartLOG)rP   hostnameIPAddrbatcmdresultip
apprunningappezvizappLinkyappGPSr   s              r)   gor      s   		$)!%*"  

x
(
(

!-t$
G
G
Gf
3sC''--//0011!4hbcho"d#$$$"htnnXJJ
*,,c#(mm
(  Qq'''''))))
 
    
Z^<<<o	T3'''lcr1   )8r   gcsysglobrer6   base64shutilutillcrC   rt   queuer"   r   _timer   r   rq   r   PILr   urllib.parser   r   urllib.requestr   fcntlstructr   pyezviznmapra   default_optr   r    localDirr]   r   r   environr   r   r   fileDirrF   rT   r   rootDirr   r!   App0r   rN   rg   config2r   rl   r1   r)   <module>r      s                                    				                         ! ! ! ! ! ! ! !        



       				 ! ! ! ! ! !                 



"# ; 7<<g..7<<g..	RZBJvj 


 ck9==  ck7;;  ck7;;    #!# 
 
. #8 #8 #8 #8 #8 #8 #8 #8N    sx   8I I I I Isx I I I\ 
; 
) ) ) ) )r1   