
    &i*                        S SK r S SKrS SKJrJrJrJrJrJr  S SK	J
r
JrJrJr  S SKJr  S SKJr  S SKrS SKrS SKrS SKrS SKrS SKJrJr  S SKJr  S SKJr  S SKr\" S	S
SS9r\R=                  \S/SS/S/S9  SrSr SSSSSSSSSSSSSSS.r!S r"\RG                  S5      \RI                  S5      \" S5      4S\S\%S\4S jj5       5       r&g)    N)FastAPI
UploadFileFileHTTPExceptionQueryRequest)PlainTextResponseJSONResponseFileResponseResponse)CORSMiddleware)	urlencode)IteratorList)glob)datetimezshlozzshlo serverz1.1.0)titledescriptionversion*T)allow_originsallow_credentialsallow_methodsallow_headersz../ZFS/z./v2FS/log.txtimgtxtdir)z.pngz.jpgz.jpegz.svgz.webpz.jsz.cssz.htmlz.mdz.jsonz.txtz.pyz.csv.dirc                     [         R                  " 5       R                  S5      nU SU  S3n[        [        S5       nUR                  U5        S S S 5        g ! , (       d  f       g = f)Nz%Y-%m-%dT%H:%M:%Sz; 
a)r   nowstrftimeopenlog_filewrite)msg	timestamp	log_entryfiles       /root/zsrc/main.pylogr-   E   sO    ''(;<I+RuB'I	h	

9 
		s   A
A&z/{PATH0:path}reqDataPATH0r+   c           
        #    US:X  a  g Su  p4nSnU R                   R                  S5      nU R                   R                  S5      n[        U R                  5      n	U	(       a"  S[	        U R                  R
                  5      -   OSn
UR                  SS5      R                  S	5       Vs/ s H  o(       d  M  UPM     nnUS
:X  a  U R                  5       I S h  vN n	O[        U R                  5      n	U(       a3  US   U:X  a  UR                  S5        US   nS	R                  USS  5      nUS:X  a  SnSnO2UR                  S5      (       a  US:X  a	  SU-   S-   nOSU-   S	-   U-   nSnUS:X  d  US:X  a  gU R                  5       I S h  vN n[        U-   nUn[        SS5        [        SU R                   5        [        SU5        [        SU5        [        SU R                  5        [        SU5        [        SU	5        [        SU
5        [        SU5        [        SU5        [        SU5        [        SU5        [        S U5        [        SU5        [        S!S5        US":X  a  [        S#S$0S%S&9$ US':X  Gav  UR*                  nUR                  S(5      (       a  UR,                  R/                  S)5      nUR                  S*5      S   R1                  5       R3                  5       n[        UR                  SS5      -   nUS+-   nUR,                  R5                  S5        ["        R6                  " US,S-9  Og[        UR                  S.S/5      R                  SS5      -   nUS	-   UR*                  -   n["        R$                  R9                  U5      (       d  S0S1U S230$ [        S3US4U5        [;        US55       n[<        R>                  " UR,                  U5        S S S 5        UR*                  S6S7.$ US:X  aP  [        U-   n[        S8U5        ["        R$                  R'                  U5      (       a  [)        U5      $ [        S#S$0S%S&9$ US9:X  a  [        UR                  SS5      -   n["        R$                  R9                  U5      (       a  S:S;U S<30$ ["        R6                  " US,S-9  ["        R$                  R9                  U5      (       a  S:S;U S=30$ g US>:X  a  [        S?5        [        UR                  SS5      -   n["        R$                  R'                  U5      (       a  S:S;U S<30$ [;        US@5      RA                  5         ["        R$                  R'                  U5      (       a  S:S;U S=30$ g USA:X  a|  ["        R$                  R9                  U5      (       aV  ["        RB                  " U5       Vs/ s H4  n["        R$                  R9                  US	-   U-   5      (       a  US	-   OUPM6     sn$ / $ USB:X  aX  U(       d  SCOUSD   n["        RB                  " U5      n[D        RD                  " UUUXLUX5      n[G        SR                  U5      SESF9$ USG:X  Ga  [        SHU5        [        U-   n/ n["        RB                  " U5       GH  nUS	-   U-   n["        RH                  " U5      n[H        RJ                  " URL                  5      n["        R$                  R9                  U5      (       a  SIO!["        R$                  RO                  U5      S   nU[P        R                  US5      U["        R$                  RS                  U5      [T        RV                  " URX                  5      USJ.nUSI:X  a,  ["        R$                  R'                  U SK35      (       a  SLUSM'   USN:X  a  ["        RB                  " U5      USO'   USA:X  aD  Sn [;        USP-   SQ5       nUR/                  5       n S S S 5        U (       a  UR[                  SAU 05        UR[                  U5        [        SRU5        GM     U$ g s  snf  GNT GN! , (       d  f       GN_= fs  snf ! , (       d  f       No= f! [\         a  n![_        SSSTU! 3SU9eS n!A!ff = f7f)VNzfavicon.ico )r1   r1   r1   zContent-Typehost?@z/@/zapplication/jsonr      getFilez
index.htmlz.obazoba/z/index.htmlnullz94:  z0################################################z95:  headersz
95:  PATH0123z96:  query      :z97:  contentTypez	98:  argsz99:  queryParamsz100: path_tokensz91: path       :z92: path_tokens:z93: route      :z95: tmp_path   :z101:  umsERRORzFile not foundi  )contentstatus_code
uploadFilez.zx      
z/default.zxT)exist_okpathuploaderrorzdir 'z' not exit z235:z
236:wbzFile uploaded successfully!)filenamer(   z148:zmkr(   zDirectory 'z' already exists.z' created successfully.zcfz224: zcfr"   lszls.htmlhomez	text/html)r<   
media_typezls.jsonz250:r   )r   typefileExtsizemtimeaccessz
/thumb.jpgz	thumb.jpgthumbtthread_listz/lsrz105:i  z*An error occurred while reading the file: )r=   detail)0headersgetdictquery_paramsr   _dictreplacesplitjsonpopjoinendswithformZFS_DIRprintr
   r:   osrB   isfiler   rF   r+   readdecodestripseekmakedirsisdirr%   shutilcopyfileobjcloselistdirls_htmlr	   statfilemodest_modesplitext	fileTypesgetsizetimectimest_mtimeappend	Exceptionr   )"r.   r/   r+   routerB   tmp_pathtppcontentTyper2   argsqueryParamstokenpath_tokensformDatafilePathfileNameheader
upload_dir	file_pathbufferdir_path_r   rI   htmlentriesentry
entry_path
entry_statpermissionsrN   
entry_infor<   es"                                     r,   corer   O   s     bdf #-hoo)).9oo))&1G001EIcIg&:&:&@&@AAr*/--D*A*G*G*LV*LPUu*LV
 ..glln8L7//0t A$&);&q>E((;qr?3D B;IeLt
 ^^F##rz6%<#=D#)%<#3D#8DE 6>Um3B '4<gvngoo.lE"eX!G$8$89 +.k4  +. +. 4( +/ %) (+ %)h  E>2B(CQTUU: l"}}H  ''!YY^^C0#\\%03::<BBD$t||C'>>
'6			q!J6 %x||FH'E'M'McSW'XX
'^DMM9	ww}}Z00#uZL%DEE&*h5
 i&&""499f5 ' !%6STT it|H&($ww~~h''#H--#W6F,GUXYY
 e^t||C66Hww}}X&&TFJ[7\/](]KK40ww}}X&&TFJa7b/c(c& e^*S$ 77Iww~~i((%;tfL]9^1_*_C &&(ww~~i((%;tfLc9d1e*e( d]ww}}X&&ikisist|i}1~i}de277==RUVW;X;X!C%^_2_i}1~)~02i"-F;r?EH%B??r8	#D
 %RWWT]{SS i&$~H GH-&sl50
 ggj1
"mmJ,>,>?$&GGMM*$=$=&277CSCSTYCZ[\C] !&(}}Wb9&!wwz:#zz**=*=>*
 f$:,j8Q)R)R*5Jw' C<02

:0FJ}- D= Gd5j#.$"&))+ /W~6z*fj)I .L Na  M W
 9M2 (` '&R 2n /.  f6`ab`c4deefsC  a;B a +
`)9`)?a `.Ba 8a;9a `1C(a 5a;6D)a a; a :"`4a 2a;3A	a <a;=a a;	A
a a;A a a;Aa +a;,Aa 1a;3Aa 5;a0a 2a;3a 4a;5Aa a;E>a a"Aa 'a;)a 1a 4
a>a 
a	a 
a8&a33a88a;)'rm   uvicornfastapir   r   r   r   r   r   fastapi.responsesr	   r
   r   r   fastapi.middleware.corsr   urllib.parser   rx   re   rr   fnmatchretypingr   r   r   r   rq   appadd_middlewarerc   r&   rv   r-   rX   poststrr        r,   <module>r      s     L L U U 2 "  	   	 !  
 
 
   %%%     #	( /@DT
 gf gf gf: gf  gfr   