Skip to content

Commit

Permalink
Merge branch 'lthibault-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
Petar Maymounkov committed Nov 21, 2016
2 parents dc9f874 + 926ad72 commit fd2add7
Show file tree
Hide file tree
Showing 31 changed files with 316 additions and 2,410 deletions.
9 changes: 9 additions & 0 deletions Makefile
@@ -0,0 +1,9 @@
nix:
go build -o $(GOPATH)/bin/circuit cmd/circuit/main.go cmd/circuit/server.go cmd/circuit/hmac.go \
cmd/circuit/chan.go cmd/circuit/dns.go cmd/circuit/joinleave.go \
cmd/circuit/ls.go cmd/circuit/wait.go cmd/circuit/util.go \
cmd/circuit/start.go cmd/circuit/procdkr.go cmd/circuit/peek.go \
cmd/circuit/load.go cmd/circuit/std.go cmd/circuit/recv.go

clean:
rm $(GOPATH)/bin/circuit
38 changes: 22 additions & 16 deletions cmd/circuit/chan.go
Expand Up @@ -14,70 +14,76 @@ import (
"strconv"

"github.com/gocircuit/circuit/client"
"github.com/pkg/errors"

"github.com/gocircuit/circuit/github.com/codegangsta/cli"
"github.com/urfave/cli"
)

// circuit mkchan /X1234/hola/charlie 0
func mkchan(x *cli.Context) {
func mkchan(x *cli.Context) (err error) {
defer func() {
if r := recover(); r != nil {
fatalf("error, likely due to missing server or misspelled anchor: %v", r)
err = errors.Wrapf(r.(error), "error, likely due to missing server or misspelled anchor: %v", r)
}
}()

c := dial(x)
args := x.Args()
if len(args) != 2 {
fatalf("mkchan needs an anchor and a capacity arguments")
return errors.New("mkchan needs an anchor and a capacity arguments")
}
w, _ := parseGlob(args[0])
a := c.Walk(w)
n, err := strconv.Atoi(args[1])
if err != nil || n < 0 {
fatalf("second argument to mkchan must be a non-negative integral capacity")
return errors.New("second argument to mkchan must be a non-negative integral capacity")
}
if _, err = a.MakeChan(n); err != nil {
fatalf("mkchan error: %s", err)
return errors.Wrapf(err, "mkchan error: %s", err)
}
return
}

func send(x *cli.Context) {
func send(x *cli.Context) (err error) {
defer func() {
if r := recover(); r != nil {
fatalf("error, likely due to missing server or misspelled anchor: %v", r)
err = errors.Wrapf(r.(error), "error, likely due to missing server or misspelled anchor: %v", r)
}
}()

c := dial(x)
args := x.Args()
if len(args) != 1 {
fatalf("send needs one anchor argument")
return errors.New("send needs one anchor argument")
}
w, _ := parseGlob(args[0])
u, ok := c.Walk(w).Get().(client.Chan)
if !ok {
fatalf("not a channel")
return errors.New("not a channel")
}
msgw, err := u.Send()
if err != nil {
fatalf("send error: %v", err)
return errors.Wrapf(err, "send error: %v", err)
}
if _, err = io.Copy(msgw, os.Stdin); err != nil {
fatalf("transmission error: %v", err)
return errors.Wrapf(err, "transmission error: %v", err)
}
return
}

func clos(x *cli.Context) {
func clos(x *cli.Context) (err error) {
c := dial(x)
args := x.Args()
if len(args) != 1 {
fatalf("close needs one anchor argument")
return errors.New("close needs one anchor argument")
}
w, _ := parseGlob(args[0])
u, ok := c.Walk(w).Get().(client.Chan)
if !ok {
fatalf("not a channel")
return errors.New("not a channel")
}
if err := u.Close(); err != nil {
fatalf("close error: %v", err)
return errors.Wrapf(err, "close error: %v", err)
}
return
}
39 changes: 23 additions & 16 deletions cmd/circuit/dns.go
Expand Up @@ -9,71 +9,78 @@ package main

import (
"github.com/gocircuit/circuit/client"
"github.com/pkg/errors"

"github.com/gocircuit/circuit/github.com/codegangsta/cli"
"github.com/urfave/cli"
)

func mkdns(x *cli.Context) {
func mkdns(x *cli.Context) (err error) {
defer func() {
if r := recover(); r != nil {
fatalf("error, likely due to missing server or misspelled anchor: %v", r)
err = errors.Wrapf(r.(error), "error, likely due to missing server or misspelled anchor: %v", r)
}
}()

c := dial(x)
args := x.Args()
if len(args) < 1 {
fatalf("mkdns needs an anchor and an optional address arguments")
return errors.New("mkdns needs an anchor and an optional address arguments")
}
var addr string
if len(args) == 2 {
addr = args[1]
}
w, _ := parseGlob(args[0])
_, err := c.Walk(w).MakeNameserver(addr)
if err != nil {
fatalf("mkdns error: %s", err)

if _, err = c.Walk(w).MakeNameserver(addr); err != nil {
return errors.Wrapf(err, "mkdns error: %s", err)
}
return
}

func nset(x *cli.Context) {
func nset(x *cli.Context) (err error) {
defer func() {
if r := recover(); r != nil {
fatalf("error, likely due to missing server or misspelled anchor: %v", r)
err = errors.Wrapf(r.(error), "error, likely due to missing server or misspelled anchor: %v", r)
}
}()

c := dial(x)
args := x.Args()
if len(args) != 2 {
fatalf("set needs an anchor and a resource record arguments")
return errors.New("set needs an anchor and a resource record arguments")
}
w, _ := parseGlob(args[0])
switch u := c.Walk(w).Get().(type) {
case client.Nameserver:
err := u.Set(args[1])
if err != nil {
fatalf("set resoure record error: %v", err)
return errors.Wrapf(err, "set resoure record error: %v", err)
}
default:
fatalf("not a nameserver element")
return errors.New("not a nameserver element")
}
return
}

func nunset(x *cli.Context) {
func nunset(x *cli.Context) (err error) {
defer func() {
if r := recover(); r != nil {
fatalf("error, likely due to missing server or misspelled anchor: %v", r)
err = errors.Wrapf(r.(error), "error, likely due to missing server or misspelled anchor: %v", r)
}
}()

c := dial(x)
args := x.Args()
if len(args) != 2 {
fatalf("unset needs an anchor and a resource name arguments")
return errors.New("unset needs an anchor and a resource name arguments")
}
w, _ := parseGlob(args[0])
switch u := c.Walk(w).Get().(type) {
case client.Nameserver:
u.Unset(args[1])
default:
fatalf("not a nameserver element")
return errors.New("not a nameserver element")
}
return
}
7 changes: 4 additions & 3 deletions cmd/circuit/hmac.go
Expand Up @@ -14,16 +14,17 @@ import (
"math/rand"
"time"

"github.com/gocircuit/circuit/github.com/codegangsta/cli"
"github.com/urfave/cli"
)

func keygen(c *cli.Context) {
func keygen(c *cli.Context) (err error) {
rand.Seed(time.Now().UnixNano())
seed := make([]byte, 32)
for i, _ := range seed {
for i := range seed {
seed[i] = byte(rand.Int31())
}
key := sha512.Sum512(seed)
text := base64.StdEncoding.EncodeToString(key[:])
fmt.Println(text)
return
}
29 changes: 16 additions & 13 deletions cmd/circuit/joinleave.go
Expand Up @@ -8,43 +8,46 @@
package main

import (
"github.com/gocircuit/circuit/github.com/codegangsta/cli"
"github.com/pkg/errors"
"github.com/urfave/cli"
)

// circuit mk@join /X1234/hola/listy
func mkonjoin(x *cli.Context) {
func mkonjoin(x *cli.Context) (err error) {
defer func() {
if r := recover(); r != nil {
fatalf("error, likely due to missing server or misspelled anchor: %v", r)
err = errors.Wrapf(r.(error), "error, likely due to missing server or misspelled anchor: %v", r)
}
}()

c := dial(x)
args := x.Args()
if len(args) != 1 {
fatalf("mk@join needs an anchor argument")
return errors.New("mk@join needs an anchor argument")
}
w, _ := parseGlob(args[0])
_, err := c.Walk(w).MakeOnJoin()
if err != nil {
fatalf("mk@join error: %s", err)
if _, err = c.Walk(w).MakeOnJoin(); err != nil {
return errors.Wrapf(err, "mk@join error: %s", err)
}
return
}

// circuit mk@leave /X1234/hola/listy
func mkonleave(x *cli.Context) {
func mkonleave(x *cli.Context) (err error) {
defer func() {
if r := recover(); r != nil {
fatalf("error, likely due to missing server or misspelled anchor: %v", r)
err = errors.Wrapf(r.(error), "error, likely due to missing server or misspelled anchor: %v", r)
}
}()

c := dial(x)
args := x.Args()
if len(args) != 1 {
fatalf("mk@leave needs an anchor argument")
return errors.New("mk@leave needs an anchor argument")
}
w, _ := parseGlob(args[0])
_, err := c.Walk(w).MakeOnLeave()
if err != nil {
fatalf("mk@leave error: %s", err)
if _, err = c.Walk(w).MakeOnLeave(); err != nil {
return errors.Wrapf(err, "mk@leave error: %s", err)
}
return
}
14 changes: 8 additions & 6 deletions cmd/circuit/ls.go
Expand Up @@ -15,15 +15,16 @@ import (

"github.com/gocircuit/circuit/client"
"github.com/gocircuit/circuit/client/docker"
"github.com/gocircuit/circuit/github.com/codegangsta/cli"
"github.com/pkg/errors"
"github.com/urfave/cli"
)

// circuit ls /Q123/apps/charlie
// circuit ls /...
func ls(x *cli.Context) {
func ls(x *cli.Context) (err error) {
defer func() {
if r := recover(); r != nil {
fatalf("error, likely due to missing server or misspelled anchor: %v", r)
err = errors.Wrapf(r.(error), "error, likely due to missing server or misspelled anchor: %v", r)
}
}()
c := dial(x)
Expand All @@ -34,6 +35,7 @@ func ls(x *cli.Context) {
}
w, ellipses := parseGlob(args[0])
list(0, "/", c.Walk(w), ellipses, x.Bool("long"), x.Bool("depth"))
return
}

func list(level int, prefix string, anchor client.Anchor, recurse, long, depth bool) {
Expand Down Expand Up @@ -71,15 +73,15 @@ func list(level int, prefix string, anchor client.Anchor, recurse, long, depth b
sort.Sort(c)
for _, e := range c {
if recurse && depth {
list(level + 1, prefix + e.n + "/", e.a, true, long, depth)
list(level+1, prefix+e.n+"/", e.a, true, long, depth)
}
if long {
fmt.Printf("%-15s %s%s\n", e.k, prefix, e.n)
} else {
fmt.Printf("%s%s\n", prefix, e.n)
}
if recurse && !depth {
list(level + 1, prefix + e.n + "/", e.a, true, long, depth)
list(level+1, prefix+e.n+"/", e.a, true, long, depth)
}
}
}
Expand Down Expand Up @@ -114,7 +116,7 @@ func parseGlob(pattern string) (walk []string, ellipses bool) {
if len(walk) == 0 {
return
}
if walk[len(walk) - 1] == "..." {
if walk[len(walk)-1] == "..." {
walk = walk[:len(walk)-1]
ellipses = true
}
Expand Down

0 comments on commit fd2add7

Please sign in to comment.