gint plugin_init(gchar **error) { gchar *rcpath; hook_id = HOOK_NONE; if (!check_plugin_version(MAKE_NUMERIC_VERSION(2,9,2,72), VERSION_NUMERIC, PLUGIN_NAME, error)) return -1; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "Bogofilter", rcpath, NULL); g_free(rcpath); bogofilter_gtk_init(); debug_print("Bogofilter plugin loaded\n"); #ifdef USE_PTHREAD bogofilter_start_thread(); #endif if (config.process_emails) { bogofilter_register_hook(); } procmsg_register_spam_learner(bogofilter_learn); procmsg_spam_set_folder(config.save_folder, bogofilter_get_spam_folder); return 0; }
static void bsfilter_save_func(PrefsPage *_page) { struct BsfilterPage *page = (struct BsfilterPage *) _page; BsfilterConfig *config; debug_print("Saving Bsfilter Page\n"); config = bsfilter_get_config(); /* 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); /* 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"); } /* learn_from_whitelist_chkbtn */ config->learn_from_whitelist = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->learn_from_whitelist_chkbtn)); /* bspath */ g_free(config->bspath); config->bspath = gtk_editable_get_chars(GTK_EDITABLE(page->bspath), 0, -1); /* max_size */ config->max_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(page->max_size)); /* mark_as_read */ config->mark_as_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->mark_as_read)); if (config->process_emails) { bsfilter_register_hook(); } else { bsfilter_unregister_hook(); } procmsg_register_spam_learner(bsfilter_learn); procmsg_spam_set_folder(config->save_folder, bsfilter_get_spam_folder); bsfilter_save_config(); }
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; }
gint plugin_init(gchar **error) { gchar *rcpath; hook_id = -1; if (!check_plugin_version(MAKE_NUMERIC_VERSION(2,9,2,72), VERSION_NUMERIC, PLUGIN_NAME, error)) return -1; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "SpamAssassin", rcpath, NULL); g_free(rcpath); if (!spamassassin_check_username()) { *error = g_strdup(_("Failed to get username")); return -1; } spamassassin_gtk_init(); debug_print("SpamAssassin plugin loaded\n"); if (config.process_emails) { spamassassin_register_hook(); } if (!config.enable || config.transport == SPAMASSASSIN_DISABLED) { log_warning(LOG_PROTOCOL, _("SpamAssassin plugin is loaded but disabled by its preferences.\n")); } 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); } return 0; }
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(); }