docs/xmlstream: remove HTTP proxy references
It has been removed years ago.
This commit is contained in:
		@@ -9,7 +9,5 @@ Getting Started (with examples)
 | 
			
		||||
    component
 | 
			
		||||
    presence
 | 
			
		||||
    muc
 | 
			
		||||
    proxy
 | 
			
		||||
    scheduler
 | 
			
		||||
    iq
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,40 +0,0 @@
 | 
			
		||||
.. _proxy:
 | 
			
		||||
 | 
			
		||||
=========================
 | 
			
		||||
Enable HTTP Proxy Support
 | 
			
		||||
=========================
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
 | 
			
		||||
    If you have any issues working through this quickstart guide
 | 
			
		||||
    join the chat room at `slixmpp@muc.poez.io
 | 
			
		||||
    <xmpp:slixmpp@muc.poez.io?join>`_.
 | 
			
		||||
 | 
			
		||||
In some instances, you may wish to route XMPP traffic through
 | 
			
		||||
an HTTP proxy, probably to get around restrictive firewalls.
 | 
			
		||||
Slixmpp provides support for basic HTTP proxying with DIGEST
 | 
			
		||||
authentication.
 | 
			
		||||
 | 
			
		||||
Enabling proxy support is done in two steps. The first is to instruct Slixmpp
 | 
			
		||||
to use a proxy, and the second is to configure the proxy details:
 | 
			
		||||
 | 
			
		||||
.. code-block:: python
 | 
			
		||||
 | 
			
		||||
    xmpp = ClientXMPP(...)
 | 
			
		||||
    xmpp.use_proxy = True
 | 
			
		||||
    xmpp.proxy_config = {
 | 
			
		||||
        'host': 'proxy.example.com',
 | 
			
		||||
        'port': 5555,
 | 
			
		||||
        'username': 'example_user',
 | 
			
		||||
        'password': '******'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
The ``'username'`` and ``'password'`` fields are optional if the proxy does not
 | 
			
		||||
require authentication.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
The Final Product
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
.. include:: ../../examples/proxy_echo_client.py
 | 
			
		||||
    :literal:
 | 
			
		||||
@@ -1,135 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
 | 
			
		||||
"""
 | 
			
		||||
    Slixmpp: The Slick XMPP Library
 | 
			
		||||
    Copyright (C) 2010  Nathanael C. Fritz
 | 
			
		||||
    This file is part of Slixmpp.
 | 
			
		||||
 | 
			
		||||
    See the file LICENSE for copying permission.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import logging
 | 
			
		||||
from getpass import getpass
 | 
			
		||||
from argparse import ArgumentParser
 | 
			
		||||
 | 
			
		||||
import slixmpp
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EchoBot(slixmpp.ClientXMPP):
 | 
			
		||||
 | 
			
		||||
    """
 | 
			
		||||
    A simple Slixmpp bot that will echo messages it
 | 
			
		||||
    receives, along with a short thank you message.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, jid, password):
 | 
			
		||||
        slixmpp.ClientXMPP.__init__(self, jid, password)
 | 
			
		||||
 | 
			
		||||
        # The session_start event will be triggered when
 | 
			
		||||
        # the bot establishes its connection with the server
 | 
			
		||||
        # and the XML streams are ready for use. We want to
 | 
			
		||||
        # listen for this event so that we we can initialize
 | 
			
		||||
        # our roster.
 | 
			
		||||
        self.add_event_handler("session_start", self.start)
 | 
			
		||||
 | 
			
		||||
        # The message event is triggered whenever a message
 | 
			
		||||
        # stanza is received. Be aware that that includes
 | 
			
		||||
        # MUC messages and error messages.
 | 
			
		||||
        self.add_event_handler("message", self.message)
 | 
			
		||||
 | 
			
		||||
    async def start(self, event):
 | 
			
		||||
        """
 | 
			
		||||
        Process the session_start event.
 | 
			
		||||
 | 
			
		||||
        Typical actions for the session_start event are
 | 
			
		||||
        requesting the roster and broadcasting an initial
 | 
			
		||||
        presence stanza.
 | 
			
		||||
 | 
			
		||||
        Arguments:
 | 
			
		||||
            event -- An empty dictionary. The session_start
 | 
			
		||||
                     event does not provide any additional
 | 
			
		||||
                     data.
 | 
			
		||||
        """
 | 
			
		||||
        self.send_presence()
 | 
			
		||||
        await self.get_roster()
 | 
			
		||||
 | 
			
		||||
    def message(self, msg):
 | 
			
		||||
        """
 | 
			
		||||
        Process incoming message stanzas. Be aware that this also
 | 
			
		||||
        includes MUC messages and error messages. It is usually
 | 
			
		||||
        a good idea to check the messages's type before processing
 | 
			
		||||
        or sending replies.
 | 
			
		||||
 | 
			
		||||
        Arguments:
 | 
			
		||||
            msg -- The received message stanza. See the documentation
 | 
			
		||||
                   for stanza objects and the Message stanza to see
 | 
			
		||||
                   how it may be used.
 | 
			
		||||
        """
 | 
			
		||||
        msg.reply("Thanks for sending\n%(body)s" % msg).send()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    # Setup the command line arguments.
 | 
			
		||||
    parser = ArgumentParser()
 | 
			
		||||
 | 
			
		||||
    # Output verbosity options.
 | 
			
		||||
    parser.add_argument("-q", "--quiet", help="set logging to ERROR",
 | 
			
		||||
                        action="store_const", dest="loglevel",
 | 
			
		||||
                        const=logging.ERROR, default=logging.INFO)
 | 
			
		||||
    parser.add_argument("-d", "--debug", help="set logging to DEBUG",
 | 
			
		||||
                        action="store_const", dest="loglevel",
 | 
			
		||||
                        const=logging.DEBUG, default=logging.INFO)
 | 
			
		||||
 | 
			
		||||
    # JID and password options.
 | 
			
		||||
    parser.add_argument("-j", "--jid", dest="jid",
 | 
			
		||||
                        help="JID to use")
 | 
			
		||||
    parser.add_argument("-p", "--password", dest="password",
 | 
			
		||||
                        help="password to use")
 | 
			
		||||
    parser.add_argument("--phost", dest="proxy_host",
 | 
			
		||||
                        help="Proxy hostname")
 | 
			
		||||
    parser.add_argument("--pport", dest="proxy_port",
 | 
			
		||||
                        help="Proxy port")
 | 
			
		||||
    parser.add_argument("--puser", dest="proxy_user",
 | 
			
		||||
                        help="Proxy username")
 | 
			
		||||
    parser.add_argument("--ppass", dest="proxy_pass",
 | 
			
		||||
                        help="Proxy password")
 | 
			
		||||
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    # Setup logging.
 | 
			
		||||
    logging.basicConfig(level=args.loglevel,
 | 
			
		||||
                        format='%(levelname)-8s %(message)s')
 | 
			
		||||
 | 
			
		||||
    if args.jid is None:
 | 
			
		||||
        args.jid = input("Username: ")
 | 
			
		||||
    if args.password is None:
 | 
			
		||||
        args.password = getpass("Password: ")
 | 
			
		||||
    if args.proxy_host is None:
 | 
			
		||||
        args.proxy_host = input("Proxy host: ")
 | 
			
		||||
    if args.proxy_port is None:
 | 
			
		||||
        args.proxy_port = input("Proxy port: ")
 | 
			
		||||
    if args.proxy_user is None:
 | 
			
		||||
        args.proxy_user = input("Proxy username: ")
 | 
			
		||||
    if args.proxy_pass is None and args.proxy_user:
 | 
			
		||||
        args.proxy_pass = getpass("Proxy password: ")
 | 
			
		||||
 | 
			
		||||
    # Setup the EchoBot and register plugins. Note that while plugins may
 | 
			
		||||
    # have interdependencies, the order in which you register them does
 | 
			
		||||
    # not matter.
 | 
			
		||||
    xmpp = EchoBot(args.jid, args.password)
 | 
			
		||||
    xmpp.register_plugin('xep_0030') # Service Discovery
 | 
			
		||||
    xmpp.register_plugin('xep_0004') # Data Forms
 | 
			
		||||
    xmpp.register_plugin('xep_0060') # PubSub
 | 
			
		||||
    xmpp.register_plugin('xep_0199') # XMPP Ping
 | 
			
		||||
 | 
			
		||||
    xmpp.use_proxy = True
 | 
			
		||||
    xmpp.proxy_config = {
 | 
			
		||||
        'host': args.proxy_host,
 | 
			
		||||
        'port': int(args.proxy_port),
 | 
			
		||||
        'username': args.proxy_user,
 | 
			
		||||
        'password': args.proxy_pass}
 | 
			
		||||
 | 
			
		||||
    # Connect to the XMPP server and start processing XMPP stanzas.
 | 
			
		||||
    xmpp.connect()
 | 
			
		||||
    xmpp.process()
 | 
			
		||||
@@ -157,10 +157,6 @@ class XMLStream(asyncio.BaseProtocol):
 | 
			
		||||
        #: non-SSL traffic and another for SSL traffic.
 | 
			
		||||
        self.use_ssl = False
 | 
			
		||||
 | 
			
		||||
        #: If set to ``True``, attempt to connect through an HTTP
 | 
			
		||||
        #: proxy based on the settings in :attr:`proxy_config`.
 | 
			
		||||
        self.use_proxy = False
 | 
			
		||||
 | 
			
		||||
        #: If set to ``True``, attempt to use IPv6.
 | 
			
		||||
        self.use_ipv6 = True
 | 
			
		||||
 | 
			
		||||
@@ -173,13 +169,6 @@ class XMLStream(asyncio.BaseProtocol):
 | 
			
		||||
        #: to ``False``.
 | 
			
		||||
        self.use_cdata = False
 | 
			
		||||
 | 
			
		||||
        #: An optional dictionary of proxy settings. It may provide:
 | 
			
		||||
        #: :host: The host offering proxy services.
 | 
			
		||||
        #: :port: The port for the proxy service.
 | 
			
		||||
        #: :username: Optional username for accessing the proxy.
 | 
			
		||||
        #: :password: Optional password for accessing the proxy.
 | 
			
		||||
        self.proxy_config = {}
 | 
			
		||||
 | 
			
		||||
        #: The default namespace of the stream content, not of the
 | 
			
		||||
        #: stream wrapper itself.
 | 
			
		||||
        self.default_ns = ''
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user