Until now, the credentials were hardcoded in the source. Use the virt_viewer_auth_collect_credentials API to interactively ask for authentication credentials. --- src/ovirt-proxy.c | 5 ----- src/virt-viewer-session-ovirt.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/ovirt-proxy.c b/src/ovirt-proxy.c index 7e3a071..ca47062 100644 --- a/src/ovirt-proxy.c +++ b/src/ovirt-proxy.c @@ -42,9 +42,6 @@ struct _OvirtProxyPrivate { #define OVIRT_PROXY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), OVIRT_TYPE_PROXY, OvirtProxyPrivate)) - -#define ADMIN_LOGIN "admin@internal" -#define ADMIN_PASSWORD "XXXXXXX" #define API_ENTRY_POINT "/api/" enum OvirtResponseStatus { @@ -810,7 +807,5 @@ OvirtProxy *ovirt_proxy_new(const char *uri) return g_object_new(OVIRT_TYPE_PROXY, "url-format", uri, "ssl-strict", FALSE, - "username", ADMIN_LOGIN, - "password", ADMIN_PASSWORD, NULL); } diff --git a/src/virt-viewer-session-ovirt.c b/src/virt-viewer-session-ovirt.c index f5eb9b9..ab4d3bd 100644 --- a/src/virt-viewer-session-ovirt.c +++ b/src/virt-viewer-session-ovirt.c @@ -29,6 +29,7 @@ #include "ovirt-proxy.h" #include "ovirt-vm.h" #include "ovirt-vm-display.h" +#include "virt-viewer-auth.h" #include "virt-viewer-session-ovirt.h" #include "virt-viewer-session-spice.h" #include "virt-viewer-util.h" @@ -419,6 +420,32 @@ error: } static gboolean +authenticate_cb(RestProxy *proxy, G_GNUC_UNUSED RestProxyAuth *auth, + G_GNUC_UNUSED gboolean retrying, gpointer user_data) +{ + gchar *username; + gchar *password; + VirtViewerSessionOvirt *ovirt = VIRT_VIEWER_SESSION_OVIRT(user_data); + + int ret = virt_viewer_auth_collect_credentials(ovirt->priv->main_window, + "oVirt", + NULL, + &username, &password); + if (ret < 0) { + g_signal_emit_by_name(G_OBJECT(ovirt), "session-cancelled"); + return FALSE; + } else { + g_object_set(G_OBJECT(proxy), + "username", username, + "password", password, + NULL); + g_free(username); + g_free(password); + return TRUE; + } +} + +static gboolean virt_viewer_session_ovirt_open_uri(VirtViewerSession *session, const gchar *uri) { @@ -435,6 +462,8 @@ virt_viewer_session_ovirt_open_uri(VirtViewerSession *session, proxy = ovirt_proxy_new (self->priv->rest_uri); if (proxy == NULL) goto error; + g_signal_connect(G_OBJECT(proxy), "authenticate", + G_CALLBACK(authenticate_cb), session); ovirt_proxy_lookup_vm_async(proxy, self->priv->vm_name, lookup_vm_async_cb, session, &error); -- 1.7.10.2