Skip to main content

Simple STUN Client

Project description

.. 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yapystun-0.2.2.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

yapystun-0.2.2-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file yapystun-0.2.2.tar.gz.

File metadata

  • Download URL: yapystun-0.2.2.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.2 Darwin/23.1.0

File hashes

Hashes for yapystun-0.2.2.tar.gz
Algorithm Hash digest
SHA256 821c49c22057f85ca9712a69c856777b6176253118054c366694a2e9f9664675
MD5 2c3212cd72d7016effbdcee079d1eefe
BLAKE2b-256 6c090d22a1c8a22748c8c875cc3dc04b464bd846f82c0c9a9143227cbb69fe3d

See more details on using hashes here.

File details

Details for the file yapystun-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: yapystun-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.2 Darwin/23.1.0

File hashes

Hashes for yapystun-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 49fa8f5ac5f26cfa1da05538adbf3d57d6b67094e677b45c6d2370479e415c0c
MD5 eeb0cfe7539de76eb1625433f6d192a9
BLAKE2b-256 07788b09c9ef117cc940ea3d3a7e93f54103eb022d160d57d2d3ac6cb1e91590

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page