3 �L�j�V�@s�ddlZddlZddlZddlZddlZddddddgZGdd�de�ZiZgZ dNd d�Z dOd d�Z dPd d�Z dd�Z dd�ZdQdd�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGd d!�d!e�ZeZGd"d#�d#e�ZGd$d%�d%e�ZGd&d'�d'e�ZGd(d)�d)e�Zd*d+�Zejj d,��rhe�ejj d-��rej d.��r�e d.ded.��ej d/��r�e d/ded/��ej d0��r�e d0ded0��ej d1��r�e d1ded1��ej d2��re d2ded2��ej!dd3�d4k�r�Gd5d6�d6e�Z"gZ iZe d7e"�ej#j$ejj d8d9�d:�Z%x8d;dd?d@e%fD]"Z&ej e&��rde e&dee&���qdWej!dAk�r�GdBdC�dCe�Z'GdDdE�dEe�Z(e dFde(dF�dR�e d;de(d;�dS�e dGde(dG�dT�e dCde(dH�dU�dIejk�rpejdIj)ej*�Z+e+j,�xBe+D]:Z-e-dJk�r*ee-dV�Z.e.d dk�r*e e-dee-�dW��q*WdZ-[-[+dKdL�Z/e0dMk�r�e/�dS)X�N�Error�open�open_new� open_new_tab�get�registerc@s eZdZdS)rN)�__name__� __module__� __qualname__�r r �"/usr/lib64/python3.6/webbrowser.pyr s�cCs<||gt|j�<|dkr$tj|�n|dkr8tjd|�dS)Nr)� _browsers�lower� _tryorder�append�insert)�name�klass�instance�update_tryorderr r r rs  c Cs�|dk r|g}nt}x�|D]�}d|krVtj|�}|ddkrLt|dd��St|�Sqyt|j�}Wntk r�t|�}YnX|ddk r�|dS|ddk r|d�SqWt d��dS)Nz%sr �&rz!could not locate runnable browser�����r) r�shlex�split�BackgroundBrowser�GenericBrowserrr�KeyError� _synthesizer)ZusingZ alternatives�browser�commandr r r rs$      TcCs,x&tD]}t|�}|j|||�rdSqWdS)NTF)rrr)�url�new� autoraiserrr r r r9s  cCs t|d�S)Nr )r)r!r r r r@scCs t|d�S)N�)r)r!r r r rCsc Cs�|j�d}tj|�sddgStjj|�}yt|j�}Wntk rRddgSX|d}|r�|j�|jkr�ddl }|j |�}||_ tjj|�|_t |d||�d|gSddgS)Nrr ) r�shutil�which�os�path�basenamerrr�copyrr)rr�cmdrr Z controllerr*r r r rGs"     rc@sBeZdZdgZddd�Zddd�Zd d �Zd d �Zed d��Z dS)� BaseBrowserz%s�cCs||_||_dS)N)rr))�selfrr r r �__init__nszBaseBrowser.__init__rTcCst�dS)N)�NotImplementedError)r.r!r"r#r r r rrszBaseBrowser.opencCs |j|d�S)Nr )r)r.r!r r r ruszBaseBrowser.open_newcCs |j|d�S)Nr$)r)r.r!r r r rxszBaseBrowser.open_new_tabcCs$|r |j�jd�r td|����dS)N�-z Invalid URL: )�lstrip� startswith� ValueError)r!r r r � _check_url{szBaseBrowser._check_urlN)r-)rT) rr r �argsr/rrr� staticmethodr5r r r r r,is   r,c@seZdZdd�Zddd�ZdS) rcCsFt|t�r||_dg|_n|d|_|dd�|_tjj|j�|_dS)Nz%srr )� isinstance�strrr6r'r(r))r.rr r r r/�s    zGenericBrowser.__init__rTc sv|j��|jg�fdd�|jD�}y6tjdd�dkrFtj|�}ntj|dd�}|j� Stk rpdSXdS)Ncsg|]}|jd���qS)z%s)�replace)�.0�arg)r!r r � �sz'GenericBrowser.open..��winT)� close_fdsF) r5rr6�sys�platform� subprocess�Popen�wait�OSError)r.r!r"r#�cmdline�pr )r!r r�s    zGenericBrowser.openN)rT)rr r r/rr r r r r�s rc@seZdZddd�ZdS)rrTc sz|j��|jg�fdd�|jD�}y:tjdd�dkrFtj|�}ntj|ddd�}|j�dkStk rtdSXdS)Ncsg|]}|jd���qS)z%s)r:)r;r<)r!r r r=�sz*BackgroundBrowser.open..r>r?T)r@�start_new_sessionF) r5rr6rArBrCrD�pollrF)r.r!r"r#rGrHr )r!r r�s    zBackgroundBrowser.openN)rT)rr r rr r r r r�src@s>eZdZdZdZdZddgZdZdZdZ dd�Z d d d �Z dS) � UnixBrowserNFTz%actionz%sc Cs�g}|r*|jr*t|�}|j|}|r*|g}|jg||}|sD|jrLtj}nd}tj|d||jrd|pfd|dd�}|r�y|jd�} | Stj k r�dSXn&|jr�|j �dkr�dSdSn |j� SdS)NT)r@�stdin�stdout�stderrrI�F) � raise_opts�intr� backgroundrC�DEVNULLrD�redirect_stdoutrEZTimeoutExpiredrJ) r.r6Zremoter#Z raise_opt�optrGZinoutrH�rcr r r �_invoke�s0        zUnixBrowser._invokercs�|dkr|j�nB|dkr |j�n2|dkrB|jdkr:|j�qR|j�ntdd|��|j�jd�����fdd�|jD�}d d�|D�}|j|d |�}|s��fd d�|jD�}|j|d d �Sd SdS) Nrr r$zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sz%actioncs g|]}|jd��jd���qS)z%actionz%s)r:)r;r<)�actionr!r r r=�sz$UnixBrowser.open..cSsg|] }|r|�qSr r )r;r<r r r r=�sTcsg|]}|jd���qS)z%s)r:)r;r<)r!r r r=�sF) � remote_action�remote_action_newwin�remote_action_newtabrr5r:� remote_argsrWr6)r.r!r"r#r6Zsuccessr )rXr!r r�s&    zUnixBrowser.open)rT) rr r rPrRrTr\rYrZr[rWrr r r r rK�s#rKc@s$eZdZddgZdZdZdZdZdS)�Mozillaz%actionz%sr-z -new-windowz-new-tabTN)rr r r\rYrZr[rRr r r r r]s r]c@s,eZdZddgZddgZdZdZdZdZd S) �Netscapez-noraisez-raisez-remotezopenURL(%s%action)r-z ,new-windowz,new-tabTN) rr r rPr\rYrZr[rRr r r r r^ s r^c@s(eZdZddgZddgZdZdZdZdS) �Galeonz-noraiser-z%actionz%sz-nz-wTN)rr r rPr\rYrZrRr r r r r_s r_c@s$eZdZddgZdZdZdZdZdS)�Chromez%actionz%sr-z --new-windowTN)rr r r\rYrZr[rRr r r r r` s r`c@s$eZdZddgZdZdZdZdZdS)�Operaz%actionz%sr-z --new-windowTN)rr r r\rYrZr[rRr r r r ra,s rac@s(eZdZddgZdZdZdZdZdZdS)�Elinksz-remotezopenURL(%s%action)r-z ,new-windowz,new-tabFN) rr r r\rYrZr[rRrTr r r r rb6s rbc@seZdZddd�ZdS)� KonquerorrTcCs�|j|�|dkrd}nd}tj}ytjd||gd|||d�}Wntk rTYnX|j�dSy tjdd|gd|||dd �}Wntk r�YnX|j�dkr�dSy tjd d |gd|||dd �}Wntk r�d SX|j�dkSdS) Nr$ZnewTabZopenURL� kfmclientT)r@rLrMrN� konquerorz--silent)r@rLrMrNrI�kfmz-dF)r5rCrSrDrFrErJ)r.r!r"r#rX�devnullrHr r r rKs<       zKonqueror.openN)rT)rr r rr r r r rcDsrcc@s&eZdZdd�Zdd�Zd dd�Zd S) �Grailc Cs�ddl}ddl}ddl}ddl}tjj|j�d�}|jtj ��d}tjj||d�}|j|�}|shdS|j|j |j �} xX|D]P} y| j | �Wn8t k r�ytj| �Wnt k r�YnXYq~X| Sq~WdS)Nrz .grail-unixz-*)�glob�pwd�socket�tempfiler'r(�joinZ gettempdir�getpwuid�getuidZAF_UNIXZ SOCK_STREAMZconnectrF�unlink) r.rirjrkrlZtempdir�user�filenameZmaybes�s�fnr r r �_find_grail_rc}s*    zGrail._find_grail_rccCs&|j�}|sdS|j|�|j�dS)Nrr )ru�send�close)r.rXrsr r r �_remote�s  z Grail._remoterTcCs0|j|�|r|jd|�}n|jd|�}|S)NzLOADNEW zLOAD )r5rx)r.r!r"r#�okr r r r�s  z Grail.openN)rT)rr r rurxrr r r r rhysrhcCs�tjd�rtddtd��dtjkr>tjd�r>tddtd��dtjkrbtjd�rbtddtd��dtjkr�tjd�r�tdttd��tjd�r�tddtd��x&dD]}tj|�r�t|dt|��q�Wx&dD]}tj|�r�t|dt|��q�Wtjd��rtdttd��ntjd��r*tdttd��x*dD]"}tj|��r0t|dt |���q0Wtjd��rrtddtd��x*d D]"}tj|��rxt|dt |���qxWtjd��r�tddt d��tjd��r�tddtd��tjd��r�tdt d�dS)!Nzxdg-openZGNOME_DESKTOP_SESSION_IDz gvfs-openz gnome-openZKDE_FULL_SESSIONrdz x-www-browser�firefox� iceweasel�iceape� seamonkey�mozilla-firefox�mozilla-firebird�firebird�mozilla�netscaperfre�galeon�epiphanyZ skipstone� google-chrome�chrome�chromium�chromium-browser�operaZmosaicZgrail)rzr{r|r})r~rr�r�r�)r�r�)r�r�r�r�) r%r&rrr'�environrcr]r^r_r`rarh)rr r r �register_X_browsers�sH               r�ZDISPLAYZTERMz www-browserZlinksZelinksZlynxZw3mr>r?c@seZdZddd�ZdS)�WindowsDefaultrTc Cs6|j|�ytj|�Wntk r,dSXdSdS)NFT)r5r'Z startfilerF)r.r!r"r#r r r r s  zWindowsDefault.openN)rT)rr r rr r r r r� sr�zwindows-defaultZ PROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXErzr�r}r�r�r��darwinc@seZdZdd�Zddd�ZdS) �MacOSXcCs ||_dS)N)r)r.rr r r r/3szMacOSX.__init__rTc Cs�|j|�d|krd|}tt|��}|jdkrBd|jdd�}n<|jdkrRd}n d |d }d |jdd�}d |j||f}tjd d�}|dkr�dS|j|�|j�}| S)N�:zfile:�defaultzopen location "%s"�"z%22ZOmniWebr-z toWindow %dr z OpenURL "%s"z�tell application "%s" activate %s %s end tell� osascript�wF) r5rQ�boolrr:r'�popen�writerw) r.r!r"r#�scriptZtoWindowr+�osapiperVr r r r6s"       z MacOSX.openN)rT)rr r r/rr r r r r�)s r�c@seZdZdd�Zddd�ZdS) �MacOSXOSAScriptcCs ||_dS)N)�_name)r.rr r r r/YszMacOSXOSAScript.__init__rTcCsl|j|�|jdkr&d|jdd�}nd|j|jdd�f}tjdd�}|dkrTdS|j|�|j�}| S) Nr�zopen location "%s"r�z%22z� tell application "%s" activate open location "%s" end r�r�F)r5r�r:r'r�r�rw)r.r!r"r#r�r�rVr r r r\s    zMacOSXOSAScript.openN)rT)rr r r/rr r r r r�Xsr�Zsafarir�r�ZBROWSERr-c Cs�ddl}dtjd}y|jtjdd�d�\}}WnJ|jk r~}z,t|tjd�t|tjd�tjd�WYdd}~XnXd}x*|D]"\}}|dkr�d}q�|dkr�d}q�Wt|�dkr�t|tjd�tjd�|d}t||�td �dS) NrzDUsage: %s [-n | -t] url -n: open new window -t: open new tabr Zntd)�filez-nz-tr$�) �getoptrA�argv�error�printrN�exit�lenr) r�ZusageZoptsr6�msgZnew_win�o�ar!r r r �main�s(   r��__main__)Nr )N)rT)r rrrrrr)1r'rr%rArC�__all__� Exceptionrrrrrrrrr�objectr,rrrKr]r^r_r`ZChromiumrarbrcrhr�r�r&rBr�r(rmZiexplorerr�r�r�pathsepZ _userchoices�reverserGr+r�rr r r r �s�    "P     56B          /