diff options
Diffstat (limited to 'yamn/filterplugin.cpp')
-rw-r--r-- | yamn/filterplugin.cpp | 226 |
1 files changed, 0 insertions, 226 deletions
diff --git a/yamn/filterplugin.cpp b/yamn/filterplugin.cpp deleted file mode 100644 index cf7252d..0000000 --- a/yamn/filterplugin.cpp +++ /dev/null @@ -1,226 +0,0 @@ -/*
- * YAMN plugin export functions for filtering
- *
- * (c) majvan 2002-2004
- */
-
-#include <windows.h>
-#include <tchar.h>
-#include <stdio.h>
-#include <newpluginapi.h>
-#include <m_database.h>
-#include "m_yamn.h"
-#include "m_filterplugin.h"
-#include "mails/m_mails.h"
-#include "debug.h"
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-//From main.cpp
-extern LPCRITICAL_SECTION PluginRegCS;
-extern YAMN_VARIABLES YAMNVar;
-//From synchro.cpp
-extern DWORD WINAPI WaitToWriteFcn(PSWMRG SObject,PSCOUNTER=NULL);
-extern void WINAPI WriteDoneFcn(PSWMRG SObject,PSCOUNTER=NULL);
-//From maild.cpp
-extern INT_PTR LoadMailDataSvc(WPARAM wParam,LPARAM lParam);
-extern INT_PTR UnloadMailDataSvc(WPARAM wParam,LPARAM);
-extern INT_PTR SaveMailDataSvc(WPARAM wParam,LPARAM lParam);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-PYAMN_FILTERPLUGINQUEUE FirstFilterPlugin=NULL;
-
-INT_PTR RegisterFilterPluginSvc(WPARAM,LPARAM);
-
-//Removes plugin from queue and deletes its structures
-INT_PTR UnregisterFilterPlugin(HYAMNFILTERPLUGIN Plugin);
-
-INT_PTR UnregisterFilterPluginSvc(WPARAM wParam,LPARAM lParam);
-
-//Removes all filter plugins
-INT_PTR UnregisterFilterPlugins();
-
-INT_PTR FilterMailSvc(WPARAM,LPARAM);
-
-//Sets imported functions for an plugin and therefore it starts plugin to be registered and running
-// Plugin- plugin, which wants to set its functions
-// Importance- importance of plugin (see m_filterplugin.h)
-// YAMNFilterFcn- pointer to imported functions
-// YAMNfilterFcnVer- version of YAMN_FILTERIMPORTFCN, use YAMN_FILTERIMPORTFCNVERSION
-// returns nonzero if success
-int WINAPI SetFilterPluginFcnImportFcn(HYAMNFILTERPLUGIN Plugin,DWORD Importance,PYAMN_FILTERIMPORTFCN YAMNFilterFcn,DWORD YAMNFilterFcnVer);
-
-struct CExportedFunctions FilterPluginExportedFcn[]=
-{
- {YAMN_SETFILTERPLUGINFCNIMPORTID,(void *)SetFilterPluginFcnImportFcn},
-};
-
-struct CExportedServices FilterPluginExportedSvc[]=
-{
- {MS_YAMN_REGISTERFILTERPLUGIN,RegisterFilterPluginSvc},
- {MS_YAMN_UNREGISTERFILTERPLUGIN,UnregisterFilterPluginSvc},
-};
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-INT_PTR RegisterFilterPluginSvc(WPARAM wParam,LPARAM lParam)
-{
- PYAMN_FILTERREGISTRATION Registration=(PYAMN_FILTERREGISTRATION)wParam;
- HYAMNFILTERPLUGIN Plugin;
-
- if(lParam!=YAMN_FILTERREGISTRATIONVERSION)
- return 0;
- if((Registration->Name==NULL) || (Registration->Ver==NULL))
- return NULL;
- if(NULL==(Plugin=new YAMN_FILTERPLUGIN))
- return NULL;
-
- Plugin->PluginInfo=Registration;
-
- Plugin->FilterFcn=NULL;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- new filter registered: %0x (%s) :::\n",Plugin,Registration->Name);
-#endif
- return (INT_PTR)Plugin;
-}
-
-INT_PTR UnregisterFilterPlugin(HYAMNFILTERPLUGIN Plugin)
-{
- PYAMN_FILTERPLUGINQUEUE Parser,Found;
-
- if(FirstFilterPlugin->Plugin==Plugin)
- {
- Found=FirstFilterPlugin;
- FirstFilterPlugin=FirstFilterPlugin->Next;
- }
- else
- {
- for(Parser=FirstFilterPlugin;(Parser->Next!=NULL) && (Plugin!=Parser->Next->Plugin);Parser=Parser->Next);
- if(Parser->Next!=NULL)
- {
- Found=Parser->Next;
- Parser->Next=Parser->Next->Next;
- }
- else
- Found=NULL;
- }
- if(Found!=NULL)
- {
- if(Plugin->FilterFcn->UnLoadFcn!=NULL)
- Plugin->FilterFcn->UnLoadFcn((void *)0);
-
- delete Found->Plugin;
- delete Found;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- filter %0x unregistered :::\n",Plugin);
-#endif
- }
- else
- return 0;
- return 1;
-}
-
-INT_PTR UnregisterFilterPluginSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNFILTERPLUGIN Plugin=(HYAMNFILTERPLUGIN)wParam;
-
- EnterCriticalSection(PluginRegCS);
- UnregisterFilterPlugin(Plugin);
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
-
-INT_PTR UnregisterFilterPlugins()
-{
- EnterCriticalSection(PluginRegCS);
-//We remove protocols from the protocol list
- while(FirstFilterPlugin!=NULL)
- UnregisterFilterPlugin(FirstFilterPlugin->Plugin);
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
-
-int WINAPI SetFilterPluginFcnImportFcn(HYAMNFILTERPLUGIN Plugin,DWORD Importance,PYAMN_FILTERIMPORTFCN YAMNFilterFcn,DWORD YAMNFilterFcnVer)
-{
- PYAMN_FILTERPLUGINQUEUE Parser,Previous;
-
- if(YAMNFilterFcnVer!=YAMN_FILTERIMPORTFCNVERSION)
- return 0;
- if(YAMNFilterFcn==NULL)
- return 0;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- filter %0x import succeed :::\n",Plugin);
-#endif
- Plugin->Importance=Importance;
- Plugin->FilterFcn=YAMNFilterFcn;
-
- EnterCriticalSection(PluginRegCS);
-//We add protocol to the protocol list
- for(Previous=NULL,Parser=FirstFilterPlugin;Parser!=NULL && Parser->Next!=NULL && Parser->Plugin->Importance<=Importance;Previous=Parser,Parser=Parser->Next);
- if(Previous==NULL) //insert to the beginnig of queue
- {
- FirstFilterPlugin=new YAMN_FILTERPLUGINQUEUE;
- FirstFilterPlugin->Plugin=Plugin;
- FirstFilterPlugin->Next=Parser;
- }
- else
- {
- Previous->Next=new YAMN_FILTERPLUGINQUEUE;
- Previous=Previous->Next; //leave previous, go to actual plugin
- Previous->Plugin=Plugin;
- Previous->Next=Parser; //and in actual plugin set, that next plugin is the one we insert in front of
- }
-
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
-
-INT_PTR FilterMailSvc(WPARAM wParam,LPARAM lParam)
-{
- HACCOUNT Account=(HACCOUNT)wParam;
- HYAMNMAIL Mail=(HYAMNMAIL)lParam;
- PYAMN_FILTERPLUGINQUEUE ActualPlugin;
-
- EnterCriticalSection(PluginRegCS);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FilterMail:ActualAccountMsgsSO-write wait\n");
-#endif
- WaitToWriteFcn(Account->MessagesAccessSO);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FilterMail:ActualAccountMsgsSO-write enter\n");
-#endif
- for(ActualPlugin=FirstFilterPlugin;ActualPlugin!=NULL;ActualPlugin=ActualPlugin->Next)
- {
- if(ActualPlugin->Plugin->FilterFcn->FilterMailFcnPtr!=NULL)
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tFiltering Mail, running plugin %0x to filter mail\n",ActualPlugin->Plugin);
-#endif
- ActualPlugin->Plugin->FilterFcn->FilterMailFcnPtr(Account,YAMN_ACCOUNTVERSION,Mail,YAMN_MAILVERSION);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tFiltering Mail done\n");
-#endif
- }
- }
- Mail->Flags|=YAMN_MSG_FILTERED;
-
-//Set mail flags according to spamlevel settings
- if((Mail->Flags & YAMN_MSG_SPAMMASK) > YAMN_MSG_SPAML1)
- Mail->Flags=Mail->Flags & ~(YAMN_MSG_BROWSER | YAMN_MSG_POPUP | YAMN_MSG_SYSTRAY | YAMN_MSG_SOUND | YAMN_MSG_APP | YAMN_MSG_NEVENT);
- if(YAMN_MSG_SPAML(Mail->Flags,YAMN_MSG_SPAML3) || YAMN_MSG_SPAML(Mail->Flags,YAMN_MSG_SPAML4))
- Mail->Flags=Mail->Flags | (YAMN_MSG_AUTODELETE | YAMN_MSG_DELETEOK); //set message to delete
- if(YAMN_MSG_SPAML(Mail->Flags,YAMN_MSG_SPAML3))
- Mail->Flags=Mail->Flags & ~(YAMN_MSG_MEMDELETE); //set message not to delete it immidiatelly from memory
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FilterMail:ActualAccountMsgsSO-write done\n");
-#endif
- WriteDoneFcn(Account->MessagesAccessSO);
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
|