gboolean plugin_done(void) { if (hook_id != -1) { spamassassin_unregister_hook(); } g_free(config.hostname); g_free(config.save_folder); spamassassin_gtk_done(); procmsg_unregister_spam_learner(spamassassin_learn); procmsg_spam_set_folder(NULL, NULL); debug_print("SpamAssassin plugin unloaded\n"); return TRUE; }
gboolean plugin_done(void) { if (hook_id != HOOK_NONE) { bogofilter_unregister_hook(); } #ifdef USE_PTHREAD bogofilter_stop_thread(); #endif g_free(config.save_folder); bogofilter_gtk_done(); procmsg_unregister_spam_learner(bogofilter_learn); procmsg_spam_set_folder(NULL, NULL); debug_print("Bogofilter plugin unloaded\n"); return TRUE; }
gboolean spamassassin_check_username(void) { if (config.username == NULL || config.username[0] == '\0') { config.username = (gchar*)g_get_user_name(); if (config.username == NULL) { if (hook_id != -1) { spamassassin_unregister_hook(); } procmsg_unregister_spam_learner(spamassassin_learn); procmsg_spam_set_folder(NULL, NULL); return FALSE; } } return TRUE; }
static void spamassassin_save_func(PrefsPage *_page) { struct SpamAssassinPage *page = (struct SpamAssassinPage *) _page; SpamAssassinConfig *config; debug_print("Saving SpamAssassin Page\n"); config = spamassassin_get_config(); /* enable */ config->enable = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->enable_sa_checkbtn)); config->transport = page->trans; /* username */ g_free(config->username); config->username = gtk_editable_get_chars(GTK_EDITABLE(page->username), 0, -1); spamassassin_check_username(); /* hostname */ g_free(config->hostname); config->hostname = gtk_editable_get_chars(GTK_EDITABLE(page->hostname), 0, -1); /* port */ config->port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(page->port)); /* hostname */ g_free(config->socket); config->socket = gtk_editable_get_chars(GTK_EDITABLE(page->socket), 0, -1); /* process_emails */ config->process_emails = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->process_emails)); /* receive_spam */ config->receive_spam = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->receive_spam)); /* save_folder */ g_free(config->save_folder); config->save_folder = gtk_editable_get_chars(GTK_EDITABLE(page->save_folder), 0, -1); /* max_size */ config->max_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(page->max_size)); /* timeout */ config->timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(page->timeout)); /* mark_as_read */ config->mark_as_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->mark_as_read)); /* whitelist_ab */ config->whitelist_ab = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->whitelist_ab)); g_free(config->whitelist_ab_folder); config->whitelist_ab_folder = gtk_editable_get_chars( GTK_EDITABLE(gtk_bin_get_child(GTK_BIN((page->whitelist_ab_folder_combo)))), 0, -1); /* store UNtranslated "Any" */ if (g_utf8_collate(config->whitelist_ab_folder, _("Any")) == 0) { g_free(config->whitelist_ab_folder); config->whitelist_ab_folder = g_strdup("Any"); } if (config->process_emails) { spamassassin_register_hook(); } else { spamassassin_unregister_hook(); } if (!config->enable) { procmsg_unregister_spam_learner(spamassassin_learn); procmsg_spam_set_folder(NULL, NULL); } else { if (config->transport == SPAMASSASSIN_TRANSPORT_TCP) debug_print("enabling learner with a remote spamassassin server requires spamc/spamd 3.1.x\n"); procmsg_register_spam_learner(spamassassin_learn); procmsg_spam_set_folder(config->save_folder, spamassassin_get_spam_folder); } spamassassin_save_config(); }