
    jc                        d dl Zd dlZd dlZd dlZd dlmZ d dlZd dlZdZ	dZ
dZej                            dd          Zej                            dd          Z G d	 d
ej        j                  Zedk    r ed            ed            ed            ej        e
            ede	             ede            es ed            ej        de	fe          Z ed           e                                 dS dS )    N)unquotei&  z/opt/medical_recordsu-   https://dav.jianguoyun.com/dav/ 医疗记录/NUTSTORE_USER NUTSTORE_PASSc                   F     e Zd Zd Z fdZd Zd Zd Zd Z fdZ	 xZ
S )CloudSyncHandlerc                     |                      d           |                                  |                                  d S )N   )send_responsesend_cors_headersend_headersselfs    $/opt/medical_records/server_cloud.py
do_OPTIONSzCloudSyncHandler.do_OPTIONS   s@    3       c                     | j                             d          r|                     d           d S t                                                       d S )N/webdav/GET)path
startswithproxy_to_nutstoresuperdo_GET)r   	__class__s    r   r   zCloudSyncHandler.do_GET   sO    9
++ 	""5)))))GGNNr   c                     | j                             d          r|                     d           d S |                     d           d S )Nr   PUT  r   r   r   
send_errorr   s    r   do_PUTzCloudSyncHandler.do_PUT   sL    9
++ 	!""5)))))OOC     r   c                     | j                             d          r|                     d           d S |                     d           d S )Nr   PROPFINDr   r   r   s    r   do_PROPFINDzCloudSyncHandler.do_PROPFIND!   sL    9
++ 	!"":.....OOC     r   c                     |                      dd           |                      dd           |                      dd           |                      dd           d S )	NzAccess-Control-Allow-Origin*zAccess-Control-Allow-MethodszGET, PUT, OPTIONS, PROPFINDzAccess-Control-Allow-Headersz"Authorization, Content-Type, DepthzAccess-Control-Expose-Headersz"Content-Type, ETag, Content-Length)send_headerr   s    r   r   z"CloudSyncHandler.send_cors_headers'   sg    6<<<79VWWW79]^^^8:^_____r   c                 B   | j                             d          d                             d          d         }|sd}t          |          }t          t          j                            |          z   }t          d| d|            |dv r(t          | j	        
                    d	d                    nd}|dk    r| j                            |          nd
}t          j                            ||r|nd |          }dD ],}|| j	        v r!|                    || j	        |                    -d| j	        vrst           rlt"          redd l}|                    t            dt"                                                                                     }	|                    dd|	            	 t          j                            |          }
|                     |
                                           |
                                D ]1\  }}|                                dvr|                     ||           2|                                  |                                  |
                                }| j                            |           t          d|
                                 dtA          |           d           d S # t          j!        j"        $ rd}t          d|j#                    |                     |j#                   |                                  |                                  Y d }~d S d }~wtH          $ rZ}t          d|            |                     d           |                                  |                                  Y d }~d S d }~ww xY w)Nr   ?r   zmedical_data.jsonz[PROXY]  )r   r#   Content-Lengthr   )datamethod)zContent-Typer,   DepthAuthorizationr0   :zBasic )ztransfer-encoding
connectionz[PROXY] Done: z bytesz[PROXY] Error: z[PROXY] Exception: i  )%r   splitr   NUTSTORE_WEBDAVurllibparsequoteprintintheadersgetrfilereadrequestRequest
add_headerr   r   base64	b64encodeencodedecodeurlopenr   getcode
getheaderslowerr'   r   r   wfilewritelenerror	HTTPErrorcode	Exception)r   r.   filenamenutstore_urlcontent_lengthbodyreqheaderrA   authrespkeyvaluecontentes                  r   r   z"CloudSyncHandler.proxy_to_nutstore-   s   9??:..r288==a@ 	+*H8$$&););H)E)EE000,00111GMQdGdGdT\--.>BBCCCjk2@12D2Dtz~...#n$$\8N$W]$^^R 	= 	=F%%vt|F';<<<$,..=.].MMM##}$F$F}$F$F$M$M$O$OPPWWYYDNN?OTOO<<<	>))#..Dt||~~..."oo// 1 1
U99;;&III$$S%000""$$$iikkGJW%%%H4<<>>HHCLLHHHIIIII|% 	 	 	,AF,,---qv&&&""$$$ 	 	 	+++,,,s###""$$$		s'   +DK NAL77NANNc                 F    t                                          |          S )N)r   translate_path)r   r   r   s     r   r]   zCloudSyncHandler.translate_pathT   s    ww%%d+++r   )__name__
__module____qualname__r   r   r!   r$   r   r   r]   __classcell__)r   s   @r   r   r      s          
    ! ! !! ! !` ` `% % %N, , , , , , , , ,r   r   __main__z%=====================================u*      个人医疗记录 - 腾讯云部署版zListening on port u   坚果云WebDAV: u@   ⚠️  需要设置环境变量 NUTSTORE_USER 和 NUTSTORE_PASSz*Server started, waiting for connections...)http.serverhttpsocketserverosjsonurllib.parser   urllib.requestr5   PORTDIRr4   environr;   r   r   serverSimpleHTTPRequestHandlerr   r^   r8   chdir	TCPServerserve_forever r   r   <module>rs      s           				                     A
33
33F, F, F, F, F,t{; F, F, F,P z	E
1222	E
6777	E
1222BHSMMM	E
%t
%
%&&&	E
/o
/
/000 RPQQQ#\#RJ0@AAF	E
6777
 r   