summaryrefslogtreecommitdiff
path: root/libdleyna/server/props.c
diff options
context:
space:
mode:
authorLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-08-21 17:16:31 +0200
committerRegis Merlino <regis.merlino@intel.com>2013-08-22 17:13:02 +0200
commit5dddbc2ea8654018c052e114aafad320fcc5b382 (patch)
tree6c7f79d8eedba762f070ce8d847b81ac1b9ab835 /libdleyna/server/props.c
parentf5577b8a4542208938acbeb116cc35b46e295d9e (diff)
downloaddleyna-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.c64
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;
+}