Skip to main content

.. image:: https://travis-ci.org/jtriley/pystun.svg?branch=master :target: https://travis-ci.org/jtriley/pystun

.. image:: https://coveralls.io/repos/jtriley/pystun/badge.png :target: https://coveralls.io/r/jtriley/pystun

Yet Another PyStun Fork. Works with Python 3.11. Forked from:

https://github.com/jtriley/pystun

PyStun

A Python STUN client for getting NAT type and external IP

This is a fork of pystun originally created by gaohawk (http://code.google.com/p/pystun/)

PyStun follows RFC 3489: http://www.ietf.org/rfc/rfc3489.txt

A server following STUN-bis hasn't been found on internet so RFC3489 is the only implementation.

Installation

To install the latest version::

$ pip install pystun

or download/clone the source and install manually using::

$ cd /path/to/pystun/src
$ python setup.py install

If you're hacking on pystun you should use the 'develop' command instead::

$ python setup.py develop

This will make a link to the sources inside your site-packages directory so that any changes are immediately available for testing.

Usage

From command line::

$ pystun
NAT Type: Full Cone
External IP: <your-ip-here>
External Port: 54320

Pass --help for more options::

% pystun --help
usage: pystun [-h] [-d] [-H STUN_HOST] [-P STUN_PORT] [-i SOURCE_IP]
              [-p SOURCE_PORT] [--version]

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           Enable debug logging (default: False)
  -H STUN_HOST, --host STUN_HOST
                        STUN host to use (default: None)
  -P STUN_PORT, --host-port STUN_PORT
                        STUN host port to use (default: 3478)
  -i SOURCE_IP, --interface SOURCE_IP
                        network interface for client (default: 0.0.0.0)
  -p SOURCE_PORT, --port SOURCE_PORT
                        port to listen on for client (default: 54320)
  --version             show program's version number and exit

From Python::

import stun
nat_type, external_ip, external_port = stun.get_ip_info()

This will rotate through an internal list of STUN servers until a response is found. If no response is found you will get "Blocked" as the nat_type and None for external_ip and external_port.

If you prefer to use a specific STUN server::

nat_type, external_ip, external_port = stun.get_ip_info(stun_host='stun.ekiga.net')

If you prefer to use a specific STUN server port::

nat_type, external_ip, external_port = stun.get_ip_info(stun_port=3478)

You may also specify the client interface and port that is used although this is not needed::

sip = "0.0.0.0" # interface to listen on (all)
port = 54320 # port to listen on
nat_type, external_ip, external_port = stun.get_ip_info(sip, port)

Read the code for more details...

LICENSE

MIT

Metadata

Release files for yapystun 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yapystun 0.2.2
File Size Uploaded Provenance Actions
yapystun-0.2.2.tar.gz 5.5 kB Without provenance Details for yapystun-0.2.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for yapystun 0.2.2
File Interpreter ABI Platform Actions
yapystun-0.2.2-py3-none-any.whl Python 3 none any Details for yapystun-0.2.2-py3-none-any.whl

Total release size: 12.0 kB

Release files / yapystun-0.2.2.tar.gz

Download URL yapystun-0.2.2.tar.gz
Size 5.5 kB
Tags Source
SHA-256 checksum
How to use checksums
821c49c22057f85ca9712a69c856777b6176253118054c366694a2e9f9664675
BLAKE2b-256 checksum
How to use checksums
6c090d22a1c8a22748c8c875cc3dc04b464bd846f82c0c9a9143227cbb69fe3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.2 Darwin/23.1.0

Release files / yapystun-0.2.2-py3-none-any.whl

Download URL yapystun-0.2.2-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
49fa8f5ac5f26cfa1da05538adbf3d57d6b67094e677b45c6d2370479e415c0c
BLAKE2b-256 checksum
How to use checksums
07788b09c9ef117cc940ea3d3a7e93f54103eb022d160d57d2d3ac6cb1e91590
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.2 Darwin/23.1.0

Security for yapystun 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page