From f05346f34eac4f485bc6846a5bbf705c477f18c7 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Wed, 5 Nov 2014 01:47:13 -0800 Subject: [PATCH] hide-loopback in tool --- multiaddr/multiaddr.go | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/multiaddr/multiaddr.go b/multiaddr/multiaddr.go index df57238..3262ad5 100644 --- a/multiaddr/multiaddr.go +++ b/multiaddr/multiaddr.go @@ -10,8 +10,10 @@ import ( manet "github.com/jbenet/go-multiaddr/net" ) +// flags var formats = []string{"string", "bytes", "hex", "slice"} var format string +var hideLoopback bool func init() { flag.Usage = func() { @@ -22,27 +24,46 @@ func init() { usage := fmt.Sprintf("output format, one of: %v", formats) flag.StringVar(&format, "format", "string", usage) flag.StringVar(&format, "f", "string", usage+" (shorthand)") + flag.BoolVar(&hideLoopback, "hide-loopback", false, "do not display loopback addresses") } func main() { flag.Parse() args := flag.Args() if len(args) == 0 { - maddrs, err := manet.InterfaceMultiaddrs() - if err != nil { - die(err) - } - - output(maddrs...) - return + output(localAddresses()...) + } else { + output(address(args[0])) } +} - m, err := ma.NewMultiaddr(args[0]) +func localAddresses() []ma.Multiaddr { + maddrs, err := manet.InterfaceMultiaddrs() if err != nil { die(err) } - output(m) + if !hideLoopback { + return maddrs + } + + var maddrs2 []ma.Multiaddr + for _, a := range maddrs { + if !manet.IsIPLoopback(a) { + maddrs2 = append(maddrs2, a) + } + } + + return maddrs2 +} + +func address(addr string) ma.Multiaddr { + m, err := ma.NewMultiaddr(addr) + if err != nil { + die(err) + } + + return m } func output(ms ...ma.Multiaddr) {