o
    ٷi                     @   s^  U 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	m
Z
 d dlZd dlmZ d dlmZ dZg Zed ed< e ZedkrPd	Zned
krVdZde   de  ZejdkrkdndZde de e Zdddddddddddddd d!d"Zd#Ze d$e Ze
ed% d& Zeee Z d'Z!d(Z"d)Z#G d*d dZ$dS )+    N)Path)HF_HOME)ChecksumMismatchErrorz0.3TunnelCURRENT_TUNNELSx86_64amd64aarch64arm64frpc__ntz.exe z-https://cdn-media.huggingface.co/frpc-gradio-/@14bc0ea470be5d67d79a07412bd21de8a0a179c6ac1116d7764f68e942dc9ceb@c791d1f047b41ff5885772fc4bf20b797c6059bbd82abb9e31de15e55d6a57c4@823ced25104de6dc3c9f4798dbb43f20e681207279e6ab89c40e2176ccbf70cd@930f8face3365810ce16689da81b7d1941fda4466225a7bbcbced9a2916a6e15@dfac50c690aca459ed5158fad8bfbe99f9282baf4166cf7c410a6673fbc1f327@4b563beb2e36c448cc688174e20b53af38dc1ff2b5e362d4ddd1401f2affbfb7@cb0a56c764ecf96dd54ed601d240c564f060ee4e58202d65ffca17c1a51ce19c@516d9e6903513869a011ddcd1ec206167ad1eb5dd6640d21057acc258edecbbb@4c2f2a48cd71571498c0ac8a4d42a055f22cb7f14b4b5a2b0d584220fd60a283@b309ecd594d4f0f7f33e556a80d4b67aef9319c00a8334648a618e56b23cb9e0@0372ef5505baa6f3b64c6295a86541b24b7b0dbe4ef28b344992e21f47624b7b@1658eed7e8c14ea76e1d95749d58441ce24147c3d559381832c725c29cfc3df3@a2aaba16961d3372b79bd7a28976fcd0f0bbaebc2b50d5a7a71af2240747960f@721b90550195a83e15f2176d8f85a48d5a25822757cb872e9723d4bccc4e5bb6@796481edd609f31962b45cc0ab4c9798d040205ae3bf354ed1b72fb432d796b8)zGhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_windows_amd64.exezAhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_amd64zAhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_arm64zBhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_darwin_amd64zBhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_darwin_arm64z?https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_armzAhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_freebsd_386zChttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_freebsd_amd64z?https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_386z@https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_mipszBhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_mips64zChttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_riscv64zBhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_mipslezEhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_windows_386.exezDhttps://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_mips64le   _vgradiofrpc   zYCould not create share URL. Please check the appended log from frpc for more information:z.gradio/certificate.pemc                   @   st   e Zd ZdededededededB fdd	Zed
d ZdefddZdd Z	dedefddZ
defddZdS )r   remote_hostremote_port
local_host
local_portshare_tokenshare_server_tls_certificateNc                 C   s4   d | _ d | _|| _|| _|| _|| _|| _|| _d S N)procurlr$   r%   r&   r'   r(   r)   )selfr$   r%   r&   r'   r(   r)    r.   D/home/ubuntu/.local/lib/python3.10/site-packages/gradio/tunneling.py__init__@   s   	
zTunnel.__init__c                     s(  t t st tjddd tjtdd} | jdkr$t	dt
  |   ttd}|| j W d    n1 s>w   Y  tt}tt|jtjB  ttv rt ttd t fd	d
dD ]}| qjW d    n1 s|w   Y   }|tt krt d S d S d S )NT)parentsexist_okr#   )timeouti  zCannot set up a share link as this platform is incompatible. Please create a GitHub issue with information about your platform: wbrbc                      s     tj S r*   )read
CHUNK_SIZE
block_sizer.   fshar.   r/   <lambda>i   s    z(Tunnel.download_binary.<locals>.<lambda>    )r   BINARY_PATHexistsBINARY_FOLDERmkdirhttpxget
BINARY_URLstatus_codeOSErrorplatformunameraise_for_statusopenwritecontentosstatchmodst_modeS_IEXEC	CHECKSUMShashlibsha256iterupdate	hexdigestr   )respfilestchunkcalculated_hashr.   r9   r/   download_binaryR   s8   

zTunnel.download_binaryreturnc                 C   s   |    | t| _| jS r*   )r]   _start_tunnelr>   r,   r-   r.   r.   r/   start_tunnelp   s   zTunnel.start_tunnelc                 C   sB   | j d urtd| j d| j d| j  | j   d | _ d S d S )NzKilling tunnel :z <> )r+   printr&   r'   r,   	terminater`   r.   r.   r/   killu   s
   
 

zTunnel.killbinaryc                 C   s   t |  |dd| jdt| jd| jddddd	| j d
| j dg}| jd ur0|	dd| jg t
j|t
jt
jd| _t| j |  S )Nhttpz-nz-lz-iz--ucz--sdrandomz--uez--server_addrrb   z--disable_log_colorz--tls_enablez--tls_trusted_ca_file)stdoutstderr)r   appendr(   strr'   r&   r$   r%   r)   extend
subprocessPopenPIPEr+   atexitregisterre   _read_url_from_tunnel_stream)r-   rf   commandr.   r.   r/   r_   {   s:   


zTunnel._start_tunnelc                    s   t   }g  d} fdd}|dkret   | tkr|  | jd us$J | jjd u r+q| jj }|d}|dkr;q |  d|v rZt	d|}|d u rT|  n|
d}nd|v ra|  |dks|S )	Nr   c                     s*   d  } t| tjd tt d|  )N
)rY   )joinrc   sysrj   
ValueErrorTUNNEL_ERROR_MESSAGE)log_textlogr.   r/   _raise_tunnel_error   s   
z@Tunnel._read_url_from_tunnel_stream.<locals>._raise_tunnel_errorzutf-8zstart proxy successzstart proxy success: (.+)
   zlogin to server failed)timeTUNNEL_TIMEOUT_SECONDSr+   ri   readlinedecoderk   stripresearchgroup)r-   start_timestampr,   r}   lineresultr.   r{   r/   rs      s0   
z#Tunnel._read_url_from_tunnel_stream)__name__
__module____qualname__rl   intr0   staticmethodr]   ra   re   r_   rs   r.   r.   r.   r/   r   ?   s(    

!)%rq   rS   rM   rG   r   rN   rn   rw   r   pathlibr   rB   huggingface_hub.constantsr   gradio.exceptionsr   VERSIONr   list__annotations__machinesystemlowerBINARY_REMOTE_NAMEname	EXTENSIONrD   rR   r7   BINARY_FILENAMEr@   rl   r>   r   ry   CERTIFICATE_PATHr   r.   r.   r.   r/   <module>   s`   
 