aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2024-02-21 10:22:25 -0500
committerScott Murray <scott.murray@konsulko.com>2024-02-21 10:24:06 -0500
commit14068fefb5e5f43fc0bfd3d99aa30fa13faf2146 (patch)
treec3ceb8c372b7f9c306f2aaf435ca994ec021b6c0
parent7f26a2d06410fd3a2768612b9c9daf869778e480 (diff)
Allow specifying bind address
Add support for specifying the bind address via the optional configuration file. This is required for the KVM demo usecase where the service runs on the host and the homescreen in the guest needs to connect to it. Bug-AGL: SPEC-5082 Change-Id: I0af843f1ef55ef1d857730fbdec17163c6d88b4b Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-rw-r--r--src/main-grpc.cc26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/main-grpc.cc b/src/main-grpc.cc
index 29e01f1..9b29adb 100644
--- a/src/main-grpc.cc
+++ b/src/main-grpc.cc
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: Apache-2.0
/*
- * Copyright (C) 2023 Konsulko Group
+ * Copyright (C) 2023,2024 Konsulko Group
*/
#include <thread>
@@ -40,8 +40,30 @@ int main(int argc, char *argv[])
grpc::reflection::InitProtoReflectionServerBuilderPlugin();
ServerBuilder builder;
+ // Load settings from configuration file if it exists
+ std::string bind_address = "localhost";
+ GKeyFile *conf_file = g_key_file_new();
+ if(conf_file &&
+ g_key_file_load_from_dirs(conf_file,
+ "AGL.conf",
+ (const gchar**) g_get_system_config_dirs(),
+ NULL,
+ G_KEY_FILE_KEEP_COMMENTS,
+ NULL) == TRUE) {
+
+ // Set band plan if it is specified
+ gchar *value_str = g_key_file_get_string(conf_file,
+ "radio",
+ "bind",
+ NULL);
+ if(value_str) {
+ bind_address = value_str;
+ }
+ }
+ g_key_file_free(conf_file);
+
// Listen on the given address without any authentication mechanism (for now)
- std::string server_address("localhost:50053");
+ std::string server_address(bind_address + ":50053");
builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
// Register "service" as the instance through which we'll communicate with