[vinagre] Added ssh-tunnel-host property to the VncConnection class



commit 6e4d6c9a0b06dc61743850a0661a7ed8d29138e0
Author: Jonh Wendell <jwendell gnome org>
Date:   Fri Oct 30 14:23:35 2009 -0300

    Added ssh-tunnel-host property to the VncConnection class

 plugins/vnc/vinagre-vnc-connection.c |   50 +++++++++++++++++++++++++++++++++-
 plugins/vnc/vinagre-vnc-connection.h |    4 +++
 2 files changed, 53 insertions(+), 1 deletions(-)
---
diff --git a/plugins/vnc/vinagre-vnc-connection.c b/plugins/vnc/vinagre-vnc-connection.c
index fb4e78c..a5b0e23 100644
--- a/plugins/vnc/vinagre-vnc-connection.c
+++ b/plugins/vnc/vinagre-vnc-connection.c
@@ -33,6 +33,7 @@ struct _VinagreVncConnectionPrivate
   gint     fd;
   gint     depth_profile;
   gboolean lossy_encoding;
+  gchar    *ssh_tunnel_host;
 };
 
 enum
@@ -44,7 +45,8 @@ enum
   PROP_SHARED,
   PROP_FD,
   PROP_DEPTH_PROFILE,
-  PROP_LOSSY_ENCODING
+  PROP_LOSSY_ENCODING,
+  PROP_SSH_TUNNEL_HOST
 };
 
 #define VINAGRE_VNC_CONNECTION_PRIVATE(o)  (G_TYPE_INSTANCE_GET_PRIVATE ((o), VINAGRE_TYPE_VNC_CONNECTION, VinagreVncConnectionPrivate))
@@ -62,6 +64,7 @@ vinagre_vnc_connection_init (VinagreVncConnection *conn)
   conn->priv->fd = 0;
   conn->priv->depth_profile = 0;
   conn->priv->lossy_encoding = FALSE;
+  conn->priv->ssh_tunnel_host = NULL;
 }
 
 static void
@@ -76,6 +79,7 @@ vinagre_vnc_connection_finalize (GObject *object)
   VinagreVncConnection *conn = VINAGRE_VNC_CONNECTION (object);
 
   g_free (conn->priv->desktop_name);
+  g_free (conn->priv->ssh_tunnel_host);
 
   G_OBJECT_CLASS (vinagre_vnc_connection_parent_class)->finalize (object);
 }
@@ -119,6 +123,10 @@ vinagre_vnc_connection_set_property (GObject *object, guint prop_id, const GValu
 	vinagre_vnc_connection_set_lossy_encoding (conn, g_value_get_boolean (value));
 	break;
 
+      case PROP_SSH_TUNNEL_HOST:
+	vinagre_vnc_connection_set_ssh_tunnel_host (conn, g_value_get_string (value));
+	break;
+
       default:
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	break;
@@ -164,6 +172,10 @@ vinagre_vnc_connection_get_property (GObject *object, guint prop_id, GValue *val
 	g_value_set_boolean (value, conn->priv->lossy_encoding);
 	break;
 
+      case PROP_SSH_TUNNEL_HOST:
+	g_value_set_string (value, conn->priv->ssh_tunnel_host);
+	break;
+
       default:
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	break;
@@ -180,6 +192,9 @@ vnc_fill_writer (VinagreConnection *conn, xmlTextWriter *writer)
   xmlTextWriterWriteFormatElement (writer, (const xmlChar *)"scaling", "%d", vnc_conn->priv->scaling);
   xmlTextWriterWriteFormatElement (writer, (const xmlChar *)"depth_profile", "%d", vnc_conn->priv->depth_profile);
   xmlTextWriterWriteFormatElement (writer, (const xmlChar *)"lossy_encoding", "%d", vnc_conn->priv->lossy_encoding);
+
+  if (vnc_conn->priv->ssh_tunnel_host && *vnc_conn->priv->ssh_tunnel_host)
+    xmlTextWriterWriteFormatElement (writer, (const xmlChar *)"ssh_tunnel_host", "%s", vnc_conn->priv->ssh_tunnel_host);
 }
 
 static void
@@ -212,6 +227,10 @@ vnc_parse_item (VinagreConnection *conn, xmlNode *root)
 	{
 	  vinagre_vnc_connection_set_lossy_encoding (vnc_conn, vinagre_utils_parse_boolean ((const gchar *)s_value));
 	}
+      else if (!xmlStrcmp(curr->name, (const xmlChar *)"ssh_tunnel_host"))
+	{
+	  vinagre_vnc_connection_set_ssh_tunnel_host (vnc_conn, (const gchar *)s_value);
+	}
 
       xmlFree (s_value);
     }
@@ -384,6 +403,18 @@ vinagre_vnc_connection_class_init (VinagreVncConnectionClass *klass)
                                                         G_PARAM_STATIC_NAME |
                                                         G_PARAM_STATIC_BLURB));
 
+  g_object_class_install_property (object_class,
+                                   PROP_SSH_TUNNEL_HOST,
+                                   g_param_spec_string ("ssh-tunnel-host",
+                                                        "SSH Tunnel Host",
+	                                                "hostname used to create the SSH tunnel",
+                                                        NULL,
+	                                                G_PARAM_READWRITE |
+                                                        G_PARAM_CONSTRUCT |
+                                                        G_PARAM_STATIC_NICK |
+                                                        G_PARAM_STATIC_NAME |
+                                                        G_PARAM_STATIC_BLURB));
+
 }
 
 VinagreConnection *
@@ -508,4 +539,21 @@ vinagre_vnc_connection_get_lossy_encoding (VinagreVncConnection *conn)
   return conn->priv->lossy_encoding;
 }
 
+void
+vinagre_vnc_connection_set_ssh_tunnel_host (VinagreVncConnection *conn,
+					    const gchar *host)
+{
+  g_return_if_fail (VINAGRE_IS_VNC_CONNECTION (conn));
+
+  g_free (conn->priv->ssh_tunnel_host);
+  conn->priv->ssh_tunnel_host = g_strdup (host);
+}
+const gchar *
+vinagre_vnc_connection_get_ssh_tunnel_host (VinagreVncConnection *conn)
+{
+  g_return_val_if_fail (VINAGRE_IS_VNC_CONNECTION (conn), NULL);
+
+  return conn->priv->ssh_tunnel_host;
+}
+
 /* vim: set ts=8: */
diff --git a/plugins/vnc/vinagre-vnc-connection.h b/plugins/vnc/vinagre-vnc-connection.h
index 671c91b..8d456c7 100644
--- a/plugins/vnc/vinagre-vnc-connection.h
+++ b/plugins/vnc/vinagre-vnc-connection.h
@@ -83,6 +83,10 @@ gboolean	    vinagre_vnc_connection_get_lossy_encoding (VinagreVncConnection *co
 void		    vinagre_vnc_connection_set_lossy_encoding (VinagreVncConnection *conn,
 							       gboolean enable);
 
+const gchar*	    vinagre_vnc_connection_get_ssh_tunnel_host (VinagreVncConnection *conn);
+void		    vinagre_vnc_connection_set_ssh_tunnel_host (VinagreVncConnection *conn,
+								const gchar *host);
+
 G_END_DECLS
 
 #endif /* __VINAGRE_VNC_CONNECTION_H__  */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]