diff options
author | José Bollo <jose.bollo@iot.bzh> | 2018-03-23 11:16:32 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2018-06-13 17:13:46 +0200 |
commit | af06c82a63166d0d3fbdc26ae50607a6231d42eb (patch) | |
tree | 7878f261b869da5ba74089f941edca9075517c18 | |
parent | 0bae7b4ed23310d368bdd2e0b167d8283bced4a0 (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.txt | 3 | ||||
-rw-r--r-- | src/CMakeLists.txt | 6 | ||||
-rw-r--r-- | src/afb-config.c | 61 | ||||
-rw-r--r-- | src/afb-config.h | 4 | ||||
-rw-r--r-- | src/main.c | 8 |
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 */ }; @@ -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"); |