From b83ea099ff15ff9952d0f078302025838bfa926d Mon Sep 17 00:00:00 2001 From: tarekbadr Date: Sat, 3 Nov 2018 15:41:49 +0200 Subject: [PATCH] go-ipfs-config: change randomports Description --- config/profile.go | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/config/profile.go b/config/profile.go index d23cadc6d97..ee568b4033f 100644 --- a/config/profile.go +++ b/config/profile.go @@ -1,6 +1,10 @@ package config -import "time" +import ( + "fmt" + "net" + "time" +) // Transformer is a function which takes configuration and applies some filter to it type Transformer func(c *Config) error @@ -159,6 +163,31 @@ fetching may be degraded. return nil }, }, + "randomports": { + Description: `Use a random port number for swarm.`, + + Transform: func(c *Config) error { + port, err := getAvailablePort() + if err != nil { + return err + } + c.Addresses.Swarm = []string{ + fmt.Sprintf("/ip4/0.0.0.0/tcp/%d", port), + fmt.Sprintf("/ip6/::/tcp/%d", port), + } + return nil + }, + }, +} + +func getAvailablePort() (port int, err error) { + ln, err := net.Listen("tcp", "[::]:0") + if err != nil { + return 0, err + } + defer ln.Close() + port = ln.Addr().(*net.TCPAddr).Port + return port, nil } func appendSingle(a []string, b []string) []string {