gboolean set_proxy(LmConnection *lmconn, GError **error) { LmProxy *proxy; LmProxyType type; const char *str; char *recoded; str = settings_get_str("xmpp_proxy_type"); if (str != NULL && g_ascii_strcasecmp(str, XMPP_PROXY_HTTP) == 0) type = LM_PROXY_TYPE_HTTP; else { if (error != NULL) { *error = g_new(GError, 1); (*error)->message = g_strdup("Invalid proxy type"); } return FALSE; } str = settings_get_str("xmpp_proxy_address"); if (str == NULL || *str == '\0') { if (error != NULL) { *error = g_new(GError, 1); (*error)->message = g_strdup("Proxy address not specified"); } return FALSE; } int port = settings_get_int("xmpp_proxy_port"); if (port <= 0) { if (error != NULL) { *error = g_new(GError, 1); (*error)->message = g_strdup("Invalid proxy port range"); } return FALSE; } proxy = lm_proxy_new_with_server(type, str, port); str = settings_get_str("xmpp_proxy_user"); if (str != NULL && *str != '\0') { recoded = xmpp_recode_out(str); lm_proxy_set_username(proxy, recoded); g_free(recoded); } str = settings_get_str("xmpp_proxy_password"); if (str != NULL && *str != '\0') { recoded = xmpp_recode_out(str); lm_proxy_set_password(proxy, recoded); g_free(recoded); } lm_connection_set_proxy(lmconn, proxy); lm_proxy_unref(proxy); return TRUE; }
int main (int argc, char **argv) { GMainLoop *main_loop; LmConnection *connection; LmMessageHandler *handler; gboolean result; UserInfo *info; LmProxy *proxy; guint proxy_port; if (argc < 6) { g_print ("Usage: %s <server> <username> <password> <proxyserver> <proxyport>\n", argv[0]); return 1; } connection = lm_connection_new (argv[1]); proxy = lm_proxy_new (LM_PROXY_TYPE_HTTP); lm_proxy_set_server (proxy, argv[4]); proxy_port = strtol (argv[5], (char **) NULL, 10); lm_proxy_set_port (proxy, proxy_port); lm_connection_set_proxy (connection, proxy); lm_proxy_unref (proxy); handler = lm_message_handler_new (handle_messages, NULL, NULL); lm_connection_register_message_handler (connection, handler, LM_MESSAGE_TYPE_MESSAGE, LM_HANDLER_PRIORITY_NORMAL); lm_message_handler_unref (handler); info = g_new0 (UserInfo, 1); info->name = g_strdup (argv[2]); info->passwd = g_strdup (argv[3]); result = lm_connection_open (connection, (LmResultFunction) connection_open_cb, info, NULL, NULL); if (!result) { g_print ("Opening connection failed: %d\n", result); } else { g_print ("Returned from the connection_open\n"); } main_loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (main_loop); return 0; }