From 337e594662b2799ba769b283d61308c846a7f92e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Sch=C3=BCtte?= Date: Wed, 18 Apr 2018 16:47:03 +0200 Subject: [PATCH] Introduce option to enable SSL encryption for LocalTrajectoryUploader (#1084) --- .../internal/local_trajectory_uploader.cc | 21 ++++++++++++------- .../internal/local_trajectory_uploader.h | 3 ++- .../cloud/internal/map_builder_server.cc | 3 ++- .../cloud/map_builder_server_options.cc | 2 ++ .../proto/map_builder_server_options.proto | 1 + configuration_files/map_builder_server.lua | 1 + 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/cartographer/cloud/internal/local_trajectory_uploader.cc b/cartographer/cloud/internal/local_trajectory_uploader.cc index 630ac6d..c5add7d 100644 --- a/cartographer/cloud/internal/local_trajectory_uploader.cc +++ b/cartographer/cloud/internal/local_trajectory_uploader.cc @@ -41,8 +41,8 @@ const common::Duration kPopTimeout = common::FromMilliseconds(100); class LocalTrajectoryUploader : public LocalTrajectoryUploaderInterface { public: LocalTrajectoryUploader(const std::string &uplink_server_address, - int batch_size); - ~LocalTrajectoryUploader() {} + int batch_size, bool enable_ssl_encryption); + ~LocalTrajectoryUploader(); // Starts the upload thread. void Start() final; @@ -75,9 +75,13 @@ class LocalTrajectoryUploader : public LocalTrajectoryUploaderInterface { }; LocalTrajectoryUploader::LocalTrajectoryUploader( - const std::string &uplink_server_address, int batch_size) + const std::string &uplink_server_address, int batch_size, + bool enable_ssl_encryption) : client_channel_(::grpc::CreateChannel( - uplink_server_address, ::grpc::InsecureChannelCredentials())), + uplink_server_address, + enable_ssl_encryption + ? ::grpc::SslCredentials(::grpc::SslCredentialsOptions()) + : ::grpc::InsecureChannelCredentials())), batch_size_(batch_size) { std::chrono::system_clock::time_point deadline( std::chrono::system_clock::now() + @@ -88,6 +92,8 @@ LocalTrajectoryUploader::LocalTrajectoryUploader( } } +LocalTrajectoryUploader::~LocalTrajectoryUploader() {} + void LocalTrajectoryUploader::Start() { CHECK(!shutting_down_); CHECK(!upload_thread_); @@ -180,9 +186,10 @@ void LocalTrajectoryUploader::EnqueueSensorData( } // namespace std::unique_ptr CreateLocalTrajectoryUploader( - const std::string &uplink_server_address, int batch_size) { - return make_unique(uplink_server_address, - batch_size); + const std::string &uplink_server_address, int batch_size, + bool enable_ssl_encryption) { + return make_unique(uplink_server_address, batch_size, + enable_ssl_encryption); } } // namespace cloud diff --git a/cartographer/cloud/internal/local_trajectory_uploader.h b/cartographer/cloud/internal/local_trajectory_uploader.h index 56e8ade..4df3883 100644 --- a/cartographer/cloud/internal/local_trajectory_uploader.h +++ b/cartographer/cloud/internal/local_trajectory_uploader.h @@ -55,7 +55,8 @@ class LocalTrajectoryUploaderInterface { // Returns LocalTrajectoryUploader with the actual implementation. std::unique_ptr CreateLocalTrajectoryUploader( - const std::string& uplink_server_address, int batch_size); + const std::string& uplink_server_address, int batch_size, + bool enable_ssl_encryption); } // namespace cloud } // namespace cartographer diff --git a/cartographer/cloud/internal/map_builder_server.cc b/cartographer/cloud/internal/map_builder_server.cc index 554b174..ca4719f 100644 --- a/cartographer/cloud/internal/map_builder_server.cc +++ b/cartographer/cloud/internal/map_builder_server.cc @@ -61,7 +61,8 @@ MapBuilderServer::MapBuilderServer( if (!map_builder_server_options.uplink_server_address().empty()) { local_trajectory_uploader_ = CreateLocalTrajectoryUploader( map_builder_server_options.uplink_server_address(), - map_builder_server_options.upload_batch_size()); + map_builder_server_options.upload_batch_size(), + map_builder_server_options.enable_ssl_encryption()); } server_builder.RegisterHandler(); server_builder.RegisterHandler(); diff --git a/cartographer/cloud/map_builder_server_options.cc b/cartographer/cloud/map_builder_server_options.cc index c3d5d50..f499a71 100644 --- a/cartographer/cloud/map_builder_server_options.cc +++ b/cartographer/cloud/map_builder_server_options.cc @@ -39,6 +39,8 @@ proto::MapBuilderServerOptions CreateMapBuilderServerOptions( lua_parameter_dictionary->GetString("uplink_server_address")); map_builder_server_options.set_upload_batch_size( lua_parameter_dictionary->GetInt("upload_batch_size")); + map_builder_server_options.set_enable_ssl_encryption( + lua_parameter_dictionary->GetBool("enable_ssl_encryption")); return map_builder_server_options; } diff --git a/cartographer/cloud/proto/map_builder_server_options.proto b/cartographer/cloud/proto/map_builder_server_options.proto index cc32699..92e5217 100644 --- a/cartographer/cloud/proto/map_builder_server_options.proto +++ b/cartographer/cloud/proto/map_builder_server_options.proto @@ -25,4 +25,5 @@ message MapBuilderServerOptions { cartographer.mapping.proto.MapBuilderOptions map_builder_options = 4; string uplink_server_address = 5; int32 upload_batch_size = 6; + bool enable_ssl_encryption = 7; } diff --git a/configuration_files/map_builder_server.lua b/configuration_files/map_builder_server.lua index 6b39b44..e04b220 100644 --- a/configuration_files/map_builder_server.lua +++ b/configuration_files/map_builder_server.lua @@ -21,4 +21,5 @@ MAP_BUILDER_SERVER = { server_address = "0.0.0.0:50051", uplink_server_address = "", upload_batch_size = 100, + enable_ssl_encryption = false, }