|
Packit Service |
384592 |
/*
|
|
Packit Service |
384592 |
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
|
|
Packit Service |
384592 |
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
|
Packit Service |
384592 |
*
|
|
Packit Service |
384592 |
* You may not use this file except in compliance with
|
|
Packit Service |
384592 |
* the License. You may obtain a copy of the License at
|
|
Packit Service |
384592 |
*
|
|
Packit Service |
384592 |
* http://www.apache.org/licenses/LICENSE-2.0
|
|
Packit Service |
384592 |
*
|
|
Packit Service |
384592 |
* If any of the files related to licensing are missing or if you have any
|
|
Packit Service |
384592 |
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
|
Packit Service |
384592 |
* directly using the email address security@modsecurity.org.
|
|
Packit Service |
384592 |
*/
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
#ifndef __MODULE_FACTORY_H__
|
|
Packit Service |
384592 |
#define __MODULE_FACTORY_H__
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
// Factory class for CMyHttpModule.
|
|
Packit Service |
384592 |
// This class is responsible for creating instances
|
|
Packit Service |
384592 |
// of CMyHttpModule for each request.
|
|
Packit Service |
384592 |
class CMyHttpModuleFactory : public IHttpModuleFactory
|
|
Packit Service |
384592 |
{
|
|
Packit Service |
384592 |
CMyHttpModule * m_pModule;
|
|
Packit Service |
384592 |
CRITICAL_SECTION m_csLock;
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
public:
|
|
Packit Service |
384592 |
CMyHttpModuleFactory()
|
|
Packit Service |
384592 |
{
|
|
Packit Service |
384592 |
m_pModule = NULL;
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
InitializeCriticalSection(&m_csLock);
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
virtual
|
|
Packit Service |
384592 |
HRESULT
|
|
Packit Service |
384592 |
GetHttpModule(
|
|
Packit Service |
384592 |
OUT CHttpModule **ppModule,
|
|
Packit Service |
384592 |
IN IModuleAllocator *
|
|
Packit Service |
384592 |
)
|
|
Packit Service |
384592 |
{
|
|
Packit Service |
384592 |
HRESULT hr = S_OK;
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
if ( ppModule == NULL )
|
|
Packit Service |
384592 |
{
|
|
Packit Service |
384592 |
hr = HRESULT_FROM_WIN32( ERROR_INVALID_PARAMETER );
|
|
Packit Service |
384592 |
goto Finished;
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
EnterCriticalSection(&m_csLock);
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
if(m_pModule == NULL)
|
|
Packit Service |
384592 |
{
|
|
Packit Service |
384592 |
m_pModule = new CMyHttpModule();
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
if ( m_pModule == NULL )
|
|
Packit Service |
384592 |
{
|
|
Packit Service |
384592 |
hr = HRESULT_FROM_WIN32( ERROR_NOT_ENOUGH_MEMORY );
|
|
Packit Service |
384592 |
goto Finished;
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
LeaveCriticalSection(&m_csLock);
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
*ppModule = m_pModule;
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
Finished:
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
return hr;
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
virtual
|
|
Packit Service |
384592 |
void
|
|
Packit Service |
384592 |
Terminate()
|
|
Packit Service |
384592 |
{
|
|
Packit Service |
384592 |
if ( m_pModule != NULL )
|
|
Packit Service |
384592 |
{
|
|
Packit Service |
384592 |
//m_pModule->WriteEventViewerLog("Module terminated.");
|
|
Packit Service |
384592 |
delete m_pModule;
|
|
Packit Service |
384592 |
m_pModule = NULL;
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
delete this;
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
};
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
#endif
|