diff options
author | Ludovic Ferrandis <ludovic.ferrandis@intel.com> | 2013-08-21 17:16:31 +0200 |
---|---|---|
committer | Regis Merlino <regis.merlino@intel.com> | 2013-08-22 17:13:02 +0200 |
commit | 5dddbc2ea8654018c052e114aafad320fcc5b382 (patch) | |
tree | 6c7f79d8eedba762f070ce8d847b81ac1b9ab835 /libdleyna/server/props.c | |
parent | f5577b8a4542208938acbeb116cc35b46e295d9e (diff) | |
download | dleyna-server-5dddbc2ea8654018c052e114aafad320fcc5b382.tar.gz |
[Network Filtering] Add Network Filtering support
Add 2 new settings:
1 - netf_enabled (boolean): To activate or deactivate the network filtering
2 - netf_entries (str list): List of supported network
Add org.freedesktop.DBus.Properties DBUS Interface to
com.intel.dLeynaServer.Manager root object.
Add 4 new methodes to com.intel.dLeynaServer.Manager interface
1 - WhiteListEnable
2 - WhiteListAddEntries
3 - WhiteListRemoveEntries
4 - WhiteListClear
Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
Diffstat (limited to 'libdleyna/server/props.c')
-rw-r--r-- | libdleyna/server/props.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/libdleyna/server/props.c b/libdleyna/server/props.c index cd6c30a..84e2033 100644 --- a/libdleyna/server/props.c +++ b/libdleyna/server/props.c @@ -2042,3 +2042,67 @@ on_error: return retval; } + +static void prv_add_list_wl_entries(gpointer data, gpointer user_data) +{ + GVariantBuilder *vb = (GVariantBuilder *)user_data; + gchar *entry = (gchar *)data; + + g_variant_builder_add(vb, "s", entry); +} + +void dls_props_add_manager(GUPnPContextManager *manager, GVariantBuilder *vb) +{ + GUPnPWhiteList *wl; + GList *list; + GVariantBuilder vb2; + + wl = gupnp_context_manager_get_white_list(manager); + list = gupnp_white_list_get_entries(wl); + + prv_add_bool_prop(vb, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED, + gupnp_white_list_get_enabled(wl)); + + g_variant_builder_init(&vb2, G_VARIANT_TYPE("as")); + g_list_foreach(list, prv_add_list_wl_entries, &vb2); + + g_variant_builder_add(vb, "{sv}", DLS_INTERFACE_PROP_WHITE_LIST_ENTRIES, + g_variant_builder_end(&vb2)); +} + +GVariant *dls_props_get_manager_prop(GUPnPContextManager *manager, + const gchar *prop) +{ + GVariant *retval = NULL; + GUPnPWhiteList *wl; + GVariantBuilder vb; + GList *list; + gboolean b_value; +#if DLEYNA_LOG_LEVEL & DLEYNA_LOG_LEVEL_DEBUG + gchar *prop_str; +#endif + + wl = gupnp_context_manager_get_white_list(manager); + + if (!strcmp(prop, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED)) { + b_value = gupnp_white_list_get_enabled(wl); + retval = g_variant_ref_sink(g_variant_new_boolean(b_value)); + + } else if (!strcmp(prop, DLS_INTERFACE_PROP_WHITE_LIST_ENTRIES)) { + list = gupnp_white_list_get_entries(wl); + + g_variant_builder_init(&vb, G_VARIANT_TYPE("as")); + g_list_foreach(list, prv_add_list_wl_entries, &vb); + retval = g_variant_ref_sink(g_variant_builder_end(&vb)); + } + +#if DLEYNA_LOG_LEVEL & DLEYNA_LOG_LEVEL_DEBUG + if (retval) { + prop_str = g_variant_print(retval, FALSE); + DLEYNA_LOG_DEBUG("Prop %s = %s", prop, prop_str); + g_free(prop_str); + } +#endif + + return retval; +} |