jakobhellermann / rupnp Goto Github PK
View Code? Open in Web Editor NEWRust library for the universal plug and play protocol.
License: Apache License 2.0
Rust library for the universal plug and play protocol.
License: Apache License 2.0
When broadcasting to discover new devices, it is useful to be able to specify a TTL, which is an UPnP feature that allows finding devices that are in more than one hop of distance from the host (e.g. a multi-router home network). This is related to this similar issue in the ssdp-client library.
Considering that the ssdp_client::search
function now have the TTL option, the fix is as simple as exposing the TTL parameter to therupnp::discover
function.
When a device, like a Philips Hue bridge, has no services to advertise, the method devices.try_next()
throws an unrecoverable error:
Error: XmlMissingElement("device", "serviceList")
aborting any further device discovery on the network, unless I am missing something?
Thanks for a very well designed library!
I am behind the Huawei EchoLife HG8245H router and the Service::action
function is returning HttpErrorCode(500)
when I'm on commit 2209da6 (one with the 1.0.0 tag).
Fortunately for me, this issue has been fixed by @stanislav-omelchenko in commit abde2a3.
Could you please bump the version in crates to contain this fix?
In trying to set up a system with a friend's router (so I am unable to rigorously test), I found that when parsing StateVariables when calling service.scpd()
, I got this error: Invalid response: cannot parse integer from empty string
Turns out, in their WANIPConn1 service, the Uptime state variable had no maximum defined. Specifically:
<stateVariable sendEvents="no">
<name>Uptime</name>
<dataType>ui4</dataType>
<defaultValue>0</defaultValue>
<allowedValueRange>
<minimum>0</minimum>
<maximum/>
<step>1</step>
</allowedValueRange>
</stateVariable>
When parsing, maximum
here causes the parsing to fail.
The specific router is a TP-Link TD-W9970, model number 4.0.
It also reproduces on the TP-Link Archer VR1600v (unknown model version)
I'm not sure how this would best be represented, but if informed how to I'm happy to do a PR myself.
The specific error location is in scpd::state_variable::range_from_xml()
when parsing maximum by calling utils::parse_node_text()
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.