An open API service indexing awesome lists of open source software.

https://github.com/cycloctane/upnppass

SSDP proxy for UPnP/DLNA. Pass UPnP discovery messages through subnet/vpn.
https://github.com/cycloctane/upnppass

dlna go golang proxy upnp

Last synced: 3 months ago
JSON representation

SSDP proxy for UPnP/DLNA. Pass UPnP discovery messages through subnet/vpn.

Awesome Lists containing this project

README

        

# upnpPass

UPnP Pass: Pass UPnP/DLNA discovery messages through subnet/vpn/port-forwarding.

This program acts like a [SSDP Server Proxy](https://datatracker.ietf.org/doc/html/draft-cai-ssdp-v1-01#section-7.2) for UPnP devices. It retrieves description from UPnP device and announces SSDP messages in local network to make the target UPnP device visible in local subnet.

It only sends advertisements for the target. Location in advertisements remains the same as UPnP device's orginal address. UPnP clients (control points) should be able to connect to the target UPnP device directly.

It can also be used for accessing remote UPnP/DLNA service through port forwarding or vpn that do not route multicast traffic (like ipsec and openvpn).

Currently supports UPnP root devices and services. Proxy for embedded devices is not implemented yet.

## Usage

### upnpPass

```bash
./upnppass -i $interface -u $description_url -t 1800
```

- `-i`: Network interface used for sending SSDP multicast messages.
- `-u`: URL of target UPnP device's root device description. (`http://host:8200/rootDesc.xml` for minidlna)
- `-t`: Advertisement duration (max-age).

For example, to make a minidlna server in remote network visible to localhost after forwarding remote minidlna server's 8200 port to local 127.0.0.1:

```bash
./upnppass -i loop -u http://127.0.0.1:8200/rootDesc.xml -t 1800
```

### upnpFind

upnpFind is a helper program for searching available upnp root devices in local network. It is useful for getting root device description URL that can be used in upnpPass `-u`.

```bash
./upnpfind
```