diff --git a/core/.scripts/generate-logger.sh b/core/.scripts/generate-logger.sh index 830c8089aa..dc085a4be6 100755 --- a/core/.scripts/generate-logger.sh +++ b/core/.scripts/generate-logger.sh @@ -5,6 +5,10 @@ for pkg in $(git grep func\ | grep .go: | cut -d: -f1 | uniq | xargs -n1 dirname logname="core."$(echo $pkg | tr / .) pkgname=$(basename $pkg) + if [ "$pkg" = "api/node/graphql/models" ]; then + logname="vendor.graphql.models" + fi + if grep "package main" $pkg/*.go >/dev/null 2>/dev/null; then pkgname="main" fi diff --git a/core/api/node/graphql/models/logger.gen.go b/core/api/node/graphql/models/logger.gen.go index 62046065f9..a35429542e 100644 --- a/core/api/node/graphql/models/logger.gen.go +++ b/core/api/node/graphql/models/logger.gen.go @@ -5,5 +5,5 @@ package models import "go.uber.org/zap" func logger() *zap.Logger { - return zap.L().Named("core.api.node.graphql.models") + return zap.L().Named("vendor.graphql.models") } diff --git a/core/bot/bot.go b/core/bot/bot.go index 28ba8bbfe2..42c4362fd3 100644 --- a/core/bot/bot.go +++ b/core/bot/bot.go @@ -2,6 +2,7 @@ package bot import ( "context" + "fmt" "io" "time" @@ -39,7 +40,10 @@ func (b *Bot) Start() error { return err } for { + fmt.Println("for") + time.Sleep(1000 * time.Millisecond) event, err := stream.Recv() + fmt.Println("event", event, err) if err == io.EOF { break } diff --git a/core/bot/generic.go b/core/bot/generic.go new file mode 100644 index 0000000000..0195a506b2 --- /dev/null +++ b/core/bot/generic.go @@ -0,0 +1,16 @@ +package bot + +import ( + "fmt" + + "berty.tech/core/entity" +) + +func GenericOptions() []Option { + return []Option{ + WithAutoAcceptInvites(), + WithMessageHandlerFunc(func(b *Bot, e *Event, msg *entity.Message) error { + return b.Reply(e, &entity.Message{Text: fmt.Sprintf("hello! (%s)", msg.Text)}) + }), + } +} diff --git a/core/bot/logger.gen.go b/core/bot/logger.gen.go new file mode 100644 index 0000000000..4d330c9aba --- /dev/null +++ b/core/bot/logger.gen.go @@ -0,0 +1,9 @@ +// Code generated by berty.tech/core/.scripts/generate-logger.sh + +package bot + +import "go.uber.org/zap" + +func logger() *zap.Logger { + return zap.L().Named("core.bot") +} diff --git a/core/bot/option.go b/core/bot/option.go index 974ea851f8..7d6e602f99 100644 --- a/core/bot/option.go +++ b/core/bot/option.go @@ -2,8 +2,8 @@ package bot import ( "encoding/json" - "log" + "go.uber.org/zap" grpc "google.golang.org/grpc" "berty.tech/core/api/client" @@ -56,11 +56,18 @@ func WithAutoAcceptInvites() Option { } } +func WithMessageHandlerFunc(f MessageHandlerFunc) Option { + return func(b *Bot) error { + b.AddMessageHandlerFunc(f) + return nil + } +} + func WithLogger() Option { return func(b *Bot) error { b.AddHandlerFunc(func(_ *Bot, e *Event) error { out, _ := json.Marshal(e) - log.Println("received event", string(out)) + logger().Debug("received event", zap.String("event", string(out))) return nil }) return nil diff --git a/core/cmd/berty/daemon.go b/core/cmd/berty/daemon.go index 8c057eb029..35b4b3c7f7 100644 --- a/core/cmd/berty/daemon.go +++ b/core/cmd/berty/daemon.go @@ -19,6 +19,7 @@ type daemonOptions struct { hideBanner bool `mapstructure:"hide-banner"` dropDatabase bool `mapstructure:"drop-database"` initOnly bool `mapstructure:"init-only"` + withBot bool `mapstructure:"with-bot"` // p2p identity string `mapstructure:"identity"` @@ -41,6 +42,7 @@ func daemonSetupFlags(flags *pflag.FlagSet, opts *daemonOptions) { flags.BoolVar(&opts.initOnly, "init-only", false, "stop after node initialization (useful for integration tests") flags.BoolVar(&opts.noP2P, "no-p2p", false, "Disable p2p Driver") flags.BoolVar(&opts.hop, "hop", false, "enable relay hop (should not be enable for client)") + flags.BoolVar(&opts.withBot, "bot", false, "enable bot") flags.BoolVar(&opts.mdns, "mdns", true, "enable mdns discovery") flags.StringVar(&opts.grpcBind, "grpc-bind", ":1337", "gRPC listening address") flags.StringVar(&opts.gqlBind, "gql-bind", ":8700", "Bind graphql api") @@ -112,6 +114,10 @@ func daemon(opts *daemonOptions) error { accountOptions = append(accountOptions, account.WithEnqueurNetwork()) } + if opts.withBot { + accountOptions = append(accountOptions, account.WithBot()) + } + if opts.initOnly { accountOptions = append(accountOptions, account.WithInitOnly()) } diff --git a/core/go.mod b/core/go.mod index 9198480bfb..31ac40998f 100644 --- a/core/go.mod +++ b/core/go.mod @@ -2,7 +2,6 @@ module berty.tech/core require ( cloud.google.com/go v0.30.0 // indirect - github.com/0xAX/notificator v0.0.0-20171022182052-88d57ee9043b // indirect github.com/99designs/gqlgen v0.6.0 github.com/BurntSushi/toml v0.3.1 // indirect github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 // indirect @@ -11,16 +10,14 @@ require ( github.com/brianvoe/gofakeit v3.13.0+incompatible github.com/btcsuite/btcd v0.0.0-20181013004428-67e573d211ac // indirect github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd // indirect - github.com/codegangsta/envy v0.0.0-20141216192214-4b78388c8ce4 // indirect - github.com/codegangsta/gin v0.0.0-20171026143024-cafe2ce98974 // indirect github.com/coreos/go-semver v0.2.0 // indirect github.com/denisenkom/go-mssqldb v0.0.0-20181014144952-4e0d7dc8888f // indirect github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 // indirect github.com/fd/go-nat v1.0.0 // indirect + github.com/go-check/check v0.0.0-20180628173108-788fd7840127 // indirect github.com/go-gormigrate/gormigrate v1.2.1 github.com/go-sql-driver/mysql v1.4.0 // indirect github.com/gogo/protobuf v1.1.1 - github.com/golang/lint v0.0.0-20181011164241-5906bd5c48cd // indirect github.com/golang/protobuf v1.2.0 github.com/google/go-cmp v0.2.0 // indirect github.com/google/uuid v1.0.0 // indirect @@ -51,6 +48,7 @@ require ( github.com/joho/godotenv v1.3.0 // indirect github.com/jtolds/gls v4.2.1+incompatible // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect + github.com/kr/pretty v0.1.0 // indirect github.com/lib/pq v1.0.0 // indirect github.com/libp2p/go-addr-util v2.0.6+incompatible // indirect github.com/libp2p/go-buffer-pool v0.1.1 // indirect @@ -92,7 +90,6 @@ require ( github.com/libp2p/go-ws-transport v2.0.14+incompatible // indirect github.com/mattn/go-colorable v0.0.9 // indirect github.com/mattn/go-isatty v0.0.4 // indirect - github.com/mattn/go-shellwords v1.0.3 // indirect github.com/mattn/go-sqlite3 v1.9.0 // indirect github.com/miekg/dns v1.0.13 // indirect github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 // indirect @@ -139,16 +136,11 @@ require ( go.uber.org/multierr v1.1.0 // indirect go.uber.org/zap v1.9.1 golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e // indirect - golang.org/x/lint v0.0.0-20181011164241-5906bd5c48cd // indirect golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1 - golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced // indirect golang.org/x/sys v0.0.0-20181011152604-fa43e7bc11ba // indirect - golang.org/x/tools v0.0.0-20181013182035-5e66757b835f // indirect google.golang.org/appengine v1.2.0 // indirect google.golang.org/genproto v0.0.0-20181004005441-af9cb2a35e7f // indirect google.golang.org/grpc v1.15.0 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/stretchr/testify.v1 v1.2.2 // indirect - gopkg.in/urfave/cli.v1 v1.20.0 // indirect - honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3 // indirect ) diff --git a/core/go.sum b/core/go.sum index da50aaff26..7bf23fc988 100644 --- a/core/go.sum +++ b/core/go.sum @@ -1,13 +1,15 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.30.0 h1:xKvyLgk56d0nksWq49J0UyGEeUIicTl4+UBiX1NPX9g= cloud.google.com/go v0.30.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/0xAX/notificator v0.0.0-20171022182052-88d57ee9043b/go.mod h1:NtXa9WwQsukMHZpjNakTTz0LArxvGYdPA9CjIcUSZ6s= github.com/99designs/gqlgen v0.6.0 h1:gg+WRRW2A+XldwDRcwkgBh0wffvyZlcQX8WUu+4rKd0= github.com/99designs/gqlgen v0.6.0/go.mod h1:KSQDfLlTTGmzlRgLGm6HeKKKo598l5E2svEM6Nz2Jnw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 h1:w1UutsfOrms1J05zt7ISrnJIXKzwaspym5BTKGx93EI= github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= github.com/agnivade/levenshtein v1.0.1 h1:3oJU7J3FGFmyhn8KHjmVaZCN5hxTr7GxgRue+sxIXdQ= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/brianvoe/gofakeit v3.13.0+incompatible h1:OscAXOIT40Xp4qY/VBxyRVsvp1Jv7i0fyBnXdJmI9cI= github.com/brianvoe/gofakeit v3.13.0+incompatible/go.mod h1:kfwdRA90vvNhPutZWfH7WPaDzUjz+CZFqG+rPkOjGOc= @@ -16,28 +18,33 @@ github.com/btcsuite/btcd v0.0.0-20181013004428-67e573d211ac/go.mod h1:Dmm/EzmjnC github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/codegangsta/envy v0.0.0-20141216192214-4b78388c8ce4/go.mod h1:X7wHz0C25Lga6CnJ4WAQNbUQ9P/8eWSNv8qIO71YkSM= -github.com/codegangsta/gin v0.0.0-20171026143024-cafe2ce98974/go.mod h1:UBYuwaH3dMw91EZ7tGVaFF6GDj5j46S7zqB9lZPIe58= github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.0.0-20181014144952-4e0d7dc8888f h1:WH0w/R4Yoey+04HhFxqZ6VX6I0d7RMyw5aXQ9UTvQPs= github.com/denisenkom/go-mssqldb v0.0.0-20181014144952-4e0d7dc8888f/go.mod h1:xN/JuLBIz4bjkxNmByTiV1IbhfnYb6oo99phBn4Eqhc= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/fd/go-nat v1.0.0 h1:DPyQ97sxA9ThrWYRPcWUz/z9TnpTIGRYODIQc/dy64M= github.com/fd/go-nat v1.0.0/go.mod h1:BTBu/CKvMmOMUPkKVef1pngt2WFH/lg7E6yQnulfp6E= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127 h1:0gkP6mzaMqkmpcJYCFOLkIBwI7xFExG03bbkOkCvUPI= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-gormigrate/gormigrate v1.2.1 h1:y3jmLDVVxVkuIR4CR5Qu+lLiUUOtpGt+4zjkLH53Bls= github.com/go-gormigrate/gormigrate v1.2.1/go.mod h1:EmaYTk8H9TxcUD9nFzNPaHlDUCePc1EstS+HTwcGNhE= +github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= -github.com/golang/lint v0.0.0-20181011164241-5906bd5c48cd/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -57,6 +64,7 @@ github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCO github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huin/goupnp v0.0.0-20180415215157-1395d1447324/go.mod h1:MZ2ZmwcBpvOoJ22IJsc7va19ZwoheaBk43rKg12SKag= github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo= @@ -68,6 +76,7 @@ github.com/ipfs/go-cid v0.9.0 h1:EdO7meRzk9MpAo8DbOmPDU3Yh2BQ4ABc0xN2wgEtREA= github.com/ipfs/go-cid v0.9.0/go.mod h1:DEZAg7ik3SR8PY77P+hNaWtHtBirqeEgHbfmePL8WJA= github.com/ipfs/go-datastore v3.2.0+incompatible h1:d9fANkqO9u1kgx6FSlZb8eZPDzD2uthVikkJAI7CUII= github.com/ipfs/go-datastore v3.2.0+incompatible/go.mod h1:bYmHO9fuKO1Ca7dpdDBWQl0mndy5b0HFqSJjGlNYtzs= +github.com/ipfs/go-detect-race v1.0.1 h1:cWfwbM/um9XsEc2qp8cBGqcXIUg9J8NzmjgJr55AAso= github.com/ipfs/go-detect-race v1.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/ipfs/go-ipfs-addr v0.1.24 h1:jWFyfBwSJ+64uPxDOb08SP2Mi4bv72oPn0hg+UnNEio= github.com/ipfs/go-ipfs-addr v0.1.24/go.mod h1:Gu5hZ8kxPyIDoXv8edvNpIYSkRciSp7QbLUFGNxd/sQ= @@ -81,9 +90,11 @@ github.com/jackpal/gateway v1.0.4 h1:LS5EHkLuQ6jzaHwULi0vL+JO0mU/n4yUtK8oUjHHOlM github.com/jackpal/gateway v1.0.4/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= github.com/jackpal/go-nat-pmp v1.0.1 h1:i0LektDkO1QlrTm/cSuP+PyBCDnYvjPLGl4LdWEMiaA= github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec h1:DQqZhhDvrTrEQ3Qod5yfavcA064e53xlQ+xajiorXgM= github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jbenet/go-randbuf v0.0.0-20160322125720-674640a50e6a h1:MUZ5SN21sddytgKf4tb6rKkzO9uMLlZxIV5IpW/ZgRY= github.com/jbenet/go-randbuf v0.0.0-20160322125720-674640a50e6a/go.mod h1:z659Yhk+3iK3C42MGnioXmP9y8uly7LuJaoDGyQyJp4= github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2 h1:vhC1OXXiT9R2pczegwz6moDvuRpggaroAXhPIseh57A= github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= @@ -93,13 +104,22 @@ github.com/jinzhu/gorm v1.9.1 h1:lDSDtsCt5AGGSKTs8AHlSDbbgif4G4+CKJ8ETBDVHTA= github.com/jinzhu/gorm v1.9.1/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a h1:eeaG9XMUvRBYXJi4pg1ZKM7nxc5AfXfojeLLW7O5J3k= github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v0.0.0-20180511015916-ed742868f2ae h1:8bBMcboXYVuo0WYH+rPe5mB8obO89a993hdTZ3phTjc= github.com/jinzhu/now v0.0.0-20180511015916-ed742868f2ae/go.mod h1:oHTiXerJ20+SfYcrdlBO7rzZRJWGwSTQ0iUY2jI6Gfc= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/libp2p/go-addr-util v2.0.6+incompatible h1:Wamvv85z8aFXCRRW4F7q5J/6k+yvnDnqu3VY8LkCX7c= github.com/libp2p/go-addr-util v2.0.6+incompatible/go.mod h1:doh2auL/Rkfq1xHxDrWJGHZ8yDojPerOZoPu9XVwRB8= @@ -113,6 +133,7 @@ github.com/libp2p/go-flow-metrics v0.2.0 h1:GAJSg/g+xLuc7vz0RN96pRA9q/n5b5+Hs6Sn github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= github.com/libp2p/go-libp2p v6.0.19+incompatible h1:6aMqs0wH9XNJti070uBbCYAZYm8DqISg+R5vq9hsCcM= github.com/libp2p/go-libp2p v6.0.19+incompatible/go.mod h1:CyUlFa6Mw04PkmMg8gBIlHUl8j3TrEiA6oFiF4SgD8w= +github.com/libp2p/go-libp2p-blankhost v0.3.13 h1:dICAE2QvFDSp4ABVd2g1IrPqefQGGcPxx3QbS4z8Smw= github.com/libp2p/go-libp2p-blankhost v0.3.13/go.mod h1:v1Lnlzn2DFfVeAk2O19BnVm/OaoRlFZwSyq015ZT11I= github.com/libp2p/go-libp2p-circuit v2.2.8+incompatible h1:H+RdUkSwIBuu4VLGApOBfejGEfmIIblsajR8Wnecb8Y= github.com/libp2p/go-libp2p-circuit v2.2.8+incompatible/go.mod h1:DH3RV0Tb4cHZAdSsdNOitADXTqRiFZxJmSk7mMcCFN4= @@ -136,6 +157,7 @@ github.com/libp2p/go-libp2p-nat v0.8.7 h1:qSN1UQyx2RpOgnwU77+VwlSofbeDnAPdguTW1r github.com/libp2p/go-libp2p-nat v0.8.7/go.mod h1:cA6+rN+EcOAzmSL3vQ53VxX/FfOL1WGeJUvZgqjm2eQ= github.com/libp2p/go-libp2p-net v3.0.13+incompatible h1:ZucdlyY1T7Sz7zDh4uP3aU+FHfYD8edcu5Gr+9ALarY= github.com/libp2p/go-libp2p-net v3.0.13+incompatible/go.mod h1:8W6Wx3AZbTRTe8zSMLoAmT3mGyau+w6kGIRk+Z+MZ7Q= +github.com/libp2p/go-libp2p-netutil v0.4.11 h1:eLPFmbMevDPTVee0MPd29Syc3sncvDjDun7vBH0gspQ= github.com/libp2p/go-libp2p-netutil v0.4.11/go.mod h1:lpxjq1x/eUtPYAZAtnC7dKWjQeTuYIYz2ZIPNDDBj3g= github.com/libp2p/go-libp2p-peer v2.3.8+incompatible h1:ZMYXJdcX/38UBDjrl5BEYRGRgDkc+r+oMSfysyPM/MQ= github.com/libp2p/go-libp2p-peer v2.3.8+incompatible/go.mod h1:fS2eFKRO1IomwBAf+SuE8P1XOT/AAiqSgVPNIFA7Jc0= @@ -171,6 +193,7 @@ github.com/libp2p/go-stream-muxer v3.0.1+incompatible h1:w9q15DATxItvgKwr6/z+47A github.com/libp2p/go-stream-muxer v3.0.1+incompatible/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= github.com/libp2p/go-tcp-transport v2.0.14+incompatible h1:hPCTkon99IHLpZdR5B/iT2RADrzGnWeCrwBZprzFKDM= github.com/libp2p/go-tcp-transport v2.0.14+incompatible/go.mod h1:K6Zi9TkPvn5m/m0bktlJ6Fv9Vna2wvr/jiCtTRC7T8o= +github.com/libp2p/go-testutil v1.2.8 h1:+r83b7HQp1p7rNQh9SfR2rY81OPYqAmFeDgBOP1v1b4= github.com/libp2p/go-testutil v1.2.8/go.mod h1:8FHCRBHdt9BibhKebrOqVTJyW4cOZc52bfrGmw7ja+4= github.com/libp2p/go-ws-transport v2.0.14+incompatible h1:wnf+ND4tot8DdqdpveeieToUtIMCmA2TWcdrdZ/Xwmo= github.com/libp2p/go-ws-transport v2.0.14+incompatible/go.mod h1:qx7Dcw4onTaVNI3iG6q3XOKwNQWnXYhNEHYmhgQmKKk= @@ -180,7 +203,7 @@ github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRU github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/miekg/dns v1.0.13 h1:Y72t3Ody/fSEkLQOC49kG0ALF7b8ax2TouzPFgIT40E= github.com/miekg/dns v1.0.13/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -205,7 +228,9 @@ github.com/multiformats/go-multihash v1.0.8 h1:pyowaBSivNxBr137ZjYkr0q4o41MKSJVP github.com/multiformats/go-multihash v1.0.8/go.mod h1:sT17phG+xVgnrZc8ht/ZoCIV0sKRwvmZkXk46UfSxM4= github.com/multiformats/go-multistream v0.3.9 h1:ZqVaUxtVzjRUCGaO3596vk/rj9UXheIGAdKXXo/VKUA= github.com/multiformats/go-multistream v0.3.9/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= +github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.2 h1:3mYCb7aPxS/RU7TI1y4rkEn1oKmPRjNJLNEXgw7MH2I= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/opentracing/opentracing-go v1.0.2 h1:3jA2P6O1F9UOrWVpwrIo17pu01KWvNWg4X946/Y5Zwg= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -213,12 +238,15 @@ github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181 github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/satori/go.uuid v0.0.0-20180103172713-c596ec57260f h1:AY0Wu7MEBkx/n3NS1ER+W2tl6grrs9z+eqO5WV4qENQ= github.com/satori/go.uuid v0.0.0-20180103172713-c596ec57260f/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sirupsen/logrus v1.1.1 h1:VzGj7lhU7KEB9e9gMpAV/v5XT2NVSvLJhJLCWbnkgXg= github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -239,9 +267,11 @@ github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/viper v1.2.1 h1:bIcUwXqLseLF3BDAZduuNfekWG87ibtFxi59Bq+oI9M= github.com/spf13/viper v1.2.1/go.mod h1:P4AexN0a+C9tGAnUFNwDMYYZv3pjFuvmeiMyKRaNVlI= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf h1:Z2X3Os7oRzpdJ75iPqWZc0HeJWFYNCvKsfpQwFpRNTA= github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= +github.com/uber-go/atomic v1.3.2 h1:Azu9lPBWRNKzYXSIwRfgRuDuS0YKsK4NFhiQv98gkxo= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= github.com/uber/jaeger-client-go v2.15.0+incompatible h1:NP3qsSqNxh8VYr956ur1N/1C1PjvOJnJykCzcD5QHbk= github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= @@ -283,7 +313,6 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e h1:IzypfodbhbnViNUO/MEh0FzCUooG97cIGfdggUrUSyU= golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20181011164241-5906bd5c48cd/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/net v0.0.0-20180524181706-dfa909b99c79/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -291,7 +320,7 @@ golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1 h1:Y/KGZSOdz/2r0WJ9Mkmz6NJBusp0kiNx1Cn82lzJQ6w= golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -302,8 +331,8 @@ golang.org/x/sys v0.0.0-20181011152604-fa43e7bc11ba/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181013182035-5e66757b835f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0 h1:S0iUepdCWODXRvtE+gcRDd15L+k+k1AiHlMiMjefH24= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181004005441-af9cb2a35e7f h1:FU37niK8AQ59mHcskRyQL7H0ErSeNh650vdcj8HqdSI= @@ -311,12 +340,14 @@ google.golang.org/genproto v0.0.0-20181004005441-af9cb2a35e7f/go.mod h1:JiN7NxoA google.golang.org/grpc v1.15.0 h1:Az/KuahOM4NAidTEuJCv/RonAA7rYsTPkqXVjr+8OOw= google.golang.org/grpc v1.15.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/stretchr/testify.v1 v1.2.2 h1:yhQC6Uy5CqibAIlk1wlusa/MJ3iAN49/BsR/dCCKz3M= gopkg.in/stretchr/testify.v1 v1.2.2/go.mod h1:QI5V/q6UbPmuhtm10CaFZxED9NreB8PnFYN9JcR6TxU= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/core/manager/account/account.go b/core/manager/account/account.go index 3e40e9ccc1..cb70b7d0f9 100644 --- a/core/manager/account/account.go +++ b/core/manager/account/account.go @@ -3,13 +3,16 @@ package account import ( "fmt" "io" - "log" "net" "net/http" "os" "os/signal" "syscall" + "berty.tech/core" + nodeapi "berty.tech/core/api/node" + p2papi "berty.tech/core/api/p2p" + "berty.tech/core/bot" "berty.tech/core/entity" "berty.tech/core/network" "berty.tech/core/network/netutil" @@ -29,7 +32,7 @@ type Account struct { banner string db *gorm.DB - dbPath string + dbDir string dbDrop bool gqlHandler http.Handler @@ -45,6 +48,7 @@ type Account struct { node *node.Node initOnly bool + withBot bool serverTracerCloser io.Closer dialTracerCloser io.Closer @@ -108,10 +112,10 @@ func (a *Account) Validate() error { return errors.New("missing required field (Name) for account") } else if a.Passphrase == "" { return errors.New("missing required field (Passphrase) for account") - } else if a.dbPath == "" { - return errors.New("missing required field (dbPath) for account") + } else if a.dbDir == "" { + return errors.New("missing required field (dbDir) for account") } else if a.db == nil { - return errors.New("connecting to the db failed with the provided (dbPath/Passphrase) for account") + return errors.New("connecting to the db failed with the provided (dbDir/Passphrase) for account") } else if a.network == nil { return errors.New("missing required field (network) for account") } else if a.grpcServer == nil { @@ -141,6 +145,23 @@ func (a *Account) Open() error { if err := a.startNode(); err != nil { return err } + if a.withBot { + if err := a.startBot(); err != nil { + return err + } + } + + logger().Info("account started", + zap.String("pubkey", a.node.PubKey()), + zap.String("grpc-bind", a.GrpcBind), + zap.String("gql-bind", a.GQLBind), + zap.Int("p2p-api", int(p2papi.Version)), + zap.Int("node-api", int(nodeapi.Version)), + zap.String("version", core.Version), + zap.String("db", a.dbPath()), + zap.String("name", a.Name), + ) + return nil } @@ -170,9 +191,14 @@ func (a *Account) Close() { } // Database + +func (a *Account) dbPath() string { + return a.dbDir + "/berty." + a.Name + ".db" +} + func (a *Account) openDatabase() error { var err error - a.db, err = sqlcipher.Open(a.dbPath+"/berty."+a.Name+".db", []byte(a.Passphrase)) + a.db, err = sqlcipher.Open(a.dbPath(), []byte(a.Passphrase)) if err != nil { return errors.Wrap(err, "failed to open sqlcipher") } @@ -226,6 +252,31 @@ func (a *Account) startGrpcServer() error { return nil } +func (a *Account) startBot() error { + options := append( + []bot.Option{ + bot.WithTCPDaemon(a.GrpcBind), + bot.WithLogger(), + }, + bot.GenericOptions()..., + ) + b, err := bot.New(options...) + if err != nil { + return errors.Wrap(err, "failed to initialize bot") + } + + go func() { + logger().Debug("starting bot...") + if err := b.Start(); err != nil { + logger().Error("bot error", zap.Error(err)) + defer a.PanicHandler() + a.errChan <- err + } + }() + + return nil +} + func (a *Account) startGQL() error { var err error @@ -311,15 +362,15 @@ func (a *Account) startNode() error { s := <-signalChan switch s { case syscall.SIGHUP: // kill -SIGHUP XXXX - log.Println("sighup received") + logger().Info("sighup received") case syscall.SIGINT: // kill -SIGINT XXXX or Ctrl+c - log.Println("sigint received") + logger().Info("sigint received") a.errChan <- nil case syscall.SIGTERM: // kill -SIGTERM XXXX (force stop) - log.Println("sigterm received") + logger().Info("sigterm received") a.errChan <- nil case syscall.SIGQUIT: // kill -SIGQUIT XXXX (stop and core dump) - log.Println("sigquit received") + logger().Info("sigquit received") a.errChan <- nil default: a.errChan <- fmt.Errorf("unknown signal received") diff --git a/core/manager/account/options.go b/core/manager/account/options.go index 2f61aad98b..c77267ab52 100644 --- a/core/manager/account/options.go +++ b/core/manager/account/options.go @@ -59,8 +59,8 @@ func WithDatabase(opts *DatabaseOptions) NewOption { opts = &DatabaseOptions{} } - a.dbPath = opts.Path - if a.dbPath == "" { + a.dbDir = opts.Path + if a.dbDir == "" { return errors.New("cannot have empty database path") } @@ -114,18 +114,19 @@ func WithGrpcServer(opts *GrpcServerOptions) NewOption { grpc_recovery.UnaryServerInterceptor(), } if opts.Interceptors { + gqlLogger := zap.L().Named("vendor.grpc") serverStreamOpts = append(serverStreamOpts, // grpc_auth.StreamServerInterceptor(myAuthFunction), // grpc_prometheus.StreamServerInterceptor, grpc_ctxtags.StreamServerInterceptor(), - grpc_zap.StreamServerInterceptor(logger()), + grpc_zap.StreamServerInterceptor(gqlLogger), grpc_recovery.StreamServerInterceptor(), ) serverUnaryOpts = append(serverUnaryOpts, // grpc_prometheus.UnaryServerInterceptor, // grpc_auth.UnaryServerInterceptor(myAuthFunction), grpc_ctxtags.UnaryServerInterceptor(), - grpc_zap.UnaryServerInterceptor(logger()), + grpc_zap.UnaryServerInterceptor(gqlLogger), grpc_recovery.UnaryServerInterceptor(), ) @@ -172,12 +173,13 @@ func WithGQL(opts *GQLOptions) NewOption { } interceptors := []grpc.DialOption{} + gqlLogger := zap.L().Named("vendor.graphql") if opts.Interceptors { clientStreamOpts := []grpc.StreamClientInterceptor{ - grpc_zap.StreamClientInterceptor(logger()), + grpc_zap.StreamClientInterceptor(gqlLogger), } clientUnaryOpts := []grpc.UnaryClientInterceptor{ - grpc_zap.UnaryClientInterceptor(logger()), + grpc_zap.UnaryClientInterceptor(gqlLogger), } if opts.JaegerAddr != "" { @@ -215,7 +217,6 @@ func WithGQL(opts *GQLOptions) NewOption { mux := http.NewServeMux() mux.Handle("/", gqlhandler.Playground("Berty", "/query")) - gqlLogger := zap.L().Named("vendor.graphql") mux.Handle("/query", gqlhandler.GraphQL( graph.NewExecutableSchema(resolver), gqlhandler.WebsocketUpgrader(websocket.Upgrader{ @@ -264,3 +265,10 @@ func WithGQL(opts *GQLOptions) NewOption { return nil } } + +func WithBot() NewOption { + return func(a *Account) error { + a.withBot = true + return nil + } +} diff --git a/core/pkg/jaeger/logger.go b/core/pkg/jaeger/logger.go index df9ee0564c..30d307c326 100644 --- a/core/pkg/jaeger/logger.go +++ b/core/pkg/jaeger/logger.go @@ -1,8 +1,9 @@ package jaeger import ( - "go.uber.org/zap" "strings" + + "go.uber.org/zap" ) var connectionFailedOnce = false diff --git a/core/testrunner/logger.gen.go b/core/testrunner/logger.gen.go new file mode 100644 index 0000000000..d62d9c3f0c --- /dev/null +++ b/core/testrunner/logger.gen.go @@ -0,0 +1,9 @@ +// Code generated by berty.tech/core/.scripts/generate-logger.sh + +package testrunner + +import "go.uber.org/zap" + +func logger() *zap.Logger { + return zap.L().Named("core.testrunner") +} diff --git a/core/testrunner/logger.go b/core/testrunner/logger.go index 92c0707612..d23923c453 100644 --- a/core/testrunner/logger.go +++ b/core/testrunner/logger.go @@ -26,21 +26,21 @@ type Interface interface { // That must not cause a race detector failure, // although it will still result in limited visibility // into exactly what those goroutines do. -var logger atomic.Value +var alogger atomic.Value // SetLogger sets the test logger implementation for the current process. // It must be called only once, at process startup. func SetLogger(impl Interface) { - if logger.Load() != nil { + if alogger.Load() != nil { panic("testlog: SetLogger must be called only once") } - logger.Store(&impl) + alogger.Store(&impl) } // Logger returns the current test logger implementation. -// It returns nil if there is no logger. +// It returns nil if there is no alogger. func Logger() Interface { - impl := logger.Load() + impl := alogger.Load() if impl == nil { return nil }