2018-10-19 16:11:13 +02:00
[![Build Status ](https://travis-ci.org/lbryio/aioupnp.svg?branch=master )](https://travis-ci.org/lbryio/aioupnp)
2018-10-08 07:55:42 +02:00
[![codecov ](https://codecov.io/gh/lbryio/aioupnp/branch/master/graph/badge.svg )](https://codecov.io/gh/lbryio/aioupnp)
2018-10-18 17:53:10 +02:00
[![PyPI version ](https://badge.fury.io/py/aioupnp.svg )](https://badge.fury.io/py/aioupnp)
2018-10-19 16:11:13 +02:00
[![Python 3.6 ](https://img.shields.io/badge/python-3.6-blue.svg )](https://www.python.org/downloads/release/python-360/)
[![Python 3.7 ](https://img.shields.io/badge/python-3.7-blue.svg )](https://www.python.org/downloads/release/python-370/)
2019-10-25 20:50:33 +02:00
[![Python 3.8 ](https://img.shields.io/badge/python-3.8-blue.svg )](https://www.python.org/downloads/release/python-380/)
2018-09-26 06:16:02 +02:00
2018-10-08 04:30:13 +02:00
# UPnP for asyncio
2018-07-30 23:48:20 +02:00
2020-01-16 21:34:02 +01:00
`aioupnp` is a python 3.6-8 library and command line tool to interact with UPnP gateways using asyncio. `aioupnp` requires the `netifaces` and `defusedxml` modules.
2018-07-30 23:48:20 +02:00
2018-10-12 19:56:15 +02:00
## Supported devices
2019-11-15 16:46:15 +01:00
Actiontec
Airlive
ARRIS
ASUS
Belkin
Broadcom
Cisco
2018-10-12 19:56:15 +02:00
DD-WRT
2019-11-15 16:46:15 +01:00
D-Link
Huawei
libupnp
Linksys
2018-10-12 19:56:15 +02:00
miniupnpd
2019-11-15 16:46:15 +01:00
Netgear
TP-Link
ZyXEL
2018-10-12 19:56:15 +02:00
2018-07-30 23:48:20 +02:00
2019-11-15 16:46:15 +01:00
## Installation
2018-10-16 15:01:25 +02:00
2019-11-15 16:46:15 +01:00
Verify python is version 3.6-8
2018-10-16 15:01:25 +02:00
```
python --version
```
Installation for normal usage
2018-10-12 19:56:15 +02:00
```
pip install aioupnp
```
2018-10-16 15:01:25 +02:00
Installation for development
2018-07-30 23:51:59 +02:00
```
2018-10-12 19:56:15 +02:00
git clone https://github.com/lbryio/aioupnp.git
cd aioupnp
pip install -e .
2018-07-30 23:51:59 +02:00
```
2018-07-30 23:48:20 +02:00
2018-10-12 19:56:15 +02:00
2018-07-30 23:48:20 +02:00
## Usage
2018-07-31 17:35:24 +02:00
```
2018-10-12 19:56:15 +02:00
aioupnp [-h] [--debug_logging] [--interface=< interface > ] [--gateway_address=< gateway_address > ]
2018-10-08 07:00:42 +02:00
[--lan_address=< lan_address > ] [--timeout=< timeout > ]
2018-10-12 19:56:15 +02:00
[(--< case sensitive m-search header > =< value > )...]
2018-10-08 07:00:42 +02:00
command [--< arg name > =< arg > ]...
2018-10-12 19:56:15 +02:00
If m-search headers are provided as keyword arguments all of the headers to be used must be provided,
in the order they are to be used. For example:
aioupnp --HOST=239.255.255.250:1900 --MAN=\"ssdp:discover\" --MX=1 --ST=upnp:rootdevice m_search
2018-10-08 07:00:42 +02:00
```
2019-11-15 16:46:15 +01:00
cli_commands = [
'm_search',
'get_external_ip',
'add_port_mapping',
'get_port_mapping_by_index',
'get_redirects',
'get_specific_port_mapping',
'delete_port_mapping',
'get_next_mapping'
]
2018-10-08 07:00:42 +02:00
### Commands
2019-11-15 19:17:53 +01:00
m_search | add_port_mapping | get_port_mapping_by_index | get_redirects | get_specific_port_mapping | delete_port_mapping | get_next_mapping
2018-07-30 23:52:16 +02:00
2018-07-30 23:48:20 +02:00
2018-10-08 23:57:45 +02:00
### Examples
2018-07-30 23:52:16 +02:00
2019-01-22 22:22:38 +01:00
#### To get the external ip address from the UPnP gateway
2018-10-08 23:57:45 +02:00
aioupnp get_external_ip
2019-01-22 22:22:38 +01:00
#### To list the active port mappings on the gateway
2018-10-08 23:57:45 +02:00
aioupnp get_redirects
2019-01-22 22:30:06 +01:00
#### To debug the gateway discovery
2018-10-08 23:57:45 +02:00
2018-10-12 19:56:15 +02:00
aioupnp --debug_logging m_search
2018-10-08 23:57:45 +02:00
2019-01-22 22:22:38 +01:00
#### To debug a gateway on a non default network interface
2018-10-08 23:57:45 +02:00
2018-10-12 19:56:15 +02:00
aioupnp --interface=vmnet1 --debug_logging m_search
2018-10-08 23:57:45 +02:00
2019-01-22 22:22:38 +01:00
#### To debug a gateway on a non default network interface that isn't the router
2018-10-08 23:57:45 +02:00
2018-10-12 19:56:15 +02:00
aioupnp --interface=vmnet1 --gateway_address=192.168.1.106 --debug_logging m_search
2018-10-08 23:57:45 +02:00
2018-07-30 23:48:20 +02:00
## License
This project is MIT licensed. For the full license, see [LICENSE ](LICENSE ).
## Contact
2019-11-15 16:46:15 +01:00
The primary contact for this project is [@jackrobison ](mailto:jackrobison@lbry.com )