Spam Filter 2.5.2.3 ------------------------------------------------------------------------ Plugin for Miranda IM 0.4.3 and + Plugin Info: ---------------------------- | Version: 2.5.2.3 | Filename: spamfilter.dll / spamfilterW.dll | Author: H. Herkenrath (hrathh at users.sourceforge.net) | Description: Filters out advertisments, robot messages and disliked messages | such as hoax messages.Filters out spam messages from contacts Contents: ------------------------------- | Filter Improvement, Features, Requirements, Usage, | Spam Definitions, Installation, Bugs and Wishes, Filtering Tips, | To-Do List, Version History, Thanks, Translation, License and Copyright Filter Improvement ---------------------- -> Still receiving spam? If you receive spam messages after installing this plugin which are not filtered out just mail the text of the spam message to me and I will integrate some bad phrases out of it immediately. If the filtering of that message can't be done via bad phrases I will try to find another way and integrate that way, too. -> New filtering ideas? If you have some other spam filtering ideas please mail me. -> Bugs? If you find any bugs please tell them to me via mail. So I don't have to look everywhere around to find them. ;-) -> Patches or Extensions? If you are a developer and/or know how to code feel free to send me patches or extensions to the code. The best way is via e-mail. I really appreciate it. :-) If you need extensions to the API please contact me, too. -> Filtering in all languages?! There are already bad phrases for the following languages: English, German, French, Russian, Portuguese (Brazil), Chinese (Traditional) I would love it if this list could be extended further. It is a little difficult to speak and understand all languages of this world at the same time ;-) ...and if you speak a language that I don't... (and I think that are very much ;-)...) please send some bad phrases in your language to me. It would be nice if spam could be filtered in all languages, but I need some help... please... :-) Also feel encouraged to release your own Spam Definitions on the File Listing. -> Reporting spam log file?! You can also help me via sending your spam log file to me. So I can look for new/better bad phrases. Such a log file can be created with the spam logging feature. It doesn't include any data beside the spam messages sent to you. I will look at it and intergrate some more bad phrases out of it to improve the filter quality. -> New bad phrases? If you have some bad phrases to add to the existing lists please mail them to me, too. I will check the bad phrases and integrate them immediately. Features ---------------------- + Filters out incoming spam messages + Spam filtering with all protocols + Which messages are declared as spam is changeable + Improved spam filter (pretty accurate) + Recognizes also URLs with spaces + Supports Regular Expressions (RegExp) in its word filter (really powerful!) + Spam handling: either mark read or delete messages + Spaming contacts get automatically removed if there are no items in history + Spammer name/id auto ignoring + Easy adding of customized bad phrases + Spam alert via Sound or Popup (Popup plugin is needed for this feature) + Spam message logging to file Supported file formats: TXT, LOG, CSV, XML (including XSL stylesheet) + Supports "ballon tips" for error display + Press control key to avoid messages to be checked for spam + Fully configurable with many options + Filter can be disabled temporarily on the options page + Large list of default bad phrases (about 80 well chosen english phrases at the moment) + Full translation support (default bad phrases, too) + Available dialog languages: English, German + Available Spam Definition languages: English, German, French, Russian, Portuguese (Brazil), Chinese (Traditional) + Provides spam checking service functions for other plugins + Auto-Updates for Spam Definitions using Updater plugin + Full Unicode support + Automatic installation of all files, just unzip into Plugins directory + Supported plugins/tools: Miranda Installer, Popup/PopupPlus/YAPP, DatabaseEditor++, Updater, Variables Plugin (http://www.cs.vu.nl/~pboon/projects.htm), Trigger Plugin (http://www.cs.vu.nl/~pboon/projects.htm), Icons Library Manager (IcoLib), Colour Picker, OSD Plugin/WannaBe OSD, Custom Profile Folder Plugin, MultiWindow Contact List (extra icon) Requirements ---------------------- -> Miranda IM 0.4.3+: Miranda IM is needed in the version 0.4.3 or greater. -> Popup Plugin 1.0.1.9+ (optional): For using the popup function when a spam message arrives it is necessary to have the popup plugin installed, At least version 1.0.1.9 or greater. PopupPlus is supported, too. You need PopupPlus 2.0.3.97 or later. -> Variables Plugin 0.2.0.23+ (optional): For using variables in outgoing reply messages you need to have the Variables Plugin installed, At least version 0.2.0.23 or greater. Usage ---------------------- "Spam Filter" options can be found here: "Options" -> "Events" -> "Spam Filter" The sound file which is played when spam arrives can be changed in: "Options" -> "Events" -> "Sounds" Mark-Read feature: If you chose "mark spam messages as read" in the options recommended option) the spammer shows up in a half-visible way on your contact list. However, the incoming message notification is blocked. When you close Miranda IM all half-visible (not-on-list) contacts get removed automatically! To avoid the online notification go to the Ignore options and activate "suppress online notification" for unknown contacts. If you dislike this behaviour choose "delete spam" (but be aware that you might loose messages). Un-Ignoring spammers: Recognized spammers can be easily unignored usinf the options. Just go to "Options" -> "Events" -> "Spam Filter" and click on the "Spammers" button. If a unknown user sent you a message and you want to be sure he is no longer watched by the filter, just click on "Add user to contact list" in the contact's menu. (This only works if you chose "mark spam as read".) Spam Definitions ---------------------- "Spam Definitions" are a set of files which Spam Filter uses to detect spam. The files contain well selected words/phrases etc. which a common in spam messages. The Spam Definitions are mostly used by the "Advertisment Filter". The Spam Definitions make up the default filter behaviour of Spam Filter. You normally should not need to modify these files. Instead you should use "Options" -> "Events" -> "Spam Filter" to configure your personal filter words. You can install as many Spam Definitions as you like, but you should at least install one package in your language. The filter will not work as it should without any Spam Definitions. For each languge package you install the plugin can filter spam messages. For example, if you install the "German" and the "English" packages, most German and English spam can be filtered. Spam Filter can only filter for those languages it has data sets available. Spam Filter loads all Spam Definition Files it can find in the directories. All contents of all files are considered when a message is checked for spam. Spam Filter does not know which language the message is, it simply compares its contents. The exactness and accuracy of Spam Filter depends on its Spam Definitions. If the Spam Definitions are not good, the filter is not exact. The current Spam Definitions can be viewed in the "Spam Filter" subdirectory of the Miranda IM folder. How it works: There are different Spam Definition languages available because Spam Filter needs different data sets (e.g. bad words) for the different languages. This is necessary, because bad word filtering consits only of testing if a word exists in the message or not. When there are enough bad words in the message it will be seen as spam. If Spam Filter would only have a list of English bad words (like "earn money",...) it would only be able to filter English spam, since the words "earn money", etc do only exist in English messages. To filter German spam another data set is needed for the filter with e.g. "Sonderangebot", which again probably never will exist in English spam messages. The more Spam Definition languages you have installed, the more spam you can filter. Spam Filter does not detect the language of a message. It simply loads all bad words it can find in the directoriy and checks if any of the contained bad words do match with the message. If they match it is spam, if they do not, it is no spam. The file names are not important for the filter (only extension and subdirectory is considered). They are named "English", "German", etc so that it is easier to determine what they contain. Spam Filter checks if any contained word of the Spam Definitions matches with the message. It counts how many matches it can find and then checks if the matches are enough to consider the message as spam. If you get a spam message in a language for which you don't have Spam Definitions installed, it won't be a problem. It won't break anything, nor will your PC be blown up, or sth. like this... ;-) Spam Filter simple won't be able to filter this message. The message will be detected as no spam, because there are no data sets available. Example: If you receive, for example, French spam and you don't have the French Spam Definitions installed. Spam Filter will then load all bad words it can find in the Definitions to detect if it is spam. But, no matches will be found, because French spam does normally not contain English or German words. French spam typically contains French words... ;-) Spam for which you don't have any Spam Definitions installed can only be blocked by the Robot Filter (if enabled additionally) or if (by chance) the message contains some English bad words, or some common URLs (like .org, .com), etc. Installation ---------------------- The easiest way to install this plugin is to use the installation tool "Miranda Installer" (sadly not available anymore). If you don't want to use that tool you can install this plugin manually, too. Just copy all the contents of the zip-file as they are into the "Plugins" directory in the Miranda IM folder. "Spam Filter" will detect the files and move them into the appropriate directories on it's first run. You can also do all the installation by hand, if you want to: Main Plugin: Copy the file "spamfilter.dll" into the "Plugins" directory in the Miranda IM folder. If you would like to use Unicode you need to copy the file "spamfilterW.dll" instead. Using Unicode will only work for Windows NT4/2000+. Support for Regular Expressions: If you would like to use Regular Expressions with Spam Filter (recommended) then you should copy the file "pcre.dll" (RegExp DLL) into the Miranda IM directory. Spam Definitions: The contents of the "Spam Filter" folder from the zip file, including its subdirectories, need to be placed into a new created "Spam Filter" subdirectory in the Miranda IM main directory. The filter will not work as it should without any Spam Definitions. Documentation: The txt-files should be moved along with the sdk-zip into the "Docs" directory in the Miranda IM folder. Sounds: The wav-files should be moved into the "Sounds" directory. They will get recognized automatically and be added to the sounds list. That's it! Bugs and Wishes ---------------------- Feel free to mail me your wishes about "Spam Filter" and tell me all the bugs you may find. Please tell them to me via mail so I don't have to look everywhere around to find them. ;-) My email address is: hrathh at users.sourceforge.net # I would love it if you could mail me your translated bad phrases in your language. I would be nice if spam could be filtered in all languages, but I need some help, please... :-) ... Or perhaps you want to add some bad phrases to an existing list? That's also possible... ;-) # If you have any bad phrases that you want to be integrated into the standard bad phrases of the next release of "Spam Filter" please mail them to me. # If you think a string is not grammatically correct or something please mail me, too. (English is not my first language.) Filtering Tips ---------------------- #1: WebAware is often used by ICQ spambots, if you disable it, you'll not get as many spam as before. Goto: Options -> Network -> ICQ Privacy #2: Perhaps the following tip is useful for users that don't use latin letters on the system due to their language: Tip by ZaNuDa: (thanks very much!) "I have a good idea to filter out some of the spam messages sent to me by robots. These programs are plain enough and insert in their messages my nick from ICQ registration data regardless of my country and native language. My nickname and name is written on the ICQ site in transliteration, with latin letters. Russian ICQ users writing to me never use these phrases in Latin transcription. So I know, that when I receive message beginning with one of these phrases, it is probably spam sent to me by a robot. So I've added both phrases to customized the bad phrases list. And it works for me." To-Do List (random ideas) ---------------------- - Some events in are not yet Unicode enabled in spam filter (Miranda unicode event documentaion is quite crappy...not existant) ? Add a main menu item "Show spam log" (initially deactivated) or "Show Spammers", user can enable it on MenuOrder options (currently not possible using menu API of miranda) ? Button "Recognize this message as a spam" on message dialog so that it will be easier to add patterns to the list without going to the options (suggested by PanTzeR) >> this could show a editbox containing the message content >> after clicking OK the editbox content is added as new bad word/disliked word -> not a good idea IMHO, since bad words should not be taken out of one single message Instead: the option "Mark this contact as spammer" should be used -> MS_SPAMFILTER_SHOWFILTERDIALOG does much of this (show spam filter options) -> message dialog should/could offer support for this ? Extend the Popup message text to contain more information than just "Advertisment Alert!" -> similar to log file items -> making it customizable (suggested by Dominik Sebald) -> I don't know if this is really necessary... -> Problem: If the popup contains the mesage text the behaviour is almost the same as without spam filter :-) ? "Filtered Spam" Window where all filtered messages are displayed (similar to log file, but no separate file) >> The user can choose which one he would like to delete >> and which ones he would like to be put back into the contacts history (better than a "show log file" menu item) ? Filtering based on user info data, contact details (really necessary?) -> quite difficult, because user details are first available after the first message was received and added to db (for new temporary contacts), only UIN is first available -> Solution: need to watch Nick setting, or wait for proto acks ? Add filter for SMS Plugin(s) >> (Spam Filter offers spam checking services... >> so the better way would be if the SMS Plugins would support Spam Filter) ? Add filter for YAMN plugin (e-mail) >> (Spam Filter offers spam checking services... >> so the better way would be if YAMN supports Spam Filter) ? Bayesian method: -> will probably be "Spam Filter v3" (really necessary? I think it's too much...) >> This feature will be added additionally to the phrase filtering method (-> functioning as expert option) >> Perhaps as an half bayesian filter, which means that spam database will be shared >> and only few people (around 100) are allowed to maintain it - Integrate Bayesian filtering (http://www.paulgraham.com/antispam.html) (thanks to InvisiBill) - Change to percent (%) spam detection: messages declared as spam at 75% spam probability >> Save spam database on server to share the training data Version History ---------------------- 2.5.2.3: - Some internal improvements - Fixed: temp file sometimes resulting from VerInstallFile API was not deleted - Removed: reply sending delay (caused problems) 2.5.2.2: - Bug-Fix: Check for unicode core was wrong (spamfilterW.dll) - Some other minor changes 2.5.2.1: - Minor fixes and improvements - Fixed automatic installation routine for easy installation and Updater support (just extract everything out of the zip-file into the Plugins folder, all files will get moved accordingly) - Bug-Fix: Unicode calls to VariablesPlugin were wrong - Bug-Fix: Corrected some problems with spammer info dialog - Removed spammer group delete question - Improved: handling of users awaiting security code - Added debug symbols (PDB) into SDK package 2.5.2.0: - Robot Filter improvements - Also allows quotes in securitycode reply - Some minor internal improvements - Revised default message texts - Some unicode fixes - Fixed ColourPicker support - Message send delayed by short time to allow nick to be retrieved - Enabled workaround for YouWereAdded event recv - Added %triesleft% variable for message texts 2.5.1.2: - Some minor improvements - Fixed unicode message sending (and receiving) - Revisited string functions (probably introducted new bugs...) - Fixed possible mem leak in string lists - Fixed possible memory corruption in string lists - Fixed crash on exit 2.5.1.1: - Improved: Invalid RegExp error to be a bit more informative - Some minor internal changes to robustness - Fixed some visual glitches on Spam Definitions window on WinXP - Fixed a critical-section corruption - Fixed/Updated Custom Folders Plugin support (new version needed) - Added checks for new IcoLib version 2.5.1.0 - Packaged with unicode DLL (spamfilterw.dll) -> highly experimental!!! - Auto-Updates for Spam Definitions using Updater (uses file listing) - minor improvements - fixed version resource - shows error when miranda version is not supported or db3x too old - remembers original NotOnList-state of spammers - Bug-Fix using MS_PROTO_ADDTOCONTACT (workaround for problem in core) -> fixes Quick Search incompatibility - Updated icolib support for latest version (requires 0.0.1.0) - "Mark as spammer" not shown for chatrooms - The bug that YouWereAdded messages were sent to marked spammers was a problem in ICQ.dll this should be fixed in newer versions of the ICQ protocol (newer than 0.3.6.14) - Fixed: Invalid Regular Expressions in Spam Definitions are now notified - Bug-Fix: Auto-Ignore spammers were not shown on the spammers list - Bug-Fix: Sometimes short messages were considered as multiple received messages - Bug-Fix: Memory corruption problems with the log file (and some other minor logging fixes) - Bug-Fix: Auto-Replies were sometimes not sent out when "Delete Spam" was enabled 2.5.0.0 NEW FEATURE: Real Unicode Support! -> two DLL files: spamfilter.dll and spamfilterw.dll -> spamfilterW.dll will only load if Unicode *is* supported (e.g. Win2000 and higher...) -> spamfilter.dll will only load if Unicode *is not* supported (Win95/98/ME) -> spamfilterW9x.dll uses the unicode layer for Win95/98/ME (highly experimental version) It needs unicows.dll in Miranda IM directory. -> Spam Definition files are saved/loaded as UTF8 (auto-converting at first-run) - Updated: Variables Plugin support (now supports Variables v0.2.0.0) - Added: Support for help dialog of Variables Plugin - Added: The "Missing Spam Definitions"-Warning can be deactivated for the future by pressung the Ctrl-Key whn the message occurs (requested by kopec) (Be careful!: Should normally not be used) - Enhanced: Functionality of MS_SPAMFILTER_REGISTERMESSAGETYPE - Bug-Fix: tiny memory leak with the regexp help button icon - Bug-Fix: "Variables" Plugin text was not always freed (mem leak) - Bug-Fix: fixed possible memory leaks with realloc when low memory - Improved: spammers file format - Fixed: fixed a typing mistake without any effect - Bug-Fix: fixed error handling for calls to GetWindowRect (did not have any effect) - Bug-Fix: Corrected wronmg calling of TreeView state (however no effects) - Bug-Fix: fixed large spam icon (res id was wrong) - Bug-Fix: OSD support did not work yet..commented out...oups :-) - Bug-Fix: Option "Allowed Spam per User" on Advertisment Filter dialog was not synced correctly - Bug-Fix: OpenFile-Dialog was not shown correctly on WinNT4 (I hope it does now) - Bug-Fix: Restored full support for Win95 (GetLongFileName is now run-time linked) - Bug-Fix: special chars in XML logging header were sometimes not replaced correctly - Bug-Fix: samll memory leak in XL logging logic - Bug-Fix: Read/Sent flags got corrupted when making events as unread - Fixed: Updated old part in the docs (reported by PanTzeR) - Added: Note is shown in options when not all SpamDefinitions are available - Improved: some other internal tweaks - Extended: english teaser definitions - Modified: translation strings (see SpamFilter-Translation.txt) - Improved: Made it more robost against database curruption - Improved: Removed 256 sized text buffer for MsgType box (possibility of buffer overrun) - Improved: Internal stringlist handling on low memory conditions (string pairs) - Improved: revisited log file code - Bug-Fix: robot filter instruction and answer text could not be changed - Added/Fixed: MBCS and surrogates support for far east (improved locale handling, too) - Fixed some issues with pointer arithmetic - Code robustness updates - Impreoved: further increased filtering performance by caching - Cleaned up SetSpammerManually code - Strings modified (see SpamFilter-Translation.txt) - Corrected some typos in strings - Minor Bug-Fix: horizontal extent of list box was sometimes miscalculated - Added: Auto-Import feature to convert old ANSI files of old Spam Filter 2.x into the new UTF-8 format (needed to support Unicode properly) IMPORTANT!: be sure to make a backup of any self-defined Spam Definitions. - Improved: removed static variables in DlgProcs/WindowProcs - Added: bad words cache to further improve performance - Added: Real Unicode support (separate files: spamfilterW.dll is unicode, no Win9x/ME supported on Unicode) including BOM support for text files - Added: LogFile write UTF-16LE BOM into txt/log files to indicate correct Unicode format for Rraders as Notepad (only in Unicode mode) - Improved: Spam Definitions are only validated when Advertisment Filter or Disliked Messages Filter is enabled - Added some documenation about Regular Expressions (RegExp), how to use them and a code table (quick guide for beginners) (accessable via a button on the add to list dialog) More info: http://perldoc.perl.org/perlrequick.html - Added: Now shows a error message when the reply messages can't be sent (due to network errors etc.) - Added: Support for Custom Folder Plugin - new service: write log file - new service: send_automated_contact_message (including rec, error output) - new service: show generic error_message (out of memory?, message not sent) - Added: now uses Miranda's simple memory problems catcher - Updated: PluginInfo of Plugins options - got rid of AgressiveOptimize.h: (reason: http://forums.miranda-im.org/showthread.php?t=4863) does not work on DEP systems (= data execution prevention). As for optimizing. Use /O1 (optimize for size), disable global optimizing and disable the "optimize for Windows 98" feature of the linker (/opt:nowin98). This can considerably bloat the resulting DLL/EXE for (a small) performance gain on Win 9x, but does nothing on NT based systems. - support new variable in Variables Plugin: %number_of_auto_ignore_users% - Repackaged: in default zip is only english spam language - Added: Trigger Plugin support - Added: Support for extra icon on contact list (indicating spammer) - Added: Spammers list manager - Added: Auto-Import of old spammers of v2.0.1.0 2.1.0.0 - Added: pending auth requests are automatically denied if contact is ignored - Added: preparation for taken YouWereAdded events into spam detection - Added: Support for OSD Plugins beside Popup Plugin support (requested by Schommel) - Bug-Fix: Configure dialogs were not closed properly when created not as modal - Bug-Fix: memory leak in the string lists, the stringlist main object was never freed - Bug-Fix: stringlist converting to string did not work correctly (not zero terminated) - Bug-Fix: internal stringlists are now thread safe (using CriticalSections) - Bug-Fix: pcre.dll is now copied/installed correctly (path was wrong formated) - Bug-Fix: Regular Expressions were not compiled correctly -> Regular Expressions should now really work in default installation :-) - Bug-Fix: possible crash in recv chain filtering -> empty contact was deleted before ICQ could have the chance to add its message (bug only occured when "delete spam messages" was enabled) - Bug-Fix: contact that were set on the spammer list were never really hidden -> ICQ did always reset the Hidden attribute; this is now fixed - Bug-Fix: small memory leak in AutoIgnore settings loading - Bug-Fix: Now question message will not be sent when spammer just reached it spam limit - Bug-Fix: reply messages are ordered correctly in db/history - Bug-Fix: No longer sending "YouWereAdded" notification when a spammer is added to ignore list (reported by PanTzeR) -> ICQ sent a confirmation automatically when a user was made permanent; now this is prevented - Bug-Fix: Spam Log did not always mention "user ignored" (log written too early) - Bug-Fix: contacts event was never filtered - Bug-Fix: tiny problem with hContact of auth requests - Bug-Fix: Corrected some hidden Access Violations in MessageTypes box - Bug-Fix: "Disliked Messages Filter" now really works (reported by zk, Tomaso, PanTzeR) * message text never got allocated * did not work for contacts that passed the robot filter previously * some wrong setting names were used * hoax texs were checked wrongly * hoax texts were not loaded (corrected file ext: .sfw -> .sft) >> Ouch....quite crappy thing...did I really code that? :-o Anyway...now it's finally fixed :-D - Bug-Fix: Filter strings of Log-Browse dialog were not allocated correctly (stringlist access violation) - Bug-Fix: AddToHistory option of DislikedMessagesFilter did not get disabled when other options got disabled - Bug-Fix: If "Add the reply to contact history" was selected, the history showed the reply before the spam message (reported by Tomaso) - Bug-Fix: "Show log" button did never get activated (broken in v2.0.1.0) - Bug-Fix: relative paths for spam log were broken - Bug-Fix: some minor UI improvements - Bug-Fix: memory leak in the DislikedMessages options (bold font was not destroyed) - Bug-Fix: when a filter window was opened using the SF-API without parent then the window would not be destroyed on exit of Miranda (extended/modified SF-API) - Bug-Fix: added some NULL checking where I forgot it - Bug-Fix: added checking for correct db setting type - Bug-Fix: "Apply" button was sometimes enabled although no options were changed for message types - Improved: now the robot filter only workd for normal sending and receiving contacts - Improved: stringlist loading speed (just a bit) - Improved: spam detection speed when "show popup" is disabled (just a bit) - Fixed/Improved: some small internal tweaks and resource cleanup - Fixed: now uses UniqueID instead when renaming a contact to set it on the spammers list -> this fixes: spammers added as "'Unknown Contact' (Spammer)" (reported by PanTzeR) - Modified: "Random" button in robot filter options now creates always the same length - Improved: SPAMCHECKDATA strcuture to be more cleanly implemented => Code is now fully tested on different situations => Code was additionally fully checked for memory leaks and/or memory access violations 2.0.2.0 - FEATURE!: Support for Regular Expressions (using pcre.dll; included) -> Support for Regular Expressions is disabled when the DLL (pcre.dll) is not present -> Word filter is now much, much, much more powerful! - Added: RegExp DLL (pcre.dll) is installed automatically on first run (In Miranda directory) -> including DLL version checking - Added: some little more documentation about the Spam Definitions (readme and in the files) - Added: now the UniqueID of a protocol is appended to the nickname in the spam log (reported by Lastwebpage) - Added: support for Updater to update the SpamFilter plugin - Bug-Fix: Making use of EnterCriticalSection to gain thread safety - Bug-Fix: avoiding of some string buffer overruns in some rare situations (if ever) - Bug-Fix: Message Types box gets sorted properly - Bug-Fix: popups did not work (broken in 2.0.1.0) - Bug-Fix: menu item icon was not updated when icons were changed (IcoLib support) - Bug-Fix: fixed some memory leaks of contact name strings - Extended: Documentation of Spam Definitions and how they work - Fixed: corrected some strings (see SpamFilter-Translation.txt) - Fixed: corrected wrong naming of teaser text files (.sfw -> .sft) - Fixed: known spammer file now allows proto|uniqueid and proto|nick (if available) - Modified: few changes in the strings (see SpamFilter-Translation.txt) 2.0.1.0 - Bug-Fix: "Allowed spam per User" could not be changed (reported by ATom) - Bug-Fix: problems with RTL support (:text) -> I thought RTL support would only work on Arabic/Hebrew versions of windows, so I enabled it.. In fact it works on most Win2000/XP versions as I found out (not really good documented :-/... they only speak of "RTL enabled windows versions") - Bug-Fix: minor memory leak with the message type icons - Bug-Fix: layout confusion with Spam Logging group (reported by Romx) - Bug-Fix: auth requests were not handled correctly when setting a spammer manually - Bug-Fix: "Allowed bad phrases until spam" was ignored (ATom) -> caused just by a small typo in the code :-/ - Bug-Fix: line breaks and spaces were not cleared correctly in incoming messages (silly typo in code :-/) -> this fixes the following: * normal words as security code were not recognized as right answers (reported by Steffen Kaufmann) * sometimes the reply for a good answer was not sent (reported by ATom) - Bug-Fix: using mir_snprintf to avoid string buffer overruns - Bug-Fix: first message from NotOnList user was from "(Unknown contact)" - Bug-Fix: PreSpammers were not unique, now they are saved as "Proto|Address" - Modified: Removed SFFreeMemory, replaced with miranda_sys_free (m_spamfilter.h) - Modified: pszSection in MESSAGETYPEDESC can now really be NULL (m_spamfilter.h updated) - Modified: AutoIgnore feature now uses real unique user ID - Added: IcoLib support - Added: Support for "ColourPicker" to choose Colors of Popups - Added: Support for Netlib logging (Netlib_Logf) -> spam filter actions on messages are now listed in the network activity log - Added: ability to reset the AutoIgnore feature - Improved: Better looking "Mark as spammer" dialog - Improved: minor performance improvements, code cleaning, DB settings cleaned up. - Changed: services for message types (no backward compatibility to 2.0.0.0, sorry -> devs, please update "m_spamfilter.h") -> detecting default settings for checked protocols/events is now possible (might be useful for IRC?) - Added: New event for protocols to determine if they want to be checked for spam by default: ME_SPAMFILTER_PREADDNEWMESSAGETYPE - Modified: Functionality of MS_SPAMFILTER_SETSPAMMANUALLY and MS_SPAMFILTER_GETHANDLE ("m_spamfilter.h") - Fixed: phone number default definitions (all large numbers were detected as phnone codes) - Fixed/Extended: translation strings (Translattor see "SpamFilter-Translation.txt") => all known bugs should now be fixed :-) 2.0.0.0 - Almost all got changed/fixed/improved/extended/... :-) - Added support for logging in XML format (including XSL stylesheet) -> Very clean XML format used -> Characters replaced: < with < , > with > , & with & , " with " , ' with ' - Fixed: Layout mistake on options page - Added: Recognition of CAPITALIZED messages (thanks to InvisiBill) - Some other small changes and cleaned up code - Added possibility to change spammers (on ignore list) - Added extra buttons for "filter settings" - Added error handling for log file edit box and removed read only flag - Fixed: "Select log file" dialog was shown sometimes on re-activating filter - Removed unnecessary error message ("Please select bad phrase to delete") - Added (better) error handling for "Allowed bad phrases" box - Improved/Changed German translation completely - Added more Russian bad phrases -> Many thanks to ZaNuDa - Added new section "Filtering Tips" to readme file - Added recognition support for phone numbers (Idea by ZaNuDa) - Spam Filter now behaves as a filter protocol -> This makes the filter more faster than before - Moved together the filter behaviour "delete message" and "delete contact" -> The contact now gets automatically deleted if it has no other messages in history - Fixed: Apply button got always enabled when options were loaded - Now uses better/newer LoadImage function instead of LoadIcon function to save memory -> Icons now get unloaded to save memory - Added Spam Definitions instead of using a langpack string - Bold heading for groups in "Configure..." options, too - Added automatic adjustment of "Ignore" settings - Improved: Icons in spam popups are now skinned icons of Miranda IM for message and URL icon (with layered spam icon on it) - Improved file size - Dropped "one phrase message" recognition -> Was not a good indicator for spam -> Did not work with languages which do not have (or use) spaces - Added support for "PluginUninstaller" - Added "Allowed spam messages" feature - Complete new phrase list algorithms for easy phrase list loading/saving and checking - Changed formating of sounds (Added: "Spam Filter: " prefix) - Added "empty message" detection - Added "Multiple message with same content" detection (Idea by Popovn) - Recognition of bad phrases that are formated differently (like "\/!@gr@") and have kinds of things in them (thanks to InvisiBill) - Added disliked messages filter Filter out something like: "Please send this message to all of your friends" or "please forward") (Idea by Johannes) - Added button "Show log" to make opening the log file more easier - Changed "Select log file" dialog to use the standard "Save as" dialog instead of the "Open" dialog - Improved log file format - Also looking for "good phrase(s)" - Recognition support for phrases with s p a c e s (included in "different formated phrases" check) - Added: Position of configure dialogs gets saved - Added: Now also checks for auth requests - Some resource improvements - Added the possibility to manually avoid spam check via pressing the control key when recieving a message - The Spam Filter now is implemented as a proper protocol filter plugin - Improved filtering speed - Added: Automatic installation of docs and sound files on first run - Added: Auto-Import feature for bad phrases used with v1.0.4.0 - Added: DatabaseEditor++ support - Extended: Phrase list editing; the list boxes now support horizontal scrolls if needed, drag and drop for rearranging the phrases, context menu for fast editing, possibility to input long phrases, etc... - Added: "Variables" plugin support - Added a second default sound file - Added: Log file control now makes use of the auto complete feature - Added: Relative paths can be used in the log file edit control - Added: Comma Separated Values format logging - Added: Robot Block functionality similar to "StopSpam" plugin: Further enhanced technic and cleaner implementation. - Translators: There are a lot of changes in the strings ;-) - Doubly recieved messages can be removed For plugin developers: (Only ;-) ) - Updated "m_spamfilter.h" (Almost all is new) - Added "m_spamfilter.inc" for Delphi developers 1.0.4.0 - Two entries with the same words in the customized bad words list are no longer possible - Added Feature: Spammer name/id remembering and blocking - Added Feature: Spammers who are not recognized can be added to the spammers list via right click (thanks to Rudi) - Added version information to DLL file - Changed logging output - Added txt file item on select log file dialog - Improved conrolling of the options page via keyboard - Improved layout of the options page - Extended URL-recognition: Now recognizes also URLs with returns in between (thanks to Rudi) - Extended/Improved default bad words very much (strings, too) -> now 78 -> Please update your language pack (if you use one) - Extended German bad words (see "SpamFilter_Translation.txt") - Extended Potuguese (Brazil) bad words (thanks to Paulo) - Updated German and Chinese (Traditional) dialog translations (thanks to Wongsen for the Chinese one) - Fixed: The string "Log spam messages to file:" was displayed in German (thanks to Wongsen) - Fixed: Crash on selecting logging file (thanks to Genionhandy2 and Bumper1) - Fixed: URL-Recognition and one word message recognition didn't work currently (thanks to Wongsen and Rudi) - Fixed: Small bug with the open file dialog - Fixed: URLs are now completely checked and saved to log file - Updated service functions for plugin developers - Improved error checking of "Add bad word" dialog - Improved error checking for "Select log file" dialog - New/Improved icons (smaller file size, too) - Improved default settings - Some other small changes - Updated screenshot on website 1.0.3.1 - Changed/Improved icons for spam popups - Nearly complete rewrite of the spam recognition - Fixed: Log file wasn't written if selected directory didn't exist anylonger - Fixed: Log file option got always unchecked (also if enabled) - Fixed: Sometimes the wrong bad word got selected on inserting a customized bad word - Added bad words are now checked for occurence in default list - Changed some strings - Changed some German translation strings - Updated Chinese (Traditional) strings (thanks to Wongsen) - Updated Chinese (Traditional) bad words (thanks to Wongsen) - Extended English default bad words (strings, too) -> Please update your language pack (if you use one) - Changed/Improved included sound file and new file name -> Please update your sound settings (thanks to Wongsen) - Extended German bad words - Added "Activate/Deactivate" item in "PopUps" submenu - Improved URL filtering: URLs with spaces (h t t p :) are now included in the filter, too (thanks to Rudi) - Some preparing for contact name/id collecting/blocking (coming in v1.0.4.0) - Changed/Improved documentation and removed some mistypings - Some other small/big internal changes/improvements - FOR PLUGIN DEVELOPERS!: Added more service functions! -> Activation service functions -> General spam checking service (with hContact) (For details see "m_spamfilter.h") 1.0.3.0 - Improved error checking for "allowed bad words" control - Fixed: Customized bad words sometimes got messed up due to wrong pointers (thanks to Lúcio and Wongsen) - Fixed: Customized bad words now get correctly allocated and released - Fixed: Default settings did not now fit for all languages (thanks to Wongsen) - Improved performance and bad words count loader - Improved spam filter - Merged "Is URL" and "Contains URL" part - Improved log file output - Extended default bad words (Updated strings, too) - Added Chinese (Traditional) bad words (thanks to Wongsen) - Changed some English strings (Updated strings, too) - Changed some German translation strings - Added Chinese (Traditional) dialog strings (thanks to Wongsen) - Improved/Changed documentation - NEW FOR DEVELOPERS: Added service function for bad words checking in other plugins (For details see "m_spamfilter.h") - Some other small changes - Updated screenshot on website 1.0.2.4 - Fixed: Non-spamming contacts sometimes got hidden while sending messages to them (thanks to Javier and Tomaso) - Changed some strings in German translation 1.0.2.3 - Fixed: Button "Cancel" in "Add bad word" dialog showed always the German variant "Abbrechen" (thanks to Jef) - Fixed: Database values now get freed (Oups, I forgot that...) - Fixed: Auto-Deleting message and auto-deleting contact now works without outputing empty message dialogs! (Nobody noticed?) - Changed "Add bad word" dialog for people who don't read documentation files ;-) - Changed some translation strings - Improved filter performance - Small changes in translation documentation 1.0.2.2 - Improved: Smaller file size (improved compiler settings) - Changed documentation files - Reprogrammed error checking for "Add bad word" dialog - Reprogrammed key support for customized bad words list box (Now uses subclass procedure) - Extended recognized keys in list box: Now supports "del", "-", "+", up and down keys - Changed Portuguese (Brazil) bad words (thanks to Lúcio) - Improved dates/times in logging: -> Now uses system (language) default format for formatting dates/times -> Removed translation strings for this - Fixed: Corrected small checking bug with "Allowed bad words until spam" (thanks to Lúcio) - Fixed: Options items are now correctly grouped - Fixed: Spam logging didn't work without Path plugin - Some internal improvements/performance optimizations - Some changes with the German translation - Improved spam logging output: more detailed and cleaned up - Optimized/Faster spam logging - Improved/Changed documentation - Some other small/minor changes 1.0.2.1 - Improved behaviour of "Allowed bad words in messages" spin control - Changed dialog font to same as in Miranda IM core - Added expert options support for logging options - Changed Path Plugin dependency (Path plugin is now optional) -> You do not need to have the Path plugin for logging any longer -> It is only needed if you would like to use relative paths - Included a fix for an issue with the Path plugin (kind of bug in Path plugin) - Changed option group headings to bold (finally found out how to switch this... ;-) ) - Removed positioning of options group - Cleaned up/Improved resources - Added button for "Select log file" dialog - Changed log file box - Improved spam logging: Now messages are now longer saved as only lower case - Added error checking for add bad word dialog - Fixed: Some error box strings were not translatable - Fixed: Selection of "What to do" got sometimes not set - Changed the path to default sound file to the included sound file - Forgot to switch the version number shown on plugins page (Oups...) - Improved German translation - Some other small changes - Updated screenshot on website 1.0.2.0 - Added spam message/sender logging to file (fully translatable) - Added some language pack string for spam logging - Added Portuguese (Brazil) bad words (thanks to Lúcio) - Improved comma recognition in default bad words list in language pack - Added "del" key support in customized bad words box - Small changes in German translation - Added some default bad words (Changed strings, too) - Use of new header files - Updated screenshot on website 1.0.1.0 - Added spamming contacts handling - Improved option page layout - Moved translation strings out of "SpamFilter_Developers.txt" to separate file - Added some default bad words (Changed strings, too) - Added French bad words (thanks to Poischack) - Added Russian bad words (thanks to NeptunE) - "SpamFilter" speaks German! (Completed German standard translation in "SpamFilter_Translation.txt") - Rearranged and optimized code - Some other small changes - Updated screenshot on website 1.0.0.2 - Changed selection style of customized bad words box - Fixed: I forgot to mark some strings translatable... - Changed some texts (Changed strings, too) - Better position for "Add Bad Word" dialog - Customized bad words list gets now sorted - Added "Fast delete": Improved and faster deleting of customized bad words in list - Improved adding of customized bad words (small change) - Added sound file - Cleaned up code a bit - Some other minor changes 1.0.0.1 - Removed some debug output messages (Oups...) - Extended default bad words - Fixed: Customized bad words list doubled itself every time it got loaded - Smaller file size - Some other tiny changes 1.0.0.0 - Initial release Thanks ---------------------- * To Roland Rabien the author of "SpamBlock" for the first idea of spam recognition by bad words * To Daniel Walter who improved "SpamBlock" to "SpamBlock+" for the idea of an extensible bad words list * To romamik the author of "StopSpam" for the idea to block robots via reply messages * To Lúcio for the Portuguese (Brazil) bad words and his much feedback ;-) * To Wongsen for the Chinese (Traditional) bad words and dialog translation, his much feedback, his idea for an sound file and his helpful "beta testing" ;-) * To NeptunE for the Russian bad words * To Poischack for the French bad words * To Paulo for some more Portuguese (Brazil) bad words * To cyesto for creating a great bug-fix for the crash-on-ignore issue in version 2.1.0.0. Thanks a lot! * To Rudi for his many reported spam messages * To Javier, Jef, Lúcio, Tomaso, Wongsen, Rudi, Genionhandy2, Bumper1, ATom, Lastwebpage, Steffen Kaufmann, Romx, zk, Sarcago, sh8an, PanTzeR, DaSilva, TioDuke, kurd, gerk, Vosoni, Avalanche, adderek, Schommel, PsychodelEKS, Petr and pro100_tak for their bug reports * To Johannes, Pickle Pete, Popovn, PanTzeR for their improvement ideas * To Genionhandy2 for advertising this plugin ;-) * To InvisiBill for his much feedback and his improvement ideas * To Tigerix for his massive feature suggestions and bug-reporting :-) * To ZaNuDa for some more Russian bad words and the filtering tips and especially for his much effort in beta testing version 2.0.0.0. Translation ---------------------- Translation strings and available bad words strings can be found in "SpamFilter-Translation.txt" of the SDK package. License and Copyright ---------------------- "Spam Filter" is released under the terms of the GNU General Public License. See "SpamFilter-License.txt" for more details. "Spam Filter" is copyright (c) 2003-2006 by Heiko Herkenrath. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 4. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. RegExp Library: PCRE (pcre.dll) is a library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. "Perl Compatible Regular Expressions" (PCRE) is distributed under the terms of the "BSD" license. See "PCRE-License.txt" for more details. "PCRE" is copyright (c) 1997-2004 University of Cambridge H. Herkenrath (hrathh at users.sourceforge.net)