示例#1
0
    def __init__(self,
                 con_pool_size=1,
                 proxy_url=None,
                 urllib3_proxy_kwargs=None,
                 connect_timeout=5.,
                 read_timeout=5.):
        if urllib3_proxy_kwargs is None:
            urllib3_proxy_kwargs = dict()

        self._connect_timeout = connect_timeout

        sockopts = HTTPConnection.default_socket_options + [
            (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)]

        # TODO: Support other platforms like mac and windows.
        if 'linux' in sys.platform:
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 120))
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 30))
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 8))

        kwargs = dict(
            maxsize=con_pool_size,
            cert_reqs='CERT_REQUIRED',
            ca_certs=certifi.where(),
            socket_options=sockopts,
            timeout=urllib3.Timeout(
                connect=self._connect_timeout, read=read_timeout, total=None))

        # Set a proxy according to the following order:
        # * proxy defined in proxy_url (+ urllib3_proxy_kwargs)
        # * proxy set in `HTTPS_PROXY` env. var.
        # * proxy set in `https_proxy` env. var.
        # * None (if no proxy is configured)

        if not proxy_url:
            proxy_url = os.environ.get('HTTPS_PROXY') or os.environ.get('https_proxy')

        if not proxy_url:
            if appengine.is_appengine_sandbox():
                # Use URLFetch service if running in App Engine
                mgr = appengine.AppEngineManager()
            else:
                mgr = urllib3.PoolManager(**kwargs)
        else:
            kwargs.update(urllib3_proxy_kwargs)
            if proxy_url.startswith('socks'):
                try:
                    from telegram.vendor.ptb_urllib3.urllib3.contrib.socks import SOCKSProxyManager
                except ImportError:
                    raise RuntimeError('PySocks is missing')
                mgr = SOCKSProxyManager(proxy_url, **kwargs)
            else:
                mgr = urllib3.proxy_from_url(proxy_url, **kwargs)
                if mgr.proxy.auth:
                    # TODO: what about other auth types?
                    auth_hdrs = urllib3.make_headers(proxy_basic_auth=mgr.proxy.auth)
                    mgr.proxy_headers.update(auth_hdrs)

        self._con_pool = mgr
示例#2
0
    def __init__(self,
                 con_pool_size=1,
                 proxy_url=None,
                 urllib3_proxy_kwargs=None,
                 connect_timeout=5.,
                 read_timeout=5.):
        if urllib3_proxy_kwargs is None:
            urllib3_proxy_kwargs = dict()

        self._connect_timeout = connect_timeout

        sockopts = HTTPConnection.default_socket_options + [
            (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)]

        # TODO: Support other platforms like mac and windows.
        if 'linux' in sys.platform:
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 120))
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 30))
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 8))

        kwargs = dict(
            maxsize=con_pool_size,
            cert_reqs='CERT_REQUIRED',
            ca_certs=certifi.where(),
            socket_options=sockopts,
            timeout=urllib3.Timeout(
                connect=self._connect_timeout, read=read_timeout, total=None))

        # Set a proxy according to the following order:
        # * proxy defined in proxy_url (+ urllib3_proxy_kwargs)
        # * proxy set in `HTTPS_PROXY` env. var.
        # * proxy set in `https_proxy` env. var.
        # * None (if no proxy is configured)

        if not proxy_url:
            proxy_url = os.environ.get('HTTPS_PROXY') or os.environ.get('https_proxy')

        if not proxy_url:
            if appengine.is_appengine_sandbox():
                # Use URLFetch service if running in App Engine
                mgr = appengine.AppEngineManager()
            else:
                mgr = urllib3.PoolManager(**kwargs)
        else:
            kwargs.update(urllib3_proxy_kwargs)
            if proxy_url.startswith('socks'):
                try:
                    from telegram.vendor.ptb_urllib3.urllib3.contrib.socks import SOCKSProxyManager
                except ImportError:
                    raise RuntimeError('PySocks is missing')
                mgr = SOCKSProxyManager(proxy_url, **kwargs)
            else:
                mgr = urllib3.proxy_from_url(proxy_url, **kwargs)
                if mgr.proxy.auth:
                    # TODO: what about other auth types?
                    auth_hdrs = urllib3.make_headers(proxy_basic_auth=mgr.proxy.auth)
                    mgr.proxy_headers.update(auth_hdrs)

        self._con_pool = mgr
    def __init__(self,
                 con_pool_size=1,
                 proxy_url=None,
                 urllib3_proxy_kwargs=None,
                 connect_timeout=5.,
                 read_timeout=5.):
        if urllib3_proxy_kwargs is None:
            urllib3_proxy_kwargs = dict()

        self._connect_timeout = connect_timeout

        sockopts = HTTPConnection.default_socket_options + [
            (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)]

        # TODO: Support other platforms like mac and windows.
        if 'linux' in sys.platform:
            sockopts.append((socket.IPPROTO_TCP,
                             socket.TCP_KEEPIDLE, 120))  # pylint: disable=no-member
            sockopts.append((socket.IPPROTO_TCP,
                             socket.TCP_KEEPINTVL, 30))  # pylint: disable=no-member
            sockopts.append((socket.IPPROTO_TCP,
                             socket.TCP_KEEPCNT, 8))  # pylint: disable=no-member

        self._con_pool_size = con_pool_size

        # This was performed on Windows only, but it shouldn't be a problem
        # managing cacert.pem on Linux as well
        # if os.name == 'nt':
        try:
            import urllib2
            import tempfile
            capath = os.path.join(tempfile.gettempdir(), 'tg-cacert.pem')
            # Check if tg-cacert.pem exists and if it's older than 7 days
            if not os.path.exists(capath) or (os.path.exists(capath)
               and (time.time() - os.path.getctime(capath)) // (24 * 3600) >= 7):
                CACERT_URL = "https://curl.haxx.se/ca/cacert.pem"
                request = urllib2.Request(CACERT_URL)
                file_contents = urllib2.urlopen(request).read()
                log.debug("## Telegramer downloaded "+os.path.realpath(capath))
                cafile = open(os.path.realpath(capath), 'wb')
                cafile.write(file_contents)
                cafile.close()
        except Exception as e:
            try:
                capath = certifi.where()
            except Exception as e:
                capath = os.path.join(tempfile.gettempdir(), 'tg-cacert.pem')

        kwargs = dict(
            maxsize=con_pool_size,
            cert_reqs='CERT_REQUIRED',
            ca_certs=capath,  # certifi.where(),
            socket_options=sockopts,
            timeout=urllib3.Timeout(
                connect=self._connect_timeout, read=read_timeout, total=None))

        # Set a proxy according to the following order:
        # * proxy defined in proxy_url (+ urllib3_proxy_kwargs)
        # * proxy set in `HTTPS_PROXY` env. var.
        # * proxy set in `https_proxy` env. var.
        # * None (if no proxy is configured)

        if not proxy_url:
            proxy_url = os.environ.get('HTTPS_PROXY') or os.environ.get('https_proxy')

        if not proxy_url:
            if appengine.is_appengine_sandbox():
                # Use URLFetch service if running in App Engine
                mgr = appengine.AppEngineManager()
            else:
                mgr = urllib3.PoolManager(**kwargs)
        else:
            kwargs.update(urllib3_proxy_kwargs)
            if proxy_url.startswith('socks'):
                try:
                    from telegram.vendor.ptb_urllib3.urllib3.contrib.socks import SOCKSProxyManager
                except ImportError:
                    raise RuntimeError('PySocks is missing')
                mgr = SOCKSProxyManager(proxy_url, **kwargs)
            else:
                mgr = urllib3.proxy_from_url(proxy_url, **kwargs)
                if mgr.proxy.auth:
                    # TODO: what about other auth types?
                    auth_hdrs = urllib3.make_headers(proxy_basic_auth=mgr.proxy.auth)
                    mgr.proxy_headers.update(auth_hdrs)

        self._con_pool = mgr
示例#4
0
    def __init__(self,
                 con_pool_size=1,
                 proxy_url=None,
                 urllib3_proxy_kwargs=None,
                 connect_timeout=5.,
                 read_timeout=5.):
        if urllib3_proxy_kwargs is None:
            urllib3_proxy_kwargs = dict()

        self._connect_timeout = connect_timeout

        sockopts = HTTPConnection.default_socket_options + [
            (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)]

        # TODO: Support other platforms like mac and windows.
        if 'linux' in sys.platform:
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 120))
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 30))
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 8))

        self._con_pool_size = con_pool_size


        # This was performed on Windows only, but it shouldn't be a problem
        # managing cacert.pem on Linux as well
        #if os.name == 'nt':
        try:
            import urllib2
            import tempfile
            capath = os.path.join(tempfile.gettempdir(), 'tg-cacert.pem')
            # Check if tg-cacert.pem exists and if it's older than 7 days
            if not os.path.exists(capath) or (os.path.exists(capath) \
                    and (time.time() - os.path.getctime(capath)) // (24 * 3600) >= 7):
                CACERT_URL = "https://curl.haxx.se/ca/cacert.pem"
                request = urllib2.Request(CACERT_URL)
                file_contents = urllib2.urlopen(request).read()
                log.debug("## Telegramer downloaded "+os.path.realpath(capath))
                cafile = open(os.path.realpath(capath), 'wb')
                cafile.write(file_contents)
                cafile.close()
        except:
            try:
                capath = certifi.where()
            except:
                capath = os.path.join(tempfile.gettempdir(), 'tg-cacert.pem')


        kwargs = dict(
            maxsize=con_pool_size,
            cert_reqs='CERT_REQUIRED',
            ca_certs=capath, #certifi.where(),
            socket_options=sockopts,
            timeout=urllib3.Timeout(
                connect=self._connect_timeout, read=read_timeout, total=None))

        # Set a proxy according to the following order:
        # * proxy defined in proxy_url (+ urllib3_proxy_kwargs)
        # * proxy set in `HTTPS_PROXY` env. var.
        # * proxy set in `https_proxy` env. var.
        # * None (if no proxy is configured)

        if not proxy_url:
            proxy_url = os.environ.get('HTTPS_PROXY') or os.environ.get('https_proxy')

        if not proxy_url:
            if appengine.is_appengine_sandbox():
                # Use URLFetch service if running in App Engine
                mgr = appengine.AppEngineManager()
            else:
                mgr = urllib3.PoolManager(**kwargs)
        else:
            kwargs.update(urllib3_proxy_kwargs)
            if proxy_url.startswith('socks'):
                try:
                    from telegram.vendor.ptb_urllib3.urllib3.contrib.socks import SOCKSProxyManager
                except ImportError:
                    raise RuntimeError('PySocks is missing')
                mgr = SOCKSProxyManager(proxy_url, **kwargs)
            else:
                mgr = urllib3.proxy_from_url(proxy_url, **kwargs)
                if mgr.proxy.auth:
                    # TODO: what about other auth types?
                    auth_hdrs = urllib3.make_headers(proxy_basic_auth=mgr.proxy.auth)
                    mgr.proxy_headers.update(auth_hdrs)

        self._con_pool = mgr
示例#5
0
        bot.send_message(chat_id=settings.ADMIN_ID, 
                         text=u'\U0001F50B\U000026A1 Bot started')
    except Exception as e:
        print("[EXCEPTION] _notify_start")



              
if __name__=="__main__":

    # proxy authentication
    REQUEST_KWARGS=None
    if settings.PROXY:
        import telegram.vendor.ptb_urllib3.urllib3 as urllib3
        REQUEST_KWARGS={"proxy_url": settings.PROXY_TYPE+settings.PROXY_URL, 
                        "urllib3_proxy_kwargs": {'proxy_headers': urllib3.make_headers(proxy_basic_auth=settings.PROXY_AUTH)}}
    
    # frontend to telegram.Bot
    updater=ext.Updater(settings.TOKEN, use_context=True, request_kwargs=REQUEST_KWARGS)
    dispatcher=updater.dispatcher
    
    # admin command handlers
    dispatcher.add_handler(ext.CommandHandler(["users", "users_list", "users_detail", "users_delete"], functions.admin.users))
    dispatcher.add_handler(ext.CommandHandler(["data", "data_set", "data_delete"], functions.admin.manage_data))
    dispatcher.add_handler(ext.CommandHandler(["message"], functions.admin.message))
    
    # command handlers
    dispatcher.add_handler(ext.CommandHandler(["start", "restart"], functions.commands.start))
    dispatcher.add_handler(ext.CommandHandler(["help"], functions.commands.help))
    dispatcher.add_handler(ext.CommandHandler(["pin"], functions.commands.pin))
    dispatcher.add_handler(ext.CommandHandler(["everybody"], functions.commands.everybody))
TOKEN = 'TOKEN'
use_proxy = False
proxy = 'https://localhost:1080/'
# proxy with auth is not tested
proxy_username, proxy_password = None, None
if use_proxy:
    request_kw = {'proxy_url': proxy}
    if proxy_username != None:
        from telegram.vendor.ptb_urllib3.urllib3 import make_headers
        request_kw['urllib3_proxy_kwargs'] = {
            'headers':
            make_headers(proxy_basic_auth=proxy_username + ':' +
                         proxy_password)
        }
else:
    request_kw = None