summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2018-03-23 11:16:32 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2018-06-13 17:13:46 +0200
commitaf06c82a63166d0d3fbdc26ae50607a6231d42eb (patch)
tree7878f261b869da5ba74089f941edca9075517c18
parent0bae7b4ed23310d368bdd2e0b167d8283bced4a0 (diff)
Make DBUS transparency optional (off by default)
The implementation of API transparency through DBUS is not used at the moment. To improve independancy to systemd (it relies on systemd library) removing it should be possible. Change-Id: I5750a92527dc3e9cf7dcd27625dce6a020797a3d Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--CMakeLists.txt3
-rw-r--r--src/CMakeLists.txt6
-rw-r--r--src/afb-config.c61
-rw-r--r--src/afb-config.h4
-rw-r--r--src/main.c8
5 files changed, 62 insertions, 20 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 75faf41e..cda81908 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,7 @@ INCLUDE(CTest)
set(AGL_DEVEL OFF CACHE BOOL "Activates developping features")
set(INCLUDE_MONITORING OFF CACHE BOOL "Activates installation of monitoring")
set(INCLUDE_SUPERVISOR OFF CACHE BOOL "Activates installation of supervisor")
+set(INCLUDE_DBUS_TRANSPARENCY OFF CACHE BOOL "Allows API transparency over DBUS")
set(AFS_SUPERVISION_SOCKET "@urn:AGL:afs:supervision:socket" CACHE STRING "Internal socket for supervision")
set(AFS_SUPERVISOR_PORT 1619 CACHE STRING "Port of service for the supervisor")
set(AFS_SUPERVISOR_TOKEN HELLO CACHE STRING "Secret token for the supervisor")
@@ -92,7 +93,7 @@ ADD_DEFINITIONS("-DAFS_SUPERVISOR_PORT=${AFS_SUPERVISOR_PORT}")
IF(AGL_DEVEL)
ADD_DEFINITIONS(-DAGL_DEVEL)
-endif()
+ENDIF()
IF(cynara_FOUND)
ADD_DEFINITIONS(-DBACKEND_PERMISSION_IS_CYNARA)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 07fcb8b7..c789fca3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -26,7 +26,6 @@ ADD_DEFINITIONS(-DINFER_EXTENSION)
ADD_LIBRARY(afb-lib STATIC
afb-api.c
- afb-api-dbus.c
afb-api-dyn.c
afb-api-so.c
afb-api-so-v1.c
@@ -75,6 +74,11 @@ ADD_LIBRARY(afb-lib STATIC
wrap-json.c
)
+IF(INCLUDE_DBUS_TRANSPARENCY)
+ ADD_DEFINITIONS(-DWITH_DBUS_TRANSPARENCY)
+ TARGET_SOURCES(afb-lib PUBLIC afb-api-dbus.c)
+ENDIF()
+
###########################################
# build and install afb-daemon
###########################################
diff --git a/src/afb-config.c b/src/afb-config.c
index b23619e4..2a6f931f 100644
--- a/src/afb-config.c
+++ b/src/afb-config.c
@@ -39,6 +39,18 @@
#error "you should define AFB_VERSION"
#endif
+/* set the HAS_ options */
+#if defined(WITH_MONITORING_OPTION)
+# define HAS_MONITORING 1
+#else
+# define HAS_MONITORING 0
+#endif
+#if defined(WITH_DBUS_TRANSPARENCY)
+# define HAS_DBUS 1
+#else
+# define HAS_DBUS 0
+#endif
+
// default
#define DEFLT_CNTX_TIMEOUT 32000000 // default Client Connection
// Timeout: few more than one year
@@ -71,8 +83,11 @@
#define SET_MODE 18
-#define DBUS_CLIENT 20
-#define DBUS_SERVICE 21
+#if HAS_DBUS
+# define DBUS_CLIENT 20
+# define DBUS_SERVICE 21
+#endif
+
#define SO_BINDING 22
#define SET_SESSIONMAX 23
@@ -89,8 +104,8 @@
#define SET_TRACEEVT 'E'
#define SET_EXEC 'e'
#define DISPLAY_HELP 'h'
-#if defined(WITH_MONITORING_OPTION)
-#define SET_MONITORING 'M'
+#if HAS_MONITORING
+# define SET_MONITORING 'M'
#endif
#define SET_NAME 'n'
#define SET_TCP_PORT 'p'
@@ -107,7 +122,7 @@
const char shortopts[] =
"c:D:E:ehn:p:qrS:s:T:t:u:Vvw:"
-#if defined(WITH_MONITORING_OPTION)
+#if HAS_MONITORING
"M"
#endif
;
@@ -159,8 +174,10 @@ static AFB_options cliOptions[] = {
{SET_MODE, 1, "mode", "Set the mode: either local, remote or global"},
+#if HAS_DBUS
{DBUS_CLIENT, 1, "dbus-client", "Bind to an afb service through dbus"},
{DBUS_SERVICE, 1, "dbus-server", "Provides an afb service through dbus"},
+#endif
{WS_CLIENT, 1, "ws-client", "Bind to an afb service through websocket"},
{WS_SERVICE, 1, "ws-server", "Provides an afb service through websockets"},
@@ -177,7 +194,7 @@ static AFB_options cliOptions[] = {
{SET_NO_HTTPD, 0, "no-httpd", "Forbids HTTP service"},
{SET_EXEC, 0, "exec", "Execute the remaining arguments"},
-#if defined(WITH_MONITORING_OPTION)
+#if HAS_MONITORING
{SET_MONITORING, 0, "monitoring", "enable HTTP monitoring at <ROOT>/monitoring/"},
#endif
{0, 0, NULL, NULL}
@@ -241,16 +258,20 @@ static struct enumdesc mode_desc[] = {
+--------------------------------------------------------- */
static void printVersion(FILE * file)
{
- static const char version[] =
- "\n"
- " AFB [Application Framework Binder] version="AFB_VERSION"\n"
+ static char pm[2] = { '-', '+' };
+ fprintf(file,
"\n"
- " Copyright (C) 2015, 2016, 2017 \"IoT.bzh\"\n"
+ " AGL Framework Binder [AFB %s] %cDBUS %cMONITOR\n"
+ "\n",
+ AFB_VERSION,
+ pm[HAS_DBUS],
+ pm[HAS_MONITORING]
+ );
+ fprintf(file,
+ " Copyright (C) 2015-2018 \"IoT.bzh\"\n"
" AFB comes with ABSOLUTELY NO WARRANTY.\n"
" Licence Apache 2\n"
- "\n";
-
- fprintf(file, "%s", version);
+ "\n");
}
/*----------------------------------------------------------
@@ -561,6 +582,7 @@ static void parse_arguments(int argc, char **argv, struct afb_config *config)
config->mode = argvalenum(optc, mode_desc);
break;
+#if HAS_DBUS
case DBUS_CLIENT:
list_add(&config->dbus_clients, argvalstr(optc));
break;
@@ -568,6 +590,7 @@ static void parse_arguments(int argc, char **argv, struct afb_config *config)
case DBUS_SERVICE:
list_add(&config->dbus_servers, argvalstr(optc));
break;
+#endif
case WS_CLIENT:
list_add(&config->ws_clients, argvalstr(optc));
@@ -615,7 +638,7 @@ static void parse_arguments(int argc, char **argv, struct afb_config *config)
config->random_token = 1;
break;
-#if defined(WITH_MONITORING_OPTION)
+#if HAS_MONITORING
case SET_MONITORING:
config->monitoring = 1;
break;
@@ -683,7 +706,7 @@ static void fulfill_config(struct afb_config *config)
if (config->ldpaths == NULL && config->weak_ldpaths == NULL && !config->no_ldpaths)
list_add(&config->ldpaths, BINDING_INSTALL_DIR);
-#if defined(WITH_MONITORING_OPTION)
+#if HAS_MONITORING
if (config->monitoring)
list_add(&config->aliases, strdup("/monitoring:"BINDING_INSTALL_DIR"/monitoring"));
#endif
@@ -725,8 +748,10 @@ void afb_config_dump(struct afb_config *config)
S(name)
L(aliases)
+#if HAS_DBUS
L(dbus_clients)
L(dbus_servers)
+#endif
L(ws_clients)
L(ws_servers)
L(so_bindings)
@@ -752,7 +777,7 @@ void afb_config_dump(struct afb_config *config)
B(no_ldpaths)
B(noHttpd)
B(background)
-#if defined(WITH_MONITORING_OPTION)
+#if HAS_MONITORING
B(monitoring)
#endif
B(random_token)
@@ -857,8 +882,10 @@ struct json_object *afb_config_json(struct afb_config *config)
S(name)
L(aliases)
+#if HAS_DBUS
L(dbus_clients)
L(dbus_servers)
+#endif
L(ws_clients)
L(ws_servers)
L(so_bindings)
@@ -884,7 +911,7 @@ struct json_object *afb_config_json(struct afb_config *config)
B(no_ldpaths)
B(noHttpd)
B(background)
-#if defined(WITH_MONITORING_OPTION)
+#if HAS_MONITORING
B(monitoring)
#endif
B(random_token)
diff --git a/src/afb-config.h b/src/afb-config.h
index 2d2ccf35..89b1f78e 100644
--- a/src/afb-config.h
+++ b/src/afb-config.h
@@ -40,8 +40,10 @@ struct afb_config {
char *name; /* name to set to the daemon */
struct afb_config_list *aliases;
+#if defined(WITH_DBUS_TRANSPARENCY)
struct afb_config_list *dbus_clients;
struct afb_config_list *dbus_servers;
+#endif
struct afb_config_list *ws_clients;
struct afb_config_list *ws_servers;
struct afb_config_list *so_bindings;
@@ -70,7 +72,9 @@ struct afb_config {
unsigned no_ldpaths: 1; /* disable default ldpaths */
unsigned noHttpd: 1;
unsigned background: 1; /* run in backround mode */
+#if defined(WITH_MONITORING_OPTION)
unsigned monitoring: 1; /* activates monitoring */
+#endif
unsigned random_token: 1; /* expects a random token */
};
diff --git a/src/main.c b/src/main.c
index dd518e38..8c243f73 100644
--- a/src/main.c
+++ b/src/main.c
@@ -40,7 +40,9 @@
#include "afb-hswitch.h"
#include "afb-apiset.h"
#include "afb-api-so.h"
-#include "afb-api-dbus.h"
+#if defined(WITH_DBUS_TRANSPARENCY)
+# include "afb-api-dbus.h"
+#endif
#include "afb-api-ws.h"
#include "afb-hsrv.h"
#include "afb-hreq.h"
@@ -591,12 +593,16 @@ static void start(int signum, void *arg)
/* load bindings */
afb_debug("start-load");
apiset_start_list(main_config->so_bindings, afb_api_so_add_binding, "the binding");
+#if defined(WITH_DBUS_TRANSPARENCY)
apiset_start_list(main_config->dbus_clients, afb_api_dbus_add_client, "the afb-dbus client");
+#endif
apiset_start_list(main_config->ws_clients, afb_api_ws_add_client_weak, "the afb-websocket client");
apiset_start_list(main_config->ldpaths, afb_api_so_add_pathset_fails, "the binding path set");
apiset_start_list(main_config->weak_ldpaths, afb_api_so_add_pathset_nofails, "the weak binding path set");
+#if defined(WITH_DBUS_TRANSPARENCY)
apiset_start_list(main_config->dbus_servers, afb_api_dbus_add_server, "the afb-dbus service");
+#endif
apiset_start_list(main_config->ws_servers, afb_api_ws_add_server, "the afb-websocket service");
DEBUG("Init config done");