[Spice-devel] [PATCH 2/3] Add "username" property to SpiceSession

Fabiano Fidêncio fidencio at redhat.com
Thu Sep 25 05:22:49 PDT 2014


From: Dietmar Maurer <dietmar at proxmox.com>

---
 gtk/spice-session-priv.h |  2 ++
 gtk/spice-session.c      | 43 +++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/gtk/spice-session-priv.h b/gtk/spice-session-priv.h
index 4b2c151..da43866 100644
--- a/gtk/spice-session-priv.h
+++ b/gtk/spice-session-priv.h
@@ -45,6 +45,7 @@ struct _SpiceSessionPrivate {
     char              *host;
     char              *port;
     char              *tls_port;
+    char              *username;
     char              *password;
     char              *ca_file;
     char              *ciphers;
@@ -146,6 +147,7 @@ void spice_session_set_migration_state(SpiceSession *session, SpiceSessionMigrat
 void spice_session_set_port(SpiceSession *session, int port, gboolean tls);
 void spice_session_get_pubkey(SpiceSession *session, guint8 **pubkey, guint *size);
 guint spice_session_get_verify(SpiceSession *session);
+const gchar* spice_session_get_username(SpiceSession *session);
 const gchar* spice_session_get_password(SpiceSession *session);
 const gchar* spice_session_get_host(SpiceSession *session);
 const gchar* spice_session_get_cert_subject(SpiceSession *session);
diff --git a/gtk/spice-session.c b/gtk/spice-session.c
index 49afc97..641fada 100644
--- a/gtk/spice-session.c
+++ b/gtk/spice-session.c
@@ -111,7 +111,8 @@ enum {
     PROP_CA,
     PROP_PROXY,
     PROP_SECURE_CHANNELS,
-    PROP_SHARED_DIR
+    PROP_SHARED_DIR,
+    PROP_USERNAME
 };
 
 /* signals */
@@ -218,6 +219,7 @@ spice_session_finalize(GObject *gobject)
     g_free(s->port);
     g_free(s->tls_port);
     g_free(s->password);
+    g_free(s->username);
     g_free(s->ca_file);
     g_free(s->ciphers);
     g_free(s->cert_subject);
@@ -262,7 +264,7 @@ static int spice_uri_create(SpiceSession *session, char *dest, int len)
 static int spice_parse_uri(SpiceSession *session, const char *original_uri)
 {
     SpiceSessionPrivate *s = session->priv;
-    gchar *host = NULL, *port = NULL, *tls_port = NULL, *uri = NULL, *password = NULL;
+    gchar *host = NULL, *port = NULL, *tls_port = NULL, *uri = NULL, *username = NULL, *password = NULL;
     gchar *path = NULL;
     gchar *unescaped_path = NULL;
     gchar *authority = NULL;
@@ -348,6 +350,8 @@ static int spice_parse_uri(SpiceSession *session, const char *original_uri)
             target_key = &port;
         } else if (g_str_equal(key, "tls-port")) {
             target_key = &tls_port;
+        } else if (g_str_equal(key, "username")) {
+            target_key = &username;
         } else if (g_str_equal(key, "password")) {
             target_key = &password;
             g_warning("password may be visible in process listings");
@@ -375,10 +379,12 @@ static int spice_parse_uri(SpiceSession *session, const char *original_uri)
     g_free(s->host);
     g_free(s->port);
     g_free(s->tls_port);
+    g_free(s->username);
     g_free(s->password);
     s->host = host;
     s->port = port;
     s->tls_port = tls_port;
+    s->username = username;
     s->password = password;
     return 0;
 
@@ -412,6 +418,9 @@ static void spice_session_get_property(GObject    *gobject,
     case PROP_TLS_PORT:
         g_value_set_string(value, s->tls_port);
 	break;
+    case PROP_USERNAME:
+        g_value_set_string(value, s->username);
+	break;
     case PROP_PASSWORD:
         g_value_set_string(value, s->password);
 	break;
@@ -522,6 +531,10 @@ static void spice_session_set_property(GObject      *gobject,
         g_free(s->tls_port);
         s->tls_port = g_value_dup_string(value);
         break;
+    case PROP_USERNAME:
+        g_free(s->username);
+        s->username = g_value_dup_string(value);
+        break;
     case PROP_PASSWORD:
         g_free(s->password);
         s->password = g_value_dup_string(value);
@@ -688,6 +701,21 @@ static void spice_session_class_init(SpiceSessionClass *klass)
                              G_PARAM_STATIC_STRINGS));
 
     /**
+     * SpiceSession:username:
+     *
+     * Username to use
+     *
+     **/
+    g_object_class_install_property
+        (gobject_class, PROP_PASSWORD,
+         g_param_spec_string("username",
+                             "Username",
+                             "",
+                             NULL,
+                             G_PARAM_READWRITE |
+                             G_PARAM_STATIC_STRINGS));
+
+    /**
      * SpiceSession:password:
      *
      * TLS password to use
@@ -1214,6 +1242,7 @@ SpiceSession *spice_session_new_from_session(SpiceSession *session)
 
     g_warn_if_fail(c->host == NULL);
     g_warn_if_fail(c->tls_port == NULL);
+    g_warn_if_fail(c->username == NULL);
     g_warn_if_fail(c->password == NULL);
     g_warn_if_fail(c->ca_file == NULL);
     g_warn_if_fail(c->ciphers == NULL);
@@ -1225,6 +1254,7 @@ SpiceSession *spice_session_new_from_session(SpiceSession *session)
     g_object_get(session,
                  "host", &c->host,
                  "tls-port", &c->tls_port,
+                 "username", &c->username,
                  "password", &c->password,
                  "ca-file", &c->ca_file,
                  "ciphers", &c->ciphers,
@@ -2073,6 +2103,15 @@ void spice_session_set_migration_state(SpiceSession *session, SpiceSessionMigrat
 }
 
 G_GNUC_INTERNAL
+const gchar* spice_session_get_username(SpiceSession *session)
+{
+    SpiceSessionPrivate *s = session->priv;
+
+    g_return_val_if_fail(s != NULL, NULL);
+    return s->username;
+}
+
+G_GNUC_INTERNAL
 const gchar* spice_session_get_password(SpiceSession *session)
 {
     SpiceSessionPrivate *s = session->priv;
-- 
1.9.3



More information about the Spice-devel mailing list