Metadata-Version: 2.0
Name: txtorcon
Version: 0.19.3
Summary:     Twisted-based Tor controller client, with state-tracking and
    configuration abstractions.
    https://txtorcon.readthedocs.org
    https://github.com/meejah/txtorcon
Requires-Dist: Twisted[tls] (>=15.5.0)
Requires-Dist: automat
Requires-Dist: incremental
Requires-Dist: ipaddress (>=1.0.16)
Requires-Dist: zope.interface (>=3.6.1)
Provides-Extra: dev
Requires-Dist: Sphinx; extra == 'dev'
Requires-Dist: codecov; extra == 'dev'
Requires-Dist: coverage; extra == 'dev'
Requires-Dist: coveralls; extra == 'dev'
Requires-Dist: cuvner; extra == 'dev'
Requires-Dist: geoip; extra == 'dev'
Requires-Dist: ipaddress (>=1.0.16); extra == 'dev'
Requires-Dist: mock; extra == 'dev'
Requires-Dist: pep8; extra == 'dev'
Requires-Dist: pyflakes; extra == 'dev'
Requires-Dist: repoze.sphinx.autointerface (>=0.4); extra == 'dev'
Requires-Dist: setuptools (>=0.8.0); extra == 'dev'
Requires-Dist: tox; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Requires-Dist: wheel; extra == 'dev'

Home-page: https://github.com/meejah/txtorcon
Author: meejah
Author-email: meejah@meejah.ca
License: MIT
Description: 
        
        
        
        
        .. _NOTE: see docs/index.rst for the starting-point
        .. _ALSO: https://txtorcon.readthedocs.org for rendered docs
        
        
        
        
        
        
        .. image:: https://travis-ci.org/meejah/txtorcon.png?branch=master
            :target: https://www.travis-ci.org/meejah/txtorcon
            :alt: travis
        
        .. image:: https://coveralls.io/repos/meejah/txtorcon/badge.png
            :target: https://coveralls.io/r/meejah/txtorcon
            :alt: coveralls
        
        .. image:: http://codecov.io/github/meejah/txtorcon/coverage.svg?branch=master
            :target: http://codecov.io/github/meejah/txtorcon?branch=master
            :alt: codecov
        
        .. image:: https://readthedocs.org/projects/txtorcon/badge/?version=stable
            :target: https://txtorcon.readthedocs.io/en/stable
            :alt: ReadTheDocs
        
        .. image:: https://readthedocs.org/projects/txtorcon/badge/?version=latest
            :target: https://txtorcon.readthedocs.io/en/latest
            :alt: ReadTheDocs
        
        .. image:: http://api.flattr.com/button/flattr-badge-large.png
            :target: http://flattr.com/thing/1689502/meejahtxtorcon-on-GitHub
            :alt: flattr
        
        .. image:: https://landscape.io/github/meejah/txtorcon/master/landscape.svg?style=flat
            :target: https://landscape.io/github/meejah/txtorcon/master
            :alt: Code Health
        
        
        txtorcon
        ========
        
        - **docs**: https://txtorcon.readthedocs.org or http://timaq4ygg2iegci7.onion
        - **code**: https://github.com/meejah/txtorcon
        - ``torsocks git clone git://timaq4ygg2iegci7.onion/txtorcon.git``
        - MIT-licensed;
        - Python 2.7, PyPy 5.0.0+, Python 3.4+;
        - depends on
          `Twisted <https://twistedmatrix.com>`_,
          `Automat <https://github.com/glyph/automat>`_,
          (and the `ipaddress <https://pypi.python.org/pypi/ipaddress>`_ backport for non Python 3)
        
        .. caution::
        
          Several large, new features have landed on master. If you're working
          directly from master, note that some of these APIs may change before
          the next release.
        
        
        Ten Thousand Feet
        -----------------
        
        txtorcon is an implementation of the `control-spec
        <https://gitweb.torproject.org/torspec.git/blob/HEAD:/control-spec.txt>`_
        for `Tor <https://www.torproject.org/>`_ using the `Twisted
        <https://twistedmatrix.com/trac/>`_ networking library for `Python
        <http://python.org/>`_.
        
        This is useful for writing utilities to control or make use of Tor in
        event-based Python programs. If your Twisted program supports
        endpoints (like ``twistd`` does) your server or client can make use of
        Tor immediately, with no code changes. Start your own Tor or connect
        to one and get live stream, circuit, relay updates; read and change
        config; monitor events; build circuits; create onion services;
        etcetera (`ReadTheDocs <https://txtorcon.readthedocs.org>`_).
        
        
        Some Possibly Motivational Example Code
        ---------------------------------------
        
        `download <examples/readme.py>`_
        (also `python3 style <examples/readme3.py>`_)
        
        .. code:: python
        
            from twisted.internet.task import react
            from twisted.internet.defer import inlineCallbacks
            from twisted.internet.endpoints import UNIXClientEndpoint
            import treq
            import txtorcon
        
            @react
            @inlineCallbacks
            def main(reactor):
                tor = yield txtorcon.connect(
                    reactor,
                    UNIXClientEndpoint(reactor, "/var/run/tor/control")
                )
        
                print("Connected to Tor version {}".format(tor.version))
        
                url = 'https://www.torproject.org:443'
                print("Downloading {}".format(url))
                resp = yield treq.get(url, agent=tor.web_agent())
        
                print("   {} bytes".format(resp.length))
                data = yield resp.text()
                print("Got {} bytes:\n{}\n[...]{}".format(
                    len(data),
                    data[:120],
                    data[-120:],
                ))
        
                print("Creating a circuit")
                state = yield tor.create_state()
                circ = yield state.build_circuit()
                yield circ.when_built()
                print("  path: {}".format(" -> ".join([r.ip for r in circ.path])))
        
                print("Downloading meejah's public key via above circuit...")
                resp = yield treq.get(
                    'https://meejah.ca/meejah.asc',
                    agent=circ.web_agent(reactor, tor.config.socks_endpoint(reactor)),
                )
                data = yield resp.text()
                print(data)
        
        
        
        Try It Now On Debian/Ubuntu
        ---------------------------
        
        For example, serve some files via an onion service (*aka* hidden
        service):
        
        .. code-block:: shell-session
        
            $ sudo apt-get install python-txtorcon
            $ twistd -n web --port "onion:80" --path ~/public_html
        
        
        Read More
        ---------
        
        All the documentation starts `in docs/index.rst
        <docs/index.rst>`_. Also hosted at `txtorcon.rtfd.org
        <https://txtorcon.readthedocs.io/en/latest/>`_.
        
        You'll want to start with `the introductions <docs/introduction.rst>`_ (`hosted at RTD
        <https://txtorcon.readthedocs.org/en/latest/introduction.html>`_).
        
Keywords: python,twisted,tor,tor controller
Platform: UNKNOWN
Classifier: Framework :: Twisted
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: Proxy Servers
Classifier: Topic :: Internet
Classifier: Topic :: Security