e_nms_connection_secrets_get_secrets
authorenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 23 Nov 2008 19:56:39 +0000 (19:56 +0000)
committerenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 23 Nov 2008 19:56:39 +0000 (19:56 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@37778 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/nm.c
src/lib/nm/E_Nm.h
src/lib/nm/e_nm_private.h
src/lib/nm/e_nms_connection.c

index 6fdb00a..ecf6e0b 100644 (file)
@@ -66,7 +66,18 @@ dump_settings(void *value, void *data)
 static int
 cb_nms_connection_settings(void *data, Ecore_Hash *settings)
 {
-    ecore_hash_for_each_node(settings, dump_settings, NULL);
+    printf("Secrets:\n");
+    if (settings)
+        ecore_hash_for_each_node(settings, dump_settings, NULL);
+    return 1;
+}
+
+static int
+cb_nms_connection_secrets(void *data, Ecore_Hash *secrets)
+{
+    printf("Secrets:\n");
+    if (secrets)
+        ecore_hash_for_each_node(secrets, dump_settings, NULL);
     return 1;
 }
 
@@ -82,6 +93,7 @@ cb_nms_connections(void *data, Ecore_List *list)
         {
             e_nms_connection_dump(conn);
             e_nms_connection_get_settings(conn, cb_nms_connection_settings, NULL);
+            e_nms_connection_secrets_get_secrets(conn, "802-11-wireless-security", NULL, 0, cb_nms_connection_secrets, NULL);
         }
         ecore_list_destroy(list);
     }
index 9fa5372..c625b15 100644 (file)
@@ -352,6 +352,8 @@ extern "C" {
    /* TODO: e_nms_connection_update */
    /* TODO: e_nms_connection_delete */
    EAPI int  e_nms_connection_get_settings(E_NMS_Connection *conn, int (*cb_func)(void *data, Ecore_Hash *settings), void *data);
+   EAPI int  e_nms_connection_secrets_get_secrets(E_NMS_Connection *connection, const char *setting_name, Ecore_List *hints, int request_new, int (*cb_func)(void *data, Ecore_Hash *secrets), void *data);
+
    /* TODO: e_nms_connection_secrets_get_secrets */
 
    EAPI void  e_nms_connection_callback_updated_set(E_NMS_Connection *connection, int (*cb_func)(E_NMS_Connection *conn, Ecore_Hash *settings));
index cd8e395..99279b3 100644 (file)
 #define E_NMS_SERVICE_USER "org.freedesktop.NetworkManagerUserSettings"
 #define _E_NMS_INTERFACE "org.freedesktop.NetworkManagerSettings"
 #define _E_NMS_INTERFACE_CONNECTION "org.freedesktop.NetworkManagerSettings.Connection"
+#define _E_NMS_INTERFACE_CONNECTION_SECRETS "org.freedesktop.NetworkManagerSettings.Connection.Secrets"
 
 #define e_nm_call_new(member) dbus_message_new_method_call(_E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, member)
 #define e_nm_device_wireless_call_new(device, member) dbus_message_new_method_call(_E_NM_SERVICE, device, _E_NM_INTERFACE_DEVICE_WIRELESS, member)
 #define e_nms_call_new(service, member) dbus_message_new_method_call(service, _E_NMS_PATH, _E_NMS_INTERFACE, member)
 #define e_nms_connection_call_new(service, conn, member) dbus_message_new_method_call(service, conn, _E_NMS_INTERFACE_CONNECTION, member)
+#define e_nms_connection_secrets_call_new(service, conn, member) dbus_message_new_method_call(service, conn, _E_NMS_INTERFACE_CONNECTION_SECRETS, member)
 
 #define e_nm_properties_get(con, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, prop, (E_DBus_Method_Return_Cb) cb, data)
 #define e_nm_properties_set(con, prop, type, value, cb, data) e_dbus_properties_set(con, _E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, prop, type, value, (E_DBus_Method_Return_Cb) cb, data)
index 3c5c072..f25db2d 100644 (file)
@@ -18,7 +18,7 @@ cb_updated(void *data, DBusMessage *msg)
 }
 
 static void
-cb_nms_settings(void *data, DBusMessage *msg, DBusError *err)
+cb_settings(void *data, DBusMessage *msg, DBusError *err)
 {
   Reply_Data *d;
   Ecore_Hash *settings;
@@ -37,6 +37,26 @@ cb_nms_settings(void *data, DBusMessage *msg, DBusError *err)
   free(d);
 }
 
+static void
+cb_secrets(void *data, DBusMessage *msg, DBusError *err)
+{
+  Reply_Data *d;
+  Ecore_Hash *secrets;
+
+  d = data;
+  if (dbus_error_is_set(err))
+  {
+    printf("Error: %s - %s\n", err->name, err->message);
+    d->cb_func(d->data, NULL);
+    free(d);
+    return;
+  }
+
+  secrets = parse_settings(msg);
+  d->cb_func(d->data, secrets);
+  free(d);
+}
+
 EAPI E_NMS_Connection *
 e_nms_connection_get(E_NMS *nms, const char *service_name, const char *connection)
 {
@@ -102,7 +122,41 @@ e_nms_connection_get_settings(E_NMS_Connection *connection, int (*cb_func)(void
 
   msg = e_nms_connection_call_new(conn->conn.service_name, conn->conn.path, "GetSettings");
 
-  ret = e_dbus_message_send(conn->nmi->conn, msg, cb_nms_settings, -1, d) ? 1 : 0;
+  ret = e_dbus_message_send(conn->nmi->conn, msg, cb_settings, -1, d) ? 1 : 0;
+  dbus_message_unref(msg);
+  return ret;
+}
+
+EAPI int
+e_nms_connection_secrets_get_secrets(E_NMS_Connection *connection, const char *setting_name, Ecore_List *hints, int request_new, int (*cb_func)(void *data, Ecore_Hash *secrets), void *data)
+{
+  DBusMessage      *msg;
+  DBusMessageIter   iter, a_iter;
+  Reply_Data       *d;
+  E_NMS_Connection_Internal *conn;
+  int ret;
+
+  conn = (E_NMS_Connection_Internal *)connection;
+  d = calloc(1, sizeof(Reply_Data));
+  d->object = conn;
+  d->cb_func = OBJECT_CB(cb_func);
+  d->data = data;
+
+  msg = e_nms_connection_secrets_call_new(conn->conn.service_name, conn->conn.path, "GetSecrets");
+  dbus_message_iter_init_append(msg, &iter);
+  dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &setting_name);
+  dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "s", &a_iter);
+  if (hints)
+  {
+    const char *hint;
+    ecore_list_first_goto(hints);
+    while ((hint = ecore_list_next(hints)))
+      dbus_message_iter_append_basic(&a_iter, DBUS_TYPE_STRING, &hint);
+  }
+  dbus_message_iter_close_container(&iter, &a_iter);
+  dbus_message_iter_append_basic(&iter, DBUS_TYPE_BOOLEAN, &request_new);
+
+  ret = e_dbus_message_send(conn->nmi->conn, msg, cb_secrets, -1, d) ? 1 : 0;
   dbus_message_unref(msg);
   return ret;
 }