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;
}
{
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);
}
/* 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));
#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)
}
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;
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)
{
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;
}