1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
|
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)
|