diff options
author | Senko Rasic <senko.rasic@collabora.co.uk> | 2010-07-22 13:03:10 +0200 |
---|---|---|
committer | Senko Rasic <senko.rasic@collabora.co.uk> | 2010-08-05 15:02:56 +0200 |
commit | 21863853f75fd883c82b3a0ed141dd0ca8adaa33 (patch) | |
tree | 5e9ec5c86a5bed7c9dc7149c2e397b8f66b4b3fa | |
parent | f76b18abc4819c8dfce3b59b4000f9b4dad45e57 (diff) |
move gabble parameters from ConnectionManager to JabberProtocol and clean up leftover cruft
-rw-r--r-- | src/connection-manager.c | 206 | ||||
-rw-r--r-- | src/protocol.c | 147 |
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 } |