File: //lib/python3.6/site-packages/sshuttle/__pycache__/client.cpython-36.pyc
3
�L_�d � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl j
Z
d dljZd dl
jZd dljZd dljZd dlmZmZmZmZmZ d dl mZmZmZmZmZmZmZ d dlm Z m!Z! yd dl"m#Z# W n e$k
r� dZ#Y nX yd dl%Z&e'e&j%d� e&Z%W nR e(k
�rZ yd dl)Z)e'e)j%d� e)Z%W n e$k
�rT d dl%Z%Y nX Y nX ej*ej+ej,�a-dd� Z.da/d d
� Z0dd� Z1d
d� Z2G dd� d�Z3G dd� d�Z4i Z5i Z6dd� Z7dd� Z8dd� Z9dd� Z:dd� Z;dd� Z<dd � Z=d!d"� Z>dS )#� N)�SockWrapper�Handler�Proxy�Mux�
MuxWrapper)�log�debug1�debug2�debug3�Fatal�islocal�resolvconf_nameservers)�
get_method�Features)�getpwnamZrecvmsgc C s t d| � tjd� d S )Nzexiting on signal %d
� )r �sys�exit)Zsignum�frame� r �/usr/lib/python3.6/client.py�
got_signal) s r c C s t jj| �aytt�jd�}W nB tk
r` } z&|jtjkr@d S t dt|f ��W Y d d }~X nX |stt j
t� d S t|j� p�d�}|dkr�t j
t� d S yt j
|d� W nL tk
r� } z0|jtjkr�t j
t� d S |jtjkr�n� W Y d d }~X nX t dt|f ��d S )Ni zcan't read %s: %sr z(%s: sshuttle is already running (pid=%d))�os�path�abspath�_pidname�open�read�IOError�errno�ENOENTr �unlink�int�strip�kill�OSErrorZESRCHZEPERM)�pidfileZoldpid�er r r �check_daemon1 s2 "
r( c C s� t j� rt jd� t j� t j� r,t jd� t jtt jt jB t jB d�} zt j | dt j
� � W d t j| � X t jd� t
j
t
jt� tt jd�}t j|j� d� t j|j� d� |j� d S )Nr i� s %d
�/zr+r )r �fork�_exit�setsidr r �O_WRONLY�O_CREAT�O_EXCL�write�getpid�close�chdir�signal�SIGTERMr �devnull�dup2�fileno)ZoutfdZsir r r � daemonizeP s
r9 c C sF yt jt� W n2 tk
r@ } z| jtjkr.n� W Y d d } ~ X nX d S )N)r r! r r% r r )r'