github.com/mit-dci/lit@v0.0.0-20221102210550-8c3d3b49f2ce/nat/upnp.go (about)

     1  package nat
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/mit-dci/lit/logging"
     7  
     8  	UpnP "github.com/NebulousLabs/go-UpnP"
     9  )
    10  
    11  func SetupUpnp(port uint16) error {
    12  	// Connect to router
    13  	deliver, err := UpnP.DiscoverCtx(context.Background())
    14  	if err != nil {
    15  		logging.Fatalf("Unable to discover router %v\n", err)
    16  	}
    17  	// Get external IP
    18  	ip, err := deliver.ExternalIP()
    19  	if err != nil {
    20  		logging.Fatalf("Unable to get external ip %v\n", err)
    21  	}
    22  	logging.Infof("Your external IP is %s", ip)
    23  	// Forward peer port
    24  	err = deliver.Forward(uint16(port), "lnd peer port")
    25  	if err != nil {
    26  		logging.Fatalf("UpnP: Unable to forward pear port ip %v\n", err)
    27  	}
    28  	return nil
    29  }