diff --git a/config.yaml.sample b/config.yaml.sample index 0ec5701dd0ea40c10f194f720f069e448cea9857..c4ee562f13f66c1dfc7a6f0ecdf52997f44fc08e 100644 --- a/config.yaml.sample +++ b/config.yaml.sample @@ -7,4 +7,7 @@ certDir: cert certFile: server.crt certKey: server.key vereignCertFile: vereign_ca.cer -vereignCertKey: vereign_ca.key \ No newline at end of file +vereignCertKey: vereign_ca.key + +# Maximum Message Size (in megabytes) +maxMessageSize: 32 \ No newline at end of file diff --git a/handler/generate_keypair.go b/handler/generate_keypair.go index 19f658283c8ab9b10d05a56bfa9d87d535efbbc2..6281655cf8e23126240140493032110167735fe4 100644 --- a/handler/generate_keypair.go +++ b/handler/generate_keypair.go @@ -39,7 +39,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize) defer client.CloseClient() generateKeyPairResponse := &api.GenerateKeyPairResponse{} diff --git a/handler/handler.go b/handler/handler.go index ab527483a014f32cb929b0f099b92b511705ac75..0f55be7d3340d4a8926d9bd92bef39e5457f1aab 100644 --- a/handler/handler.go +++ b/handler/handler.go @@ -38,6 +38,7 @@ type KeyStorageServerImpl struct { CertFilePath string VereignCertFilePath string VereignPrivateKeyFilePath string + MaxMessageSize int } func (s *KeyStorageServerImpl) CreateAuthentication(ctx context.Context) *authentication.Authentication { @@ -60,7 +61,7 @@ func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize) defer client.CloseClient() getKeyResponse := &api.GetKeyResponse{} @@ -107,7 +108,7 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize) defer client.CloseClient() setKeyResponse := &api.SetKeyResponse{} @@ -155,7 +156,7 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize) defer client.CloseClient() reserveKeyUUIDResponse := &api.ReserveKeyUUIDResponse{} diff --git a/handler/revoke.go b/handler/revoke.go index 8f757b298b6d750587f54e312a3bb8388e8038a7..17709aa8f7b07c0e6f716e2f3a16f0304ce8d88a 100644 --- a/handler/revoke.go +++ b/handler/revoke.go @@ -29,7 +29,7 @@ func (s *KeyStorageServerImpl) Revoke(ctx context.Context, in *api.RevokeRequest auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize) defer client.CloseClient() revokeResponse := &api.RevokeResponse{} diff --git a/main.go b/main.go index 076a8b7ac919e1f026a07659d6ca1176b3386b80..decdcd84ec2ba1a5a510dcb3e95763b82730c2fe 100644 --- a/main.go +++ b/main.go @@ -44,10 +44,12 @@ func main() { vereignCertFilePath := certDir + "/" + viper.GetString("vereignCertFile") vereignPrivateKeyFilePath := certDir + "/" + viper.GetString("vereignCertKey") + maxMessageSize := viper.GetInt("maxMessageSize") + // fire the gRPC server in a goroutine go func() { err := server.StartGRPCServer(grpcAddress, certFilePath, privateKeyFilePath, vereignCertFilePath, - vereignPrivateKeyFilePath, dataStorageAddress) + vereignPrivateKeyFilePath, dataStorageAddress, maxMessageSize) if err != nil { log.Fatalf("failed to start gRPC server: %s", err) } diff --git a/server/configs.go b/server/configs.go index 635427583f2eeae2fd99fb4263581bd7628bf8b5..e747732c96154e7c1606b5a102d7d99c68ddca64 100644 --- a/server/configs.go +++ b/server/configs.go @@ -20,6 +20,8 @@ func SetConfigValues() { viper.SetDefault("vereignCertFile", "vereign_ca.cer") viper.SetDefault("vereignCertKey", "vereign_ca.key") + viper.SetDefault("maxMessageSize", "32") + // Read Config File viper.SetConfigName("config") viper.AddConfigPath(".") diff --git a/server/server.go b/server/server.go index 8a58bd72c851ee9f855224963509fbb48c2366f7..9183c2d94485d1439b1adf6fc501931795f2d9f0 100644 --- a/server/server.go +++ b/server/server.go @@ -70,7 +70,7 @@ func authenticateClient(ctx context.Context, s *handler.KeyStorageServerImpl, in } sessionClient := &client.DataStorageClientImpl{} - sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageClientUrl"), pkgCertFile) + sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageClientUrl"), pkgCertFile, viper.GetInt("maxMessageSize")) defer sessionClient.CloseClient() if clientAuth.Uuid == viamAuth.Uuid { @@ -107,7 +107,7 @@ func unaryInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServ return handler1(ctx, req) } -func StartGRPCServer(address, certFilePath, privateKeyFilePath, vereignCertFilePath, vereignPrivateKeyFilePath, dataStorageAddress string) error { +func StartGRPCServer(address, certFilePath, privateKeyFilePath, vereignCertFilePath, vereignPrivateKeyFilePath, dataStorageAddress string, maxMessageSize int) error { pkgCertFile = certFilePath // create a listener on TCP port @@ -122,6 +122,7 @@ func StartGRPCServer(address, certFilePath, privateKeyFilePath, vereignCertFileP CertFilePath: certFilePath, VereignCertFilePath: vereignCertFilePath, VereignPrivateKeyFilePath: vereignPrivateKeyFilePath, + MaxMessageSize: maxMessageSize, } // Create the TLS credentials @@ -131,8 +132,11 @@ func StartGRPCServer(address, certFilePath, privateKeyFilePath, vereignCertFileP } // Create an array of gRPC options with the credentials - opts := []grpc.ServerOption{grpc.Creds(creds), - grpc.UnaryInterceptor(unaryInterceptor)} + opts := []grpc.ServerOption{ + grpc.Creds(creds), + grpc.UnaryInterceptor(unaryInterceptor), + grpc.MaxRecvMsgSize(viper.GetInt("maxMessageSize")*1024*1024), + } // create a gRPC server object grpcServer := grpc.NewServer(opts...)