� L�g����ddlZddlZddlZddlmZddlmZmZddlm Z  ddgZ de d e fd �Z d d gZd e d efd�Zde d efd�Zde de d efd�Zde deed efd�Z dde dedee dedee deede d e fd�ZdS)�N)�Optional)�unquote�urlparse�)�WebSocketProxyException� parse_url�get_proxy_info�url�returnc��d|vrtd���|�dd��\}}t|d���}|jr|j}ntd���d}|jr|j}d}|d kr|sd }n|d krd }|sd }ntd|z���|jr|j}nd}|jr |d|j��z }||||fS)z� parse url and the result is tuple of (hostname, port, resource path and the flag of secure mode) Parameters ---------- url: str url string. �:zurl is invalidr�http)�schemezhostname is invalidrF�ws�P�wssTi�zscheme %s is invalid�/�?)� ValueError�splitr�hostname�port�path�query)r r�parsedrr� is_secure�resources �^/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/websocket/_url.pyrrs�� �#�~�~��)�*�*�*��)�)�C��#�#�K�F�C� �c�&� )� )� )�F� ��0��?����.�/�/�/� �D� �{���{���I� ��~�~�� ��D�� �5���� �� ��D���/�&�8�9�9�9� �{���;����� �|�'��&�� �&�&�&�� �T�8�Y� .�.�� localhostz 127.0.0.1�addrc�\� tj|��dS#tj$rYdSwxYw)NTF)�socket� inet_aton�error)r!s r�_is_ip_addressr&OsE����������t�� �<�����u�u����s ��+�+rc�� |�d��\}}t|��odt|��cxkodkncS#t$rYdSwxYw)Nrr� F)rr&�intr)rr!�netmasks r�_is_subnet_addressr+Xss��� ���s�+�+� ��g��d�#�#�>��S��\�\�(>�(>�(>�(>�B�(>�(>�(>�(>�>�� �����u�u����s�AA� A�A�ip�netc�(�tjdtj|����d}|�d��\}}tjdtj|����d}ddt |��z zdz}||z|kS)Nz!Irrl��r()�struct�unpackr#r$rr))r,r-�ipaddr�netaddrr*s r�_is_address_in_networkr3`s����-��f�&6�r�&:�&:�;�;�A�>�F��y�y��~�~��G�W��=��v�'7��'@�'@�A�A�!�D�G��b�3�w�<�<�/�0�J�>�G� �G� �w� &�&r�no_proxyc���|sitj�dtj�dd�����dd��x}r|�d��}|st }d|vrdS�|vrdSt ���rt�fd�|D����Sd �|D��D]}��|��rdS�d S) Nr4�NO_PROXY�� �,�*Tc�N��g|]!}t|���t�|����"S�)r+r3)�.0�subnetrs �r� <listcomp>z%_is_no_proxy_host.<locals>.<listcomp>xsA��� � � ��%�f�-�-� �&�x��8�8� � � rc�<�g|]}|�d���|��S)�.)� startswith)r=�domains rr?z%_is_no_proxy_host.<locals>.<listcomp>~s+��K�K�K�f�F�4E�4E�c�4J�4J�K�6�K�K�KrF) �os�environ�get�replacer�DEFAULT_NO_PROXY_HOSTr&�any�endswith)rr4�vrCs` r�_is_no_proxy_hostrLis��� �$�� ���z�2�:�>�>�*�b�+I�+I�J�J�R�R� �� � � �1� $��w�w�s�|�|�H� �)�(�� �h����t��8����t��h��� �� � � � �&� � � � � � �L�K��K�K�K���� � � �V� $� $� ��4�4� � �5rrr� proxy_host� proxy_port� proxy_auth� proxy_typec���t||��rdS|r|std���|}|}|||fS|rdnd} tj�| tj�| ���d�����dd��} | rOt| ��} | jr(t| j��t| j ��fnd}| j | j |fSdS)a� Try to retrieve proxy host and port from environment if not provided in options. Result is (proxy_host, proxy_port, proxy_auth). proxy_auth is tuple of username and password of proxy authentication information. Parameters ---------- hostname: str Websocket server name. is_secure: bool Is the connection secure? (wss) looks for "https_proxy" in env instead of "http_proxy" proxy_host: str http proxy host name. proxy_port: str or int http proxy port. no_proxy: list Whitelisted host names that don't use the proxy. proxy_auth: tuple HTTP proxy auth information. Tuple of username and password. Default is None. proxy_type: str Specify the proxy protocol (http, socks4, socks4a, socks5, socks5h). Default is "http". Use socks4a or socks5h if you want to send DNS requests through the proxy. )NrNz+Cannot use port 0 when proxy_host specified� https_proxy� http_proxyr7r8N) rLrrDrErF�upperrGr�usernamer�passwordrr) rrrMrNrOr4rPr�auth�env_key�value�proxys rr r �s��F��8�,�,���}��&�� Y�)�*W�X�X� X������4��%�%�(�:�m�m�l�G� �J�N�N�7�B�J�N�N�7�=�=�?�?�B�$G�$G� H� H� P� P� �R� � �E� �0�������~� �W�U�^� $� $�g�e�n�&=�&=� >� >�� � �~�u�z�4�/�/� �=r)NrNNr)rDr#r/�typingr� urllib.parserr� _exceptionsr�__all__�str�tuplerrH�boolr&r+r3�listrLr)r r<rr�<module>rcs��� � � � � � � � � � � � �������*�*�*�*�*�*�*�*�0�0�0�0�0�0��& �(� )��+/�3�+/�5�+/�+/�+/�+/�\%�k�2������������������'�s�'��'��'�'�'�'����x��~��$�����<!%��"&�#��:�:��:��:��� �:�� :� ��� :� �t�n� :��:� �:�:�:�:�:�:r
Memory