Added the resources and file type associations, changed the application

signature and otherwise made the spam detection system work properly again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13952 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Alexander G.M. Smith 2005-08-13 19:31:42 +00:00
parent 9608526fe1
commit d9f9a4ac41
9 changed files with 243 additions and 69 deletions

View File

@ -15,5 +15,5 @@ Package haiku-maildaemon-cvs :
boot home config add-ons mail_daemon inbound_filters ;
Package haiku-maildaemon-cvs :
spamfilter :
boot home config bin ;
spamdbm :
boot home config bin ;

View File

@ -1,20 +1,26 @@
/******************************************************************************
* AGMSBayesianSpamFilter - Uses Bayesian statistics to evaluate the spaminess
* of a message. The evaluation is done by a separate server, this add-on just
* gets the text and uses scripting commands to get an evaluation from the
* server. If the server isn't running, it will be found and started up. Once
* the evaluation has been received, it is added to the message as an attribute
* and optionally as an addition to the subject. Some other add-on later in
* the pipeline will use the attribute to delete the message or move it to some
* $Id$
*
* SpamFilter - Uses Bayesian statistics to evaluate the spaminess of a
* message. The evaluation is done by a separate server, this add-on just gets
* the text and uses scripting commands to get an evaluation from the server.
* If the server isn't running, it will be found and started up. Once the
* evaluation has been received, it is added to the message as an attribute and
* optionally as an addition to the subject. Some other add-on later in the
* pipeline will use the attribute to delete the message or move it to some
* other folder.
*
* Public Domain 2002, by Alexander G. M. Smith, no warranty.
*
* $Log: SpamFilter.cpp,v $
* Revision 1.2 2004/11/12 02:55:05 nwhitehorn
* Added AGMS's excellent spam detection software. Still some weirdness with the configuration interface from E-mail prefs.
* $Log: SpamFilter.cpp,v $ (SVN doesn't support log messages so manually done)
* r11769 | bonefish | 2005-03-17 03:30:54 -0500 (Thu, 17 Mar 2005) | 1 line
* Move trunk into respective module.
*
* Revision 1.1 2004/10/30 22:23:26 brunoga
* r9934 | nwhitehorn | 2004-11-11 21:55:05 -0500 (Thu, 11 Nov 2004) | 2 lines
* Added AGMS's excellent spam detection software. Still some weirdness with
* the configuration interface from E-mail prefs.
*
* r9669 | brunoga | 2004-10-30 18:23:26 -0400 (Sat, 30 Oct 2004) | 2 lines
* AGMS Spam Filter.
*
* Revision 1.19 2004/09/20 15:57:30 nwhitehorn
@ -115,13 +121,12 @@
#include "SpamFilter.h"
// The names match the ones set up by AGMSBayesianSpamServer for sound effects.
static const char *kAGMSBayesBeepGenuineName = "AGMSBayes-Genuine";
static const char *kAGMSBayesBeepSpamName = "AGMSBayes-Spam";
static const char *kAGMSBayesBeepUncertainName = "AGMSBayes-Uncertain";
// The names match the ones set up by spamdbm for sound effects.
static const char *kAGMSBayesBeepGenuineName = "SpamFilter-Genuine";
static const char *kAGMSBayesBeepSpamName = "SpamFilter-Spam";
static const char *kAGMSBayesBeepUncertainName = "SpamFilter-Uncertain";
static const char *kServerSignature =
"application/x-vnd.agmsmith.AGMSBayesianSpamServer";
static const char *kServerSignature = "application/x-vnd.agmsmith.spamdbm";
AGMSBayesianSpamFilter::AGMSBayesianSpamFilter (BMessage *settings)
@ -170,7 +175,7 @@ AGMSBayesianSpamFilter::InitCheck (BString* out_message)
{
if (out_message != NULL)
out_message->SetTo (
"AGMSBayesianSpamFilter::InitCheck is never called!");
"SpamFilter::InitCheck is never called!");
return B_OK;
}
@ -231,7 +236,7 @@ AGMSBayesianSpamFilter::ProcessMailMessage (
directory_which places[] = {B_COMMON_BIN_DIRECTORY,B_BEOS_BIN_DIRECTORY};
for (int32 i = 0; i < 2; i++) {
find_directory(places[i],&path);
path.Append("spamfilter");
path.Append("spamdbm");
if (!BEntry(path.Path()).Exists())
continue;
get_ref_for_path(path.Path(),&ref);
@ -451,7 +456,7 @@ AGMSBayesianSpamFilter::ProcessMailMessage (
ErrorExit:
fprintf (stderr, "Error exit from "
"AGMSBayesianSpamFilter::ProcessMailMessage, code maybe %ld (%s).\n",
"SpamFilter::ProcessMailMessage, code maybe %ld (%s).\n",
errorCode, strerror (errorCode));
delete [] stringBuffer;
return B_OK; // Not MD_ERROR so the message doesn't get left on server.

View File

@ -1,19 +1,24 @@
#ifndef AGMS_BAYESIAN_SPAM_FILTER_H
#define AGMS_BAYESIAN_SPAM_FILTER_H
/******************************************************************************
* AGMSBayesianSpamFilter - Uses Bayesian statistics to evaluate the spaminess
* of a message. The evaluation is done by a separate server, this add-on just
* gets the text and uses scripting commands to get an evaluation from the
* server. If the server isn't running, it will be found and started up. Once
* the evaluation has been received, it is added to the message as an attribute
* and optionally as an addition to the subject. Some other add-on later in
* the pipeline will use the attribute to delete the message or move it to some
* $Id$
*
* SpamFilter - Uses Bayesian statistics to evaluate the spaminess of a
* message. The evaluation is done by a separate server, this add-on just gets
* the text and uses scripting commands to get an evaluation from the server.
* If the server isn't running, it will be found and started up. Once the
* evaluation has been received, it is added to the message as an attribute and
* optionally as an addition to the subject. Some other add-on later in the
* pipeline will use the attribute to delete the message or move it to some
* other folder.
*
* Public Domain 2002, by Alexander G. M. Smith, no warranty.
*
* $Log: SpamFilter.h,v $
* Revision 1.1 2004/10/30 22:23:26 brunoga
* $Log: SpamFilter.cpp,v $ (SVN doesn't support log messages so manually done)
* r11769 | bonefish | 2005-03-17 03:30:54 -0500 (Thu, 17 Mar 2005) | 1 line
* Move trunk into respective module.
*
* r9669 | brunoga | 2004-10-30 18:23:26 -0400 (Sat, 30 Oct 2004) | 2 lines
* AGMS Spam Filter.
*
* Revision 1.8 2004/09/20 15:57:30 nwhitehorn

View File

@ -1,18 +1,24 @@
/******************************************************************************
* AGMSBayesianSpamFilter's configuration view. Lets the user change various
* settings related to the add-on, but not the server.
* $Id$
*
* $Log: SpamFilterConfig.cpp,v $
* Revision 1.4 2004/12/07 01:14:05 nwhitehorn
* SpamFilter's configuration view. Lets the user change various settings
* related to the add-on, but not the spamdbm server.
*
* $Log: SpamFilter.cpp,v $ (SVN doesn't support log messages so manually done)
* r11769 | bonefish | 2005-03-17 03:30:54 -0500 (Thu, 17 Mar 2005) | 1 line
* Move trunk into respective module.
*
* r10362 | nwhitehorn | 2004-12-06 20:14:05 -0500 (Mon, 06 Dec 2004) | 2 lines
* Fixed the spam filter so it works correctly now.
*
* Revision 1.3 2004/11/21 08:38:07 shatty
* r10097 | shatty | 2004-11-21 03:38:07 -0500 (Sun, 21 Nov 2004) | 2 lines
* remove unused variables
*
* Revision 1.2 2004/11/12 02:55:05 nwhitehorn
* Added AGMS's excellent spam detection software. Still some weirdness with the configuration interface from E-mail prefs.
* r9934 | nwhitehorn | 2004-11-11 21:55:05 -0500 (Thu, 11 Nov 2004) | 2 lines
* Added AGMS's excellent spam detection software. Still some weirdness with
* the configuration interface from E-mail prefs.
*
* Revision 1.1 2004/10/30 22:23:26 brunoga
* r9669 | brunoga | 2004-10-30 18:23:26 -0400 (Sat, 30 Oct 2004) | 2 lines
* AGMS Spam Filter.
*
* Revision 1.9 2004/09/20 15:57:30 nwhitehorn
@ -87,8 +93,7 @@
#include <MailAddon.h>
#include <FileConfigView.h>
static const char *kServerSignature =
"application/x-vnd.agmsmith.AGMSBayesianSpamServer";
static const char *kServerSignature = "application/x-vnd.agmsmith.spamdbm";
class AGMSBayesianSpamFilterConfig : public BView {
public:
@ -124,7 +129,7 @@ class AGMSBayesianSpamFilterConfig : public BView {
AGMSBayesianSpamFilterConfig::AGMSBayesianSpamFilterConfig (BMessage *settings)
: BView (BRect (0,0,260,130), "agmsbayesianspamfilter_config",
: BView (BRect (0,0,260,130), "spamfilter_config",
B_FOLLOW_LEFT | B_FOLLOW_TOP, 0),
fAddSpamToSubject (false),
fAddSpamToSubjectCheckBoxPntr (NULL),
@ -276,7 +281,7 @@ void AGMSBayesianSpamFilterConfig::AttachedToWindow ()
fQuitServerWhenFinishedCheckBoxPntr = new BCheckBox (
tempRect,
"quitWhenFinished",
"Close AGMSBayesianSpamServer when Finished.",
"Close SpamDBM when Finished.",
new BMessage (kQuitWhenFinishedPressed));
AddChild (fQuitServerWhenFinishedCheckBoxPntr);
fQuitServerWhenFinishedCheckBoxPntr->ResizeToPreferred ();
@ -375,7 +380,7 @@ AGMSBayesianSpamFilterConfig::ShowSpamServerConfigurationWindow () {
directory_which places[] = {B_COMMON_BIN_DIRECTORY,B_BEOS_BIN_DIRECTORY};
for (int32 i = 0; i < 2; i++) {
find_directory(places[i],&path);
path.Append("spamfilter");
path.Append("spamdbm");
if (!BEntry(path.Path()).Exists())
continue;
get_ref_for_path(path.Path(),&ref);
@ -408,8 +413,8 @@ AGMSBayesianSpamFilterConfig::ShowSpamServerConfigurationWindow () {
ErrorExit:
(new BAlert ("SpamFilterConfig Error", "Sorry, unable to launch the "
"AGMSBayesianSpamServer program to let you edit the server "
"settings.", "Close"))->Go ();
"spamdbm program to let you edit the server settings.",
"Close"))->Go ();
return;
}

View File

@ -111,7 +111,7 @@ const char *kRedoStrings[] = {
// Spam related globals.
static bool gShowSpamGUI = true;
static BMessenger gMessengerToSpamServer;
static const char *kSpamServerSignature = "application/x-vnd.agmsmith.AGMSBayesianSpamServer";
static const char *kSpamServerSignature = "application/x-vnd.agmsmith.spamdbm";
static const char *kDraftPath = "mail/draft";
static const char *kDraftType = "text/x-vnd.Be-MailDraft";
@ -3628,7 +3628,7 @@ TMailWindow::TrainMessageAs(const char *CommandWord)
directory_which places[] = {B_COMMON_BIN_DIRECTORY,B_BEOS_BIN_DIRECTORY};
for (int32 i = 0; i < 2; i++) {
find_directory(places[i],&path);
path.Append("spamfilter");
path.Append("spamdbm");
if (!BEntry(path.Path()).Exists())
continue;
get_ref_for_path(path.Path(),&ref);

View File

@ -3,4 +3,5 @@ SubDir OBOS_TOP src bin spamdbm ;
StdBinCommands
spamdbm.cpp
: be tracker stdc++.r4 libmail.so
: spamdbm.rdef
;

View File

@ -69,6 +69,21 @@
* assume that the file will always be in SVN, and not some other source
* control system, as if!).
*
* r13951 | agmsmith | 2005-08-13 11:40:01 -0400 (Sat, 13 Aug 2005) | 2 lines
* Had to do the file rename as a separate operation due to SVN limitations.
*
* r13950 | agmsmith | 2005-08-13 11:38:44 -0400 (Sat, 13 Aug 2005) | 3 lines
* Oops, "spamdb" is already used for a Unix package. And spamdatabase is
* already reserved by a domain name squatter. Use "spamdbm" instead.
*
* r13949 | agmsmith | 2005-08-13 11:17:52 -0400 (Sat, 13 Aug 2005) | 3 lines
* Renamed spamfilter to be the more meaningful spamdb (spam database) and
* moved it into its own source directory in preparation for adding resources.
*
* r13628 | agmsmith | 2005-07-10 20:11:29 -0400 (Sun, 10 Jul 2005) | 3 lines
* Updated keyword expansion to use SVN keywords. Also seeing if svn is
* working well enough for me to update files from BeOS R5.
*
* r11909 | axeld | 2005-03-18 19:09:19 -0500 (Fri, 18 Mar 2005) | 2 lines
* Moved bin/ directory out of apps/.
*
@ -483,30 +498,30 @@ static float g_PopUpMenuHeight; /* Again for pop-up menus. */
static float g_TextBoxHeight; /* Ditto for editable text controls. */
static const char *g_ABSAppSignature =
"application/x-vnd.agmsmith.AGMSBayesianSpamServer";
"application/x-vnd.agmsmith.spamdbm";
static const char *g_ABSDatabaseFileMIMEType =
"text/x-vnd.agmsmith.spam_probability_database";
static const char *g_DefaultDatabaseFileName =
"AGMSBayesianSpam Database";
"SpamDBM Database";
static const char *g_DatabaseRecognitionString =
"Spam Database File";
static const char *g_AttributeNameClassification = "MAIL:classification";
static const char *g_AttributeNameSpamRatio = "MAIL:ratio_spam";
static const char *g_BeepGenuine = "AGMSBayes-Genuine";
static const char *g_BeepSpam = "AGMSBayes-Spam";
static const char *g_BeepUncertain = "AGMSBayes-Uncertain";
static const char *g_BeepGenuine = "SpamFilter-Genuine";
static const char *g_BeepSpam = "SpamFilter-Spam";
static const char *g_BeepUncertain = "SpamFilter-Uncertain";
static const char *g_ClassifiedSpam = "Spam";
static const char *g_ClassifiedGenuine = "Genuine";
static const char *g_DataName = "data";
static const char *g_ResultName = "result";
static const char *g_SettingsDirectoryName = "AGMSBayesianSpam";
static const char *g_SettingsFileName = "AGMSBayesianSpamServer Settings";
static const uint32 g_SettingsWhatCode = 'ABSS';
static const char *g_SettingsDirectoryName = "Mail";
static const char *g_SettingsFileName = "SpamDBM Settings";
static const uint32 g_SettingsWhatCode = 'SDBM';
static const char *g_BackupSuffix = ".backup %d";
static const int g_MaxBackups = 10; /* Numbered from 0 to g_MaxBackups - 1. */
static const size_t g_MaxWordLength = 50; /* Words longer than this aren't. */
@ -606,7 +621,7 @@ static struct property_info g_ScriptingPropertyList [] =
{g_PropertyNames[PN_DATABASE_FILE], {B_GET_PROPERTY, 0},
{B_DIRECT_SPECIFIER, 0}, "Get the pathname of the current database file. "
"The default name is something like B_USER_SETTINGS_DIRECTORY / "
"AGMSBayesianSpam / AGMSBayesianSpamServer Database", PN_DATABASE_FILE,
"Mail / SpamDBM Database", PN_DATABASE_FILE,
{}, {}, {}},
{g_PropertyNames[PN_DATABASE_FILE], {B_SET_PROPERTY, 0},
{B_DIRECT_SPECIFIER, 0}, "Change the pathname of the database file to "
@ -1416,7 +1431,7 @@ static void DisplayErrorMessage (
char ErrorBuffer [PATH_MAX + 1500];
if (TitleString == NULL)
TitleString = "AGMSBayesianSpamServer Error Message";
TitleString = "SpamDBM Error Message";
if (MessageString == NULL)
{
@ -1526,7 +1541,7 @@ ostream& PrintUsage (ostream& OutputStream)
{
struct property_info *PropInfoPntr;
OutputStream << "\nAGMSBayesianSpamServer - A Spam Database Server\n";
OutputStream << "\nSpamDBM - A Spam Database Manager\n";
OutputStream << "Copyright © 2002 by Alexander G. M. Smith. ";
OutputStream << "Released to the public domain.\n\n";
WrapTextToStream (OutputStream, "Compiled on " __DATE__ " at " __TIME__
@ -1964,7 +1979,7 @@ void ABSApp::AboutRequested ()
BAlert *AboutAlertPntr;
AboutAlertPntr = new BAlert ("About",
"AGMSBayesianSpamServer\n\n"
"SpamDBM - Spam Database Manager\n\n"
"This is a BeOS program for classifying e-mail messages as spam (unwanted \
junk mail) or as genuine mail using a Bayesian statistical approach. There \
@ -2754,15 +2769,14 @@ status_t ABSApp::EvaluateString (
/* Tell other programs about the scripting commands we support. Try this
command: "hey application/x-vnd.agmsmith.AGMSBayesianSpamServer getsuites" to
command: "hey application/x-vnd.agmsmith.spamdbm getsuites" to
see it in action (this program has to be already running for it to work). */
status_t ABSApp::GetSupportedSuites (BMessage *MessagePntr)
{
BPropertyInfo TempPropInfo (g_ScriptingPropertyList);
MessagePntr->AddString ("suites",
"suite/x-vnd.agmsmith.AGMSBayesianSpamServer");
MessagePntr->AddString ("suites", "suite/x-vnd.agmsmith.spamdbm");
MessagePntr->AddFlat ("messages", &TempPropInfo);
return BApplication::GetSupportedSuites (MessagePntr);
}
@ -3104,7 +3118,7 @@ status_t ABSApp::LoadSaveDatabase (bool DoLoad, char *ErrorMessage)
{
CurrentTime = time (NULL);
if (fprintf (DatabaseFile, "%s V1 (word, age, genuine count, spam count)\t"
"Written by AGMSBayesianSpamServer $Revision$\t"
"Written by SpamDBM $Revision$\t"
"Compiled on " __DATE__ " at " __TIME__ "\tThis file saved on %s",
g_DatabaseRecognitionString, ctime (&CurrentTime)) <= 0)
{
@ -4131,7 +4145,7 @@ void ABSApp::Pulse ()
}
else if (g_QuitCountdown > 0)
{
cerr << "AGMSBayesianSpamServer quitting in " << g_QuitCountdown << ".\n";
cerr << "SpamDBM quitting in " << g_QuitCountdown << ".\n";
g_QuitCountdown--;
}
}
@ -7308,6 +7322,6 @@ int main (int argc, char**)
snooze (100000); /* Let the CommanderLooper thread run so it quits. */
}
cerr << "AGMSBayesianSpamServer shutting down..." << endl;
cerr << "SpamDBM shutting down..." << endl;
return 0; /* And implicitly destroys MyApp, which writes out the database. */
}

View File

@ -0,0 +1,137 @@
/* Resources for the spamdbm program, mostly icons and
file type associations that make it work properly.
$Id: $ */
resource app_flags B_SINGLE_LAUNCH;
resource app_version {
major = 3,
middle = 0,
minor = 0,
variety = B_APPV_FINAL,
internal = 1,
short_info = "SpamDBM $Rev: $",
long_info = "SpamDBM - a spam analysis database manager for Haiku. $Id: $"
};
resource(1, "BEOS:APP_SIG") #'MIMS' "application/x-vnd.agmsmith.spamdbm";
resource(1, "BEOS:FILE_TYPES") message {
"types" = "text/x-vnd.agmsmith.spam_probability_database",
"types" = "text/x-email"
};
resource(1, "Busy Cursor") #'CURS' array {
$"1001070707E018182084430242028279A005B9858DB180198109410A47022004"
$"181807E007E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC"
$"1FF807E0"
};
resource(0, "BEOS:L:text/x-vnd.agmsmith.spam_probability_database") #'ICON' array {
$"FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFF00002A2A2A2A2A2A2A2A000000FFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFF00002A2A2A2A2A2A2A2A2A2A2A2A2A0000FFFFFFFFFFFFFF"
$"FFFFFFFFFFFF00002A2A2A2A00000000000000002A2A2A2A2A0000FFFFFFFFFF"
$"FFFFFFFFFF002A2A2A2A0000FFFFFFFFFFFFFFFF00002A2A2A2A2A00FFFFFFFF"
$"FFFFFFFF002A2A2A0000FFFFFFFFFFFFFFFFFFFFFFFF00002A2A2A2A00FFFFFF"
$"FFFFFF002A2A2A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF002A2A2A2A2A00FFFF"
$"FFFFFF002A2A00FF00000000FFFFFFFFFFFFFFFFFFFF002A2A2A002A2A00FFFF"
$"FFFF002A2A00FFFF0000000000FFFFFFFFFFFFFFFF002A2A2A00002A2A2A00FF"
$"FFFF002A2A00FFFF0000FFFF0000FFFFFFFFFFFF002A2A2A00FF002A2A2A00FF"
$"FF002A2A00FFFFFF0000FFFFFF0000FFFFFFFF002A2A2A00FFFFFF002A2A00FF"
$"FF002A2A00FFFFFF0000FFFFFF0000FFFFFF002A2A2A00FFFFFFFF002A2A0000"
$"002A2A2A00FFFFFF0000FFFFFF0000FFFF002A2A2A00FFFFFFFFFFFF002A2A00"
$"002A2A00FFFFFFFF0000FFFFFF0000FF002A2A2A00FFFFFFFFFFFFFF002A2A00"
$"002A2A00FFFFFFFF0000FFFF0000FF002A2A2A00FFFFFFFFFFFFFFFF002A2A00"
$"002A2A00FFFFFFFF0000000000FF002A2A2A00FFFFFFFFFFFFFFFFFF002A2A00"
$"002A2A00FFFFFFFF00000000FF002A2A2A00FFFFFFFFFFFFFFFFFFFF002A2A00"
$"002A2A00FFFFFFFFFFFFFFFF002A2A2A000000000000FFFFFFFFFFFF002A2A00"
$"002A2A00FFFFFFFFFFFFFF002A2A2A00FF000000000000FFFFFFFFFF002A2A00"
$"002A2A00FFFFFFFFFFFF002A2A2A00FFFF0000FFFF0000FFFFFFFFFF002A2A00"
$"002A2A2A00FFFFFFFF002A2A2A00FFFFFF0000FFFF0000FFFFFFFF002A2A2A00"
$"FF002A2A00FFFFFF002A2A2A00FFFFFFFF0000000000FFFFFFFFFF002A2A00FF"
$"FF002A2A2A00FF002A2A2A00FFFFFFFFFF000000000000FFFFFFFF002A2A00FF"
$"FFFF002A2A00002A2A2A00FFFFFFFFFFFF0000FFFF0000FFFFFF002A2A2A00FF"
$"FFFF002A2A2A2A2A2A00FFFFFFFFFFFFFF0000FFFF0000FFFF002A2A2A2A00FF"
$"FFFFFF002A2A2A2A00FFFFFFFFFFFFFFFF000000000000FF002A2A2A2A00FFFF"
$"FFFFFF002A2A2A2A0000FFFFFFFFFFFFFF0000000000FF002A2A2A2A00FFFFFF"
$"FFFFFFFF002A2A2A2A000000FFFFFFFFFFFFFFFFFF00002A2A2A2A00FFFFFFFF"
$"FFFFFFFFFF002A2A2A2A2A000000000000000000002A2A2A2A2A00FFFFFFFFFF"
$"FFFFFFFFFFFF00002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A0000FFFFFFFFFF"
$"FFFFFFFFFFFFFFFF00002A2A2A2A2A2A2A2A2A2A2A2A2A0000FFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFF"
};
resource(1, "BEOS:L:STD_ICON") #'ICON' array {
$"FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFF00002A2A2A2A2A2A2A2A000000FFFFFFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFF00002A2A2A2A2A2A2A2A2A2A2A2A2A0000FFFFFFFFFFFFFF"
$"FFFFFFFFFFFF00002A2A2A2A00000000000000002A2A2A2A2A0000FFFFFFFFFF"
$"FFFFFFFFFF002A2A2A2A0000FF000000FEFEFEFE00002A2A2A2A2A00FFFFFFFF"
$"FFFFFFFF002A2A2A0000000000FEFEFEFEFEFE00FEFE00002A2A2A2A00FFFFFF"
$"FFFFFF002A2A2A000000FEFEFEFEFEFEFE00FEFE000000002A2A2A2A2A00FFFF"
$"FFFFFF002A2A0000FEFEFEFEFEFEFE00FEFE00FEFEFE002A2A2A002A2A00FFFF"
$"FFFF002A2A00FEFEFEFEFEFE0000FEFE00FEFE00FE002A2A2A00002A2A2A00FF"
$"FFFF002A2A00FEFE00000000FEFE00FEFE00FE00002A2A2A00FE002A2A2A00FF"
$"FF002A2A00FEFEFEFE00FEFEFEFE00FEFE00FE002A2A2A00FEFEFE002A2A00FF"
$"FF002A2A0000FEFEFEFE00FEFE00FE00FEFE002A2A2A00FEFEFEFE002A2A0000"
$"002A2A2A00FF0000FEFE000000FEFEFE00002A2A2A00FEFEFEFEFEFE002A2A00"
$"002A2A00FFFFFF00FEFEFE00FEFEFEFE002A2A2A00FEFEFEFE00FEFE002A2A00"
$"002A2A00FFFFFFFF00FEFEFE00FE00002A2A2A00FEFE00FEFE00FEFE002A2A00"
$"002A2A00FFFFFFFFFF00FEFEFE00002A2A2A0000FEFE00FEFEFE00FE002A2A00"
$"002A2A00FFFFFFFFFF00FEFEFE002A2A2A0000FE00FE00FE00FE00FE002A2A00"
$"002A2A00FFFFFFFFFFFF00FE002A2A2A00FE00FE00FEFE000000FEFE002A2A00"
$"002A2A00FFFFFFFFFFFF00002A2A2A0000FE00FEFE00FE000000FEFE002A2A00"
$"002A2A00FFFFFFFFFFFF002A2A2A00FE00FEFE00FE00FE00FE00FE00002A2A00"
$"002A2A2A00FFFFFFFF002A2A2A00FE00FE00FE00FE00FEFEFEFEFE002A2A2A00"
$"FF002A2A00FFFFFF002A2A2A0000FE00FE00FEFE00FEFEFEFEFEFE002A2A00FF"
$"FF002A2A2A00FF002A2A2A00FEFE00FE0000FEFEFEFEFEFEFEFE00002A2A00FF"
$"FFFF002A2A00002A2A2A0000FEFE00FEFE00FEFEFEFEFEFE0000002A2A2A00FF"
$"FFFF002A2A2A2A2A2A00FF00FEFE00FEFEFEFEFEFE000000FF002A2A2A2A00FF"
$"FFFFFF002A2A2A2A00FF00FEFEFEFEFEFEFEFE0000FFFFFF002A2A2A2A00FFFF"
$"FFFFFF002A2A2A2A000000FEFEFEFEFEFE0000FFFFFFFF002A2A2A2A00FFFFFF"
$"FFFFFFFF002A2A2A2A000000FEFE000000FFFFFFFF00002A2A2A2A00FFFFFFFF"
$"FFFFFFFFFF002A2A2A2A2A000000000000000000002A2A2A2A2A00FFFFFFFFFF"
$"FFFFFFFFFFFF00002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A0000FFFFFFFFFF"
$"FFFFFFFFFFFFFFFF00002A2A2A2A2A2A2A2A2A2A2A2A2A0000FFFFFFFFFFFFFF"
$"FFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFF"
};
resource(0, "BEOS:M:text/x-vnd.agmsmith.spam_probability_database") #'MICN' array {
$"FFFFFFFFFF0F2F2F2F2F0FFFFFFFFFFF"
$"FFFFFF0F2F2A2F2F2F2F2A2DD0FFFFFF"
$"FFFFD02A2F0FFFFFFFFF0F2F2A2DFFFF"
$"FF0F2AD00F0FFFFFFFFFFFD02A2D2FFF"
$"FF2F2FFF000F07FFFFFFD02AD02F2A0F"
$"0F2A0FFF00FF0F0FFFD02AD0FF0F2A07"
$"2F2DFFFF00FF0F0FD02AD0FFFFFF2F2F"
$"2F2FFFFF000F07D02AD0FFFFFFFF2F00"
$"2F2FFFFF0F0FD02A320F0FFFFFFF2F2F"
$"2F2FFFFFFFD02AD00F07070FFFFF2F2F"
$"D02A0FFFD02AD0FF0F0707FFFF0F2AD0"
$"FF2D2FD02AD0FFFF0F07070FFFD02A00"
$"FFD02A2AD0FFFFFF0F07070FD02A2DFF"
$"FFFF2D2A320FFFFFFF0F07D02A2DFFFF"
$"FFFFFF2F2A2D2F2F2F2F2D2A2D0FFFFF"
$"FFFFFFFF0F2F2F2F2F2F2FD0FFFFFFFF"
};
resource(1, "BEOS:M:STD_ICON") #'MICN' array {
$"FFFFFFFFFFFF2F2F2F2FFFFFFFFFFFFF"
$"FFFFFFFF2A2A2A2A2A2A2A2DD0FFFFFF"
$"FFFFD02A2F00FFFFFEFEFF2F2A2DFFFF"
$"FFFF2A32FFFEFEFE00FEFE322A2D2FFF"
$"FF2F2AFEFEFEFE0000FED02AD02F2AFF"
$"FF2A07FEFE00FEFEFED02AD0FEFF2AFF"
$"2F2AFFFFFE0000FE322AD0FEFEFF2A2F"
$"2A2FFFFFFEFEFE322A32FE0000FE2F2A"
$"2A2FFFFFFEFED02AD0FEFEFE00FE2F2A"
$"2F2AFFFFFF322AD000FE0000FEFE2A2F"
$"FF2A0FFFD02A32FEFEFE00FEFEFF2AFF"
$"FF2D2FD02A32FE0000FEFEFEFF322AFF"
$"FFD02A2AD0FFFEFEFEFFFFFFD02A2DFF"
$"FFFF2D2A3207FEFFFFFFFFD02A2DFFFF"
$"FFFFFF2F2A2D2F2F2F2F2D2A2D0FFFFF"
$"FFFFFFFFFF2F2A2A2A2A2FFFFFFFFFFF"
};

View File

@ -9,10 +9,10 @@ Choose 'Backup' if you wish to keep your old mail_daemon, E-mail preferences app
if [[ $RETURN = Purge ]]
then
# note: we don't remove libmail.so, because it doesn't matter here, and there may be symlinks and things
query -a 'BEOS:APP_SIG == "application/x-vnd.Be-POST" || BEOS:APP_SIG == "application/x-vnd.Be-mprf" || BEOS:APP_SIG == "application/x-vnd.Be-MAIL" || BEOS:APP_SIG == "application/x-vnd.agmsmith.AGMSBayesianSpamServer"' | grep -v "`/bin/pwd`" | xargs rm -f
query -a 'BEOS:APP_SIG == "application/x-vnd.Be-POST" || BEOS:APP_SIG == "application/x-vnd.Be-mprf" || BEOS:APP_SIG == "application/x-vnd.Be-MAIL" || BEOS:APP_SIG == "application/x-vnd.agmsmith.spamdbm" || BEOS:APP_SIG == "application/x-vnd.agmsmith.AGMSBayesianSpamServer"' | grep -v "`/bin/pwd`" | xargs rm -f
elif [[ $RETURN = Backup ]]
then
query -a 'BEOS:APP_SIG == "application/x-vnd.Be-POST" || BEOS:APP_SIG == "application/x-vnd.Be-mprf" || BEOS:APP_SIG == "application/x-vnd.Be-MAIL" || BEOS:APP_SIG == "application/x-vnd.agmsmith.AGMSBayesianSpamServer" || name == libmail.so' | grep -v "`/bin/pwd`" | xargs zip -ym /boot/home/maildaemon.zip
query -a 'BEOS:APP_SIG == "application/x-vnd.Be-POST" || BEOS:APP_SIG == "application/x-vnd.Be-mprf" || BEOS:APP_SIG == "application/x-vnd.Be-MAIL" || BEOS:APP_SIG == "application/x-vnd.agmsmith.spamdbm" || BEOS:APP_SIG == "application/x-vnd.agmsmith.AGMSBayesianSpamServer" || name == libmail.so' | grep -v "`/bin/pwd`" | xargs zip -ym /boot/home/maildaemon.zip
else
alert "No backup will be done. That means it's up to YOU to purge all of your old mail_daemons and ensure that the new version is the only version."
exit -1
@ -22,6 +22,8 @@ if [ -n "$TTY" ]
then
quit "application/x-vnd.Be-POST"
quit "application/x-vnd.Be-TSKB"
quit "application/x-vnd.agmsmith.AGMSBayesianSpamServer"
quit "application/x-vnd.agmsmith.spamdbm"
unzip -d / install.zip
/boot/beos/system/Deskbar > /dev/null &
else
@ -30,6 +32,8 @@ else
then
quit "application/x-vnd.Be-POST"
quit "application/x-vnd.Be-TSKB"
quit "application/x-vnd.agmsmith.AGMSBayesianSpamServer"
quit "application/x-vnd.agmsmith.spamdbm"
rm /boot/home/config/add-ons/mail_daemon/inbound_filters/AGMSBayesianSpamFilter
rm /boot/home/config/lib/libtextencoding.so
@ -39,7 +43,7 @@ else
# Reset the relevant parts of the MIME database
setmime -remove application/x-vnd.Be-POST; mimeset /system/servers/mail_daemon
setmime -remove application/x-vnd.Be-MAIL; mimeset /boot/beos/apps/BeMail
mimeset ~/config/bin/AGMSBayesianSpamServer
mimeset ~/config/bin/spamdbm
setmime -set text/x-email -preferredApp /boot/beos/apps/BeMail -preferredAppSig application/x-vnd.Be-MAIL
setmime -set text/x-vnd.be-maildraft -preferredApp /boot/beos/apps/BeMail -preferredAppSig application/x-vnd.Be-MAIL
setmime -set text/x-partial-email -preferredApp /boot/beos/system/servers/mail_daemon -preferredAppSig application/x-vnd.Be-POST
@ -64,6 +68,9 @@ if test ! -e ~/config/lib/libssl.so && test -e ~/config/lib/libssl.so.0.9.7; the
ln -s ~/config/lib/libcrypto.so.0.9.7 ~/config/lib/libcrypto.so
fi
# Set up the spam database manager file types and sound file names, make spam indices.
spamdbm InstallThings
# Launch prefs if this is a new install of MDR
if test ! -e "/boot/home/config/settings/Mail/chains"; then
/boot/beos/preferences/E-mail &