- package upnp
-
- import (
- "net"
- "testing"
- "time"
- )
-
- /*
- This is a manual test.
- TODO: set up or find a service to probe open ports.
- */
- func TestUPNP(t *testing.T) {
- t.Log("hello!")
-
- nat, err := Discover()
- if err != nil {
- t.Fatalf("NAT upnp could not be discovered: %v", err)
- }
-
- t.Log("ourIP: ", nat.(*upnpNAT).ourIP)
-
- ext, err := nat.GetExternalAddress()
- if err != nil {
- t.Fatalf("External address error: %v", err)
- }
- t.Logf("External address: %v", ext)
-
- port, err := nat.AddPortMapping("tcp", 8001, 8001, "testing", 0)
- if err != nil {
- t.Fatalf("Port mapping error: %v", err)
- }
- t.Logf("Port mapping mapped: %v", port)
-
- // also run the listener, open for all remote addresses.
- listener, err := net.Listen("tcp", ":8001")
- if err != nil {
- panic(err)
- }
-
- // now sleep for 10 seconds
- time.Sleep(10 * time.Second)
-
- err = nat.DeletePortMapping("tcp", 8001, 8001)
- if err != nil {
- t.Fatalf("Port mapping delete error: %v", err)
- }
- t.Logf("Port mapping deleted")
-
- listener.Close()
- }
|