hide-loopback in tool

This commit is contained in:
Juan Batiz-Benet 2014-11-05 01:47:13 -08:00
parent 29a9c6f145
commit c1210ef56d

View File

@ -10,8 +10,10 @@ import (
manet "github.com/jbenet/go-multiaddr/net" manet "github.com/jbenet/go-multiaddr/net"
) )
// flags
var formats = []string{"string", "bytes", "hex", "slice"} var formats = []string{"string", "bytes", "hex", "slice"}
var format string var format string
var hideLoopback bool
func init() { func init() {
flag.Usage = func() { flag.Usage = func() {
@ -22,27 +24,46 @@ func init() {
usage := fmt.Sprintf("output format, one of: %v", formats) usage := fmt.Sprintf("output format, one of: %v", formats)
flag.StringVar(&format, "format", "string", usage) flag.StringVar(&format, "format", "string", usage)
flag.StringVar(&format, "f", "string", usage+" (shorthand)") flag.StringVar(&format, "f", "string", usage+" (shorthand)")
flag.BoolVar(&hideLoopback, "hide-loopback", false, "do not display loopback addresses")
} }
func main() { func main() {
flag.Parse() flag.Parse()
args := flag.Args() args := flag.Args()
if len(args) == 0 { if len(args) == 0 {
maddrs, err := manet.InterfaceMultiaddrs() output(localAddresses()...)
if err != nil { } else {
die(err) output(address(args[0]))
}
output(maddrs...)
return
} }
}
m, err := ma.NewMultiaddr(args[0]) func localAddresses() []ma.Multiaddr {
maddrs, err := manet.InterfaceMultiaddrs()
if err != nil { if err != nil {
die(err) 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) { func output(ms ...ma.Multiaddr) {