extract go-ipfs-addr
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
Jeromy committed
Oct 24, 2017 at 07:14 UTC
cf6b52e4b05dc68131d7861c4e22346b21eb4b90
5 files changed
+8
-262
core/commands/swarm.go
+1
-1
@@ -13,9 +13,9 @@ import (
13
repo "github.com/ipfs/go-ipfs/repo"
14
config "github.com/ipfs/go-ipfs/repo/config"
15
"github.com/ipfs/go-ipfs/repo/fsrepo"
16
- iaddr "github.com/ipfs/go-ipfs/thirdparty/ipfsaddr"
16
pstore "gx/ipfs/QmPgDWmTmuzvP7QE5zwo1TmjbJme9pmZHNujB2453jkCTr/go-libp2p-peerstore"
17
swarm "gx/ipfs/QmdQFrFnPrKRQtpeHKjZ3cVNwxmGKKS2TvhJTuN9C9yduh/go-libp2p-swarm"
18
+ iaddr "gx/ipfs/QmeS8cCKawUwejVrsBtmC1toTXmwVWZGiRJqzgTURVWeF9/go-ipfs-addr"
19
20
mafilter "gx/ipfs/QmSMZwvs3n4GBikZ7hKzT17c3bk65FmyZo2JqtJ16swqCv/multiaddr-filter"
21
ma "gx/ipfs/QmXY77cVe7rVRQXZZQRioukUM7aRW3BTcAgJe12MCtb3Ji/go-multiaddr"
package.json
+6
@@ -481,6 +481,12 @@
481
"hash": "QmYkCrTwivapqdB3JbwvwvxymseahVkcm46ThRMAA24zCr",
482
"name": "go-libp2p-interface-connmgr",
483
"version": "0.0.2"
484
+ },
485
+ {
486
+ "author": "why",
487
+ "hash": "QmeS8cCKawUwejVrsBtmC1toTXmwVWZGiRJqzgTURVWeF9",
488
+ "name": "go-ipfs-addr",
489
+ "version": "0.1.1"
490
}
491
],
492
"gxVersion": "0.10.0",
repo/config/bootstrap_peers.go
+1
-1
@@ -4,7 +4,7 @@ import (
4
"errors"
5
"fmt"
6
7
- iaddr "github.com/ipfs/go-ipfs/thirdparty/ipfsaddr"
7
+ iaddr "gx/ipfs/QmeS8cCKawUwejVrsBtmC1toTXmwVWZGiRJqzgTURVWeF9/go-ipfs-addr"
8
)
9
10
// DefaultBootstrapAddresses are the hardcoded bootstrap addresses
thirdparty/ipfsaddr/ipfsaddr.go
deleted
-123
@@ -1,123 +0,0 @@
1
-package ipfsaddr
2
-
3
-import (
4
- "errors"
5
-
6
- ma "gx/ipfs/QmXY77cVe7rVRQXZZQRioukUM7aRW3BTcAgJe12MCtb3Ji/go-multiaddr"
7
-
8
- path "github.com/ipfs/go-ipfs/path"
9
- logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
10
- peer "gx/ipfs/QmXYjuNuxVzXKJCfWasQk1RqkhVLDM9jtUKhqc2WPQmFSB/go-libp2p-peer"
11
- circuit "gx/ipfs/Qmf7GSJ4omRJsvA9uzTqzbnVhq4RWLPzjzW4xJzUta4dKE/go-libp2p-circuit"
12
-)
13
-
14
-var log = logging.Logger("ipfsaddr")
15
-
16
-// ErrInvalidAddr signals an address is not a valid IPFS address.
17
-var ErrInvalidAddr = errors.New("invalid IPFS address")
18
-
19
-type IPFSAddr interface {
20
- ID() peer.ID
21
- Multiaddr() ma.Multiaddr
22
- Transport() ma.Multiaddr
23
- String() string
24
- Equal(b interface{}) bool
25
-}
26
-
27
-type ipfsAddr struct {
28
- ma ma.Multiaddr
29
- id peer.ID
30
-}
31
-
32
-func (a ipfsAddr) ID() peer.ID {
33
- return a.id
34
-}
35
-
36
-func (a ipfsAddr) Multiaddr() ma.Multiaddr {
37
- return a.ma
38
-}
39
-
40
-func (a ipfsAddr) Transport() ma.Multiaddr {
41
- return Transport(a)
42
-}
43
-
44
-func (a ipfsAddr) String() string {
45
- return a.ma.String()
46
-}
47
-
48
-func (a ipfsAddr) Equal(b interface{}) bool {
49
- if ib, ok := b.(IPFSAddr); ok {
50
- return a.Multiaddr().Equal(ib.Multiaddr())
51
- }
52
- if mb, ok := b.(ma.Multiaddr); ok {
53
- return a.Multiaddr().Equal(mb)
54
- }
55
- return false
56
-}
57
-
58
-// ParseString parses a string representation of an address into an IPFSAddr
59
-func ParseString(str string) (a IPFSAddr, err error) {
60
- if str == "" {
61
- return nil, ErrInvalidAddr
62
- }
63
-
64
- m, err := ma.NewMultiaddr(str)
65
- if err != nil {
66
- return nil, err
67
- }
68
-
69
- return ParseMultiaddr(m)
70
-}
71
-
72
-// ParseMultiaddr parses a multiaddr into an IPFSAddr
73
-func ParseMultiaddr(m ma.Multiaddr) (a IPFSAddr, err error) {
74
- // never panic.
75
- defer func() {
76
- if r := recover(); r != nil {
77
- log.Debug("recovered from panic: ", r)
78
- a = nil
79
- err = ErrInvalidAddr
80
- }
81
- }()
82
-
83
- if m == nil {
84
- return nil, ErrInvalidAddr
85
- }
86
-
87
- // make sure it's an IPFS addr
88
- parts := ma.Split(m)
89
- if len(parts) < 1 {
90
- return nil, ErrInvalidAddr
91
- }
92
- ipfspart := parts[len(parts)-1] // last part
93
- if ipfspart.Protocols()[0].Code != ma.P_IPFS {
94
- return nil, ErrInvalidAddr
95
- }
96
-
97
- // make sure 'ipfs id' parses as a peer.ID
98
- peerIdParts := path.SplitList(ipfspart.String())
99
- peerIdStr := peerIdParts[len(peerIdParts)-1]
100
- id, err := peer.IDB58Decode(peerIdStr)
101
- if err != nil {
102
- return nil, err
103
- }
104
-
105
- return ipfsAddr{ma: m, id: id}, nil
106
-}
107
-
108
-func Transport(iaddr IPFSAddr) (maddr ma.Multiaddr) {
109
- maddr = iaddr.Multiaddr()
110
-
111
- // /ipfs/QmId is part of the transport address for p2p-circuit
112
- // TODO clean up the special case
113
- // we need a consistent way of composing and consumig multiaddrs
114
- // so that we don't have to do this
115
- _, err := maddr.ValueForProtocol(circuit.P_CIRCUIT)
116
- if err == nil {
117
- return maddr
118
- }
119
-
120
- split := ma.Split(maddr)
121
- maddr = ma.Join(split[:len(split)-1]...)
122
- return
123
-}
thirdparty/ipfsaddr/ipfsaddr_test.go
deleted
-137
@@ -1,137 +0,0 @@
1
-package ipfsaddr
2
-
3
-import (
4
- "testing"
5
-
6
- path "github.com/ipfs/go-ipfs/path"
7
- ma "gx/ipfs/QmXY77cVe7rVRQXZZQRioukUM7aRW3BTcAgJe12MCtb3Ji/go-multiaddr"
8
- peer "gx/ipfs/QmXYjuNuxVzXKJCfWasQk1RqkhVLDM9jtUKhqc2WPQmFSB/go-libp2p-peer"
9
-)
10
-
11
-var good = []string{
12
- "/ipfs/5dru6bJPUM1B7N69528u49DJiWZnok",
13
- "/ipfs/kTRX47RthhwNzWdi6ggwqjuX",
14
- "/ipfs/QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR",
15
- "/ip4/1.2.3.4/tcp/1234/ipfs/5dru6bJPUM1B7N69528u49DJiWZnok",
16
- "/ip4/1.2.3.4/tcp/1234/ipfs/kTRX47RthhwNzWdi6ggwqjuX",
17
- "/ip4/1.2.3.4/tcp/1234/ipfs/QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR",
18
-}
19
-
20
-var bad = []string{
21
- "5dru6bJPUM1B7N69528u49DJiWZnok", // bad ma
22
- "kTRX47RthhwNzWdi6ggwqjuX", // bad ma
23
- "QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR", // bad ma
24
- "ipfs/5dru6bJPUM1B7N69528u49DJiWZnok", // bad ma
25
- "ipfs/kTRX47RthhwNzWdi6ggwqjuX", // bad ma
26
- "ipfs/QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR", // bad ma
27
- "/ipfs/5dru6bJPUM1B7N69528u49DJiWZno", // bad mh
28
- "/ipfs/kTRX47RthhwNzWdi6ggwqju", // bad mh
29
- "/ipfs/QmUCseQWXCSrhf9edzVKTvj8o8Ts5aXFGNPameZRPJ6uR", // bad mh
30
- "/ipfs/QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR/tcp/1234", // ipfs not last
31
- "/ip4/1.2.3.4/tcp/ipfs/5dru6bJPUM1B7N69528u49DJiWZnok", // bad tcp part
32
- "/ip4/tcp/1234/ipfs/kTRX47RthhwNzWdi6ggwqjuX", // bad ip part
33
- "/ip4/1.2.3.4/tcp/1234/ipfs", // no id
34
- "/ip4/1.2.3.4/tcp/1234/ipfs/", // no id
35
-}
36
-
37
-func newMultiaddr(t *testing.T, s string) ma.Multiaddr {
38
- maddr, err := ma.NewMultiaddr(s)
39
- if err != nil {
40
- t.Fatal(err)
41
- }
42
- return maddr
43
-}
44
-
45
-func TestParseStringGood(t *testing.T) {
46
- for _, g := range good {
47
- if _, err := ParseString(g); err != nil {
48
- t.Error("failed to parse", g, err)
49
- }
50
- }
51
-}
52
-
53
-func TestParseStringBad(t *testing.T) {
54
- for _, b := range bad {
55
- if _, err := ParseString(b); err == nil {
56
- t.Error("succeeded in parsing", b)
57
- }
58
- }
59
-}
60
-
61
-func TestParseMultiaddrGood(t *testing.T) {
62
- for _, g := range good {
63
- if _, err := ParseMultiaddr(newMultiaddr(t, g)); err != nil {
64
- t.Error("failed to parse", g, err)
65
- }
66
- }
67
-}
68
-
69
-func TestParseMultiaddrBad(t *testing.T) {
70
- for _, b := range bad {
71
- m, err := ma.NewMultiaddr(b)
72
- if err != nil {
73
- continue // skip these.
74
- }
75
-
76
- if _, err := ParseMultiaddr(m); err == nil {
77
- t.Error("succeeded in parsing", m)
78
- }
79
- }
80
-}
81
-
82
-func TestIDMatches(t *testing.T) {
83
- for _, g := range good {
84
- a, err := ParseString(g)
85
- if err != nil {
86
- t.Error("failed to parse", g, err)
87
- continue
88
- }
89
-
90
- sp := path.SplitList(g)
91
- sid := sp[len(sp)-1]
92
- id, err := peer.IDB58Decode(sid)
93
- if err != nil {
94
- t.Error("failed to parse", sid, err)
95
- continue
96
- }
97
-
98
- if a.ID() != id {
99
- t.Error("not equal", a.ID(), id)
100
- }
101
- }
102
-}
103
-
104
-func TestMultiaddrMatches(t *testing.T) {
105
- for _, g := range good {
106
- a, err := ParseString(g)
107
- if err != nil {
108
- t.Error("failed to parse", g, err)
109
- continue
110
- }
111
-
112
- m := newMultiaddr(t, g)
113
- if !a.Multiaddr().Equal(m) {
114
- t.Error("not equal", a.Multiaddr(), m)
115
- }
116
- }
117
-}
118
-
119
-func TestTransport(t *testing.T) {
120
- for _, g := range good {
121
- a, err := ParseString(g)
122
- if err != nil {
123
- t.Error("failed to parse", g, err)
124
- continue
125
- }
126
-
127
- m := newMultiaddr(t, g)
128
- split := ma.Split(m)
129
- m = ma.Join(split[:len(split)-1]...)
130
- if a.Multiaddr().Equal(m) {
131
- t.Error("should not be equal", a.Multiaddr(), m)
132
- }
133
- if !Transport(a).Equal(m) {
134
- t.Error("should be equal", Transport(a), m)
135
- }
136
- }
137
-}