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@
#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;
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__
#include <tbm_surface.h>
#include <tbm_surface_internal.h>
+#include "e_mod_main.h"
#include "e_mod_rdp.h"
#define E_RDP_WIDTH 1280
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;
Eina_Bool
-e_rdp_backend_create(E_Rdp_Config *config)
+e_rdp_backend_create(E_Rdp_Conf_Edd *config)
{
E_Rdp_Backend *b;
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);
}
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);
+ }
}
--- /dev/null
+#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);
+}