mirror of
https://github.com/logos-messaging/go-multiaddr.git
synced 2026-01-07 15:33:08 +00:00
net: added InterfaceMultiaddrs
This commit is contained in:
parent
bb34b84e84
commit
4489dfa8c5
@ -7,17 +7,15 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
ma "github.com/jbenet/go-multiaddr"
|
ma "github.com/jbenet/go-multiaddr"
|
||||||
|
manet "github.com/jbenet/go-multiaddr/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
var usage = `multiaddr conversion
|
var formats = []string{"string", "bytes", "hex", "slice"}
|
||||||
usage: multiaddr [fmt] <>`
|
|
||||||
|
|
||||||
var formats = []string{"string", "bytes", "hex", "raw"}
|
|
||||||
var format string
|
var format string
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
flag.Usage = func() {
|
flag.Usage = func() {
|
||||||
fmt.Fprintf(os.Stderr, "usage: %s <multiaddr>\n\nFlags:\n", os.Args[0])
|
fmt.Fprintf(os.Stderr, "usage: %s [<multiaddr>]\n\nFlags:\n", os.Args[0])
|
||||||
flag.PrintDefaults()
|
flag.PrintDefaults()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,8 +27,14 @@ func init() {
|
|||||||
func main() {
|
func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
args := flag.Args()
|
args := flag.Args()
|
||||||
if len(args) != 1 {
|
if len(args) == 0 {
|
||||||
die("error: can only take one argument")
|
maddrs, err := manet.InterfaceMultiaddrs()
|
||||||
|
if err != nil {
|
||||||
|
die(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
output(maddrs...)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
m, err := ma.NewMultiaddr(args[0])
|
m, err := ma.NewMultiaddr(args[0])
|
||||||
@ -38,16 +42,22 @@ func main() {
|
|||||||
die(err)
|
die(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(outfmt(m))
|
output(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func output(ms ...ma.Multiaddr) {
|
||||||
|
for _, m := range ms {
|
||||||
|
fmt.Println(outfmt(m))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func outfmt(m ma.Multiaddr) string {
|
func outfmt(m ma.Multiaddr) string {
|
||||||
switch format {
|
switch format {
|
||||||
case "string":
|
case "string":
|
||||||
return m.String()
|
return m.String()
|
||||||
case "bytes":
|
case "slice":
|
||||||
return fmt.Sprintf("%v", m.Bytes())
|
return fmt.Sprintf("%v", m.Bytes())
|
||||||
case "raw":
|
case "bytes":
|
||||||
return string(m.Bytes())
|
return string(m.Bytes())
|
||||||
case "hex":
|
case "hex":
|
||||||
return "0x" + hex.EncodeToString(m.Bytes())
|
return "0x" + hex.EncodeToString(m.Bytes())
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package net
|
package manet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -70,6 +70,13 @@ func FromNetAddr(a net.Addr) (ma.Multiaddr, error) {
|
|||||||
}
|
}
|
||||||
return FromIP(ac.IP)
|
return FromIP(ac.IP)
|
||||||
|
|
||||||
|
case "ip+net":
|
||||||
|
ac, ok := a.(*net.IPNet)
|
||||||
|
if !ok {
|
||||||
|
return nil, errIncorrectNetAddr
|
||||||
|
}
|
||||||
|
return FromIP(ac.IP)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unknown network %v", a.Network())
|
return nil, fmt.Errorf("unknown network %v", a.Network())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package net
|
package manet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
"net"
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// Package net provides Multiaddr specific versions of common
|
// Package manet provides Multiaddr specific versions of common
|
||||||
// functions in stdlib's net package. This means wrappers of
|
// functions in stdlib's net package. This means wrappers of
|
||||||
// standard net symbols like net.Dial and net.Listen, as well
|
// standard net symbols like net.Dial and net.Listen, as well
|
||||||
// as conversion to/from net.Addr.
|
// as conversion to/from net.Addr.
|
||||||
package net
|
package manet
|
||||||
|
|||||||
19
net/net.go
19
net/net.go
@ -1,4 +1,4 @@
|
|||||||
package net
|
package manet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -216,3 +216,20 @@ func Listen(laddr ma.Multiaddr) (Listener, error) {
|
|||||||
laddr: laddr,
|
laddr: laddr,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// InterfaceMultiaddrs will return the addresses matching net.InterfaceAddrs
|
||||||
|
func InterfaceMultiaddrs() ([]ma.Multiaddr, error) {
|
||||||
|
addrs, err := net.InterfaceAddrs()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
maddrs := make([]ma.Multiaddr, len(addrs))
|
||||||
|
for i, a := range addrs {
|
||||||
|
maddrs[i], err = FromNetAddr(a)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return maddrs, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package net
|
package manet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user