From 41a8a609be00cabdba5a6c3abbbd23991698ce23 Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Mon, 24 Jul 2017 18:58:30 +0800 Subject: [PATCH] feat(config): add grpc config. (#255) --- README.md | 4 ++++ config/config.go | 13 +++++++++++-- config/config.yml | 4 ++++ config/config_test.go | 8 ++++++++ gorush/server_unix.go | 1 + rpc/server.go | 8 +++++++- 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bdeadac..31e34ae 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,10 @@ core: folder: ".cache" # folder for storing TLS certificates host: "" # which domains the Let's Encrypt will attempt +grpc: + enabled: false + port: 50051 + api: push_uri: "/api/push" stat_go_uri: "/api/stat/go" diff --git a/config/config.go b/config/config.go index a43a961..465eddf 100644 --- a/config/config.go +++ b/config/config.go @@ -15,6 +15,7 @@ type ConfYaml struct { Ios SectionIos `yaml:"ios"` Log SectionLog `yaml:"log"` Stat SectionStat `yaml:"stat"` + GRPC SectionGRPC `yaml:"grpc"` } // SectionCore is sub section of config. @@ -115,6 +116,12 @@ type SectionPID struct { Override bool `yaml:"override"` } +// SectionGRPC is sub section of config. +type SectionGRPC struct { + Enabled bool `yaml:"enabled"` + Port string `yaml:"port"` +} + // BuildDefaultPushConf is default config setting. func BuildDefaultPushConf() ConfYaml { var conf ConfYaml @@ -165,17 +172,19 @@ func BuildDefaultPushConf() ConfYaml { conf.Log.ErrorLevel = "error" conf.Log.HideToken = true + // Stat Engine conf.Stat.Engine = "memory" conf.Stat.Redis.Addr = "localhost:6379" conf.Stat.Redis.Password = "" conf.Stat.Redis.DB = 0 - conf.Stat.BoltDB.Path = "bolt.db" conf.Stat.BoltDB.Bucket = "gorush" - conf.Stat.BuntDB.Path = "bunt.db" conf.Stat.LevelDB.Path = "level.db" + // gRPC Server + conf.GRPC.Enabled = false + conf.GRPC.Port = "50051" return conf } diff --git a/config/config.yml b/config/config.yml index 7c85f5e..92831a6 100644 --- a/config/config.yml +++ b/config/config.yml @@ -18,6 +18,10 @@ core: folder: ".cache" # folder for storing TLS certificates host: "" # which domains the Let's Encrypt will attempt +grpc: + enabled: false + port: 50051 + api: push_uri: "/api/push" stat_go_uri: "/api/stat/go" diff --git a/config/config_test.go b/config/config_test.go index 829dfea..eb8521b 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -111,6 +111,10 @@ func (suite *ConfigTestSuite) TestValidateConfDefault() { assert.Equal(suite.T(), "bunt.db", suite.ConfGorushDefault.Stat.BuntDB.Path) assert.Equal(suite.T(), "level.db", suite.ConfGorushDefault.Stat.LevelDB.Path) + + // gRPC + assert.Equal(suite.T(), false, suite.ConfGorushDefault.GRPC.Enabled) + assert.Equal(suite.T(), "50051", suite.ConfGorushDefault.GRPC.Port) } func (suite *ConfigTestSuite) TestValidateConf() { @@ -171,6 +175,10 @@ func (suite *ConfigTestSuite) TestValidateConf() { assert.Equal(suite.T(), "bunt.db", suite.ConfGorush.Stat.BuntDB.Path) assert.Equal(suite.T(), "level.db", suite.ConfGorush.Stat.LevelDB.Path) + + // gRPC + assert.Equal(suite.T(), false, suite.ConfGorush.GRPC.Enabled) + assert.Equal(suite.T(), "50051", suite.ConfGorush.GRPC.Port) } func TestConfigTestSuite(t *testing.T) { diff --git a/gorush/server_unix.go b/gorush/server_unix.go index 3a00d88..5a03e3f 100644 --- a/gorush/server_unix.go +++ b/gorush/server_unix.go @@ -11,6 +11,7 @@ import ( // RunHTTPServer provide run http or https protocol. func RunHTTPServer() (err error) { + LogAccess.Debug("HTTPD server is running on " + PushConf.Core.Port + " port.") if PushConf.Core.AutoTLS.Enabled { err = gracehttp.Serve(autoTLSServer()) } else if PushConf.Core.SSL && PushConf.Core.CertPath != "" && PushConf.Core.KeyPath != "" { diff --git a/rpc/server.go b/rpc/server.go index aaf1ee4..c03d90b 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -45,7 +45,12 @@ func (s *server) Send(ctx context.Context, in *pb.NotificationRequest) (*pb.Noti // RunGRPCServer run gorush grpc server func RunGRPCServer() error { - lis, err := net.Listen("tcp", port) + if !gorush.PushConf.GRPC.Enabled { + gorush.LogAccess.Debug("gRPC server is disabled.") + return nil + } + + lis, err := net.Listen("tcp", ":"+gorush.PushConf.GRPC.Port) if err != nil { gorush.LogError.Error("failed to listen: %v", err) return err @@ -54,6 +59,7 @@ func RunGRPCServer() error { pb.RegisterGorushServer(s, &server{}) // Register reflection service on gRPC server. reflection.Register(s) + gorush.LogAccess.Debug("gRPC server is running on " + gorush.PushConf.GRPC.Port + " port.") if err := s.Serve(lis); err != nil { gorush.LogError.Error("failed to serve: %v", err) return err