mirror of
https://github.com/inverse-inc/upnp.git
synced 2024-05-03 14:44:57 +08:00
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.
example | ||
AddPortMapping.go | ||
common.go | ||
DelPortMapping.go | ||
DeviceDesc.go | ||
DeviceStatusInfo.go | ||
ExternalIPAddress.go | ||
GetGenericPortMappingEntry.go | ||
GetListOfPortMappings.go | ||
go.mod | ||
message.go | ||
README.md | ||
SearchGatewayMsg.go | ||
ttl_other.go | ||
ttl_unix.go | ||
upnp.go |
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)
}