|
|
2 years ago | |
|---|---|---|
| .. | ||
| dcps | 2 years ago | |
| httpu | 2 years ago | |
| scpd | 2 years ago | |
| soap | 2 years ago | |
| ssdp | 2 years ago | |
| .gitignore | 2 years ago | |
| GUIDE.md | 2 years ago | |
| LICENSE | 2 years ago | |
| README.md | 2 years ago | |
| device.go | 2 years ago | |
| goupnp.go | 2 years ago | |
| network.go | 2 years ago | |
| service_client.go | 2 years ago | |
This repo is a temporary fork of huin/goupnp(A UPnP client library for Go), customized for UPnP support in Tailscale.
Run go get -u github.com/tailscale/goupnp.
See GUIDE.md for a quick start on the most common use case for this library.
Supported DCPs (you probably want to start with one of these):
Core components:
go get -u github.com/tailscale/goupnp/cmd/goupnpdcpgen
go generate ./...
Supporting additional services is, in the trivial case, simply a matter of
adding the service to the dcpMetadata whitelist in cmd/goupnpdcpgen/metadata.go,
regenerating the source code (see above), and committing that source code.
However, it would be helpful if anyone needing such a service could test the service against the service they have, and then reporting any trouble encountered as an issue on this project. If it just works, then please report at least minimal working functionality as an issue, and optionally contribute the metadata upstream.
#40 introduced a breaking change to handling non-utf8 encodings, but removes a heavy
dependency on golang.org/x/net with charset encodings. If this breaks your usage of this
library, you can return to the old behavior by modifying the exported variable and importing
the package yourself:
import (
"golang.org/x/net/html/charset"
"github.com/tailscale/goupnp"
)
func init() {
// should be modified before goupnp libraries are in use.
goupnp.CharsetReaderFault = charset.NewReaderLabel
}