/* Set own SASL context based on whether an external one is given or not */ static void infd_xmpp_server_setup_own_sasl_context(InfdXmppServer* xmpp) { InfdXmppServerPrivate* priv; priv = INFD_XMPP_SERVER_PRIVATE(xmpp); g_assert(priv->sasl_own_context == NULL); if(priv->sasl_context == NULL && priv->tcp != NULL) { /* Failure does not matter too much because every XMPP connection will * generate an own SASL context in this case, and error out if that * fails again. */ priv->sasl_own_context = inf_sasl_context_new(NULL); if(priv->sasl_own_context != NULL) { priv->sasl_context = priv->sasl_own_context; inf_sasl_context_ref(priv->sasl_context); inf_sasl_context_set_callback( priv->sasl_context, infd_xmpp_server_sasl_cb, xmpp ); g_object_notify(G_OBJECT(xmpp), "sasl-context"); } } }
Gobby::AuthCommands::AuthCommands(Gtk::Window& parent, Browser& browser, StatusBar& statusbar, ConnectionManager& connection_manager, const Preferences& preferences): m_parent(parent), m_browser(browser), m_connection_manager(connection_manager), m_statusbar(statusbar), m_preferences(preferences) { GError* error = NULL; m_sasl_context = inf_sasl_context_new(&error); if(!m_sasl_context) { std::string error_message = std::string("SASL initialization error: ") + error->message; g_error_free(error); throw std::runtime_error(error_message); } inf_sasl_context_set_callback( m_sasl_context, &AuthCommands::sasl_callback_static, this, NULL); // Set SASL context for new and existing connections: m_connection_manager.set_sasl_context(m_sasl_context, "ANONYMOUS PLAIN"); g_signal_connect( G_OBJECT(m_browser.get_store()), "set-browser", G_CALLBACK(&AuthCommands::set_browser_callback_static), this); // Setup callback for existing browsers GtkTreeIter iter; GtkTreeModel* model = GTK_TREE_MODEL(m_browser.get_store()); for(gboolean have_entry = gtk_tree_model_get_iter_first(model, &iter); have_entry == TRUE; have_entry = gtk_tree_model_iter_next(model, &iter)) { InfBrowser* browser; gtk_tree_model_get( model, &iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, -1); if(browser != NULL) { set_browser_callback(NULL, browser); g_object_unref(browser); } } }
static gboolean infinoted_startup_load(InfinotedStartup* startup, int* argc, char*** argv, GError** error) { gboolean requires_password; if(infinoted_startup_load_options(startup, argc, argv, error) == FALSE) return FALSE; startup->log = infinoted_log_new(); if(!infinoted_log_open(startup->log, startup->options->log_path, error)) return FALSE; if(infinoted_startup_load_credentials(startup, error) == FALSE) return FALSE; requires_password = startup->options->password != NULL; #ifdef LIBINFINITY_HAVE_PAM requires_password = requires_password || startup->options->pam_service != NULL; #endif /* LIBINFINITY_HAVE_PAM */ if(requires_password) { startup->sasl_context = inf_sasl_context_new(error); if(!startup->sasl_context) return FALSE; inf_sasl_context_set_callback( startup->sasl_context, infinoted_startup_sasl_callback, startup, NULL ); } return TRUE; }
Gobby::AuthCommands::AuthCommands(Gtk::Window& parent, Browser& browser, StatusBar& statusbar, ConnectionManager& connection_manager, const Preferences& preferences): m_parent(parent), m_browser(browser), m_connection_manager(connection_manager), m_statusbar(statusbar), m_preferences(preferences) { GError* error = NULL; m_sasl_context = inf_sasl_context_new(&error); if(!m_sasl_context) { std::string error_message = std::string("SASL initialization error: ") + error->message; g_error_free(error); throw std::runtime_error(error_message); } inf_sasl_context_set_callback( m_sasl_context, &AuthCommands::sasl_callback_static, this, NULL); // Set SASL context for new connections: m_connection_manager.set_sasl_context(m_sasl_context, "ANONYMOUS PLAIN"); g_signal_connect( G_OBJECT(m_browser.get_store()), "set-browser", G_CALLBACK(&AuthCommands::set_browser_callback_static), this); }