[virt-tools-list] [PATCH virt-viewer 1/4] Move vnc-specific auth logic to VirtViewerSessionVnc

Marc-André Lureau mlureau at redhat.com
Tue Feb 4 09:21:50 UTC 2014


ack

----- Original Message -----
> ---
>  src/virt-viewer-auth.c        | 97
>  -------------------------------------------
>  src/virt-viewer-auth.h        |  6 ---
>  src/virt-viewer-session-vnc.c | 92 +++++++++++++++++++++++++++++++++++++---
>  3 files changed, 86 insertions(+), 109 deletions(-)
> 
> diff --git a/src/virt-viewer-auth.c b/src/virt-viewer-auth.c
> index 79c8589..a5b6393 100644
> --- a/src/virt-viewer-auth.c
> +++ b/src/virt-viewer-auth.c
> @@ -94,103 +94,6 @@ virt_viewer_auth_collect_credentials(GtkWindow *window,
>      return response == GTK_RESPONSE_OK ? 0 : -1;
>  }
>  
> -#ifdef HAVE_GTK_VNC
> -void
> -virt_viewer_auth_vnc_credentials(VirtViewerSession *session,
> -                                 GtkWindow *window,
> -                                 GtkWidget *vnc,
> -                                 GValueArray *credList,
> -                                 char *vncAddress)
> -{
> -    char *username = NULL, *password = NULL;
> -    gboolean wantPassword = FALSE, wantUsername = FALSE;
> -    int i;
> -
> -    DEBUG_LOG("Got VNC credential request for %d credential(s)",
> credList->n_values);
> -
> -    for (i = 0 ; i < credList->n_values ; i++) {
> -        GValue *cred = g_value_array_get_nth(credList, i);
> -        switch (g_value_get_enum(cred)) {
> -        case VNC_DISPLAY_CREDENTIAL_USERNAME:
> -            wantUsername = TRUE;
> -            break;
> -        case VNC_DISPLAY_CREDENTIAL_PASSWORD:
> -            wantPassword = TRUE;
> -            break;
> -        case VNC_DISPLAY_CREDENTIAL_CLIENTNAME:
> -            break;
> -        default:
> -            DEBUG_LOG("Unsupported credential type %d",
> g_value_get_enum(cred));
> -            vnc_display_close(VNC_DISPLAY(vnc));
> -            goto cleanup;
> -        }
> -    }
> -
> -    VirtViewerFile *file = virt_viewer_session_get_file(session);
> -    if (file != NULL) {
> -        if (wantUsername && virt_viewer_file_is_set(file, "username")) {
> -            username = virt_viewer_file_get_username(file);
> -            wantUsername = FALSE;
> -        }
> -        if (wantPassword && virt_viewer_file_is_set(file, "password")) {
> -            password = virt_viewer_file_get_password(file);
> -            wantPassword = FALSE;
> -        }
> -    }
> -
> -    if (wantUsername || wantPassword) {
> -        int ret = virt_viewer_auth_collect_credentials(window,
> -                                                       "VNC", vncAddress,
> -                                                       wantUsername ?
> &username : NULL,
> -                                                       wantPassword ?
> &password : NULL);
> -
> -        if (ret < 0) {
> -            vnc_display_close(VNC_DISPLAY(vnc));
> -            goto cleanup;
> -        }
> -    }
> -
> -    for (i = 0 ; i < credList->n_values ; i++) {
> -        GValue *cred = g_value_array_get_nth(credList, i);
> -        switch (g_value_get_enum(cred)) {
> -        case VNC_DISPLAY_CREDENTIAL_USERNAME:
> -            if (!username ||
> -                vnc_display_set_credential(VNC_DISPLAY(vnc),
> -                                           g_value_get_enum(cred),
> -                                           username)) {
> -                DEBUG_LOG("Failed to set credential type %d",
> g_value_get_enum(cred));
> -                vnc_display_close(VNC_DISPLAY(vnc));
> -            }
> -            break;
> -        case VNC_DISPLAY_CREDENTIAL_PASSWORD:
> -            if (!password ||
> -                vnc_display_set_credential(VNC_DISPLAY(vnc),
> -                                           g_value_get_enum(cred),
> -                                           password)) {
> -                DEBUG_LOG("Failed to set credential type %d",
> g_value_get_enum(cred));
> -                vnc_display_close(VNC_DISPLAY(vnc));
> -            }
> -            break;
> -        case VNC_DISPLAY_CREDENTIAL_CLIENTNAME:
> -            if (vnc_display_set_credential(VNC_DISPLAY(vnc),
> -                                           g_value_get_enum(cred),
> -                                           "libvirt")) {
> -                DEBUG_LOG("Failed to set credential type %d",
> g_value_get_enum(cred));
> -                vnc_display_close(VNC_DISPLAY(vnc));
> -            }
> -            break;
> -        default:
> -            DEBUG_LOG("Unsupported credential type %d",
> g_value_get_enum(cred));
> -            vnc_display_close(VNC_DISPLAY(vnc));
> -        }
> -    }
> -
> - cleanup:
> -    g_free(username);
> -    g_free(password);
> -}
> -#endif
> -
>  /*
>   * Local variables:
>   *  c-indent-level: 4
> diff --git a/src/virt-viewer-auth.h b/src/virt-viewer-auth.h
> index 1f102e0..ad932c5 100644
> --- a/src/virt-viewer-auth.h
> +++ b/src/virt-viewer-auth.h
> @@ -32,12 +32,6 @@
>  #include "virt-viewer-session.h"
>  #include "virt-viewer-util.h"
>  
> -void virt_viewer_auth_vnc_credentials(VirtViewerSession *session,
> -                                      GtkWindow *window,
> -                                      GtkWidget *vnc,
> -                                      GValueArray *credList,
> -                                      char *vncAddress);
> -
>  int virt_viewer_auth_collect_credentials(GtkWindow *window,
>                                           const char *type,
>                                           const char *address,
> diff --git a/src/virt-viewer-session-vnc.c b/src/virt-viewer-session-vnc.c
> index 50fa11f..337cb92 100644
> --- a/src/virt-viewer-session-vnc.c
> +++ b/src/virt-viewer-session-vnc.c
> @@ -254,17 +254,97 @@ virt_viewer_session_vnc_open_uri(VirtViewerSession*
> session,
>  
>  
>  static void
> -virt_viewer_session_vnc_auth_credential(GtkWidget *src,
> +virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED,
>                                          GValueArray *credList,
>                                          VirtViewerSession *session)
>  {
>      VirtViewerSessionVnc *self = VIRT_VIEWER_SESSION_VNC(session);
> +    char *username = NULL, *password = NULL;
> +    gboolean wantPassword = FALSE, wantUsername = FALSE;
> +    int i;
> +
> +    DEBUG_LOG("Got VNC credential request for %d credential(s)",
> credList->n_values);
> +
> +    for (i = 0 ; i < credList->n_values ; i++) {
> +        GValue *cred = g_value_array_get_nth(credList, i);
> +        switch (g_value_get_enum(cred)) {
> +        case VNC_DISPLAY_CREDENTIAL_USERNAME:
> +            wantUsername = TRUE;
> +            break;
> +        case VNC_DISPLAY_CREDENTIAL_PASSWORD:
> +            wantPassword = TRUE;
> +            break;
> +        case VNC_DISPLAY_CREDENTIAL_CLIENTNAME:
> +            break;
> +        default:
> +            DEBUG_LOG("Unsupported credential type %d",
> g_value_get_enum(cred));
> +            vnc_display_close(self->priv->vnc);
> +            goto cleanup;
> +        }
> +    }
> +
> +    VirtViewerFile *file =
> virt_viewer_session_get_file(VIRT_VIEWER_SESSION(self));
> +    if (file != NULL) {
> +        if (wantUsername && virt_viewer_file_is_set(file, "username")) {
> +            username = virt_viewer_file_get_username(file);
> +            wantUsername = FALSE;
> +        }
> +        if (wantPassword && virt_viewer_file_is_set(file, "password")) {
> +            password = virt_viewer_file_get_password(file);
> +            wantPassword = FALSE;
> +        }
> +    }
> +
> +    if (wantUsername || wantPassword) {
> +        int ret =
> virt_viewer_auth_collect_credentials(self->priv->main_window,
> +                                                       "VNC", NULL,
> +                                                       wantUsername ?
> &username : NULL,
> +                                                       wantPassword ?
> &password : NULL);
> +
> +        if (ret < 0) {
> +            vnc_display_close(self->priv->vnc);
> +            goto cleanup;
> +        }
> +    }
> +
> +    for (i = 0 ; i < credList->n_values ; i++) {
> +        GValue *cred = g_value_array_get_nth(credList, i);
> +        switch (g_value_get_enum(cred)) {
> +        case VNC_DISPLAY_CREDENTIAL_USERNAME:
> +            if (!username ||
> +                vnc_display_set_credential(self->priv->vnc,
> +                                           g_value_get_enum(cred),
> +                                           username)) {
> +                DEBUG_LOG("Failed to set credential type %d",
> g_value_get_enum(cred));
> +                vnc_display_close(self->priv->vnc);
> +            }
> +            break;
> +        case VNC_DISPLAY_CREDENTIAL_PASSWORD:
> +            if (!password ||
> +                vnc_display_set_credential(self->priv->vnc,
> +                                           g_value_get_enum(cred),
> +                                           password)) {
> +                DEBUG_LOG("Failed to set credential type %d",
> g_value_get_enum(cred));
> +                vnc_display_close(self->priv->vnc);
> +            }
> +            break;
> +        case VNC_DISPLAY_CREDENTIAL_CLIENTNAME:
> +            if (vnc_display_set_credential(self->priv->vnc,
> +                                           g_value_get_enum(cred),
> +                                           "libvirt")) {
> +                DEBUG_LOG("Failed to set credential type %d",
> g_value_get_enum(cred));
> +                vnc_display_close(self->priv->vnc);
> +            }
> +            break;
> +        default:
> +            DEBUG_LOG("Unsupported credential type %d",
> g_value_get_enum(cred));
> +            vnc_display_close(self->priv->vnc);
> +        }
> +    }
>  
> -    virt_viewer_auth_vnc_credentials(session,
> -                                     self->priv->main_window,
> -                                     src,
> -                                     credList,
> -                                     NULL);
> + cleanup:
> +    g_free(username);
> +    g_free(password);
>  }
>  
>  
> --
> 1.8.5.3
> 
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
> 




More information about the virt-tools-list mailing list