add record validation to offline routing
fixes #5115 License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
Steven Allen committed
Jun 13, 2018 at 20:04 UTC
352ec3561c246ce6f2372e5ed074b8178b21c114
21 files changed
+90
-79
blockservice/test/mock.go
+1
-1
@@ -5,8 +5,8 @@ import (
5
bitswap "github.com/ipfs/go-ipfs/exchange/bitswap"
6
tn "github.com/ipfs/go-ipfs/exchange/bitswap/testnet"
7
8
+ mockrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
9
delay "gx/ipfs/QmRJVNatYJwTAHgdSM1Xef9QVQ1Ch3XHdmcrykjP5Y4soL/go-ipfs-delay"
9
- mockrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
10
)
11
12
// Mocks returns |n| connected mock Blockservices
core/builder.go
+8
@@ -19,6 +19,7 @@ import (
19
"github.com/ipfs/go-ipfs/thirdparty/verifbs"
20
uio "github.com/ipfs/go-ipfs/unixfs/io"
21
22
+ record "gx/ipfs/QmPWjVzxHeJdrjp4Jr2R2sPxBrMbBgGPWQtKwCKHHCBF7x/go-libp2p-record"
23
offline "gx/ipfs/QmPf114DXfa6TqGKYhBGR7EtXRho4rCJgwyA1xkuMY5vwF/go-ipfs-exchange-offline"
24
p2phost "gx/ipfs/QmQQGtcp6nVUrQjNsnU53YWV1q8fK1Kd9S7FEkYbRZzxry/go-libp2p-host"
25
metrics "gx/ipfs/QmRg1gKTHzc3CZXSKzem8aR4E3TubFhbgXwfVuWnSK5CC5/go-metrics-interface"
@@ -26,6 +27,7 @@ import (
27
libp2p "gx/ipfs/QmUEAR2pS7fP1GPseS3i8MWFyENs7oDp4CZrgn8FCjbsBu/go-libp2p"
28
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
29
pstore "gx/ipfs/QmZhsmorLpD9kmQ4ynbAu4vbKv2goMUnXazwGA4gnWHDjB/go-libp2p-peerstore"
30
+ ipns "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns"
31
bstore "gx/ipfs/QmbaPGg81pvQiC5vTXtC9Jo8rdrWUjRaugH71WYNsgi6Ev/go-ipfs-blockstore"
32
ci "gx/ipfs/Qme1knMqwt1hKZbc1BmQFmnm9f36nyQGwXxPGVpVJ9rMK5/go-libp2p-crypto"
33
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
@@ -141,6 +143,12 @@ func NewNode(ctx context.Context, cfg *BuildCfg) (*IpfsNode, error) {
143
ctx: ctx,
144
Peerstore: pstore.NewPeerstore(),
145
}
146
+
147
+ n.RecordValidator = record.NamespacedValidator{
148
+ "pk": record.PublicKeyValidator{},
149
+ "ipns": ipns.Validator{KeyBook: n.Peerstore},
150
+ }
151
+
152
if cfg.Online {
153
n.mode = onlineMode
154
}
core/commands/dht_test.go
+1
-1
@@ -6,7 +6,7 @@ import (
6
"github.com/ipfs/go-ipfs/namesys"
7
8
tu "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
9
- ipns "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns"
9
+ ipns "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns"
10
)
11
12
func TestKeyTranslation(t *testing.T) {
core/commands/ipns.go
+2
-2
@@ -11,7 +11,7 @@ import (
11
namesys "github.com/ipfs/go-ipfs/namesys"
12
nsopts "github.com/ipfs/go-ipfs/namesys/opts"
13
14
- offline "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/offline"
14
+ offline "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/offline"
15
"gx/ipfs/QmdE4gMduCKCGAcczM2F5ioYDfdeKuPix138wrES1YSr7f/go-ipfs-cmdkit"
16
)
17
@@ -89,7 +89,7 @@ Resolve the value of a dnslink:
89
}
90
91
if local {
92
- offroute := offline.NewOfflineRouter(n.Repo.Datastore(), n.PrivateKey)
92
+ offroute := offline.NewOfflineRouter(n.Repo.Datastore(), n.RecordValidator)
93
resolver = namesys.NewIpnsResolver(offroute)
94
}
95
core/core.go
+21
-25
@@ -42,7 +42,8 @@ import (
42
circuit "gx/ipfs/QmPavh4h3Edx5cv8GJQPC35AQAws7faXmzEZyru7k9b9Mn/go-libp2p-circuit"
43
u "gx/ipfs/QmPdKqUcHGFdeSpvjVoaTRPPstGif9GBZb5Q56RVw9o69A/go-ipfs-util"
44
p2phost "gx/ipfs/QmQQGtcp6nVUrQjNsnU53YWV1q8fK1Kd9S7FEkYbRZzxry/go-libp2p-host"
45
- ipns "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns"
45
+ nilrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/none"
46
+ offroute "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/offline"
47
floodsub "gx/ipfs/QmRFEBGcNjtWPupwHA7zGHeGVLuUyE4ZRFi2MgtrPM6pfb/go-libp2p-floodsub"
48
pnet "gx/ipfs/QmRGvSwDpN4eunxgDNfmQhayZ6Z9F5a2v31V2D7y77osLg/go-libp2p-pnet"
49
goprocess "gx/ipfs/QmSF8fPo3jgVBAy8fpdjjYqgG87dkJgUprRBHRd2tmfgpP/goprocess"
@@ -67,8 +68,6 @@ import (
68
cid "gx/ipfs/QmapdYm1b22Frv3k17fqrBYTFRxwiaVJkB299Mfn33edeB/go-cid"
69
rhelpers "gx/ipfs/QmasoX6BUV3Q7kb53qSa1NMqgXhojgrVhkpUA8gK5c98Eu/go-libp2p-routing-helpers"
70
ifconnmgr "gx/ipfs/Qmav3fJzdn43FDvHyGkPdbQ5JVqqiDPmNdnuGa3vatpmwj/go-libp2p-interface-connmgr"
70
- nilrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/none"
71
- offroute "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/offline"
71
bstore "gx/ipfs/QmbaPGg81pvQiC5vTXtC9Jo8rdrWUjRaugH71WYNsgi6Ev/go-ipfs-blockstore"
72
logging "gx/ipfs/Qmbi1CTJsbnBZjCEgc2otwu8cUFPsGpzWXG7edVCLZ7Gvk/go-log"
73
yamux "gx/ipfs/QmcsgrV3nCAKjiHKZhKVXWc4oY3WBECJCqahXEMpHeMrev/go-smux-yamux"
@@ -113,17 +112,18 @@ type IpfsNode struct {
112
PNetFingerprint []byte // fingerprint of private network
113
114
// Services
116
- Peerstore pstore.Peerstore // storage for other Peer instances
117
- Blockstore bstore.GCBlockstore // the block store (lower level)
118
- Filestore *filestore.Filestore // the filestore blockstore
119
- BaseBlocks bstore.Blockstore // the raw blockstore, no filestore wrapping
120
- GCLocker bstore.GCLocker // the locker used to protect the blockstore during gc
121
- Blocks bserv.BlockService // the block service, get/add blocks.
122
- DAG ipld.DAGService // the merkle dag service, get/add objects.
123
- Resolver *resolver.Resolver // the path resolution system
124
- Reporter metrics.Reporter
125
- Discovery discovery.Service
126
- FilesRoot *mfs.Root
115
+ Peerstore pstore.Peerstore // storage for other Peer instances
116
+ Blockstore bstore.GCBlockstore // the block store (lower level)
117
+ Filestore *filestore.Filestore // the filestore blockstore
118
+ BaseBlocks bstore.Blockstore // the raw blockstore, no filestore wrapping
119
+ GCLocker bstore.GCLocker // the locker used to protect the blockstore during gc
120
+ Blocks bserv.BlockService // the block service, get/add blocks.
121
+ DAG ipld.DAGService // the merkle dag service, get/add objects.
122
+ Resolver *resolver.Resolver // the path resolution system
123
+ Reporter metrics.Reporter
124
+ Discovery discovery.Service
125
+ FilesRoot *mfs.Root
126
+ RecordValidator record.Validator
127
128
// Online
129
PeerHost p2phost.Host // the network host (server+client)
@@ -458,13 +458,8 @@ func (n *IpfsNode) startOnlineServicesWithHost(ctx context.Context, host p2phost
458
n.Floodsub = service
459
}
460
461
- validator := record.NamespacedValidator{
462
- "pk": record.PublicKeyValidator{},
463
- "ipns": ipns.Validator{KeyBook: host.Peerstore()},
464
- }
465
-
461
// setup routing service
467
- r, err := routingOption(ctx, host, n.Repo.Datastore(), validator)
462
+ r, err := routingOption(ctx, host, n.Repo.Datastore(), n.RecordValidator)
463
if err != nil {
464
return err
465
}
@@ -476,7 +471,7 @@ func (n *IpfsNode) startOnlineServicesWithHost(ctx context.Context, host p2phost
471
host,
472
n.Routing,
473
n.Floodsub,
479
- validator,
474
+ n.RecordValidator,
475
)
476
n.Routing = rhelpers.Tiered{
477
// Always check pubsub first.
@@ -808,20 +803,21 @@ func (n *IpfsNode) loadFilesRoot() error {
803
return nil
804
}
805
811
-// SetupOfflineRouting loads the local nodes private key and
812
-// uses it to instantiate a routing system in offline mode.
813
-// This is primarily used for offline ipns modifications.
806
+// SetupOfflineRouting instantiates a routing system in offline mode. This is
807
+// primarily used for offline ipns modifications.
808
func (n *IpfsNode) SetupOfflineRouting() error {
809
if n.Routing != nil {
810
// Routing was already set up
811
return nil
812
}
813
+
814
+ // TODO: move this somewhere else.
815
err := n.LoadPrivateKey()
816
if err != nil {
817
return err
818
}
819
824
- n.Routing = offroute.NewOfflineRouter(n.Repo.Datastore(), n.PrivateKey)
820
+ n.Routing = offroute.NewOfflineRouter(n.Repo.Datastore(), n.RecordValidator)
821
822
size, err := n.getCacheSize()
823
if err != nil {
core/coreapi/name.go
+2
-2
@@ -15,8 +15,8 @@ import (
15
nsopts "github.com/ipfs/go-ipfs/namesys/opts"
16
ipath "github.com/ipfs/go-ipfs/path"
17
18
+ offline "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/offline"
19
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
19
- offline "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/offline"
20
crypto "gx/ipfs/Qme1knMqwt1hKZbc1BmQFmnm9f36nyQGwXxPGVpVJ9rMK5/go-libp2p-crypto"
21
)
22
@@ -107,7 +107,7 @@ func (api *NameAPI) Resolve(ctx context.Context, name string, opts ...caopts.Nam
107
}
108
109
if options.Local {
110
- offroute := offline.NewOfflineRouter(n.Repo.Datastore(), n.PrivateKey)
110
+ offroute := offline.NewOfflineRouter(n.Repo.Datastore(), n.RecordValidator)
111
resolver = namesys.NewIpnsResolver(offroute)
112
}
113
exchange/bitswap/bitswap_test.go
+1
-1
@@ -13,11 +13,11 @@ import (
13
14
tu "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
15
travis "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil/ci/travis"
16
+ mockrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
17
delay "gx/ipfs/QmRJVNatYJwTAHgdSM1Xef9QVQ1Ch3XHdmcrykjP5Y4soL/go-ipfs-delay"
18
blocks "gx/ipfs/QmTRCUvZLiir12Qr6MV3HKfKMHX8Nf1Vddn6t2g5nsQSb9/go-block-format"
19
blocksutil "gx/ipfs/QmYmE4kxv6uFGaWkeBAFYDuNcxzCn87pzwm6CkBkM9C8BM/go-ipfs-blocksutil"
20
cid "gx/ipfs/QmapdYm1b22Frv3k17fqrBYTFRxwiaVJkB299Mfn33edeB/go-cid"
20
- mockrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
21
blockstore "gx/ipfs/QmbaPGg81pvQiC5vTXtC9Jo8rdrWUjRaugH71WYNsgi6Ev/go-ipfs-blockstore"
22
p2ptestutil "gx/ipfs/QmeBUY1BsMjkacVAJ2u76XBGNiRCHq6dkqT2VWG59N3d7b/go-libp2p-netutil"
23
detectrace "gx/ipfs/Qmf7HqcW7LtCi1W8y2bdx2eJpze74jkbKqpByxgXikdbLF/go-detect-race"
exchange/bitswap/testnet/network_test.go
+1
-1
@@ -9,10 +9,10 @@ import (
9
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
10
11
testutil "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
12
+ mockrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
13
delay "gx/ipfs/QmRJVNatYJwTAHgdSM1Xef9QVQ1Ch3XHdmcrykjP5Y4soL/go-ipfs-delay"
14
blocks "gx/ipfs/QmTRCUvZLiir12Qr6MV3HKfKMHX8Nf1Vddn6t2g5nsQSb9/go-block-format"
15
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
15
- mockrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
16
)
17
18
func TestSendMessageAsyncButWaitForResponse(t *testing.T) {
exchange/bitswap/testnet/peernet.go
+1
-1
@@ -6,9 +6,9 @@ import (
6
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
7
8
testutil "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
9
+ mockrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
10
mockpeernet "gx/ipfs/QmUEAR2pS7fP1GPseS3i8MWFyENs7oDp4CZrgn8FCjbsBu/go-libp2p/p2p/net/mock"
11
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
11
- mockrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
12
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
13
)
14
exchange/bitswap/testnet/virtual.go
+1
-1
@@ -10,12 +10,12 @@ import (
10
bsnet "github.com/ipfs/go-ipfs/exchange/bitswap/network"
11
12
testutil "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
13
+ mockrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
14
delay "gx/ipfs/QmRJVNatYJwTAHgdSM1Xef9QVQ1Ch3XHdmcrykjP5Y4soL/go-ipfs-delay"
15
routing "gx/ipfs/QmUV9hDAAyjeGbxbXkJ2sYqZ6dTd1DXJ2REhYEkRm178Tg/go-libp2p-routing"
16
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
17
cid "gx/ipfs/QmapdYm1b22Frv3k17fqrBYTFRxwiaVJkB299Mfn33edeB/go-cid"
18
ifconnmgr "gx/ipfs/Qmav3fJzdn43FDvHyGkPdbQ5JVqqiDPmNdnuGa3vatpmwj/go-libp2p-interface-connmgr"
18
- mockrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
19
logging "gx/ipfs/Qmbi1CTJsbnBZjCEgc2otwu8cUFPsGpzWXG7edVCLZ7Gvk/go-log"
20
)
21
exchange/reprovide/reprovide_test.go
+1
-1
@@ -5,9 +5,9 @@ import (
5
"testing"
6
7
testutil "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
8
+ mock "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
9
blocks "gx/ipfs/QmTRCUvZLiir12Qr6MV3HKfKMHX8Nf1Vddn6t2g5nsQSb9/go-block-format"
10
pstore "gx/ipfs/QmZhsmorLpD9kmQ4ynbAu4vbKv2goMUnXazwGA4gnWHDjB/go-libp2p-peerstore"
10
- mock "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
11
blockstore "gx/ipfs/QmbaPGg81pvQiC5vTXtC9Jo8rdrWUjRaugH71WYNsgi6Ev/go-ipfs-blockstore"
12
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
13
dssync "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore/sync"
fuse/ipns/ipns_test.go
+2
-2
@@ -17,8 +17,8 @@ import (
17
18
u "gx/ipfs/QmPdKqUcHGFdeSpvjVoaTRPPstGif9GBZb5Q56RVw9o69A/go-ipfs-util"
19
ci "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil/ci"
20
+ offroute "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/offline"
21
fstest "gx/ipfs/QmSJBsmLP1XMjv8hxYg2rUMdPDB7YUpyBo9idjrJ6Cmq6F/fuse/fs/fstestutil"
21
- offroute "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/offline"
22
racedet "gx/ipfs/Qmf7HqcW7LtCi1W8y2bdx2eJpze74jkbKqpByxgXikdbLF/go-detect-race"
23
)
24
@@ -122,7 +122,7 @@ func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWra
122
t.Fatal(err)
123
}
124
125
- node.Routing = offroute.NewOfflineRouter(node.Repo.Datastore(), node.PrivateKey)
125
+ node.Routing = offroute.NewOfflineRouter(node.Repo.Datastore(), node.RecordValidator)
126
node.Namesys = namesys.NewNameSystem(node.Routing, node.Repo.Datastore(), 0)
127
128
err = InitializeKeyspace(node, node.PrivateKey)
fuse/node/mount_test.go
+2
-2
@@ -17,7 +17,7 @@ import (
17
namesys "github.com/ipfs/go-ipfs/namesys"
18
19
ci "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil/ci"
20
- offroute "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/offline"
20
+ offroute "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/offline"
21
)
22
23
func maybeSkipFuseTests(t *testing.T) {
@@ -52,7 +52,7 @@ func TestExternalUnmount(t *testing.T) {
52
t.Fatal(err)
53
}
54
55
- node.Routing = offroute.NewOfflineRouter(node.Repo.Datastore(), node.PrivateKey)
55
+ node.Routing = offroute.NewOfflineRouter(node.Repo.Datastore(), node.RecordValidator)
56
node.Namesys = namesys.NewNameSystem(node.Routing, node.Repo.Datastore(), 0)
57
58
err = ipns.InitializeKeyspace(node, node.PrivateKey)
namesys/ipns_resolver_validation_test.go
+18
-24
@@ -11,12 +11,13 @@ import (
11
record "gx/ipfs/QmPWjVzxHeJdrjp4Jr2R2sPxBrMbBgGPWQtKwCKHHCBF7x/go-libp2p-record"
12
u "gx/ipfs/QmPdKqUcHGFdeSpvjVoaTRPPstGif9GBZb5Q56RVw9o69A/go-ipfs-util"
13
testutil "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
14
- ipns "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns"
14
+ mockrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
15
+ offline "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/offline"
16
routing "gx/ipfs/QmUV9hDAAyjeGbxbXkJ2sYqZ6dTd1DXJ2REhYEkRm178Tg/go-libp2p-routing"
17
ropts "gx/ipfs/QmUV9hDAAyjeGbxbXkJ2sYqZ6dTd1DXJ2REhYEkRm178Tg/go-libp2p-routing/options"
18
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
19
pstore "gx/ipfs/QmZhsmorLpD9kmQ4ynbAu4vbKv2goMUnXazwGA4gnWHDjB/go-libp2p-peerstore"
19
- mockrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
20
+ ipns "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns"
21
ci "gx/ipfs/Qme1knMqwt1hKZbc1BmQFmnm9f36nyQGwXxPGVpVJ9rMK5/go-libp2p-crypto"
22
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
23
dssync "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore/sync"
@@ -31,6 +32,8 @@ func TestResolverValidation(t *testing.T) {
32
vstore := newMockValueStore(rid, dstore, peerstore)
33
resolver := NewIpnsResolver(vstore)
34
35
+ nvVstore := offline.NewOfflineRouter(dstore, mockrouting.MockValidator{})
36
+
37
// Create entry with expiry in one hour
38
priv, id, _, ipnsDHTPath := genKeys(t)
39
ts := time.Now()
@@ -68,7 +71,7 @@ func TestResolverValidation(t *testing.T) {
71
}
72
73
// Publish entry
71
- err = PublishEntry(ctx, vstore, ipnsDHTPath, expiredEntry)
74
+ err = PublishEntry(ctx, nvVstore, ipnsDHTPath, expiredEntry)
75
if err != nil {
76
t.Fatal(err)
77
}
@@ -89,7 +92,7 @@ func TestResolverValidation(t *testing.T) {
92
}
93
94
// Publish entry
92
- err = PublishEntry(ctx, vstore, ipnsDHTPath2, entry)
95
+ err = PublishEntry(ctx, nvVstore, ipnsDHTPath2, entry)
96
if err != nil {
97
t.Fatal(err)
98
}
@@ -107,7 +110,7 @@ func TestResolverValidation(t *testing.T) {
110
if err != nil {
111
t.Fatal(err)
112
}
110
- err = PublishEntry(ctx, vstore, ipnsDHTPath3, entry3)
113
+ err = PublishEntry(ctx, nvVstore, ipnsDHTPath3, entry3)
114
if err != nil {
115
t.Fatal(err)
116
}
@@ -152,31 +155,22 @@ func genKeys(t *testing.T) (ci.PrivKey, peer.ID, string, string) {
155
}
156
157
type mockValueStore struct {
155
- r routing.ValueStore
156
- kbook pstore.KeyBook
157
- Validator record.Validator
158
+ r routing.ValueStore
159
+ kbook pstore.KeyBook
160
}
161
162
func newMockValueStore(id testutil.Identity, dstore ds.Datastore, kbook pstore.KeyBook) *mockValueStore {
161
- serv := mockrouting.NewServer()
162
- r := serv.ClientWithDatastore(context.Background(), id, dstore)
163
- return &mockValueStore{r, kbook, record.NamespacedValidator{
164
- "ipns": ipns.Validator{KeyBook: kbook},
165
- "pk": record.PublicKeyValidator{},
166
- }}
163
+ return &mockValueStore{
164
+ r: offline.NewOfflineRouter(dstore, record.NamespacedValidator{
165
+ "ipns": ipns.Validator{KeyBook: kbook},
166
+ "pk": record.PublicKeyValidator{},
167
+ }),
168
+ kbook: kbook,
169
+ }
170
}
171
172
func (m *mockValueStore) GetValue(ctx context.Context, k string, opts ...ropts.Option) ([]byte, error) {
170
- data, err := m.r.GetValue(ctx, k, opts...)
171
- if err != nil {
172
- return data, err
173
- }
174
-
175
- if err = m.Validator.Validate(k, data); err != nil {
176
- return nil, err
177
- }
178
-
179
- return data, err
173
+ return m.r.GetValue(ctx, k, opts...)
174
}
175
176
func (m *mockValueStore) GetPublicKey(ctx context.Context, p peer.ID) (ci.PubKey, error) {
namesys/namesys_test.go
+15
-2
@@ -10,7 +10,10 @@ import (
10
path "github.com/ipfs/go-ipfs/path"
11
"github.com/ipfs/go-ipfs/unixfs"
12
13
- offroute "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/offline"
13
+ offroute "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/offline"
14
+ peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
15
+ pstore "gx/ipfs/QmZhsmorLpD9kmQ4ynbAu4vbKv2goMUnXazwGA4gnWHDjB/go-libp2p-peerstore"
16
+ ipns "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns"
17
ci "gx/ipfs/Qme1knMqwt1hKZbc1BmQFmnm9f36nyQGwXxPGVpVJ9rMK5/go-libp2p-crypto"
18
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
19
dssync "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore/sync"
@@ -83,7 +86,17 @@ func TestPublishWithCache0(t *testing.T) {
86
if err != nil {
87
t.Fatal(err)
88
}
86
- routing := offroute.NewOfflineRouter(dst, priv)
89
+ ps := pstore.NewPeerstore()
90
+ pid, err := peer.IDFromPrivateKey(priv)
91
+ if err != nil {
92
+ t.Fatal(err)
93
+ }
94
+ err = ps.AddPrivKey(pid, priv)
95
+ if err != nil {
96
+ t.Fatal(err)
97
+ }
98
+
99
+ routing := offroute.NewOfflineRouter(dst, ipns.Validator{KeyBook: ps})
100
101
nsys := NewNameSystem(routing, dst, 0)
102
p, err := path.ParsePath(unixfs.EmptyDirNode().Cid().String())
namesys/publisher.go
+2
-2
@@ -11,11 +11,11 @@ import (
11
pin "github.com/ipfs/go-ipfs/pin"
12
ft "github.com/ipfs/go-ipfs/unixfs"
13
14
- ipns "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns"
15
- pb "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns/pb"
14
routing "gx/ipfs/QmUV9hDAAyjeGbxbXkJ2sYqZ6dTd1DXJ2REhYEkRm178Tg/go-libp2p-routing"
15
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
16
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
17
+ ipns "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns"
18
+ pb "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns/pb"
19
ci "gx/ipfs/Qme1knMqwt1hKZbc1BmQFmnm9f36nyQGwXxPGVpVJ9rMK5/go-libp2p-crypto"
20
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
21
dsquery "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore/query"
namesys/publisher_test.go
+2
-2
@@ -8,10 +8,10 @@ import (
8
9
dshelp "gx/ipfs/QmNP2u7bofwUQptHQGPfabGWtTCbxhNLSZKqbf1uzsup9V/go-ipfs-ds-help"
10
testutil "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
11
- ipns "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns"
11
+ mockrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
12
ma "gx/ipfs/QmUxSEGbv2nmYNnfXi7839wwQqTN3kwQeUxe8dTjZWZs7J/go-multiaddr"
13
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
14
- mockrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
14
+ ipns "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns"
15
ci "gx/ipfs/Qme1knMqwt1hKZbc1BmQFmnm9f36nyQGwXxPGVpVJ9rMK5/go-libp2p-crypto"
16
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
17
dssync "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore/sync"
namesys/republisher/repub.go
+1
-1
@@ -9,11 +9,11 @@ import (
9
namesys "github.com/ipfs/go-ipfs/namesys"
10
path "github.com/ipfs/go-ipfs/path"
11
12
- pb "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns/pb"
12
goprocess "gx/ipfs/QmSF8fPo3jgVBAy8fpdjjYqgG87dkJgUprRBHRd2tmfgpP/goprocess"
13
gpctx "gx/ipfs/QmSF8fPo3jgVBAy8fpdjjYqgG87dkJgUprRBHRd2tmfgpP/goprocess/context"
14
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
15
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
16
+ pb "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns/pb"
17
logging "gx/ipfs/Qmbi1CTJsbnBZjCEgc2otwu8cUFPsGpzWXG7edVCLZ7Gvk/go-log"
18
ic "gx/ipfs/Qme1knMqwt1hKZbc1BmQFmnm9f36nyQGwXxPGVpVJ9rMK5/go-libp2p-crypto"
19
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
namesys/resolve_test.go
+2
-2
@@ -9,9 +9,9 @@ import (
9
path "github.com/ipfs/go-ipfs/path"
10
11
testutil "gx/ipfs/QmPdxCaVp4jZ9RbxqZADvKH6kiCR5jHvdR5f2ycjAY6T2a/go-testutil"
12
- ipns "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns"
12
+ mockrouting "gx/ipfs/QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21/go-ipfs-routing/mock"
13
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
14
- mockrouting "gx/ipfs/Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D/go-ipfs-routing/mock"
14
+ ipns "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns"
15
ds "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore"
16
dssync "gx/ipfs/QmeiCcJfDW1GJnWUArudsv5rQsihpi4oyddPhdqo3CfX6i/go-datastore/sync"
17
)
namesys/routing.go
+2
-2
@@ -9,13 +9,13 @@ import (
9
path "github.com/ipfs/go-ipfs/path"
10
11
mh "gx/ipfs/QmPnFwZ2JXKnXgMw8CdBPxn7FWh6LLdjUjxV1fKHuJnkr8/go-multihash"
12
- ipns "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns"
13
- pb "gx/ipfs/QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt/go-ipns/pb"
12
routing "gx/ipfs/QmUV9hDAAyjeGbxbXkJ2sYqZ6dTd1DXJ2REhYEkRm178Tg/go-libp2p-routing"
13
peer "gx/ipfs/QmVf8hTAsLLFtn4WPCRNdnaF2Eag2qTBS6uR8AiHPZARXy/go-libp2p-peer"
14
proto "gx/ipfs/QmZ4Qi3GaRbjcx28Sme5eMH7RQjGkt8wHxt2a65oLaeFEV/gogo-protobuf/proto"
15
dht "gx/ipfs/QmagBkuFfySAMouyXeiy8XjV1GyfNAgTCuVYGF9z3Z4Vvc/go-libp2p-kad-dht"
16
cid "gx/ipfs/QmapdYm1b22Frv3k17fqrBYTFRxwiaVJkB299Mfn33edeB/go-cid"
17
+ ipns "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns"
18
+ pb "gx/ipfs/Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ/go-ipns/pb"
19
logging "gx/ipfs/Qmbi1CTJsbnBZjCEgc2otwu8cUFPsGpzWXG7edVCLZ7Gvk/go-log"
20
)
21
package.json
+4
-4
@@ -464,9 +464,9 @@
464
},
465
{
466
"author": "hsanjuan",
467
- "hash": "Qmb1N7zdjG2FexpzWNj8T289u9QnQLEiSsTRadDGQxX32D",
467
+ "hash": "QmQUPmFYZBSWn4mtX1YwYkSaMoWVore7tCiSetr6k8JW21",
468
"name": "go-ipfs-routing",
469
- "version": "0.0.11"
469
+ "version": "0.0.12"
470
},
471
{
472
"author": "hsanjuan",
@@ -542,9 +542,9 @@
542
},
543
{
544
"author": "stebalien",
545
- "hash": "QmRAPFFaF7nrezCZQaLihyp2qbAXqSJU5WpvSpwroMv1Xt",
545
+ "hash": "Qmb7iqDPPNogT8fJeYoLavoKhnp41tpoMPJ9D5qZVYynNQ",
546
"name": "go-ipns",
547
- "version": "0.1.1"
547
+ "version": "0.1.2"
548
}
549
],
550
"gxVersion": "0.10.0",