A simple implements UPnP protocol for Go(Golang) library. Add port mapping for NAT devices. Look for a gateway device, check if it supports UPnP, and if so, add port mappings.
Switch branches/tags
Nothing to show
Clone or download
#1 Compare This branch is 3 commits ahead of prestonTao:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example
AddPortMapping.go
DelPortMapping.go
DeviceDesc.go
DeviceStatusInfo.go
ExternalIPAddress.go
README.md
SearchGatewayMsg.go
common.go
message.go
upnp.go

README.md

upnp protocol

====

A simple implementation of the UPnP protocol as a Golang library. Add port mappings for NAT devices.

Look for a gateway device, check if it supports UPnP, and if so, add port mappings.

====

example:

1. add a port mapping

mapping := new(upnp.Upnp)
if err := mapping.AddPortMapping(55789, 55789, "TCP"); err == nil {
	fmt.Println("success !")
	// remove port mapping in gatway
	mapping.Reclaim()
} else {
	fmt.Println("fail !")
}

2. search gateway device.

upnpMan := new(upnp.Upnp)
err := upnpMan.SearchGateway()
if err != nil {
	fmt.Println(err.Error())
} else {
	fmt.Println("local ip address: ", upnpMan.LocalHost)
	fmt.Println("gateway ip address: ", upnpMan.Gateway.Host)
}

3. get an internet ip address in gatway.

upnpMan := new(upnp.Upnp)
err := upnpMan.ExternalIPAddr()
if err != nil {
	fmt.Println(err.Error())
} else {
	fmt.Println("internet ip address: ", upnpMan.GatewayOutsideIP)
}