
    i                         d dl mZmZ d dlZd dlZd dlZd dlZej                  j                  ej                  j                  e
            Zd Zd Z G d de      Zd Zedk(  r e        yy)	    )
HTTPServerBaseHTTPRequestHandlerNc                  l   t        d       	 t        j                  ddgt        dddd      } | j                  dk(  rt        d	       yt        d
| j                          t        d| j
                          t        d| j                          y# t        $ r}t        d|        Y d}~yd}~ww xY w)u-   处理完成后自动重建可视化页面。u'   [绘图] 开始更新 gps_plot.html ...z'/opt/house_gps_flutter/.venv/bin/pythonzgps_plot.pyTutf-8ignorecwdcapture_outputtextencodingerrorsr   u&   [绘图完成] gps_plot.html 已更新u   [绘图失败] returncode: stderr: stdout: u   [绘图异常] N)print
subprocessrunSAVE_DIR
returncodestderrstdout	Exceptionresultes     &/opt/house_gps_flutter/receive_file.pyrefresh_plotr      s    	
34%6F
 !:;/0A0A/BCDHV]]O,-HV]]O,- %s#$$%s   ;B 	AB 	B3B..B3c                     t        d       	 t        j                  ddgt        dddd      } | j                  dk(  r+t        d	       t        | j
                         t                yt        d
| j                          t        d| j                          t        d| j
                          y# t        $ r}t        d|        Y d}~yd}~ww xY w)u   处理GPS数据文件u   [处理] 开始处理数据...nodezprocess_data.jsTr   r   r   r   u"   [处理完成] data.json 已更新u   [处理失败] returncode: r   r   u   [处理异常] N)	r   r   r   r   r   r   r   r   r   r   s     r   process_datar   !   s    	
*+%&'
 !67&-- N/0A0A/BCDHV]]O,-HV]]O,- %s#$$%s   AB1 (AB1 1	C:CCc                   $     e Zd Z fdZd Z xZS )FileHandlerc                     | j                   j                  t        j                  t        j                  d       t
        |           y )N   )
connection
setsockoptsocket
SOL_SOCKETSO_KEEPALIVEsuperhandle)self	__class__s    r   r*   zFileHandler.handle:   s/    ""6#4#4f6I6I1M    c                    | j                   j                  d      }|r|dk(  rd}t        j                   j                  t        |      }t        | j                  j                  dd            }t        |d      5 }|j                  | j                  j                  |             d d d        t        d| d| d|        |j                  d	      r4t        d
       t        j                  t         d      j#                          | j%                  d       | j'                  dd       | j)                          | j*                  j                  d       y # 1 sw Y   xY w)N/received_filezContent-Lengthr   wbu   [接收完成] z (z bytes) -> z.posu   [触发] 自动处理数据...T)targetdaemon   zContent-Typez
text/plains   OK)pathstriposjoinr   intheadersgetopenwriterfilereadr   endswith	threadingThreadr   startsend_responsesend_headerend_headerswfile)r+   filenamefilepathcontent_lengthfs        r   do_POSTzFileHandler.do_POST>   s   99??3'8s?&H77<<(3T\\--.>BC(D! 	5QGGDJJOON34	5 	zN+;;xjQRV$23L>DDF36

	5 	5s   :+EE)__name__
__module____qualname__r*   rL   __classcell__)r,   s   @r   r!   r!   9   s     r-   r!   c                  P   d} t        d| ft              }t        d       t        d       t        d|         t        dt                t        d       t        d       t        d       	 |j	                          y # t
        $ r t        d	       |j                          Y y w xY w)
Ni   z2==================================================u   文件接收服务器已启动u   监听端口: u   保存目录: u   自动处理: 开启u   等待接收文件...u   
服务器已关闭)r   r!   r   r   serve_foreverKeyboardInterruptshutdown)portservers     r   mainrX   U   s    DT
K0F	(O	
*+	N4&
!"	N8*
%&	
 !	
!"	(O $%s   -A> >$B%$B%__main__)http.serverr   r   r7   r&   r   rA   r5   dirnameabspath__file__r   r   r   r!   rX   rM    r-   r   <module>r_      sc    : 	   77??277??845%,%0 (  8$ zF r-   