@cryptotaxi247 / kubo / commits / 352ec3561

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",