ipfs swarm addrs listen command, fix t0060-daemon
Necessary for meaningful semantics in the presence of address filtering. License: MIT Signed-off-by: vyzo <vyzo@hackzen.org>
vyzo committed
Jul 31, 2017 at 22:53 UTC
6f54181f665b3bb4452127fdc13851239dbcfad0
2 files changed
+47
-2
core/commands/swarm.go
+42
-1
@@ -202,7 +202,8 @@ var swarmAddrsCmd = &cmds.Command{
202
`,
203
},
204
Subcommands: map[string]*cmds.Command{
205
- "local": swarmAddrsLocalCmd,
205
+ "local": swarmAddrsLocalCmd,
206
+ "listen": swarmAddrsListenCmd,
207
},
208
Run: func(req cmds.Request, res cmds.Response) {
209
@@ -301,6 +302,46 @@ var swarmAddrsLocalCmd = &cmds.Command{
302
},
303
}
304
305
+var swarmAddrsListenCmd = &cmds.Command{
306
+ Helptext: cmds.HelpText{
307
+ Tagline: "List interface listening addresses.",
308
+ ShortDescription: `
309
+'ipfs swarm addrs listen' lists all interface addresses the node is listening on.
310
+`,
311
+ },
312
+ Run: func(req cmds.Request, res cmds.Response) {
313
+
314
+ n, err := req.InvocContext().GetNode()
315
+ if err != nil {
316
+ res.SetError(err, cmds.ErrNormal)
317
+ return
318
+ }
319
+
320
+ if n.PeerHost == nil {
321
+ res.SetError(errNotOnline, cmds.ErrClient)
322
+ return
323
+ }
324
+
325
+ var addrs []string
326
+ maddrs, err := n.PeerHost.Network().InterfaceListenAddresses()
327
+ if err != nil {
328
+ res.SetError(err, cmds.ErrNormal)
329
+ return
330
+ }
331
+
332
+ for _, addr := range maddrs {
333
+ addrs = append(addrs, addr.String())
334
+ }
335
+ sort.Sort(sort.StringSlice(addrs))
336
+
337
+ res.SetOutput(&stringList{addrs})
338
+ },
339
+ Type: stringList{},
340
+ Marshalers: cmds.MarshalerMap{
341
+ cmds.Text: stringListMarshaler,
342
+ },
343
+}
344
+
345
var swarmConnectCmd = &cmds.Command{
346
Helptext: cmds.HelpText{
347
Tagline: "Open connection to a given address.",
test/sharness/t0060-daemon.sh
+5
-1
@@ -21,6 +21,10 @@ test_expect_success "'ipfs swarm addrs local' works" '
21
ipfs swarm addrs local >local_addrs
22
'
23
24
+test_expect_success "ipfs swarm addrs listen; works" '
25
+ ipfs swarm addrs listen >listen_addrs
26
+'
27
+
28
test_expect_success "ipfs peer id looks good" '
29
test_check_peerid "$PEERID"
30
'
@@ -38,7 +42,7 @@ test_expect_success "ipfs gateway works with the correct allowed origin port" '
42
test_expect_success "ipfs daemon output looks good" '
43
STARTFILE="ipfs cat /ipfs/$HASH_WELCOME_DOCS/readme" &&
44
echo "Initializing daemon..." >expected_daemon &&
41
- sed "s/^/Swarm listening on /" local_addrs >>expected_daemon &&
45
+ sed "s/^/Swarm listening on /" listen_addrs >>expected_daemon &&
46
sed "s/^/Swarm announcing /" local_addrs >>expected_daemon &&
47
echo "API server listening on '$API_MADDR'" >>expected_daemon &&
48
echo "Gateway (readonly) server listening on '$GWAY_MADDR'" >>expected_daemon &&