.NET Plugin Schnittstelle

Alles, was mit Plugins für Spamihilator zu tun hat. (Keine Plugin-Hilfe, Plugin-Bugs oder Plugin Feature Requests, siehe jeweils dort.)

Moderator: Forum-Team

.NET Plugin Schnittstelle

Beitragvon KanuUli » 22. Okt 2007, 13:00

Hallo an alle Interessierten

Ich muss jetzt mal meine Freude loslassen! :roll: :shock:

Ich hab mich jetzt mal daran gemacht einen .NET<->COM<->Plugin<->Spami Wrapper zu schreiben.
Den Config-Dialog (im .NET Teil geschrieben) kann ich schon von Spami aus aufrufen (d.h. die Schnittstelle funktioniert und ich kann die "hwnd" Variable durchschießen).

Gibs eigentlich Leute die das auch interressiert, mit .NET Plugins für Spami zu schreiben?

P.S. Rein theoretisch müsste es damit möglich sein, mit einer beliebigen COM unterstützenden Sprache Plugins zu erstellen!

Plugin -> .NET!!
.NET -> Plugin/Spami not testet

  • int isSpamHdr Done
  • int isSpamHtml Done
  • int isSpamNoHtml Done
  • int isSpam Done
  • nt init Done
  • void free Done
  • void config(HWND parent); Done
  • long ReceiveService(SERVICE *service) Done
  • SendService Done
  • struct SPAMCHECKPLUGININFO Done

Services
- Spami -> Plugin:

  • SERV_INIT Done (caught by c++ part, handles SendService function)
  • SERV_GETRECV Done
  • SERV_GETSETTINGSEXT strike! Over ATL Functions I can import and show an ActiveX/COM-Component
  • SERV_WANTHIGHESTPRIORITY Done
  • SERV_LANGUAGECHANGED Done, returns [Langname].[Pluginname].language
  • SERV_LEARN Done
  • SERV_WANTTRAININGAREACONTROL Done
  • SERV_TRAININGAREACONTROL Done

- Plugin -> Spami
  • SERV_TRANSLATEWINDOW Done, runs in c++ Part, translates the Settingsdialog automatically, possible to invoke over handle over .NET but only translates Labels (no Buttons)
  • SERV_TRANSLATEMENU Testet but no function. I think different menu technics between c++ and .NET
  • SERV_TRANSLATESTRING Done, Result max 1000 chars
  • SERV_FOUNDSPAMWORDS Done
  • SERV_GETSPAMIHILATORVER Done
  • SERV_GETPLAINTEXT Done, hard fight. but now it works! :twisted:
  • SERV_MIMEENCODE Done
  • SERV_MIMEDECODE Done
  • SERV_SETCONFIGVALUE Done, heavy fighting with pointers(set in .NET read in c.....
  • SERV_GETCONFIGVALUE Done, max length 1024
  • SERV_GETCONFIGPATH Done
  • SERV_LEARNFROMMESSAGE Done
  • SERV_NOTRAINING Done
  • SERV_SHOWSTATUSTEXT Done
  • SERV_USER Done, received but not used

.
Gruß Kanu
Benutzeravatar
KanuUli
Kanu-Kapitän
Kanu-Kapitän
 
Forum-Team
 
Beiträge: 1449
Registriert: 25. Jul 2003, 12:59
Wohnort: Bamberg, Germany

Re: .NET Plugin Schnittstelle / Spamihilator E-MailReport Plugin

Beitragvon Chactory » 22. Okt 2007, 14:10

Hallo KanuUli,

worum geht es dort? Programmierst Du eine Möglichkeit, auch mit anderen als bisher üblichen Programmiersprachen für Spamihilator zu programmieren? Das könnte sicher sehr spannend sein und evtl. auch neue Programmierer interessieren.

Sag mal, KanuUli, könntest Du nicht mal mit S3bast1an Kontakt aufnehmen und ihn dabei beraten, wie er seine wichtigen Plgins Vista-tauglich bekommt?

Viele Grüße vom leider Programmier-Laien
Chactory
HilfeHelp «en»TippsAnbuva's FAQBob's FAQ «en»SpamwortlisteRegelfilterScreenshotsSSL/TLSSpami 1.6.0
Vostro 3450, Intel Core i5 2410M 2,3 GHz, 4 GB DDR3 SDRAM 1333 MHz, Windows 7 Pro 64 Bit SP1

Bild
Benutzeravatar
Chactory
Administrator
Administrator
 
Administration
Beta-Tester
Forum-Team
 
Beiträge: 9593
Registriert: 9. Jan 2004, 23:19
Wohnort: Kiel (D)

Re: Spamihilator E-Mail Report Plugin

Beitragvon AlexV » 23. Okt 2007, 08:50

KanuUli hat geschrieben:Gibs eigentlich Leute die das auch interressiert, mit .NET Plugins für Spami zu schreiben?

Ja, ich bin auch interressiert. Ich habe schon zwei gerchreibt: Misnamed Filter und Trust Spamassassin Headers. Auch Outgoing Friends, aber das ist tatsätlich keine plugin, er nur spamihilator.ini benütze.

Der Quellcode ist zusammen mit diese plugins, wenn Sie interressiert sind, aber er ist in Englisch.

Was ich habe gefunded ist das ich brauche Managed C++ für schrieben eine plugin, weil C# kann keine 'exported dll calls' machen, nur C++, und spamihilator plugin API brauche ein dll mit 'exported calls'. Auch, die plugins kann keine andere dll einladen (wie ein andere dll in C# geschieben,bzw.), das functioniert nicht, und ich weiß nicht warum.

Alex
--
Entschuldigung für die schlimmer Deutsche, ich lerne noch.
AlexV
Spam-Massenmörder
Spam-Massenmörder
 
Plugin-Programmierer
 
Beiträge: 139
Registriert: 26. Nov 2005, 12:25

Re: .NET Plugin Schnittstelle / Spamihilator E-MailReport Plugin

Beitragvon KanuUli » 23. Okt 2007, 09:16

Hallo Chactory

Chactory hat geschrieben:worum geht es dort? Programmierst Du eine Möglichkeit, auch mit anderen als bisher üblichen Programmiersprachen für Spamihilator zu programmieren? Das könnte sicher sehr spannend sein und evtl. auch neue Programmierer interessieren.


Genau das. Im Grunde müsste es theoretisch möglich sein, Plugins in jeder Sprache zu entwickeln, die COM-Exports unterstützt (.NET, Delphi(?), VB (?), c++ :), ...)

Chactory hat geschrieben:Sag mal, KanuUli, könntest Du nicht mal mit S3bast1an Kontakt aufnehmen und ihn dabei beraten, wie er seine wichtigen Plgins Vista-tauglich bekommt?


Hat er dich denn danach gefragt?
Er muss hald Pfadvariablen verwenden. Oder sich von Spami den richtigen Pfad geben lassen. Das ist denke ich das wichtigste.


Hello AlexV

I wrote a VBNet dll (ok, ok I know, but I have to use this at work at the moment, so I used my accustomed language), which exports the main Spami functions with COM technics.
This dll is importet by a standard c++ dll, which is a Spami plugin. It passes all functions throu.

Only the SendService function is used directly over delegates. I maybe have problems with that at the moment. I only testet it with "SERV_GETSPAMIHILATORVER" and get "103079215104" I think thats to high.

Should I design the .NET dll to import others? But then the language independence is gone. Or publish both. The .NET import and COM import version? Hmm, don't know.

First it has to be functional!

Grüße Kanu

P.S. Ich habe das Thema jetzt mal geteilt, weil scheints doch Interesse besteht und die neueren Posts nicht wirklich was mit dem Urpsungsthema zu tun haben.
Benutzeravatar
KanuUli
Kanu-Kapitän
Kanu-Kapitän
 
Forum-Team
 
Beiträge: 1449
Registriert: 25. Jul 2003, 12:59
Wohnort: Bamberg, Germany

Re: .NET Plugin Schnittstelle / Spamihilator E-MailReport Plugin

Beitragvon AlexV » 23. Okt 2007, 09:56

KanuUli hat geschrieben:Hello AlexV

I wrote a VBNet dll (ok, ok I know, but I have to use this at work at the moment, so I used my accustomed language), which exports the main Spami functions with COM technics.
This dll is importet by a standard c++ dll, which is a Spami plugin. It passes all functions throu.

That is interesting, but if there is only one c++ dll which is a Spami plugin, how will it work if you want more than one COM plugin? Would your plugin have a list of plugins itself? Or would you have to somehow automatically generate a new c++ wrapper dll for each new plugin?

Alex
AlexV
Spam-Massenmörder
Spam-Massenmörder
 
Plugin-Programmierer
 
Beiträge: 139
Registriert: 26. Nov 2005, 12:25

Re: .NET Plugin Schnittstelle / Spamihilator E-MailReport Plugin

Beitragvon KanuUli » 23. Okt 2007, 10:37

AlexV hat geschrieben:
KanuUli hat geschrieben:Hello AlexV
Would your plugin have a list of plugins itself?


Hello

thats it :)

its possible to design the .NET dll to import every usable dll in a defined Folder und to route all routet functions which where routet :) I think i will get to a booby hatch :shock:
  • 1. route Spami to plugin
  • 2. route Plugin to .NET
  • 3. route .NET to .NET plugin
Regards Kanu
Benutzeravatar
KanuUli
Kanu-Kapitän
Kanu-Kapitän
 
Forum-Team
 
Beiträge: 1449
Registriert: 25. Jul 2003, 12:59
Wohnort: Bamberg, Germany

Re: .NET Plugin Schnittstelle

Beitragvon michel » 23. Okt 2007, 10:42

Hi!

If there's only one C++ dll, Spamihilator will also display only one plugin in the list of plugin priorities. I think a separate wrapper for each C# plugin would be better.

By the way: Thanks for your efforts!!!

Regards,
Michel
Chuck Norris doesn't kill Spam. He uses Spamihilator! ;-)
Benutzeravatar
michel
Administrator
Administrator
 
Administration
Beta-Tester
Forum-Team
Plugin-Programmierer
 
Beiträge: 4335
Registriert: 22. Mär 2003, 01:16
Wohnort: Buseck

Re: .NET Plugin Schnittstelle

Beitragvon KanuUli » 23. Okt 2007, 10:52

michel hat geschrieben:Hi!

If there's only one C++ dll, Spamihilator will also display only one plugin in the list of plugin priorities. I think a separate wrapper for each C# plugin would be better.

By the way: Thanks for your efforts!!!

Regards,
Michel


Hello

Yes, thats right.
But I don't know how it will be at least.

please note:
KanuUli hat geschrieben:Should I design the .NET dll to import others? But then the language independence is gone. Or publish both. The .NET import and COM import version? Hmm, don't know.

First it has to be functional!
Benutzeravatar
KanuUli
Kanu-Kapitän
Kanu-Kapitän
 
Forum-Team
 
Beiträge: 1449
Registriert: 25. Jul 2003, 12:59
Wohnort: Bamberg, Germany

Re: .NET Plugin Schnittstelle

Beitragvon KanuUli » 23. Okt 2007, 13:58

Hallo Michel

würdest du den C++ Code wenns fertig ist noch mal für mich auf Verbesserungen/ Pufferüberläufe durchsehen?

Ich bin hald doch kein C Entwickler.

Gruß Kanu
Benutzeravatar
KanuUli
Kanu-Kapitän
Kanu-Kapitän
 
Forum-Team
 
Beiträge: 1449
Registriert: 25. Jul 2003, 12:59
Wohnort: Bamberg, Germany

Re: .NET Plugin Schnittstelle / Spamihilator E-MailReport Plugin

Beitragvon Chactory » 23. Okt 2007, 20:56

Hallo KanuUli,

ich weiß, es ist hier echt off topic, aber vielleicht kannst Du ja wirklich dem S3bast1an helfen.

KanuUli hat geschrieben:Hat er dich denn danach gefragt?
Er muss hald Pfadvariablen verwenden. Oder sich von Spami den richtigen Pfad geben lassen. Das ist denke ich das wichtigste.
1. Ja, hat er, aber ich bin zu doof dazu ... :mrgreen:
2. Bitte erklär's ihm mal ausführlich, ich glaube, er traut sich nicht so recht, seine Probleme damit hier breitzutreten. :wink:

Vielen Dank und herzliche Grüße!
Chactory
HilfeHelp «en»TippsAnbuva's FAQBob's FAQ «en»SpamwortlisteRegelfilterScreenshotsSSL/TLSSpami 1.6.0
Vostro 3450, Intel Core i5 2410M 2,3 GHz, 4 GB DDR3 SDRAM 1333 MHz, Windows 7 Pro 64 Bit SP1

Bild
Benutzeravatar
Chactory
Administrator
Administrator
 
Administration
Beta-Tester
Forum-Team
 
Beiträge: 9593
Registriert: 9. Jan 2004, 23:19
Wohnort: Kiel (D)

Re: .NET Plugin Schnittstelle

Beitragvon KanuUli » 23. Okt 2007, 21:06

Hallo Chactory

Hmm... ich kann das auch nicht sagen, wie man System-Variablen in C++ verwendet.

Aber ich glaube in Spami gibts auch ne Möglichkeit dieses Variable abzufragen. Ich schau morgen noch mal nach.

Gruß Kanu

P.S. how to convert a CComBstr to char[80] :)
or only BSTR to char[80]

the easier things are the hardest: used _snprintf :)
Benutzeravatar
KanuUli
Kanu-Kapitän
Kanu-Kapitän
 
Forum-Team
 
Beiträge: 1449
Registriert: 25. Jul 2003, 12:59
Wohnort: Bamberg, Germany

Re: .NET Plugin Schnittstelle

Beitragvon michel » 25. Okt 2007, 08:09

KanuUli hat geschrieben:würdest du den C++ Code wenns fertig ist noch mal für mich auf Verbesserungen/ Pufferüberläufe durchsehen?

Kein Problem.

Gruß
Michel
Chuck Norris doesn't kill Spam. He uses Spamihilator! ;-)
Benutzeravatar
michel
Administrator
Administrator
 
Administration
Beta-Tester
Forum-Team
Plugin-Programmierer
 
Beiträge: 4335
Registriert: 22. Mär 2003, 01:16
Wohnort: Buseck

Re: .NET Plugin Schnittstelle

Beitragvon KanuUli » 25. Okt 2007, 10:48

Hallo Michel

Danke

Hab jetzt mal das Plugin auf meinem produktivem Spami-System gestestet (keine Entwicklungsumgebung, Win 2003 Server)...

Nach anfänglichen Registratur-Problemen läuft es jetzt. (Nein es wird nicht regsvr32 verwendet sondern regasm... und man muss noch /codebase mit angeben :))

:mrgreen:

Jetzt nur noch die Services Plugin->Spami umsetzen... und dann kommt die Entscheidung: Plugin-Sammler, Beispiel-code oder beides :)

Stand, siehe Ursprungspost.

Wer Messageboxen beim Abrufen sehen will kann sich ja mal melden :roll:

Gruß Kanu
Benutzeravatar
KanuUli
Kanu-Kapitän
Kanu-Kapitän
 
Forum-Team
 
Beiträge: 1449
Registriert: 25. Jul 2003, 12:59
Wohnort: Bamberg, Germany

Re: .NET Plugin Schnittstelle

Beitragvon AlexV » 25. Okt 2007, 12:13

KanuUli hat geschrieben:Jetzt nur noch die Services Plugin->Spami umsetzen... und dann kommt die Entscheidung: Plugin-Sammler, Beispiel-code oder beides :)

Or, how about having a c++ dll that loads only a single .net (or com, if you prefer) dll, that has the same name is it does, but with .main (or similar) attached.

For example, you create your .net plugin: MySuperPlugin, which implements your connector interface, or however you've done it. You put it in your spami plugins folder as MySuperPlugin.main.dll, and then put a copy of your connector dll in the plugins folder, renamed to MySuperPlugin.dll. That way you don't need to be able to compile c++, you can just use a trusted, pre-compiled dll exactly as downloaded, just renamed.

When you write another plugin, MyWonderfulPlugin, you call that MyWonderfulPlugin.main.dll, and make another copy of the c++ dll renamed to MyWonderfulPlugin.dll to load that one.

That way, each plugin gets its own entry in Spamihilator, each can be uninstalled without worrying about shared components, and no-one needs to modify or compile c++ code.

Alex
AlexV
Spam-Massenmörder
Spam-Massenmörder
 
Plugin-Programmierer
 
Beiträge: 139
Registriert: 26. Nov 2005, 12:25

Re: .NET Plugin Schnittstelle

Beitragvon KanuUli » 26. Okt 2007, 15:45

Hallo

und wieder eine Frage:

Gibts nicht bei SERV_GETCONFIGVALUE auch die Möglichkeit wie bei SERV_MIMEENCODE die Länge der Antwort zu bekommen? Ich will die nicht vorher angeben müssen....

Gruß Kanu
Benutzeravatar
KanuUli
Kanu-Kapitän
Kanu-Kapitän
 
Forum-Team
 
Beiträge: 1449
Registriert: 25. Jul 2003, 12:59
Wohnort: Bamberg, Germany

Nächste

Zurück zu Plugins: Allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron

 industrious-southeast