|
@@ -17,12 +17,24 @@ var upnpEnabled = false
|
|
var preforwardMap map[int]string
|
|
var preforwardMap map[int]string
|
|
|
|
|
|
func initUpnp() error {
|
|
func initUpnp() error {
|
|
- var err error
|
|
|
|
- upnpClient, err = upnp.NewUPNPClient()
|
|
|
|
- if err != nil {
|
|
|
|
- log.Println("UPnP router discover error: ", err.Error())
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
|
|
+ go func() {
|
|
|
|
+ //Let UPnP discovery run in background
|
|
|
|
+ var err error
|
|
|
|
+ upnpClient, err = upnp.NewUPNPClient()
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("UPnP router discover error: ", err.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if upnpEnabled {
|
|
|
|
+ //Forward all the ports
|
|
|
|
+ for port, policyName := range preforwardMap {
|
|
|
|
+ upnpClient.ForwardPort(port, policyName)
|
|
|
|
+ log.Println("Upnp forwarding ", port, " for "+policyName)
|
|
|
|
+ time.Sleep(300 * time.Millisecond)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
|
|
//Check if the upnp was enabled
|
|
//Check if the upnp was enabled
|
|
sysdb.NewTable("upnp")
|
|
sysdb.NewTable("upnp")
|
|
@@ -33,15 +45,6 @@ func initUpnp() error {
|
|
sysdb.Read("upnp", "portmap", &portsMap)
|
|
sysdb.Read("upnp", "portmap", &portsMap)
|
|
preforwardMap = portsMap
|
|
preforwardMap = portsMap
|
|
|
|
|
|
- if upnpEnabled {
|
|
|
|
- //Forward all the ports
|
|
|
|
- for port, policyName := range preforwardMap {
|
|
|
|
- upnpClient.ForwardPort(port, policyName)
|
|
|
|
- log.Println("Upnp forwarding ", port, " for "+policyName)
|
|
|
|
- time.Sleep(300 * time.Millisecond)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|