@cryptotaxi247 / kubo / commits / 4ace45d93

vendor in new iptb code (and as a result, go-multiaddr-net and friends

License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>

Jeromy committed Oct 11, 2015 at 21:22 UTC 4ace45d9301abc5941f2761aabc9ff84caccea61
1 file changed +89 -11
test/dependencies/iptb/main.go
+89 -11
@@ -73,13 +73,19 @@ type initCfg struct {
73 Bootstrap string
74 PortStart int
75 Mdns bool
76 + Utp bool
77 }
78
79 func (c *initCfg) swarmAddrForPeer(i int) string {
80 + str := "/ip4/0.0.0.0/tcp/%d"
81 + if c.Utp {
82 + str = "/ip4/0.0.0.0/udp/%d/utp"
83 + }
84 +
85 if c.PortStart == 0 {
80 - return "/ip4/0.0.0.0/tcp/0"
86 + return fmt.Sprintf(str, 0)
87 }
82 - return fmt.Sprintf("/ip4/0.0.0.0/tcp/%d", c.PortStart+i)
88 + return fmt.Sprintf(str, c.PortStart+i)
89 }
90
91 func (c *initCfg) apiAddrForPeer(i int) string {
@@ -250,6 +256,20 @@ func IpfsKillAll() error {
256 return nil
257 }
258
259 +func envForDaemon(n int) []string {
260 + envs := os.Environ()
261 + npath := "IPFS_PATH=" + IpfsDirN(n)
262 + for i, e := range envs {
263 + p := strings.Split(e, "=")
264 + if p[0] == "IPFS_PATH" {
265 + envs[i] = npath
266 + return envs
267 + }
268 + }
269 +
270 + return append(envs, npath)
271 +}
272 +
273 func IpfsStart(waitall bool) error {
274 var addrs []string
275 n := GetNumNodes()
@@ -257,7 +277,7 @@ func IpfsStart(waitall bool) error {
277 dir := IpfsDirN(i)
278 cmd := exec.Command("ipfs", "daemon")
279 cmd.Dir = dir
260 - cmd.Env = append(os.Environ(), "IPFS_PATH="+dir)
280 + cmd.Env = envForDaemon(i)
281
282 cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true}
283
@@ -441,6 +461,11 @@ func IpfsShell(n int) error {
461 }
462
463 func ConnectNodes(from, to int) error {
464 + if from == to {
465 + // skip connecting to self..
466 + return nil
467 + }
468 + fmt.Printf("connecting %d -> %d\n", from, to)
469 cmd := exec.Command("ipfs", "id", "-f", "<addrs>")
470 cmd.Env = []string{"IPFS_PATH=" + IpfsDirN(to)}
471 out, err := cmd.Output()
@@ -449,7 +474,6 @@ func ConnectNodes(from, to int) error {
474 return err
475 }
476 addr := strings.Split(string(out), "\n")[0]
452 - fmt.Println("ADDR: ", addr)
477
478 connectcmd := exec.Command("ipfs", "swarm", "connect", addr)
479 connectcmd.Env = []string{"IPFS_PATH=" + IpfsDirN(from)}
@@ -461,6 +485,55 @@ func ConnectNodes(from, to int) error {
485 return nil
486 }
487
488 +func parseRange(s string) ([]int, error) {
489 + if strings.HasPrefix(s, "[") && strings.HasSuffix(s, "]") {
490 + ranges := strings.Split(s[1:len(s)-1], ",")
491 + var out []int
492 + for _, r := range ranges {
493 + rng, err := expandDashRange(r)
494 + if err != nil {
495 + return nil, err
496 + }
497 +
498 + out = append(out, rng...)
499 + }
500 + return out, nil
501 + } else {
502 + i, err := strconv.Atoi(s)
503 + if err != nil {
504 + return nil, err
505 + }
506 +
507 + return []int{i}, nil
508 + }
509 +}
510 +
511 +func expandDashRange(s string) ([]int, error) {
512 + parts := strings.Split(s, "-")
513 + if len(parts) == 0 {
514 + i, err := strconv.Atoi(s)
515 + if err != nil {
516 + return nil, err
517 + }
518 + return []int{i}, nil
519 + }
520 + low, err := strconv.Atoi(parts[0])
521 + if err != nil {
522 + return nil, err
523 + }
524 +
525 + hi, err := strconv.Atoi(parts[1])
526 + if err != nil {
527 + return nil, err
528 + }
529 +
530 + var out []int
531 + for i := low; i <= hi; i++ {
532 + out = append(out, i)
533 + }
534 + return out, nil
535 +}
536 +
537 func GetAttr(attr string, node int) (string, error) {
538 switch attr {
539 case "id":
@@ -518,9 +591,10 @@ func main() {
591 cfg := new(initCfg)
592 kingpin.Flag("n", "number of ipfs nodes to initialize").Short('n').IntVar(&cfg.Count)
593 kingpin.Flag("port", "port to start allocations from").Default("4002").Short('p').IntVar(&cfg.PortStart)
521 - kingpin.Flag("f", "force initialization (overwrite existing configs)").BoolVar(&cfg.Force)
594 + kingpin.Flag("force", "force initialization (overwrite existing configs)").Short('f').BoolVar(&cfg.Force)
595 kingpin.Flag("mdns", "turn on mdns for nodes").BoolVar(&cfg.Mdns)
596 kingpin.Flag("bootstrap", "select bootstrapping style for cluster").Default("star").StringVar(&cfg.Bootstrap)
597 + kingpin.Flag("utp", "use utp for addresses").BoolVar(&cfg.Utp)
598
599 wait := kingpin.Flag("wait", "wait for nodes to come fully online before exiting").Bool()
600
@@ -576,22 +650,26 @@ func main() {
650 os.Exit(1)
651 }
652
579 - from, err := strconv.Atoi(args[1])
653 + from, err := parseRange(args[1])
654 if err != nil {
655 fmt.Printf("failed to parse: %s\n", err)
656 return
657 }
658
585 - to, err := strconv.Atoi(args[2])
659 + to, err := parseRange(args[2])
660 if err != nil {
661 fmt.Printf("failed to parse: %s\n", err)
662 return
663 }
664
591 - err = ConnectNodes(from, to)
592 - if err != nil {
593 - fmt.Printf("failed to connect: %s\n", err)
594 - return
665 + for _, f := range from {
666 + for _, t := range to {
667 + err = ConnectNodes(f, t)
668 + if err != nil {
669 + fmt.Printf("failed to connect: %s\n", err)
670 + return
671 + }
672 + }
673 }
674
675 case "get":