Crate upnp-rs
A Rust crate providing basic Universal Plug and Play (UPnP) protocol implementations.
Implements the core protocols of the UPnP Device Architecture (UDA), specifically the discovery protocol for control points to search for, and devices to notify of, device and service availability.
UPnP technology allows devices to connect seamlessly and to simplify network implementation in the home and corporate environments — Open Connectivity Foundation.
Usage
Add the following to your Cargo.toml
; currently this crate has no optional features.
= "0.2"
API
The main client interface is the discovery
module that provides search
and notify
capabilities. Over time
the description
module will be completed for the parsing and generation of device description messages. The
following diagram shows the basic structure of the library with the two API modules relying on implementations of
HTTPMU/HTTPU and SOAP respectively.
,--------, discover ,--------, advertise ,--------,
| |--------->| disco. |<------------------| |
| Client | '--------' | Server |
| API | understand : ,--------, describe | API |
| |------------------>| descr. |<---------| |
'--------' : '--------' '--------'
: :
: V
: ,--------,
: | SOAP |
: '--------'
: :
V :
,--------, :
| HTTPMU | :
'--------' :
: :
V V TCP/UDP
,---------------------------------------------------,
Example
use SpecVersion;
use *;
let mut options = default_for;
options.search_target = RootDevices;
match search_once
Command-Line
The command-line tool upnp
can be used to perform basic operations using the SSDP API. Primarily these are used
for testing, but the search command can be used for general purpose discovery.
The general form of the command is network-options command command-options, as shown below.
;
;
;
)
interface
this is the name of a local network interface such asen0
.
;
;
});
Changes
Version 0.2.0
- Rewritten error handling to have more discrete errors and better reporting.
- Moved from log and env_logger to tracing and tracing_subscriber.
- Upgraded dependencies, especially pnet which had a reported vulnerability.
- Moved all protocol constants into the
syntax
module. - Using crate
os_version
for platform detection. - Added build file and adsjusted workflow to get a clean Windows build.
Version 0.1.0
- Ability to issue multicast non-caching search command, with parsed results.
- Ability to send multicast device notifications.
- Command-line tool
upnp
to issue test commands.
TODO
- Finish parsing search results.
- Support listening for notifications.
- Support fetching device details. 4. Support for sending notifications.