Ejemplo n.º 1
0
    def __init__(self, config):
        self.type = config.get('type', None)
        self.config = config

        import upstream as upstream_mod

        upconfig = config.get('upstream', None)

        if upconfig:
            uptype = upconfig.get("type", None)
            if uptype is None:
                raise ConfigError(u'[配置错误] upstream 未配置 type !')

            Upstream = upstream_mod.get_upstream(uptype)
            if Upstream is None:
                raise ConfigError(u'[配置错误] upstream type %s 不被支持!' % uptype)

            self.upstream = Upstream(upconfig)
            pass
        else:
            if self.type != 'direct':
                self.upstream = upstream_mod.get_upstream('direct')({
                    'type':
                    'direct'
                })
            else:
                self.upstream = _socket

        self.http_pool = HttpPool(self, lock=BoundedSemaphore)
Ejemplo n.º 2
0
    def __init__(self, config):
        self.type = config.get('type', None)
        self.config = config

        import upstream as upstream_mod

        upconfig = config.get('upstream', None)

        if upconfig:
            uptype = upconfig.get("type", None)
            if uptype is None:
                raise ConfigError(u'[配置错误] upstream 未配置 type !')

            Upstream = upstream_mod.get_upstream(uptype)
            if Upstream is None:
                raise ConfigError(u'[配置错误] upstream type %s 不被支持!' % uptype)

            self.upstream = Upstream(upconfig)
            pass
        else:
            if self.type != 'direct':
                self.upstream = upstream_mod.get_upstream('direct')({'type':'direct'})
            else:
                self.upstream = _socket

        self.http_pool = HttpPool(self,lock=BoundedSemaphore)
Ejemplo n.º 3
0
class UpstreamBase(object):
    u""" 特定线路 socket 模块

    使用方式为创建本类实例,然后把实例当作 socket 模块即可。所有的操作都会经过 config 配置的线路。"""

    # 封装好的 socket 类
    socket = None

    def __init__(self, config):
        self.type = config.get('type', None)
        self.config = config

        import upstream as upstream_mod

        upconfig = config.get('upstream', None)

        if upconfig:
            uptype = upconfig.get("type", None)
            if uptype is None:
                raise ConfigError(u'[配置错误] upstream 未配置 type !')

            Upstream = upstream_mod.get_upstream(uptype)
            if Upstream is None:
                raise ConfigError(u'[配置错误] upstream type %s 不被支持!' % uptype)

            self.upstream = Upstream(upconfig)
            pass
        else:
            if self.type != 'direct':
                self.upstream = upstream_mod.get_upstream('direct')({
                    'type':
                    'direct'
                })
            else:
                self.upstream = _socket

        self.http_pool = HttpPool(self, lock=BoundedSemaphore)

    def create_connection(self, address, timeout=5):
        if timeout == _socket._GLOBAL_DEFAULT_TIMEOUT:
            timeout = 10
        raise NotImplementedError()

    def get_display_name(self):
        return self.get_name()

    def get_name(self):
        return '%s-host:port' % (self.type)

    # http 请求处理
    # http 代理可以重写本方法
    # socks 类代理不需要处理。
    def get_http_conn(self, address):
        u"""  获得http with 连接 """
        return self.http_pool.get_conn(address)
Ejemplo n.º 4
0
class UpstreamBase(object):
    u""" 特定线路 socket 模块

    使用方式为创建本类实例,然后把实例当作 socket 模块即可。所有的操作都会经过 config 配置的线路。"""

    # 封装好的 socket 类
    socket = None

    def __init__(self, config):
        self.type = config.get('type', None)
        self.config = config

        import upstream as upstream_mod

        upconfig = config.get('upstream', None)

        if upconfig:
            uptype = upconfig.get("type", None)
            if uptype is None:
                raise ConfigError(u'[配置错误] upstream 未配置 type !')

            Upstream = upstream_mod.get_upstream(uptype)
            if Upstream is None:
                raise ConfigError(u'[配置错误] upstream type %s 不被支持!' % uptype)

            self.upstream = Upstream(upconfig)
            pass
        else:
            if self.type != 'direct':
                self.upstream = upstream_mod.get_upstream('direct')({'type':'direct'})
            else:
                self.upstream = _socket

        self.http_pool = HttpPool(self,lock=BoundedSemaphore)

    def create_connection(self,address, timeout=5):
        if timeout == _socket._GLOBAL_DEFAULT_TIMEOUT:
            timeout = 10
        raise NotImplementedError()

    def get_display_name(self):
        return self.get_name()

    def get_name(self):
        return '%s-host:port' % (self.type)

    # http 请求处理
    # http 代理可以重写本方法
    # socks 类代理不需要处理。
    def get_http_conn(self,address):
        u"""  获得http with 连接 """
        return self.http_pool.get_conn(address)