File: //lib/python3.6/site-packages/sshuttle/__pycache__/options.cpython-36.pyc
3
��^�! �
@ s� d dl Z d dlZd dlmZmZmZ d dlmZ dd� Z dd� Z
dd � Zd
d� ZG dd
� d
e�Z
edddd�Zejddde
dd� ejddddd� ejddddd � ejd!d"dd#d � ejd$dd%d � ejd&d'g ed(d)� ejd*d+ed,d-� ejd.d/d0d1d2d3d4gd5d/d6d7� ejd8d9d:d� ejd;d<d=d>d� ejd?d@dAdBg e
dCdD� ejdEdFd9e
dGe dHdI� ejdJdKdLd dMdN� ejdOdPdQedRdS� ejdTdUdVdWdXdY� ejdZd[g d\dY� ejd]d^d_d`da� ejdbdcedddedfdg� ejdhdiedjd-� ejdkddld � ejdmdnddod � ejdpdqd9e
drg e dsdt� ejduddvd � ejdwd9dxdydY� ejdzd{d|� ejd}dd~d � ejddd~d � ejd�dd�d � ejd�dd�d � ejd�d�d�d�� ejd�d�d�d�� ejd�d^d�d�da� dS )�� N)�ArgumentParser�Action�ArgumentTypeError)�__version__c C s� yt | d�}W n tk
r. td| ��Y nX |j� }g }x>t|�D ]2\}}|j� }|s\qF|d dkrjqF|jt|�� qFW |S )N�rzUnable to open subnet file: %sr �#)�open�OSError�Fatal� readlines� enumerate�strip�append�parse_subnetport)�sZhandleZraw_config_lines�subnets�_�line� r �/usr/lib/python3.6/options.py�parse_subnetport_file s r c C s� | j d�dkrd}nd}tj|| �}|s4td| ��|j� \}}}}ytj|ddtj�}W n" tjk
r| td| ��Y nX t |�\}} } } }|tj
kr�dnd }
t|p�|
�}d| ko�|
kn s�td
||
f ��||d |t|p�d�t|p�|p�d�fS )N�:� z4(?:\[?([\w\:]+)(?:/(\d+))?]?)(?::(\d+)(?:-(\d+))?)?$z-([\w\.\-]+)(?:/(\d+))?(?::(\d+)(?:-(\d+))?)?$z*%r is not a valid address/mask:port formatr zUnable to resolve address: %s� � z width %d is not between 0 and %d)�count�re�matchr
�groups�socket�getaddrinfo�SOCK_STREAM�gaierror�minZAF_INET�int)r �rx�m�addr�widthZfportZlport�addrinfo�familyr Z max_widthr r r r s"