summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSenko Rasic <senko.rasic@collabora.co.uk>2010-07-22 13:03:10 +0200
committerSenko Rasic <senko.rasic@collabora.co.uk>2010-08-05 15:02:56 +0200
commit21863853f75fd883c82b3a0ed141dd0ca8adaa33 (patch)
tree5e9ec5c86a5bed7c9dc7149c2e397b8f66b4b3fa
parentf76b18abc4819c8dfce3b59b4000f9b4dad45e57 (diff)
move gabble parameters from ConnectionManager to JabberProtocol and clean up leftover cruft
-rw-r--r--src/connection-manager.c206
-rw-r--r--src/protocol.c147
2 files changed, 143 insertions, 210 deletions
diff --git a/src/connection-manager.c b/src/connection-manager.c
index e571e819a..3a71692aa 100644
--- a/src/connection-manager.c
+++ b/src/connection-manager.c
@@ -87,209 +87,3 @@ gabble_connection_manager_class_init (GabbleConnectionManagerClass *klass)
object_class->finalize = gabble_connection_manager_finalize;
}
-/* private data */
-
-typedef struct _GabbleParams GabbleParams;
-
-struct _GabbleParams {
- gchar *account;
- gchar *password;
- gchar *server;
- gchar *resource;
- gint priority;
- guint port;
- gboolean old_ssl;
- gboolean require_encryption;
- gboolean do_register;
- gboolean low_bandwidth;
- gchar *https_proxy_server;
- guint https_proxy_port;
- gchar *fallback_conference_server;
- gchar *stun_server;
- guint stun_port;
- gchar *fallback_stun_server;
- guint fallback_stun_port;
- gboolean ignore_ssl_errors;
- gchar *alias;
- GStrv fallback_socks5_proxies;
- guint keepalive_interval;
- gboolean decloak_automatically;
-};
-
-enum {
- JABBER_PARAM_ACCOUNT = 0,
- JABBER_PARAM_PASSWORD,
- JABBER_PARAM_SERVER,
- JABBER_PARAM_RESOURCE,
- JABBER_PARAM_PRIORITY,
- JABBER_PARAM_PORT,
- JABBER_PARAM_OLD_SSL,
- JABBER_PARAM_REQUIRE_ENCRYPTION,
- JABBER_PARAM_REGISTER,
- JABBER_PARAM_LOW_BANDWIDTH,
- JABBER_PARAM_HTTPS_PROXY_SERVER,
- JABBER_PARAM_HTTPS_PROXY_PORT,
- JABBER_PARAM_FALLBACK_CONFERENCE_SERVER,
- JABBER_PARAM_STUN_SERVER,
- JABBER_PARAM_STUN_PORT,
- JABBER_PARAM_FALLBACK_STUN_SERVER,
- JABBER_PARAM_FALLBACK_STUN_PORT,
- JABBER_PARAM_IGNORE_SSL_ERRORS,
- JABBER_PARAM_ALIAS,
- JABBER_PARAM_FALLBACK_SOCKS5_PROXIES,
- JABBER_PARAM_KEEPALIVE_INTERVAL,
- JABBER_PARAM_DECLOAK_AUTOMATICALLY,
-
- LAST_JABBER_PARAM
-};
-
-static TpCMParamSpec jabber_params[] = {
- { "account", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING,
- TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, NULL,
- G_STRUCT_OFFSET(GabbleParams, account),
- /* FIXME: validate the JID according to the RFC */
- tp_cm_param_filter_string_nonempty, NULL },
- { "password", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING,
- TP_CONN_MGR_PARAM_FLAG_REGISTER | TP_CONN_MGR_PARAM_FLAG_SECRET,
- NULL,
- G_STRUCT_OFFSET(GabbleParams, password), NULL, NULL },
-
- { "server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
- G_STRUCT_OFFSET(GabbleParams, server),
- /* FIXME: validate the server properly */
- tp_cm_param_filter_string_nonempty, NULL },
-
- { "resource", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
- G_STRUCT_OFFSET(GabbleParams, resource),
- /* FIXME: validate the resource according to the RFC */
- tp_cm_param_filter_string_nonempty, NULL },
-
- { "priority", DBUS_TYPE_INT16_AS_STRING, G_TYPE_INT,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(0),
- G_STRUCT_OFFSET(GabbleParams, priority), NULL, NULL },
-
- { "port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GUINT_TO_POINTER(5222),
- G_STRUCT_OFFSET(GabbleParams, port),
- tp_cm_param_filter_uint_nonzero, NULL },
-
- { "old-ssl", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
- G_STRUCT_OFFSET(GabbleParams, old_ssl), NULL, NULL },
-
- { "require-encryption", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
- G_STRUCT_OFFSET(GabbleParams, require_encryption), NULL, NULL },
-
- { "register", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
- G_STRUCT_OFFSET(GabbleParams, do_register), NULL, NULL },
-
- { "low-bandwidth", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
- G_STRUCT_OFFSET(GabbleParams, low_bandwidth), NULL, NULL },
-
- { "https-proxy-server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
- G_STRUCT_OFFSET(GabbleParams, https_proxy_server),
- /* FIXME: validate properly */
- tp_cm_param_filter_string_nonempty, NULL },
- { "https-proxy-port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
- GUINT_TO_POINTER(GABBLE_PARAMS_DEFAULT_HTTPS_PROXY_PORT),
- G_STRUCT_OFFSET(GabbleParams, https_proxy_port),
- tp_cm_param_filter_uint_nonzero, NULL },
-
- { "fallback-conference-server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING,
- 0, NULL, G_STRUCT_OFFSET(GabbleParams, fallback_conference_server),
- /* FIXME: validate properly */
- tp_cm_param_filter_string_nonempty, NULL },
-
- { "stun-server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
- G_STRUCT_OFFSET(GabbleParams, stun_server),
- /* FIXME: validate properly */
- tp_cm_param_filter_string_nonempty, NULL },
- { "stun-port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
- GUINT_TO_POINTER(GABBLE_PARAMS_DEFAULT_STUN_PORT),
- G_STRUCT_OFFSET(GabbleParams, stun_port),
- tp_cm_param_filter_uint_nonzero, NULL },
-
- { "fallback-stun-server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
- GABBLE_PARAMS_DEFAULT_FALLBACK_STUN_SERVER,
- G_STRUCT_OFFSET(GabbleParams, fallback_stun_server),
- /* FIXME: validate properly */
- tp_cm_param_filter_string_nonempty, NULL },
- { "fallback-stun-port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
- GUINT_TO_POINTER(GABBLE_PARAMS_DEFAULT_STUN_PORT),
- G_STRUCT_OFFSET(GabbleParams, fallback_stun_port),
- tp_cm_param_filter_uint_nonzero, NULL },
-
- { "ignore-ssl-errors", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
- G_STRUCT_OFFSET(GabbleParams, ignore_ssl_errors), NULL, NULL },
-
- { "alias", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
- G_STRUCT_OFFSET(GabbleParams, alias),
- /* setting a 0-length alias makes no sense */
- tp_cm_param_filter_string_nonempty, NULL },
-
- { "fallback-socks5-proxies", "as", 0,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, NULL,
- G_STRUCT_OFFSET (GabbleParams, fallback_socks5_proxies),
- NULL, NULL },
-
- { "keepalive-interval", "u", G_TYPE_UINT,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GUINT_TO_POINTER (30),
- G_STRUCT_OFFSET (GabbleParams, keepalive_interval), NULL, NULL },
-
- { GABBLE_PROP_CONNECTION_INTERFACE_GABBLE_DECLOAK_DECLOAK_AUTOMATICALLY,
- DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
- TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER (FALSE),
- G_STRUCT_OFFSET (GabbleParams, decloak_automatically), NULL, NULL },
-
- { NULL, NULL, 0, 0, NULL, 0 }
-};
-
-static void *
-alloc_params (void)
-{
- return g_slice_new0 (GabbleParams);
-}
-
-static void
-free_params (void *p)
-{
- GabbleParams *params = (GabbleParams *) p;
-
- g_free (params->account);
- g_free (params->password);
- g_free (params->server);
- g_free (params->resource);
- g_free (params->https_proxy_server);
- g_free (params->fallback_conference_server);
- g_free (params->stun_server);
- g_free (params->fallback_stun_server);
- g_free (params->alias);
- g_strfreev (params->fallback_socks5_proxies);
-
- g_slice_free (GabbleParams, params);
-}
-
-const TpCMProtocolSpec gabble_protocols[] = {
- { "jabber", jabber_params, alloc_params, free_params },
- { NULL, NULL }
-};
-
-const gchar *default_socks5_proxies[] = GABBLE_PARAMS_DEFAULT_SOCKS5_PROXIES;
-
-const TpCMProtocolSpec *
-gabble_connection_manager_get_protocols (void)
-{
- jabber_params[JABBER_PARAM_FALLBACK_SOCKS5_PROXIES].gtype = G_TYPE_STRV;
- jabber_params[JABBER_PARAM_FALLBACK_SOCKS5_PROXIES].def =
- default_socks5_proxies;
-
- return gabble_protocols;
-}
diff --git a/src/protocol.c b/src/protocol.c
index 826dfaebc..6f1fa9aac 100644
--- a/src/protocol.c
+++ b/src/protocol.c
@@ -20,6 +20,8 @@
#include "protocol.h"
#include <telepathy-glib/base-connection-manager.h>
+#include <dbus/dbus-protocol.h>
+#include <dbus/dbus-glib.h>
#include "connection.h"
#include "connection-manager.h"
@@ -30,23 +32,160 @@
#include "search-manager.h"
#include "util.h"
+#define PROTOCOL_NAME "jabber"
+#define ICON_NAME "im-" PROTOCOL_NAME
+#define VCARD_FIELD_NAME "x-" PROTOCOL_NAME
+#define ENGLISH_NAME "Jabber"
+
G_DEFINE_TYPE (GabbleJabberProtocol,
gabble_jabber_protocol,
TP_TYPE_BASE_PROTOCOL)
+static TpCMParamSpec jabber_params[] = {
+ { "account", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING,
+ TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, NULL,
+ 0 /* unused */,
+ /* FIXME: validate the JID according to the RFC */
+ tp_cm_param_filter_string_nonempty, NULL },
+ { "password", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING,
+ TP_CONN_MGR_PARAM_FLAG_REGISTER | TP_CONN_MGR_PARAM_FLAG_SECRET,
+ NULL, 0 /* unused */, NULL, NULL },
+
+ { "server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
+ 0 /* unused */,
+ /* FIXME: validate the server properly */
+ tp_cm_param_filter_string_nonempty, NULL },
+
+ { "resource", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
+ 0 /* unused */,
+ /* FIXME: validate the resource according to the RFC */
+ tp_cm_param_filter_string_nonempty, NULL },
+
+ { "priority", DBUS_TYPE_INT16_AS_STRING, G_TYPE_INT,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(0),
+ 0 /* unused */, NULL, NULL },
+
+ { "port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GUINT_TO_POINTER(5222),
+ 0 /* unused */,
+ tp_cm_param_filter_uint_nonzero, NULL },
+
+ { "old-ssl", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
+ 0 /* unused */, NULL, NULL },
+
+ { "require-encryption", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
+ 0 /* unused */, NULL, NULL },
+
+ { "register", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
+ 0 /* unused */, NULL, NULL },
+
+ { "low-bandwidth", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
+ 0 /* unused */, NULL, NULL },
+
+ { "https-proxy-server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
+ 0 /* unused */,
+ /* FIXME: validate properly */
+ tp_cm_param_filter_string_nonempty, NULL },
+
+ { "https-proxy-port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
+ GUINT_TO_POINTER(GABBLE_PARAMS_DEFAULT_HTTPS_PROXY_PORT),
+ 0 /* unused */,
+ tp_cm_param_filter_uint_nonzero, NULL },
+
+ { "fallback-conference-server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING,
+ 0, NULL, 0 /* unused */,
+ /* FIXME: validate properly */
+ tp_cm_param_filter_string_nonempty, NULL },
+
+ { "stun-server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
+ 0 /* unused */,
+ /* FIXME: validate properly */
+ tp_cm_param_filter_string_nonempty, NULL },
+
+ { "stun-port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
+ GUINT_TO_POINTER(GABBLE_PARAMS_DEFAULT_STUN_PORT),
+ 0 /* unused */,
+ tp_cm_param_filter_uint_nonzero, NULL },
+
+ { "fallback-stun-server", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
+ GABBLE_PARAMS_DEFAULT_FALLBACK_STUN_SERVER,
+ 0 /* unused */,
+ /* FIXME: validate properly */
+ tp_cm_param_filter_string_nonempty, NULL },
+
+ { "fallback-stun-port", DBUS_TYPE_UINT16_AS_STRING, G_TYPE_UINT,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT,
+ GUINT_TO_POINTER(GABBLE_PARAMS_DEFAULT_STUN_PORT),
+ 0 /* unused */,
+ tp_cm_param_filter_uint_nonzero, NULL },
+
+ { "ignore-ssl-errors", DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER(FALSE),
+ 0 /* unused */, NULL, NULL },
+
+ { "alias", DBUS_TYPE_STRING_AS_STRING, G_TYPE_STRING, 0, NULL,
+ 0 /* unused */,
+ /* setting a 0-length alias makes no sense */
+ tp_cm_param_filter_string_nonempty, NULL },
+
+ { "fallback-socks5-proxies", "as", 0,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, NULL,
+ 0 /* unused */,
+ NULL, NULL },
+
+ { "keepalive-interval", "u", G_TYPE_UINT,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GUINT_TO_POINTER (30),
+ 0 /* unused */, NULL, NULL },
+
+ { GABBLE_PROP_CONNECTION_INTERFACE_GABBLE_DECLOAK_DECLOAK_AUTOMATICALLY,
+ DBUS_TYPE_BOOLEAN_AS_STRING, G_TYPE_BOOLEAN,
+ TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, GINT_TO_POINTER (FALSE),
+ 0 /* unused */, NULL, NULL },
+
+ { NULL, NULL, 0, 0, NULL, 0 }
+};
+
+static const gchar *default_socks5_proxies[] = GABBLE_PARAMS_DEFAULT_SOCKS5_PROXIES;
+
static void
gabble_jabber_protocol_init (GabbleJabberProtocol *self)
{
}
+static gpointer
+_init_parameters (gpointer dummy G_GNUC_UNUSED)
+{
+ guint i;
+
+ for (i = 0; jabber_params[i].name != NULL; i++)
+ {
+ if (!g_strcmp0 (jabber_params[i].name,
+ "fallback-socks5-proxies"))
+ {
+ jabber_params[i].gtype = G_TYPE_STRV;
+ jabber_params[i].def = default_socks5_proxies;
+ break;
+ }
+ }
+
+ return NULL;
+}
+
static const TpCMParamSpec *
get_parameters (TpBaseProtocol *self G_GNUC_UNUSED)
{
- const TpCMProtocolSpec *protocol_spec =
- gabble_connection_manager_get_protocols ();
+ static GOnce init = G_ONCE_INIT;
+
+ g_once (&init, _init_parameters, NULL);
- /* we know there's only one protocol, and it's jabber */
- return protocol_spec[0].parameters;
+ return jabber_params;
}
#define MAP(x,y) { x, y }