Get init data from e-tizen-data config file 07/264707/7
authorJunkyeong, Kim <jk0430.kim@samsung.com>
Tue, 28 Sep 2021 10:27:34 +0000 (19:27 +0900)
committerJunkyeong, Kim <jk0430.kim@samsung.com>
Mon, 18 Oct 2021 06:41:23 +0000 (15:41 +0900)
Change-Id: I2b9e3cabdde6474466051cd2ed8912f882a805d3
Signed-off-by: Junkyeong, Kim <jk0430.kim@samsung.com>
src/Makefile.am
src/e_mod_main.h
src/e_mod_rdp.c
src/e_mod_rdp_conf.c [new file with mode: 0644]

index c674d32..5bbd890 100644 (file)
@@ -7,7 +7,8 @@ pkgdir                 = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH
 pkg_LTLIBRARIES        = module.la
 module_la_SOURCES      = \
        e_mod_main.c \
-       e_mod_rdp.c
+       e_mod_rdp.c \
+       e_mod_rdp_conf.c
 
 module_la_LIBADD       =
 module_la_CFLAGS       = @ENLIGHTENMENT_CFLAGS@
index 7919e2b..a9090b7 100644 (file)
@@ -3,6 +3,26 @@
 
 #include "e.h"
 
+typedef struct _E_Rdp_Conf_Edd E_Rdp_Conf_Edd;
+typedef struct _E_Rdp_Config_Data E_Rdp_Config_Data;
+
+struct _E_Rdp_Config_Data
+{
+   E_Config_DD *conf_edd;
+   E_Rdp_Conf_Edd *conf;
+};
+
+struct _E_Rdp_Conf_Edd
+{
+   char *bind_address;
+   char *rdp_key;
+   char *server_cert;
+   char *server_key;
+   int port;
+   int no_clients_resize;
+   int force_no_compression;
+};
+
 /*** E Module ***/
 EAPI extern E_Module_Api e_modapi;
 
@@ -10,4 +30,8 @@ EAPI void* e_modapi_init (E_Module *m);
 EAPI int e_modapi_shutdown (E_Module *m);
 EAPI int e_modapi_save (E_Module *m);
 
+/* Config */
+Eina_Bool e_rdp_conf_init(E_Rdp_Config_Data *config);
+void e_rdp_conf_deinit(E_Rdp_Config_Data *config);
+
 #endif//__E_MOD_MAIN_H__
index 051be70..de060ec 100644 (file)
@@ -31,6 +31,7 @@
 #include <tbm_surface.h>
 #include <tbm_surface_internal.h>
 
+#include "e_mod_main.h"
 #include "e_mod_rdp.h"
 
 #define E_RDP_WIDTH 1280
@@ -46,27 +47,16 @@ enum peer_item_flags
    RDP_PEER_OUTPUT_ENABLED = (1 << 1),
 };
 
-typedef struct _E_Rdp_Config E_Rdp_Config;
 typedef struct _E_Rdp_Output E_Rdp_Output;
 typedef struct _E_Rdp_Backend E_Rdp_Backend;
 typedef struct _E_Rdp_Peer_Context E_Rdp_Peer_Context;
 typedef struct _E_Rdp_Peer_Item E_Rdp_Peer_Item;
 typedef struct _E_Rdp_Peer_Context E_Rdp_Peer_Context;
 
+static E_Rdp_Config_Data *g_rdp_config;
 static E_Rdp_Backend *g_rdp_backend;
 static unsigned int refresh_raw_frame_id;
 
-struct _E_Rdp_Config
-{
-   char *bind_address;
-   char *rdp_key;
-   char *server_cert;
-   char *server_key;
-   int port;
-   int no_clients_resize;
-   int force_no_compression;
-};
-
 struct _E_Rdp_Output
 {
    E_Output *primary_output;
@@ -1294,7 +1284,7 @@ e_rdp_backend_destroy(void)
 
 
 Eina_Bool
-e_rdp_backend_create(E_Rdp_Config *config)
+e_rdp_backend_create(E_Rdp_Conf_Edd *config)
 {
    E_Rdp_Backend *b;
 
@@ -1356,9 +1346,8 @@ e_rdp_backend_create(E_Rdp_Config *config)
 Eina_Bool
 e_mod_rdp_init(void)
 {
-   E_Rdp_Config config = {NULL, NULL, "/opt/rdp/tls.crt", "/opt/rdp/tls.key", 3389, 0, 0};
    int major, minor, revision;
-   //TODO : get the tls cert and key name from e-tizen-data
+   Eina_Bool ret = EINA_FALSE;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl->wl.disp, EINA_FALSE);
@@ -1375,11 +1364,34 @@ e_mod_rdp_init(void)
      }
    INF("freerdp version : %d.%d.%d", major, minor, revision);
 
-   return e_rdp_backend_create(&config);
+
+   /* Init config */
+   g_rdp_config = E_NEW(E_Rdp_Config_Data, 1);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(g_rdp_config, EINA_FALSE);
+
+   ret = e_rdp_conf_init(g_rdp_config);
+   EINA_SAFETY_ON_FALSE_GOTO(ret, conf_err);
+
+   ret = e_rdp_backend_create(g_rdp_config->conf);
+   EINA_SAFETY_ON_FALSE_GOTO(ret, create_err);
+
+   return ret;
+
+create_err:
+   e_rdp_conf_deinit(g_rdp_config);
+conf_err:
+   E_FREE(g_rdp_config);
+
+   return ret;
 }
 
 void
 e_mod_rdp_deinit(void)
 {
    e_rdp_backend_destroy();
+   if (g_rdp_config)
+     {
+        e_rdp_conf_deinit(g_rdp_config);
+        E_FREE(g_rdp_config);
+     }
 }
diff --git a/src/e_mod_rdp_conf.c b/src/e_mod_rdp_conf.c
new file mode 100644 (file)
index 0000000..fece659
--- /dev/null
@@ -0,0 +1,77 @@
+#define E_COMP_WL
+#include "e_mod_main.h"
+#include "e_mod_rdp.h"
+
+Eina_Bool
+_e_rdp_conf_value_check(E_Rdp_Config_Data *config)
+{
+   if (!config)
+     {
+        ERR("no gconf file");
+        return EINA_FALSE;
+     }
+
+   if (!config->conf)
+     {
+        ERR("no conf file");
+        return EINA_FALSE;
+     }
+
+   DBG("bindaddress:%s, rdp_key:%s, server_cert:%s, server_key:%s, port:%d, noresize:%d, nocompress:%d",
+       config->conf->bind_address?:"no_bind_address", config->conf->rdp_key?:"no_rdp_key",
+       config->conf->server_cert?:"no_server_cert", config->conf->server_key?:"no_server_key",
+       config->conf->port, config->conf->no_clients_resize, config->conf->force_no_compression);
+
+   return EINA_TRUE;
+}
+
+Eina_Bool
+e_rdp_conf_init(E_Rdp_Config_Data *config)
+{
+   Eina_Bool ret = EINA_FALSE;
+
+   config->conf_edd = E_CONFIG_DD_NEW("Rdp_Config", E_Rdp_Conf_Edd);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(config->conf_edd, EINA_FALSE);
+
+#undef T
+#undef D
+#define T E_Rdp_Conf_Edd
+#define D config->conf_edd
+   E_CONFIG_VAL(D, T, bind_address, STR);
+   E_CONFIG_VAL(D, T, rdp_key, STR);
+   E_CONFIG_VAL(D, T, server_cert, STR);
+   E_CONFIG_VAL(D, T, server_key, STR);
+   E_CONFIG_VAL(D, T, port, INT);
+   E_CONFIG_VAL(D, T, no_clients_resize, INT);
+   E_CONFIG_VAL(D, T, force_no_compression, INT);
+#undef T
+#undef D
+   config->conf = e_config_domain_load("module.rdp", config->conf_edd);
+
+   ret = _e_rdp_conf_value_check(config);
+   if (ret == EINA_FALSE)
+     E_CONFIG_DD_FREE(config->conf_edd);
+
+   return ret;
+}
+
+void
+e_rdp_conf_deinit(E_Rdp_Config_Data *config)
+{
+   EINA_SAFETY_ON_NULL_RETURN(config);
+
+   if (config->conf)
+     {
+        if (config->conf->bind_address)
+          E_FREE(config->conf->bind_address);
+        if (config->conf->rdp_key)
+          E_FREE(config->conf->rdp_key);
+        if (config->conf->server_cert)
+          E_FREE(config->conf->server_cert);
+        if (config->conf->server_key)
+          E_FREE(config->conf->server_key);
+        E_FREE(config->conf);
+     }
+
+   E_CONFIG_DD_FREE(config->conf_edd);
+}